Section Header
    + name := NUMERIC;
    - comment :="Generic number.";
Section Inherit
    - parent_object:OBJECT :=
Section Public
Features
    - one:SELF <-
        Neutral element for `*' and `/'.
    - zero:SELF <-
        Neutral element for `+' and `-'.
Functions
    - in_range low:SELF to up:SELF :BOOLEAN <-
    - sign:INTEGER <-
        Sign of Current (0 -1 or 1).
binary operator :
    - '-' Left 80 other:SELF :SELF <-
    - '*' Left 100 other:SELF :SELF <-
    - '/' Left 100 other:SELF :SELF <-
        ? {other/=0}
    - '+' Left 80 other:SELF :SELF <-
Unary operator
    - '+' :SELF <-
    - '-' :SELF <-
Compatibility Binary operator
    - '-#' Left 80 other:INTEGER :SELF <-
    - '*#' Left 100 other:INTEGER :SELF <-
    - '/#' Left 100 other:INTEGER :SELF <-
    - '+#' Left 80 other:INTEGER :SELF <-
    - '>#' Right 60 other:INTEGER :BOOLEAN <-
    - '<#' Right 60 other:INTEGER :BOOLEAN <-
    - '<=#' Right 60 other:INTEGER :BOOLEAN <-
    - '>=#' Right 60 other:INTEGER :BOOLEAN <-
Test binary operator :
    - '==' Right 60 other:SELF :BOOLEAN <-
    - '!==' Right 60 other:SELF :BOOLEAN <-
    - '>' Right 60 other:SELF :BOOLEAN <-
    - '<' Right 60 other:SELF :BOOLEAN <-
    - '<=' Right 60 other:SELF :BOOLEAN <-
    - '>=' Right 60 other:SELF :BOOLEAN <-
Switch case :
    - when value:SELF then block:BLOCK :SELF <-
    - when value1:SELF or value2:SELF then block:BLOCK :SELF <-
    - when first_value:SELF to last_value:SELF then block:BLOCK :SELF <-
Looping.
    - to limit_up:SELF do blc:BLOCK <-
    - downto limit_down:SELF do blc:BLOCK <-
    - to limit_up:SELF by step:SELF do blc:BLOCK <-
    - downto limit_down:SELF by step:SELF do blc:BLOCK <-
Function :
    - abs:SELF <-
        Absolute value of `self'.
    - min other:SELF :SELF <-
    - max other:SELF :SELF <-
Conversion for other type.
    - to_string:STRING <-
        Convert the decimal view of `self' into a new allocated STRING.
        For example, if `self' is -1 the new STRING is -1.
        Note: see also `append_in' to save memory.
    - to_boolean:BOOLEAN <-
    - append_in buffer:STRING <-
        Append in the `buffer' the equivalent of `to_string'. No new STRING
        creation during the process.
    - to_string_format s:SELF :STRING <-
        Same as `to_string' but the result is on `s' character and the
        number is right aligned.
        Note: see `append_in_format' to save memory.
    - append_in str:STRING format s:INTEGER <-
        Append the equivalent of `to_string_format' at the end of
        `str'. Thus you can save memory because no other
        STRING is allocate for the job.
    - append_in str:STRING format s:INTEGER with char:CHARACTER <-
        Append the equivalent of `to_string_format' at the end of
        `str'. Thus you can save memory because no other
        STRING is allocate for the job.
Print
    - print <-
    - print_format s:SELF <-
    - print_format s:SELF with c:CHARACTER <-
Conversions with tests
    - bound_test low:INTEGER_64 to up:UINTEGER_64 :BOOLEAN <-
- To unsigned integers
    - to_uinteger_8:UINTEGER_8 <-
    - to_uinteger_16:UINTEGER_16 <-
    - to_uinteger_32:UINTEGER_32 <-
    - to_uinteger_64:UINTEGER_64 <-
    - to_uinteger_big:UINTEGER_BIG <-
- To signed integers
    - to_integer:INTEGER <-
    - to_integer_8:INTEGER_8 <-
    - to_integer_16:INTEGER_16 <-
    - to_integer_32:INTEGER_32 <-
    - to_integer_64:INTEGER_64 <-
        [ -? {bound_test (INTEGER_64.minimum) to (INTEGER_64.maximum)}; ]
    - to_integer_big:UINTEGER_BIG <-
- To unsigned fixed reals
    - to_ureal_16_16:UREAL_16_16 <-
    - to_ureal_24_8:UREAL_24_8 <-
    - to_ureal_26_6:UREAL_26_6 <-
- To signed fixed reals
    - to_real_16_16:REAL_16_16 <-
    - to_real_24_8:REAL_24_8 <-
    - to_real_26_6:REAL_26_6 <-
- To float reals
    - to_real:REAL <-
    - to_real_32:REAL_32 <-
    - to_real_64:REAL_64 <-
    - to_real_80:REAL_80 <-
Section Public
Convertion format without test.
    - to_raw_integer:INTEGER <-
    - to_raw_uinteger_8:UINTEGER_8 <-
    - to_raw_uinteger_16:UINTEGER_16 <-
    - to_raw_uinteger_32:UINTEGER_32 <-
    - to_raw_uinteger_64:UINTEGER_64 <-
    - to_raw_integer_8:INTEGER_8 <-
    - to_raw_integer_16:INTEGER_16 <-
    - to_raw_integer_32:INTEGER_32 <-
    - to_raw_integer_64:INTEGER_64 <-
    - to_raw_real:REAL <-
    - to_raw_ureal_16_16:UREAL_16_16 <-
    - to_raw_ureal_24_8:UREAL_24_8 <-
    - to_raw_ureal_26_6:UREAL_26_6 <-
    - to_raw_real_16_16:REAL_16_16 <-
    - to_raw_real_24_8:REAL_24_8 <-
    - to_raw_real_26_6:REAL_26_6 <-
    - to_raw_real_32:REAL_32 <-
    - to_raw_real_64:REAL_64 <-
    - to_raw_real_80:REAL_80 <-