Files
2023-11-01 09:29:33 +01:00

39 KiB

layout, title, parent, ancestor
layout title parent ancestor
default Floats Primitive Funcons-beta

Funcons-beta : Floats.cbs

Floats

[
  Datatype float-formats
  Funcon   binary32
  Funcon   binary64
  Funcon   binary128
  Funcon   decimal64
  Funcon   decimal128
  Type     floats
  Funcon   float
  Funcon   quiet-not-a-number       Alias qNaN
  Funcon   signaling-not-a-number   Alias sNaN
  Funcon   positive-infinity        Alias pos-inf
  Funcon   negative-infinity        Alias neg-inf
  Funcon   float-convert
  Funcon   decimal-float
  Funcon   float-equal
  Funcon   float-is-less
  Funcon   float-is-less-or-equal
  Funcon   float-is-greater
  Funcon   float-is-greater-or-equal
  Funcon   float-negate
  Funcon   float-absolute-value
  Funcon   float-add
  Funcon   float-subtract
  Funcon   float-multiply
  Funcon   float-multiply-add
  Funcon   float-divide
  Funcon   float-remainder
  Funcon   float-sqrt
  Funcon   float-integer-power
  Funcon   float-float-power
  Funcon   float-round-ties-to-even
  Funcon   float-round-ties-to-infinity
  Funcon   float-floor
  Funcon   float-ceiling
  Funcon   float-truncate
  Funcon   float-pi
  Funcon   float-e
  Funcon   float-log
  Funcon   float-log10
  Funcon   float-exp
  Funcon   float-sin
  Funcon   float-cos
  Funcon   float-tan
  Funcon   float-asin
  Funcon   float-acos
  Funcon   float-atan
  Funcon   float-sinh
  Funcon   float-cosh
  Funcon   float-tanh
  Funcon   float-asinh
  Funcon   float-acosh
  Funcon   float-atanh
  Funcon   float-atan2
]

Floating-point numbers according to the IEEE 754 Standard (2008).

See: - http://doi.org/10.1109/IEEESTD.2008.4610935 - https://en.wikipedia.org/wiki/IEEE_754

Datatype
  float-formats ::= binary32 | binary64 | binary128 | decimal64 | decimal128
Built-in Type
  floats(_:float-formats)

Note that for distinct formats FF1, FF2, the types floats(FF1) and floats(FF2) are not necessarily disjoint.

Built-in Funcon
  float(FF:float-formats, 
        _:bounded-integers(0, 1), _:natural-numbers, _:integers) : =>floats(FF)

Each finite number is described by three integers:

  • s = a sign (zero or one),
  • c = a significand (or 'coefficient'),
  • q = an exponent. The numerical value of a finite number is (-1)^s * c * b^q where b is the base (2 or 10), also called radix.

The possible finite values that can be represented in a format are determined by the base b, the number of digits in the significand (precision p), and the exponent parameter emax:

  • c must be an integer in the range zero through (b^p)-1 (e.g., if b=10 and p=7 then c is 0 through 9999999);
  • q must be an integer such that 1-emax <= q+p-1 <= emax (e.g., if p=7 and emax=96 then q is -101 through 90).

Note that float(FF, S, C, Q) is not a 1-1 operation.

Built-in Funcon
  quiet-not-a-number(FF:float-formats) : floats(FF)
Alias
  qNaN = quiet-not-a-number
Built-in Funcon
  signaling-not-a-number(FF:float-formats) : floats(FF)
Alias
  sNaN = signaling-not-a-number
Built-in Funcon
  positive-infinity(FF:float-formats) : floats(FF)
Alias
  pos-inf = positive-infinity
Built-in Funcon
  negative-infinity(FF:float-formats) : floats(FF)
Alias
  neg-inf = negative-infinity

Conversions

Built-in Funcon
  float-convert(FF1:float-formats, 
                FF2:float-formats, F:floats(FF1)) : =>floats(FF2)
Built-in Funcon
  decimal-float(FF:float-formats, 
                _:strings, _:strings, _:strings) : =>floats(FF)

decimal-float(F, "M", "N", "E") is an approximation in floats(FF) to the value of 'M.N' times 10 to the power 'E', where "M.N" is decimal notation (optionally-signed) for a fixed-point number and "E" is decimal notation (optionally signed) for an integer. When any argument string is invalid, the result is quiet-not-a-number(F).

Comparison

Built-in Funcon
  float-equal(FF:float-formats,
              _:floats(FF), _:floats(FF)) : =>booleans
Built-in Funcon
  float-is-less(FF:float-formats,
                _:floats(FF), _:floats(FF)) : =>booleans
Built-in Funcon
  float-is-less-or-equal(FF:float-formats,
                         _:floats(FF), _:floats(FF)) : =>booleans
Built-in Funcon
  float-is-greater(FF:float-formats,
                   _:floats(FF), _:floats(FF)) : =>booleans
Built-in Funcon
  float-is-greater-or-equal(FF:float-formats,
                            _:floats(FF), _:floats(FF)) : =>booleans
#### Arithmetic
Built-in Funcon
  float-negate(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-absolute-value(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-add(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-subtract(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-multiply(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-multiply-add(FF:float-formats,
                     _:floats(FF), _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-divide(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-remainder(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-sqrt(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-integer-power(FF:float-formats, _:floats(FF), _:integers) : =>floats(FF)
Built-in Funcon
  float-float-power(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)
#### Rounding
Built-in Funcon
  float-round-ties-to-even(FF:float-formats, _:floats(FF)) : =>integers
Built-in Funcon
  float-round-ties-to-infinity(FF:float-formats, _:floats(FF)) : =>integers
Built-in Funcon
  float-floor(FF:float-formats, _:floats(FF)) : =>integers
Built-in Funcon
  float-ceiling(FF:float-formats, _:floats(FF)) : =>integers
Built-in Funcon
  float-truncate(FF:float-formats, _:floats(FF)) : =>integers
#### Miscellaneous
Built-in Funcon
  float-pi(FF:float-formats) : =>floats(FF)
Built-in Funcon
  float-e(FF:float-formats) : =>floats(FF)
Built-in Funcon
  float-log(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-log10(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-exp(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-sin(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-cos(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-tan(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-asin(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-acos(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-atan(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-sinh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-cosh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-tanh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-asinh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-acosh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-atanh(FF:float-formats, _:floats(FF)) : =>floats(FF)
Built-in Funcon
  float-atan2(FF:float-formats, _:floats(FF), _:floats(FF)) : =>floats(FF)

From the PLanCompS Project | CBS-beta issues... | Suggest an improvement...