PreviousUpNext

15.3.472  src/lib/std/src/float.api

## float.api

# Compiled by:
#     src/lib/std/src/standard-core.sublib

# This api is implemented in:
#
#     src/lib/std/float.pkg
#
api Float {
    #
    Float;

    package math:  Math;                # Math  is from   src/lib/std/src/math.api
      sharing Float == math::Float;

    radix:      int::Int;
    precision:  int::Int;
        #  the number of digits (each 0..radix-1) in mantissa 

    max_finite:     Float;   #  maximum finite number 
# ** these cause problems on the alpha? **
    min_pos:        Float;   #  minimum non-zero positive number 
    min_normal_pos:  Float;   #  minimum non-zero normalized number 

    pos_inf:  Float;
    neg_inf:  Float;

    +    : (Float, Float) -> Float;
    -    : (Float, Float) -> Float;
    *    : (Float, Float) -> Float;
    /    : (Float, Float) -> Float;
    *+   : (Float, Float, Float) -> Float;
    *-   : (Float, Float, Float) -> Float;
    (-_) : Float -> Float;

    abs:       Float -> Float;
    min:       (Float, Float) -> Float;
    max:       (Float, Float) -> Float;

    sign:      Float -> Int;
    sign_bit:   Float -> Bool;
    same_sign:  (Float, Float) -> Bool;
    copy_sign:  (Float, Float) -> Float;

    compare:  (Float, Float) -> Order;
    compare_real:  (Float, Float) -> ieee_float::Real_Order;

    <  : (Float, Float) -> Bool;
    <= : (Float, Float) -> Bool;
    >  : (Float, Float) -> Bool;
    >= : (Float, Float) -> Bool;

    ==== : (Float, Float) -> Bool;
    !=   : (Float, Float) -> Bool;

    ?=== : (Float, Float) -> Bool;
    unordered:  (Float, Float) -> Bool;

    is_finite:  Float -> Bool;
    is_nan:  Float -> Bool;
    is_normal:  Float -> Bool;

    ilk:  Float -> ieee_float::Float_Ilk;

    format:       number_string::Float_Format -> Float -> String;
    scan:         number_string::Reader (Char, X) -> number_string::Reader (Float, X);

    to_string:    Float  -> String;
    from_string:  String -> Null_Or(Float);

    to_mantissa_exponent:  Float -> { mantissa: Float, exponent: Int };
    from_mantissa_exponent:         { mantissa: Float, exponent: Int } -> Float;

    split:  Float -> { whole: Float, frac: Float };
    float_mod:  Float -> Float;

    rem:  (Float, Float) -> Float;
    next_after:   (Float, Float) -> Float;
    check_float:  Float -> Float;

    floor:     Float -> int::Int;
    ceil:      Float -> int::Int;
    truncate:  Float -> int::Int;
    round:     Float -> int::Int;

    float_floor:     Float -> Float;
    float_ceil:      Float -> Float;
    float_truncate:  Float -> Float;
    float_round:     Float -> Float;

    to_int:            ieee_float::Rounding_Mode -> Float -> Int;
    to_multiword_int:  ieee_float::Rounding_Mode -> Float -> multiword_int::Int;

    from_int:                       int::Int -> Float;
    from_multiword_int:   multiword_int::Int -> Float;

    to_eight_byte_float:   Float -> float64::Float;
    from_eight_byte_float: ieee_float::Rounding_Mode -> float64::Float -> Float;

    to_decimal:    Float -> ieee_float::Decimal_Approx;
    from_decimal:  ieee_float::Decimal_Approx -> Float;

    sum:      List( Float ) -> Float;
    product:  List( Float ) -> Float;

    mean:     List( Float ) -> Float;
    median:   List( Float ) -> Float;

    list_min: List( Float ) -> Float;                                   # Raises an exception if list is empty.
    list_max: List( Float ) -> Float;                                   # Raises an exception if list is empty.

    sort:                       List( Float ) -> List( Float );
    sort_and_drop_duplicates:   List( Float ) -> List( Float );
};



## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext