doc "Abstraction of numbers. Numeric operations are provided
     by the subtype `Numeric`. This type defines operations
     which can be expressed without reference to the self
     type `Other` of `Numeric`."
see (Numeric)
by "Gavin"
shared interface Number {
    
    doc "Determine if the number is positive."
    shared formal Boolean positive;
    
    doc "Determine if the number is negative."    
    shared formal Boolean negative;

    doc "The number, represented as a `Float`."
    throws (OverflowException,
           "if the number is too large to be represented 
            as a `Float`")
    shared formal Float float;
        
    doc "The number, represented as an `Integer`, after 
         truncation of any fractional part."
    throws (OverflowException,
           "if the number is too large to be represented 
            as an `Integer`")
    shared formal Integer integer;
    
    doc "The magnitude of the number."
    shared formal Number magnitude;
    
    doc "The sign of this number. Returns `1` if the number 
         is positive, `-1` if it is negative, or `0` if it 
         is zero."
    shared formal Integer sign;
    
    doc "The fractional part of the number, after truncation 
         of the integral part."
    shared formal Number fractionalPart;
    
    doc "The integral value of the number after truncation 
         of the fractional part."
    shared formal Number wholePart;

}