next up previous contents index
Next: Integers Up: Basic data types and Previous: Equality, ordering, and hashing

Numbers

In number.cecil:


abstract object num isa ordered_hashable[num]; 
signature as_int(num):integer; 
method as_float(n@:num):float; 
signature as_single_float(num):single_float; 
signature as_double_float(num):double_float; 
method =(l@:num,r@:num):bool; 
method <(l@:num,r@:num):bool;
signature +(`T <= num, T):T;
- standard arithmetic 
signature -(`T <= num, T):T;
signature *(`T <= num, T):T; 
signature /(`T <= num, T):T; 
implementation +(l@:num,r@:num):num; 
implementation -(l@:num,r@:num):num;
implementation *(l@:num,r@:num):num; 
implementation /(l@:num,r@:num):num; 
signature +(integer, float):float; 
signature +(float, integer):float; 
signature -(integer, float):float;
signature -(float, integer):float;
signature *(integer, float):float; 
signature *(float, integer):float; 
signature /(integer, float):float; 
signature /(float, integer):float; 
method negate(n:`T <= num):T; 
method -(n:`T <= num):T;
method +(n:`T <= num):T; 
method -_ov(l@:num):num;
method +_ov(l@:num,r@:num):num; 
method -_ov(l@:num,r@:num):num;
method *_ov(l@:num,r@:num):num; 
method /_ov(l@:num,r@:num):num; 
method pred(i@num:`T <= num):T; 
method succ(i@num:`T <= num):T; 
method square(n:`T <= num):T; 
method cube(n:`T <= num):T; 
method abs(n:`T <= num):T;
- absolute value 
method sign(x:num):int;
- return -1, 0, or 1 depending on sign of argument 
method average(n1:num, n2:num):num;
- arithmetic average: (n1+n2)/2 
method power(x@num:`T <= num, power:integer):S 
where signature *_ov(T,T):`S,
S <= T;
- exponentiation
method **(x@num:`T <= num, power:integer):S 
where signature *_ov(T,T):`S, S <= T;
- same as

power

method sqrt(x@num:`T <= num):T; 
         Numbers support the standard arithmetic operations, plus the protocol of totally-ordered objects (=, <, min, etc.). This contract implies that all subclasses of number are freely mixable at run-time.



 
next up previous contents index
Next: Integers Up: Basic data types and Previous: Equality, ordering, and hashing

The Cecil project