"An instance of `Float` representing positive infinity 
 \{#221E}."
shared Float infinity = 1.0/0.0;

"An IEEE 754 64-bit [floating point number][]. A `Float` 
 is capable of approximately representing numeric values 
 between 2<sup>-1022</sup> and 
 (2-2<sup>-52</sup>)\{#00D7}2<sup>1023</sup>, along with 
 the special values `infinity` and `-infinity`, and 
 undefined values (Not a Number). Zero is represented by 
 distinct instances `+0`, `-0`, but these instances are 
 equal. An undefined value is not equal to any other
 value, not even to itself.
 
 [floating point number]: http://www.validlab.com/goldberg/paper.pdf"
shared native final class Float(Float float)
        extends Object()
        satisfies Scalar<Float> & 
                  Exponentiable<Float,Float> {
    
    "Determines whether this value is undefined (that is, 
     Not a Number or NaN). The undefined value has the 
     property that it is not equal (`==`) to itself, as 
     a consequence the undefined value cannot sensibly 
     be used in most collections."
    shared Boolean undefined => this!=this;
    
    "Determines whether this value is infinite in 
     magnitude. Produces `true` for `infinity` and 
     `-infinity`. Produces `false` for a finite number, 
     `+0`, `-0`, or undefined."
    see (`value infinity`, `value finite`)
    shared Boolean infinite => 
            this==infinity || this==-infinity;
    
    "Determines whether this value is finite. Produces
     `false` for `infinity`, `-infinity`, and undefined."
    see (`value infinite`, `value infinity`)
    shared Boolean finite =>
            this!=infinity && this!=-infinity 
                    && !this.undefined;
    
    "The sign of this value. Produces `1` for a positive 
     number or `infinity`. Produces `-1` for a negative
     number or `-infinity`. Produces `0` for `+0`, `-0`, 
     or undefined."
    shared actual native Integer sign;
    
    "Determines if this value is a positive number or
     `infinity`. Produces `false` for a negative number, 
     `+0`, `-0`, or undefined."
    shared actual native Boolean positive;
    
    "Determines if this value is a negative number or
     `-infinity`. Produces `false` for a positive number, 
     `+0`, `-0`, or undefined."
    shared actual native Boolean negative;
    
    "Determines if this value is a positive number, `+0`, 
     or `infinity`. Produces `false` for a negative 
     number, `-0`, or undefined."
    shared native Boolean strictlyPositive;
    
    "Determines if this value is a negative number, `-0`, 
     or `-infinity`. Produces `false` for a positive 
     number, `+0`, or undefined."
    shared native Boolean strictlyNegative;
    
}

"The `Float` value of the given string representation of 
 a decimal number or `null` if the string does not 
 represent a decimal number.
 
 The syntax accepted by this method is the same as the 
 syntax for a `Float` literal in the Ceylon language 
 except that it may optionally begin with a sign 
 character (`+` or `-`)."
shared native Float? parseFloat(String string);