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