MODULE Vitesse; FROM UNIFORM IMPORT Gener01, Gen, SetLCG, SetBigLCG, SetLCG2e32, SetMultRec, SetCombLEC2, SetCombLEC3, SetCombWH2, SetCombWH3, SetTaus, SetLongTaus, SetCombTaus2, SetCombTaus3, SetACORN, SetTindo, SetCSD, SetMarsa90, SetLaggFib, WriteState; FROM CHRONO IMPORT Chrono, InitChrono, WriteChrono, TimeFormat; FROM MYINOUT IMPORT WriteString, WriteLn, WriteLongInt, OpenOutput, CloseOutput; FROM SUPINT IMPORT SuperInteger, Create; FROM SUPCONV IMPORT IntToSup; CONST N = 1000000; VAR C : Chrono; i : LONGINT; U : LONGREAL; m, a, c, s : SuperInteger; A, S : ARRAY [1..8] OF LONGINT; AA : ARRAY [1..8] OF LONGREAL; PROCEDURE Bidon (): LONGREAL; BEGIN RETURN 0.0 END Bidon; PROCEDURE Run (A : ARRAY OF CHAR); BEGIN WriteString ("GENERATEUR: "); WriteString (A); WriteLn; InitChrono (C); FOR i := 1 TO N DO U := Gen () END; WriteChrono (C, sec); WriteLn; WriteString ("-----------------------------------------------------------"); WriteLn; WriteLn END Run; BEGIN OpenOutput (".RES"); WriteString ("N = "); WriteLongInt (N, 12); WriteLn; WriteString ("-----------------------------------------------------------"); WriteLn; WriteLn; Gen := Bidon; Run ("Bidon"); SetLCG (18659, 234, 0, 123); Run ("Petit LCG"); SetLCG (2147483647, 16807, 0, 123); Run ("Medium LCG"); SetLCG (2147483647, 742938285, 0, 18723); Run ("Large LCG"); Create (m, 4); Create (a, 4); Create (s, 4); Create (c, 4); IntToSup (2147483321, m); IntToSup (5341231, a); IntToSup (12, c); IntToSup (234578, s); SetBigLCG (m, a, c, s); Run ("Big LCG"); SetLCG2e32 (234455, 1, 1345); Run ("LCG2e32"); A[1] := 1234; A[2] := 8654; A[3] := 23486; A[4] := 24323; A[5] := 234; S[1] := 1244; S[2] := 654; S[3] := 2386; S[4] := 2223; S[5] := 114; SetMultRec (2147483321, 5, A, S); Run ("MultRec k=5 full"); SetMultRec (2147483321, 2, A, S); Run ("MultRec k=2 special"); A[2] := 0; A[3] := 0; A[4] := 0; A[5] := 0; A[6] := 0; A[7] := 7655; S[6] := 675; S[7] := 57; SetMultRec (2147483321, 7, A, S); Run ("MultRec k=7 special"); SetCombLEC2 (21474, 31476, 2361, 522, 6, 0, 946, 656); Run ("CombLEC2 small"); SetCombLEC2 (2147483352, 214766321, 23461, 4322, 66, 687, 946746, 365636); Run ("CombLEC2 medium"); SetCombLEC2 (2147483352, 214766321, 238099461, 48768322, 6, 0, 94746, 36536); Run ("CombLEC2 large"); SetCombLEC3 (2147483352, 214766321, 2147482231, 23461, 4322, 41001, 6, 0, 0, 9786, 365636, 572); Run ("CombLEC3 medium"); SetCombWH2 (21474, 31476, 2361, 4322, 66, 87, 946, 656); Run ("CombWH2 small"); SetCombWH2 (2147483352, 214766321, 23461, 4322, 46, 687, 946746, 365636); Run ("CombWH2 medium"); SetCombWH2 (2147483352, 214766321, 238099461, 48798322, 6, 0, 94746, 36536); Run ("CombWH2 large"); SetCombWH3 (2147483352, 214766321, 2147482231, 23461, 4322, 41001, 6, 0, 0, 9786, 365636, 572); Run ("CombWH3 medium"); SetTaus (31, 3, 5, 2345); Run ("Taus"); SetCombTaus2 (31, 29, 3, 5, 5, 3, 4645, 122121); Run ("CombTaus2"); SetCombTaus3 (31, 29, 27, 7, 3, 5, 5, 9, 3, 4645, 122121, 56); Run ("CombTaus3"); SetLongTaus (63, 21, 7, 436, 976); Run ("LongTaus"); AA[1] := 0.1234; AA[2] := 0.8654; AA[3] := 0.2486; AA[4] := 0.2323; AA[5] := 0.9234; AA[6] := 0.7652; AA[7] := 0.7158; SetACORN (7, AA); Run ("ACORN k=7"); SetTindo (32765, 32143, 5, 31); Run ("Tindo k=5 L=31"); SetCSD (9824, 412654); Run ("CSD Sherif et Dear"); SetMarsa90 (76587, 6561, 65461, 125); Run ("Marsa90"); CloseOutput; END Vitesse.