modified clcg4 test
[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\n' ..
23            +' This test generates '+string(NB)+' numbers then resets the block\n'..
24            +'      and does it again\n' ..
25            +' Any disagreements are reported -- there should be none'];
26
27 mprintf(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     mprintf(' Testing generator '+string(igen)+'\n');
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         //     Generate NR numbers
63         itmp = grand(1,NR,'lgi');
64         if itmp<>answer(iblock,:) then
65             str=[' Disagreement on regeneration of numbers' ..
66                 +' Block '+string(iblock)+' N within Block '];
67             mprintf(str);
68         end
69
70         if itmp<>answer(iblock,:) then pause,end
71
72         grand('initgn',1);
73     end
74
75     mprintf(' Finished testing generator '+string(igen)+'\n');
76     mprintf(' Test completed successfully\n');
77         
78 end