Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Numbers/multprec_random_numbers.adb, Revision 1.1.1.1
1.1 maekawa 1: with Standard_Floating_Numbers; use Standard_Floating_Numbers;
2: with Standard_Random_Numbers;
3:
4: package body Multprec_Random_Numbers is
5:
6: function Random ( size : natural ) return Natural_Number is
7:
8: res : Natural_Number;
9: arn : Array_of_Naturals(0..size);
10:
11: begin
12: for i in arn'range loop
13: arn(i) := Standard_Random_Numbers.Random(0,Base-1);
14: end loop;
15: res := Create(arn);
16: return res;
17: end Random;
18:
19: function Random ( size : natural ) return Integer_Number is
20:
21: res : Integer_Number;
22: sig : double_float := Standard_Random_Numbers.Random;
23: rnd : Natural_Number := Random(size);
24:
25: begin
26: res := Create(rnd);
27: if sig < 0.0
28: then Min(res);
29: end if;
30: Clear(rnd);
31: return res;
32: end Random;
33:
34: function Random ( size : natural ) return Floating_Number is
35:
36: res : Floating_Number;
37: naturfrac : Natural_Number := Random(size);
38: frac,expo : Integer_Number;
39:
40: begin
41: frac := Create(naturfrac);
42: Clear(naturfrac);
43: expo := Create(-Decimal_Places(frac));
44: res := Create(frac,expo);
45: Clear(frac); Clear(expo);
46: return res;
47: end Random;
48:
49: function Random ( size : natural ) return Complex_Number is
50:
51: res : Complex_Number;
52: re : Floating_Number := Random(size);
53: im : Floating_Number := Random(size);
54:
55: begin
56: res := Create(re,im);
57: Clear(re); Clear(im);
58: return res;
59: end Random;
60:
61: end Multprec_Random_Numbers;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>