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

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;
  signature /_float(`T <= num, T):T & float;
  implementation +(l@:num,r@:num):float;
  implementation -(l@:num,r@:num):float;
  implementation *(l@:num,r@:num):float;
  implementation /(l@:num,r@:num):float;
  implementation /_float(l@:num,r@:num):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;
  signature /(integer, float):float;
  signature /(float, integer):float;
  signature /_float(integer, float):float;
  signature /_float(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 /_float_ov(l@:num,r@:num):num;
  method pred(i@:`T <= num):T;
  method succ(i@:`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:`T <= num, n2:`T):T|int;  - arithmetic average: (n1+n2)/2
  method power(x@:`T <= num, power:integer):S
                                        where signature *_ov(T,T):`S <= T;  - exponentiation
  method **(x@:`T <= num, power:integer):S
                                        where signature *_ov(T,T):`S <= T;  - same as power
  method sqrt(x@:`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.



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

Cecil/Vortex Project