Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Numbers/generic_complex_numbers.ads, Revision 1.1.1.1
1.1 maekawa 1: with Abstract_Ring;
2: with Abstract_Ring.Field;
3:
4: generic
5:
6: with package Ring is new Abstract_Ring(<>);
7: with package Field is new Ring.Field(<>);
8:
9: package Generic_Complex_Numbers is
10:
11: -- DESCRIPTION :
12: -- Offers a Cartesian view on the complex numbers, where the type of the
13: -- reals is left for instantiation.
14:
15: use Ring; use Field;
16:
17: type Complex_Number is private;
18:
19: -- CREATORS :
20:
21: function Create ( i : integer ) return Complex_Number;
22: function Create ( f : number ) return Complex_Number;
23: function Create ( re,im : number ) return Complex_Number;
24: function Conjugate ( c : Complex_Number ) return Complex_Number;
25:
26: -- SELECTORS :
27:
28: function REAL_PART ( x : Complex_Number ) return number;
29: function IMAG_PART ( x : Complex_Number ) return number;
30:
31: function AbsVal ( x : Complex_Number ) return number; -- x=a+bi, |x|=|a|+|b|
32: function AbsVal ( x : Complex_Number ) return Complex_Number;
33:
34: -- COMPARISON/COPYING :
35:
36: function Equal ( x,y : Complex_Number ) return boolean;
37: procedure Copy ( x : in Complex_Number; y : in out Complex_Number );
38:
39: function "<" ( x,y : Complex_Number ) return boolean; -- return |x|<|y|
40: function ">" ( x,y : Complex_Number ) return boolean; -- return |x|>|y|
41:
42: -- ARITHMETHIC OPERATIONS AS FUNCTIONS :
43:
44: function "+" ( x : Complex_Number; y : number ) return Complex_Number;
45: function "-" ( x : Complex_Number; y : number ) return Complex_Number;
46: function "*" ( x : Complex_Number; y : number ) return Complex_Number;
47: function "/" ( x : Complex_Number; y : number ) return Complex_Number;
48:
49: function "+" ( x : number; y : Complex_Number ) return Complex_Number;
50: function "-" ( x : number; y : Complex_Number ) return Complex_Number;
51: function "*" ( x : number; y : Complex_Number ) return Complex_Number;
52: function "/" ( x : number; y : Complex_Number ) return Complex_Number;
53:
54: function "+" ( x,y : Complex_Number ) return Complex_Number;
55: function "+" ( x : Complex_Number ) return Complex_Number; -- copies x
56: function "-" ( x,y : Complex_Number ) return Complex_Number;
57: function "-" ( x : Complex_Number ) return Complex_Number;
58: function "*" ( x,y : Complex_Number ) return Complex_Number;
59: function "/" ( x,y : Complex_Number ) return Complex_Number;
60:
61: function "**" ( x : Complex_Number; m : integer ) return Complex_Number;
62:
63: -- ARITHMETIC OPERATIONS AS PROCEDURES :
64:
65: procedure Add ( x : in out Complex_Number; y : in number );
66: procedure Sub ( x : in out Complex_Number; y : in number );
67: procedure Mul ( x : in out Complex_Number; y : in number );
68: procedure Div ( x : in out Complex_Number; y : in number );
69:
70: procedure Add ( x : in out Complex_Number; y : in Complex_Number );
71: procedure Sub ( x : in out Complex_Number; y : in Complex_Number );
72: procedure Min ( x : in out Complex_Number );
73: procedure Mul ( x : in out Complex_Number; y : in Complex_Number );
74: procedure Div ( x : in out Complex_Number; y : in Complex_Number );
75:
76: -- DESTRUCTOR :
77:
78: procedure Clear ( x : in out Complex_Number );
79:
80: private
81:
82: type Complex_Number is
83: record
84: RE,IM : number;
85: end record;
86:
87: end Generic_Complex_Numbers;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>