1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// =============================================================================
// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
// Copyright (C) ????-2008 - INRIA
//
// This file is distributed under the same license as the Scilab package.
// =============================================================================
grand('setgen','clcg4');
// Low level test for grand
//**********************************************************************
// A test program for the bottom level routines
// Scilab implementation of tstbot.f
//**********************************************************************
NB = 10
NR = 1000
answer = ones(NB,NR);
genlst = [1,5,10,20,32]
nbad = 0;
str = ['For five virtual generators of the 101';..
' This test generates'+string(NB)+' numbers then resets the block';..
' and does it again';..
' Any disagreements are reported -- there should be none'];
write (%io(2),str);
//
// Set up Generators
//
grand('setall',12345,54321,6789,9876);
//
// For a selected set of generators
//
for ixgen = 1:5
igen = genlst(ixgen)
grand('setcgn',igen);
write(%io(2),' Testing generator '+string(igen));
//
// Use NB blocks
//
grand('initgn',-1);
SD=grand('getsd');iseed1=SD(1);iseed2=SD(2);
for iblock = 1:NB
// Generate NR numbers
answer(iblock,1:NR)= grand(1,NR,'lgi');
grand('initgn',1);
end
grand('initgn',-1);
//
// Do it again and compare answers
//
SD=grand('getsd');iseed1=SD(1);iseed2=SD(2);
//
// Use NB blocks
//
for iblock = 1:NB
// Generate NR numbers
itmp = grand(1,NR,'lgi');
if itmp<>answer(iblock,:) then
str=[' Disagreement on regeneration of numbers';...
' Block '+string(iblock)+' N within Block '];
write(%io(2),str);
end
if itmp<>answer(iblock,:) then pause,end
grand('initgn',1);
end
write (%io(2), ' Finished testing generator '+string(igen));
write (%io(2), ' Test completed successfully');
end
|