number¶
fun integer::random(Min?: number, Max?: number): integerReturns a random integer between
MinandMax(whereMax\(\leq 2^{64} - 1\)). If omitted,Mindefaults to0andMaxdefaults to \(2^{64} - 1\).fun real::random(Min?: number, Max?: number): realReturns a random real in the range
[Min, Max). If omitted,Mindefaults to0andMaxdefaults to1.type complex < numberTBD
meth complex(String: string): complex | errorReturns the complex number in
Stringor an error ifStringdoes not contain a valid complex number.meth (A: complex) * (B: complex): realcomplex
A * B.meth (A: complex) * (B: double): complexReturns
A * B.meth (A: complex) * (B: integer): complexReturns
A * B.meth (A: complex) + (B: complex): realcomplex
A + B.meth (A: complex) + (B: double): complexReturns
A + B.meth (A: complex) + (B: integer): complexReturns
A + B.meth -(A: complex): complexReturns
-A.meth (A: complex) - (B: complex): realcomplex
A - B.meth (A: complex) - (B: double): complexReturns
A - B.meth (A: complex) - (B: integer): complexReturns
A - B.meth (A: complex) / (B: complex): realcomplex
A / B.meth (A: complex) / (B: double): complexReturns
A / B.meth (A: complex) / (B: integer): complexReturns
A / B.meth (Z: complex):i: realReturns the imaginary component of
Z.meth (Z: complex):r: realReturns the real component of
Z.meth real(Arg₁: complex)TBD
meth ~(A: complex): complexReturns
~A.meth (A: complex) ~ (B: complex): realcomplex
A ~ B.meth (A: complex) ~ (B: double): complexReturns
A ~ B.meth (A: complex) ~ (B: integer): complexReturns
A ~ B.meth (Buffer: string::buffer):append(Value: complex)Appends
ValuetoBuffer.meth (Buffer: string::buffer):append(Value: complex, Format: string)Appends
ValuetoBufferusingFormatas a (checked)printfformat string for the real and imaginary components.type complex::double < complexTBD
type decimal < realTBD
meth (Arg₁: decimal) * (Arg₂: decimal)TBD
meth (Arg₁: decimal) * (Arg₂: integer)TBD
meth (Arg₁: decimal) + (Arg₂: decimal)TBD
meth (Arg₁: decimal) - (Arg₂: decimal)TBD
meth real(Arg₁: decimal)TBD
meth (Arg₁: decimal):scaleTBD
meth (Arg₁: decimal):unscaledTBD
type double < realTBD
meth (A: double) != (B: double): realReturns
BifA != B, otherwise returnsnil.meth (A: double) * (B: complex): complexReturns
A * B.meth (A: double) * (B: double): realReturns
A * B.meth (A: double) + (B: complex): complexReturns
A + B.meth (A: double) + (B: double): realReturns
A + B.meth ++(Real: double): realReturns
Real + 1meth -(A: double): realReturns
-A.meth (A: double) - (B: complex): complexReturns
A - B.meth (A: double) - (B: double): realReturns
A - B.meth --(Real: double): realReturns
Real - 1meth (A: double) / (B: complex): complexReturns
A / B.meth (A: double) / (B: double): realReturns
A / B.meth (A: double) < (B: double): realReturns
BifA < B, otherwise returnsnil.meth (A: double) <= (B: double): realReturns
BifA <= B, otherwise returnsnil.meth (Real₁: double) <> (Real₂: double): integerReturns
-1,0or1depending on whetherReal₁is less than, equal to or greater thanReal₂.meth (Real₁: double) <> (Int₂: integer): integerReturns
-1,0or1depending on whetherReal₁is less than, equal to or greater thanInt₂.meth (A: double) = (B: double): realReturns
BifA = B, otherwise returnsnil.meth (A: double) > (B: double): realReturns
BifA > B, otherwise returnsnil.meth (A: double) >= (B: double): realReturns
BifA >= B, otherwise returnsnil.meth (A: double):max(B: double): realReturns
max(A, B).meth (A: double):max(B: integer): realReturns
max(A, B).meth (A: double):min(B: double): realReturns
min(A, B).meth (A: double):min(B: integer): realReturns
min(A, B).meth (A: double) ~ (B: complex): complexReturns
A ~ B.meth (A: double) ~ (B: double): realReturns
A ~ B.meth (Buffer: string::buffer):append(Value: double)Appends
ValuetoBuffer.meth (Buffer: string::buffer):append(Value: double, Format: string)Appends
ValuetoBufferusingFormatas a (checked)printfformat string.type integer < rational, functionBase type of integers.
meth integer(Real: double): integerConverts
Realto an integer (using default rounding).meth integer(String: string): integer | errorReturns the base
10integer inStringor an error ifStringdoes not contain a valid integer.integer("123") :> 123 integer("ABC") :> error("ValueError", "Error parsing integer")
meth integer(String: string, Base: integer): integer | errorReturns the base
Baseinteger inStringor an error ifStringdoes not contain a valid integer.fun integer::random_cycle(Max: integer): listReturns a random cyclic permutation (no sub-cycles) of
1, ..., Max.fun integer::random_cycle(Max: integer): permutationReturns a random cyclic permutation (no sub-cycles) of
1, ..., Max.fun integer::random_permutation(Max: integer): listReturns a random permutation of
1, ..., Max.fun integer::random_permutation(Max: integer): permutationReturns a random permutation of
1, ..., Max.meth (A: integer) != (B: integer): integerReturns
BifA != B, otherwise returnsnil.meth (Int₁: integer) !| (Int₂: integer): integerReturns
Int₂if it is not divisible byInt₁andnilotherwise.meth (Int₁: integer) % (Int₂: integer): integerReturns the remainder of
Int₁divided byInt₂. Note: the result is calculated by rounding towards 0. In particular, ifInt₁is negative, the result will be negative. For a nonnegative remainder, useInt₁ mod Int₂.meth (A: integer) * (B: complex): complexReturns
A * B.meth (Arg₁: integer) * (Arg₂: decimal)TBD
meth (A: integer) * (B: integer): integerReturns
A * B.meth (A: integer) + (B: complex): complexReturns
A + B.meth (A: integer) + (B: integer): integerReturns
A + B.meth ++(Int: integer): integerReturns
Int + 1meth -(A: integer): integerReturns
-A.meth (A: integer) - (B: complex): complexReturns
A - B.meth (A: integer) - (B: integer): integerReturns
A - B.meth --(Int: integer): integerReturns
Int - 1meth (A: integer) / (B: complex): complexReturns
A / B.meth (Int₁: integer) / (Int₂: integer): integer | realReturns
Int₁ / Int₂as an integer if the division is exact, otherwise as a real.let N := 10 / 2 :> 5 type(N) :> <<integer32>> let R := 10 / 3 :> 10/3 type(R) :> <<rational48>>
meth (A: integer) /\ (B: integer): integerReturns the bitwise and of
AandB.meth (A: integer) < (B: integer): integerReturns
BifA < B, otherwise returnsnil.meth (A: integer) << (B: integer): integerReturns
A << B.meth (A: integer) <= (B: integer): integerReturns
BifA <= B, otherwise returnsnil.meth (Int₁: integer) <> (Real₂: double): integerReturns
-1,0or1depending on whetherInt₁is less than, equal to or greater thanReal₂.meth (Int₁: integer) <> (Int₂: integer): integerReturns
-1,0or1depending on whetherInt₁is less than, equal to or greater thanInt₂.meth (A: integer) = (B: integer): integerReturns
BifA = B, otherwise returnsnil.meth (A: integer) > (B: integer): integerReturns
BifA > B, otherwise returnsnil.meth (A: integer) >< (B: integer): integerReturns the bitwise xor of
AandB.meth (A: integer) >= (B: integer): integerReturns
BifA >= B, otherwise returnsnil.meth (A: integer) >> (B: integer): integerReturns
A >> B.meth (A: integer) \/ (B: integer): integerReturns the bitwise or of
AandB.meth (A: integer):bsf: integerReturns the index of the least significant 1-bit of
A, or0ifA = 0.16:bsf :> 5 10:bsf :> 2 0:bsf :> 0
meth (A: integer):bsr: integerReturns the index of the most significant 1-bit of
A, or0ifA = 0.16:bsr :> 5 10:bsr :> 4 0:bsr :> 0
meth (Arg₁: integer):d(Arg₂: integer)TBD
meth (X: integer):dec: integerAtomic equivalent to
X := old - 1.meth (X: integer):dec(Y: integer): integerAtomic equivalent to
X := old - Y.meth decimal(Arg₁: integer)TBD
meth decimal(Arg₁: integer, Arg₂: integer)TBD
meth (Int₁: integer):div(Int₂: integer): integerReturns the quotient of
Int₁divided byInt₂. The result is calculated by rounding down in all cases.meth (X: integer):inc: integerAtomic equivalent to
X := old + 1.meth (X: integer):inc(Y: integer): integerAtomic equivalent to
X := old + Y.meth (A: integer):max(B: double): realReturns
max(A, B).meth (A: integer):max(B: integer): integerReturns
max(A, B).meth (A: integer):min(B: double): realReturns
min(A, B).meth (A: integer):min(B: integer): integerReturns
min(A, B).meth (Int₁: integer):mod(Int₂: integer): integerReturns the remainder of
Int₁divided byInt₂. Note: the result is calculated by rounding down in all cases. In particular, the result is always nonnegative.meth (A: integer):popcount: integerReturns the number of bits set in
A.meth real(Arg₁: integer)TBD
meth (Int₁: integer) | (Int₂: integer): integerReturns
Int₂if it is divisible byInt₁andnilotherwise.meth ~(A: integer): integerReturns
~A.meth (A: integer) ~ (B: complex): complexReturns
A ~ B.meth (A: integer) ~ (B: integer): integerReturns
A ~ B.meth (Buffer: string::buffer):append(Value: integer)Appends
ValuetoBufferin base10.meth (Buffer: string::buffer):append(Value: integer, Base: integer)Appends
ValuetoBufferin baseBase.meth (Buffer: string::buffer):append(Value: integer, Format: string)Appends
ValuetoBufferusingFormatas a (checked)printfformat string.meth (Buffer: string::buffer):append(Value: integer, Format: string)Appends
ValuetoBufferusingFormatas a (checked)printfformat string.meth (A: integer32) != (B: integer32): integerReturns
BifA != B, otherwise returnsnil.meth (Int₁: integer32) !| (Int₂: integer32): integerReturns
Int₂if it is not divisible byInt₁andnilotherwise.meth (Int₁: integer32) % (Int₂: integer32): integerReturns the remainder of
Int₁divided byInt₂. Note: the result is calculated by rounding towards 0. In particular, ifInt₁is negative, the result will be negative. For a nonnegative remainder, useInt₁ mod Int₂.meth (A: integer32) * (B: integer32): integerReturns
A * B.meth (Arg₁: integer32) * (Arg₂: integer64)TBD
meth (A: integer32) * (B: rational64): rationalReturns
A * B.meth (A: integer32) + (B: integer32): integerReturns
A + B.meth (Arg₁: integer32) + (Arg₂: integer64)TBD
meth (A: integer32) + (B: rational64): rationalReturns
A + B.meth -(A: integer32): integerReturns
-A.meth (A: integer32) - (B: integer32): integerReturns
A - B.meth (Arg₁: integer32) - (Arg₂: integer64)TBD
meth (A: integer32) - (B: rational64): rationalReturns
A - B.meth (Int₁: integer32) / (Int₂: integer32): integer | realReturns
Int₁ / Int₂as an integer if the division is exact, otherwise as a real.let N := 10 / 2 :> 5 type(N) :> <<integer32>> let R := 10 / 3 :> 10/3 type(R) :> <<rational48>>
meth (A: integer32) / (B: rational48): integerReturns
A / B.meth (A: integer32) /\ (B: integer32): integerReturns the bitwise and of
AandB.meth (A: integer32) < (B: integer32): integerReturns
BifA < B, otherwise returnsnil.meth (A: integer32) <= (B: integer32): integerReturns
BifA <= B, otherwise returnsnil.meth (Int₁: integer32) <> (Int₂: integer32): integerReturns
-1,0or1depending on whetherInt₁is less than, equal to or greater thanInt₂.meth (Int₁: integer32) <> (Int₂: integer64): integerReturns
-1,0or1depending on whetherInt₁is less than, equal to or greater thanInt₂.meth (A: integer32) = (B: integer32): integerReturns
BifA = B, otherwise returnsnil.meth (A: integer32) > (B: integer32): integerReturns
BifA > B, otherwise returnsnil.meth (A: integer32) >< (B: integer32): integerReturns the bitwise xor of
AandB.meth (A: integer32) >= (B: integer32): integerReturns
BifA >= B, otherwise returnsnil.meth (A: integer32) \/ (B: integer32): integerReturns the bitwise or of
AandB.meth (A: integer32):bsf: integerReturns the index of the least significant 1-bit of
A, or0ifA = 0.16:bsf :> 5 10:bsf :> 2 0:bsf :> 0
meth (A: integer32):bsr: integerReturns the index of the most significant 1-bit of
A, or0ifA = 0.16:bsr :> 5 10:bsr :> 4 0:bsr :> 0
meth (Int₁: integer32):div(Int₂: integer32): integerReturns the quotient of
Int₁divided byInt₂. The result is calculated by rounding down in all cases.meth (Int₁: integer32):mod(Int₂: integer32): integerReturns the remainder of
Int₁divided byInt₂. Note: the result is calculated by rounding down in all cases. In particular, the result is always nonnegative.meth (Int₁: integer32) | (Int₂: integer32): integerReturns
Int₂if it is divisible byInt₁andnilotherwise.meth ~(A: integer32): integerReturns
~A.meth (A: integer32) ~ (B: integer32): integerReturns
A ~ B.meth (Buffer: string::buffer):append(Value: integer32)Appends
ValuetoBufferin base10.meth (Buffer: string::buffer):append(Value: integer32, Base: integer)Appends
ValuetoBufferin baseBase.type integer64 < integerA 64-bit signed integer value.
fun (I: integer)(Arg₁, ..., Argₙ): any | nilReturns the
I-th argument ornilif there is noI-th argument. Negative values ofIare counted from the last argument. In particular,0(...)always returnsniland1behaves as the identity function.
2("a", "b", "c") :> "b" -1("a", "b", "c") :> "c" 4("a", "b", "c") :> nil 0("a", "b", "c") :> nil
meth (A: integer64) != (B: integer64): integerReturns
BifA != B, otherwise returnsnil.meth (Arg₁: integer64) * (Arg₂: integer32)TBD
meth (A: integer64) * (B: integer64): integerReturns
A * B.meth (Arg₁: integer64) + (Arg₂: integer32)TBD
meth (A: integer64) + (B: integer64): integerReturns
A + B.meth -(A: integer64): integerReturns
-A.meth (Arg₁: integer64) - (Arg₂: integer32)TBD
meth (A: integer64) - (B: integer64): integerReturns
A - B.meth (A: integer64) /\ (B: integer64): integerReturns
A /B.meth (A: integer64) < (B: integer64): integerReturns
BifA < B, otherwise returnsnil.meth (A: integer64) <= (B: integer64): integerReturns
BifA <= B, otherwise returnsnil.meth (Int₁: integer64) <> (Int₂: integer32): integerReturns
-1,0or1depending on whetherInt₁is less than, equal to or greater thanInt₂.meth (Int₁: integer64) <> (Int₂: integer64): integerReturns
-1,0or1depending on whetherInt₁is less than, equal to or greater thanInt₂.meth (A: integer64) = (B: integer64): integerReturns
BifA = B, otherwise returnsnil.meth (A: integer64) > (B: integer64): integerReturns
BifA > B, otherwise returnsnil.meth (A: integer64) >< (B: integer64): integerReturns
A >< B.meth (A: integer64) >= (B: integer64): integerReturns
BifA >= B, otherwise returnsnil.meth (A: integer64) \/ (B: integer64): integerReturns
A / B.meth ~(A: integer64): integerReturns
~A.meth (A: integer64) ~ (B: integer64): integerReturns
A ~ B.meth (Buffer: string::buffer):append(Value: integer64)Appends
ValuetoBufferin base10.meth (Buffer: string::buffer):append(Value: integer64, Base: integer)Appends
ValuetoBufferin baseBase.meth (Buffer: string::buffer):append(Value: integer64, Format: string)Appends
ValuetoBufferusingFormatas a (checked)printfformat string.meth (Arg₁: integer::interval):subsets(Arg₂: integer)TBD
meth (Arg₁: integer::range):subsets(Arg₂: integer)TBD
type numberBase type for numbers.
meth (Number: number):isfinite(Arg₂: double): number | nilReturns
Numberif it is finite (neither ±∞ norNaN), otherwise returnsnil.meth (Number: number):isnan(Arg₂: double): number | nilReturns
Numberif it isNaN, otherwise returnsNumber.meth (A: rational) != (B: rational): rationalReturns
BifA != B, otherwise returnsnil.meth (A: rational) * (B: rational): integerReturns
A * B.meth (A: rational) + (B: rational): integerReturns
A + B.meth -(A: rational): rationalReturns
- A.meth -(A: rational): rationalReturns
- A.meth (A: rational) - (B: rational): integerReturns
A - B.meth (A: rational) / (B: rational): integerReturns
A / B.meth (A: rational) / (B: rational): integerReturns
A / B.meth (A: rational) < (B: rational): rationalReturns
BifA < B, otherwise returnsnil.meth (A: rational) <= (B: rational): rationalReturns
BifA <= B, otherwise returnsnil.meth (Rational₁: rational) <> (Rational₂: rational): integerReturns
-1,0or1depending on whetherRational₁is less than, equal to or greater thanRational₂.meth (A: rational) = (B: rational): rationalReturns
BifA = B, otherwise returnsnil.meth (A: rational) > (B: rational): rationalReturns
BifA > B, otherwise returnsnil.meth (A: rational) >= (B: rational): rationalReturns
BifA >= B, otherwise returnsnil.meth (A: rational48) != (B: rational48): rationalReturns
BifA != B, otherwise returnsnil.meth (A: rational48) / (B: integer32): integerReturns
A / B.meth (A: rational48) / (B: rational48): integerReturns
A / B.meth (A: rational48) < (B: rational48): rationalReturns
BifA < B, otherwise returnsnil.meth (A: rational48) <= (B: rational48): rationalReturns
BifA <= B, otherwise returnsnil.meth (Rational₁: rational48) <> (Rational₂: rational48): integerReturns
-1,0or1depending on whetherRational₁is less than, equal to or greater thanRational₂.meth (A: rational48) = (B: rational48): rationalReturns
BifA = B, otherwise returnsnil.meth (A: rational48) > (B: rational48): rationalReturns
BifA > B, otherwise returnsnil.meth (A: rational48) >= (B: rational48): rationalReturns
BifA >= B, otherwise returnsnil.meth (Buffer: string::buffer):append(Value: rational48)Appends
ValuetoBufferin base10.meth (A: rational64) * (B: integer32): rationalReturns
A * B.meth (A: rational64) * (B: rational64): rationalReturns
A * B.meth (A: rational64) * (B: rational64): rationalReturns
A * B.meth (A: rational64) + (B: integer32): rationalReturns
A + B.meth (A: rational64) + (B: rational64): rationalReturns
A + B.meth (A: rational64) + (B: rational64): rationalReturns
A + B.meth (A: rational64) - (B: integer32): rationalReturns
A - B.meth (A: rational64) - (B: rational64): rationalReturns
A - B.meth (A: rational64) - (B: rational64): rationalReturns
A - B.meth (A: rational64) / (B: rational64): rationalReturns
A / B.type real < complexTBD
def real::Inf: realPositive infinity.
def real::NaN: realNot a number.
meth real(String: string): real | errorReturns the real number in
Stringor an error ifStringdoes not contain a valid real number.meth (A: real) != (B: real): realReturns
BifA != B, otherwise returnsnil.meth (Real₁: real) % (Real₂: real): integerReturns the remainder of
Real₁divided byReal₂. Note: the result is calculated by rounding towards 0. In particular, ifReal₁is negative, the result will be negative. For a nonnegative remainder, useReal₁ mod Real₂.meth (A: real) * (B: real): realReturns
A * B.meth (A: real) + (B: real): realReturns
A + B.meth -(A: real): realReturns
-A.meth (A: real) - (B: real): realReturns
A - B.meth (A: real) / (B: real): realReturns
A / B.meth (A: real) < (B: real): realReturns
BifA < B, otherwise returnsnil.meth (A: real) <= (B: real): realReturns
BifA <= B, otherwise returnsnil.meth (Real₁: real) <> (Real₂: real): integerReturns
-1,0or1depending on whetherInt₁is less than, equal to or greater thanReal₂.meth (A: real) = (B: real): realReturns
BifA = B, otherwise returnsnil.meth (A: real) > (B: real): realReturns
BifA > B, otherwise returnsnil.meth (A: real) >= (B: real): realReturns
BifA >= B, otherwise returnsnil.meth complex(Arg₁: real)TBD
meth complex(Arg₁: real, Arg₂: real)TBD
meth decimal(Arg₁: real)TBD
meth (Real₁: real):div(Real₂: real): integerReturns the quotient of
Real₁divided byReal₂. The result is calculated by rounding down in all cases.meth (Int₁: real):mod(Int₂: real): integerReturns the remainder of
Int₁divided byInt₂. Note: the result is calculated by rounding down in all cases. In particular, the result is always nonnegative.meth rational(Arg₁: real)TBD
meth (A: real) ~ (B: real): realReturns
A ~ B.meth number(String: string): integer | real | complex | errorReturns the number in
Stringor an error ifStringdoes not contain a valid number.