std/num/double▲toc

64-bit IEEE double floating point numbers.

.

fun (~=)( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Return if two doubles are nearly equal with respect to an epsilon of 8*dbl-epsilonstd/num/double/dbl-epsilon: double. See also nearly-eqstd/num/double/nearly-eq: (x : double, y : double, epsilon : ?double) -> bool which takes an explicit epsilon.

fun abs-max( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The maximum of the absolute values.

fun abs-max( xs : liststd/core/list: V -> V<doublestd/core/types/double: V> ) : doublestd/core/types/double: V

The maximum of a list of absolute values.

fun acos( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the arc-cosine of d.

fun acosh( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The area hyperbolic cosine of d.

fun asin( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the arc-sine of d.

fun asinh( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The area hyperbolic sine of d.

fun atan( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the arc-tangent of d.

fun atan2( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the arc-tangent of a point (x,y).

fun atanh( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The area hyperbolic tangent of d.

fun ceiling( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the smallest integer equal or larger than d.

fun cos( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the cosine of an angle in radians d.

fun cosh( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The hyperbolic cosine of d.

val dbl-e: doublestd/core/types/double: V

The e) constant.

val dbl-epsilon: doublestd/core/types/double: V

Machine epsilon: the difference between 1.0 and the next representable doublestd/core/types/double: V value.

val dbl-euler: doublestd/core/types/double: V

 Euler's constant.

val dbl-log10: doublestd/core/types/double: V

The natural logarithm of 10.

val dbl-log10e: doublestd/core/types/double: V

The base-10 logarithm of e.

val dbl-log2: doublestd/core/types/double: V

The natural logarithm of 2.

val dbl-log2e: doublestd/core/types/double: V

The base-2 logarithm of e.

val dbl-max: doublestd/core/types/double: V

Maximum double value.

val dbl-max-prec: intstd/core/types/int: V

maximal precision in decimal digits of a doublestd/core/types/double: V.

val dbl-min: doublestd/core/types/double: V

Smallest positive normalized double value.

val dbl-pi: doublestd/core/types/double: V

π.

val dbl-pi2: doublestd/core/types/double: V

π/2.

val dbl-pi34: doublestd/core/types/double: V

3π/4.

val dbl-pi4: doublestd/core/types/double: V

π/4.

val dbl-sqrt12: doublestd/core/types/double: V

1.0 / sqrtstd/num/double/sqrt: (d : double) -> double(2.0) (= sqrtstd/num/double/sqrt: (d : double) -> double(0.5)).

val dbl-sqrt2: doublestd/core/types/double: V

The square-root of 2.

val dbl-true-min: doublestd/core/types/double: V

Smallest positive subnormal value (i.e. DBL_TRUE_MIN).

val dbl-twopi: doublestd/core/types/double: V

2π.

fun decode( d : doublestd/core/types/double: V ) : (intstd/core/types/int: V, intstd/core/types/int: V)

Decode a double d into a tuple (m,e) of a mantissa m and exponent e such that m·2e = d exactly. The mantissa m is always either 0 or in the range [252, 253). See also frexpstd/num/double/frexp: (x : double) -> (double, int).

fun deg( rad : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Convert radians to degrees.

fun double-from-bits( lo : int32std/core/types/int32: V, hi : int32std/core/types/int32: V ) : doublestd/core/types/double: V

Low-level: create a doublestd/core/types/double: V from the given lo and hi 32-bits.

fun double-to-bits( d : doublestd/core/types/double: V ) : (int32std/core/types/int32: V, int32std/core/types/int32: V)

Low-level: return the (lo,hi) bits of a 64-bit double.

fun encode( man : intstd/core/types/int: V, exp : intstd/core/types/int: V ) : doublestd/core/types/double: V

Create a double d given a mantissa man and exponent expstd/num/double/exp: (p : double) -> double such that man·2expstd/num/double/exp: (p : double) -> double = d exactly (if it is representable by a doublestd/core/types/double: V). See also ldexpstd/num/double/ldexp: (x : double, e : int) -> double.

fun exp( p : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return e to the power of p.

fun exp10( p : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the 10 to the power of p.

fun exp2( p : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the 2 to the power of p.

fun exp2( e : intstd/core/types/int: V ) : doublestd/core/types/double: V

Calculate 2·e for an integer e. Uses efficient bit conversion for exponents between -1022 and 1023 and otherwise falls back to the regular exp2 function converting e to a double.

fun expm1( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return expstd/num/double/exp: (p : double) -> double(x - 1.0). Avoids rounding errors for values of x very close to 1.0.

fun ffraction( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the ‘floored’ fraction of d, always greater or equal to zero.
d.floorstd/num/double/floor: (d : double) -> double + d.ffractionstd/num/double/ffraction: (d : double) -> double === d
(-2.4).ffractionstd/num/double/ffraction: (d : double) -> double === 0.6.

fun floor( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the largest integer equal or less than d.

fun fmadd( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V, z : doublestd/core/types/double: V ) : doublestd/core/types/double: V

fused multiply-add. Computes (x*y)+z as if to infinite precision with only the final result rounded back to a doublestd/core/types/double: V.

fun fraction( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the fractional part of a doublestd/core/types/double: V d.
d.truncate + d.fractionstd/num/double/fraction: (d : double) -> double === d
(-2.4).fractionstd/num/double/fraction: (d : double) -> double === -0.4.

fun frexp( x : doublestd/core/types/double: V ) : (doublestd/core/types/double: V, intstd/core/types/int: V)

‘Fraction/exponent’: return the normalized fraction f and exponent expstd/num/double/exp: (p : double) -> double for a number x such that x == f·2expstd/num/double/exp: (p : double) -> double. The absolute value of the fraction f is always in the range [0.5, 1.0), or one of 0.0, -0.0, neginfstd/num/double/neginf: double, posinfstd/num/double/posinf: double, or nanstd/num/double/nan: double. See also decodestd/num/double/decode: (d : double) -> (int, int) which decodes to an integer mantissa.

fun hypot( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The hypotenuse of x and y: sqrtstd/num/double/sqrt: (d : double) -> double(x*x + y*y). Prevents overflow for large numbers.

fun hypot( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V, z : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The square root of the sum of the squares of three doubles. Prevents overflow for large numbers.

fun hypot( xs : liststd/core/list: V -> V<doublestd/core/types/double: V> ) : doublestd/core/types/double: V

The square root of the sum of squares of a list of doubles. Prevents overflow for large numbers and uses Kahan-Babuškan-Neumaier summation for precision.

fun is-finite( d : doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Is this a finite number (i.e. not nanstd/num/double/nan: double or infinity).

fun is-inf( d : doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Is this value equal to negative or positive infinity ?

fun is-nan( d : doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Is this value equal to NaN ?

fun is-neginf( d : doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Is this value equal to negative infinity ?

fun is-negzero( d : doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Is this a negative zero value?

fun is-posinf( d : doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Is this value equal to positive infinity ?

fun is-subnormal( d : doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Is this a subnormal value? (i.e. 0 < d.abs < dbl-minstd/num/double/dbl-min: double).

fun ldexp( x : doublestd/core/types/double: V, e : intstd/core/types/int: V ) : doublestd/core/types/double: V

‘Load exponent’: returns x·2e for a is-finitestd/num/double/is-finite: (d : double) -> bool x and otherwise x itself. See also encodestd/num/double/encode: (man : int, exp : int) -> double which loads an integer mantissa.

fun log( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the natural logarithm (in base e) of a doublestd/core/types/double: V d.

fun log10( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the logarithm in base 10 of a doublestd/core/types/double: V d.

fun log1p( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return logstd/num/double/log: (d : double) -> double(1.0 + x). Avoids potential imprecision for small x where adding 1.0 explicitly may lead to rounding errors.

fun log2( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the logarithm in base 2 of a doublestd/core/types/double: V d.

fun logaddexp( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Returns logstd/num/double/log: (d : double) -> double(expstd/num/double/exp: (p : double) -> double(x) + expstd/num/double/exp: (p : double) -> double(y)). Avoids overlow/underflow errors.

fun logaddexp2( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Returns log2std/num/double/log2: (d : double) -> double( exp2(x) + exp2(y) ). Avoids overlow/underflow errors.

val nan: doublestd/core/types/double: V

Represents a value that is not a number (NaN).

fun nearly-eq( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V, epsilon : ?doublestd/core/types/double: V ) : boolstd/core/types/bool: V

Return if two doubles are nearly equal with respect to some epsilon (=8*dbl-epsilonstd/num/double/dbl-epsilon: double). The epsilon is the nearest difference for numbers around 1.0. The routine automatically scales the epsilon for larger and smaller numbers, and for subnormal numbers.

val neginf: doublestd/core/types/double: V

Negative infinity.

fun parse-double( s : stringstd/core/types/string: V ) : maybestd/core/types/maybe: V -> V<doublestd/core/types/double: V>

Parse a double number. Can be “NaN”, “Inf(inity)” (case-insensitive), a fix-point number (1.2) or in scientific notation (-2.3e-5). Also allows floats in hexadecimal notation (0xA.Fp-10) that can be represented precisely (and are the preferred round trip format).

fun pdouble(): parsestd/text/parse/parse: HX doublestd/core/types/double: V
val pi: doublestd/core/types/double: V

π.

val posinf: doublestd/core/types/double: V

Positive infinity.

fun pow( d : doublestd/core/types/double: V, p : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the d raised to the power of p.

fun rad( deg : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Convert degrees to radians.

fun round( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Round a double to its nearest integral value. If the value is halfway between two integers, the value is rounded to the even one.

fun round-to-prec( d : doublestd/core/types/double: V, prec : intstd/core/types/int: V ) : doublestd/core/types/double: V

Round a double to a specified precision. Rounds to the even number in case of a tie.
123.456.round-to-precstd/num/double/round-to-prec: (d : double, prec : int) -> double(2) == 123.46
123.456.round-to-precstd/num/double/round-to-prec: (d : double, prec : int) -> double(-1) == 120.0.

fun show-hex( d : doublestd/core/types/double: V, width : ?intstd/core/types/int: V, use-capitals : ?boolstd/core/types/bool: V, pre : ?stringstd/core/types/string: V ) : stringstd/core/types/string: V

Show a double in hexadecimal notation. An advantage of this format is that it precisely represents the doublestd/core/types/double: V and can reliably (and efficiently) be parsed back, i.e. d.show-hex.parse-doublestd/num/double/parse-double: (s : string) -> maybe<double> == Juststd/core/types/Just: forall<a> (value : a) -> maybe<a>(d). The significant is the hexadecimal fraction while the exponent after the p is the decimal power of 2. For example, 0xA.Fp-10 = (10 + 15/16)·2-10 (not 2-16!) = 0.01068115234375. Equivalently, 0xA.Fp-10 == 0x5.78p-9 == 0x2.BCp-8 == 0x1.5Ep-7.

> dbl-min.show-hex
"0x1.0p-1022"
> 0.1.show-hex
"0x1.999999999999Ap-4"
> dbl-max.show-hex
"0x1.FFFFFFFFFFFFFp+1023"
> -0.0.show-hex
"-0x0.0p+0"
> nan.show-hex
"NaN"
> 0.01068115234375.show-hex
"0x1.5Ep-7"
> dbl-minstd/num/double/dbl-min: double.show-hex
"0x1.0p-1022"
> 0.1.show-hex
"0x1.999999999999Ap-4"
> dbl-maxstd/num/double/dbl-max: double.show-hex
"0x1.FFFFFFFFFFFFFp+1023"
> -0.0.show-hex
"-0x0.0p+0"
> nanstd/num/double/nan: double.show-hex
"NaN"
> 0.01068115234375.show-hex
"0x1.5Ep-7"

.

fun sin( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the sine of an angle in radians d.

fun sinh( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The hyperbolic sine of d.

fun sqr( x : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The square of a double.

fun sqrt( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the square root of a value d Returns nanstd/num/double/nan: double if d == nanstd/num/double/nan: double or if d is negative. Returns inf if d == inf .

fun sum( xs : liststd/core/list: V -> V<doublestd/core/types/double: V> ) : doublestd/core/types/double: V

Return the sum of a list of doubles. Uses Kahan-Babuškan-Neumaier summation to minimize rounding errors. This is more precise as Kahan summation and about as fast.
[1.0e3,1.0e97,1.0e3,-1.0e97].sum == 2000.0
A. Neumaier, Rundungsfehleranalyse einiger Verfahren zur Summation endlicher Summen. Math. Mechanik, 54:39–51, 1974.

fun tan( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the tangent of an angle in radians d.

fun tanh( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

The hyperbolic tangent of d.

fun truncate( d : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return the integral part of a doublestd/core/types/double: V d . If d >= 0.0 , return the largest integer equal or less to d , If d < 0.0 , return the smallest integer equal or larger to d .

fun with-sign-of( x : doublestd/core/types/double: V, y : doublestd/core/types/double: V ) : doublestd/core/types/double: V

Return x with the sign of y.

private import std/core/typesstd/core/types, std/core/hndstd/core/hnd, std/corestd/core, std/num/int32std/num/int32, std/text/parsestd/text/parse