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