builtin Integer - tadashi9e/gmp4pony GitHub Wiki
Integer[A: Integer[A] val]
trait val Integer[A: Integer[A] val] is
Real[A] val- Real[A] val
new val create(
value: A)
: Real[A] val^- value: A
- Real[A] val^
from[B: ((I8 val | I16 val | I32 val | I64 val | I128 val | ILong val | ISize val | U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val | F32 val | F64 val) & Real[B] val)]
new val from[B: ((I8 val | I16 val | I32 val |
I64 val | I128 val | ILong val |
ISize val | U8 val | U16 val |
U32 val | U64 val | U128 val |
ULong val | USize val | F32 val |
F64 val) & Real[B] val)](
a: B)
: Real[A] val^- a: B
- Real[A] val^
new val min_value()
: Real[A] val^- Real[A] val^
new val max_value()
: Real[A] val^- Real[A] val^
Unsafe operation. If the operation overflows, the result is undefined.
fun box add_unsafe(
y: A)
: A- y: A
- A
Unsafe operation. If the operation overflows, the result is undefined.
fun box sub_unsafe(
y: A)
: A- y: A
- A
Unsafe operation. If the operation overflows, the result is undefined.
fun box mul_unsafe(
y: A)
: A- y: A
- A
Integer division, rounded towards zero.
Unsafe operation. If y is 0, the result is undefined. If the operation overflows, the result is undefined.
fun box div_unsafe(
y: A)
: A- y: A
- A
Calculates the quotient of this number and y and the remainder.
Unsafe operation. If y is 0, the result is undefined. If the operation overflows, the result is undefined.
fun box divrem_unsafe(
y: A)
: (A , A)- y: A
- (A , A)
Calculates the remainder of this number divided by y.
Unsafe operation. If y is 0, the result is undefined. If the operation overflows, the result is undefined.
fun box rem_unsafe(
y: A)
: A- y: A
- A
Floored division, rounded towards negative infinity,
as opposed to div which rounds towards zero.
Unsafe Operation
If y is 0, the result is undefined. If the operation overflows, the result is undefined.
fun box fld_unsafe(
y: A)
: A- y: A
- A
Calculates the modulo of this number after floored division by y.
Unsafe Operation.
If y is 0, the result is undefined. If the operation overflows, the result is undefined.
fun box mod_unsafe(
y: A)
: A- y: A
- A
Add y to this number.
If the operation overflows this function errors.
fun box add_partial(
y: A)
: A ?- y: A
- A ?
Subtract y from this number.
If the operation overflows/underflows this function errors.
fun box sub_partial(
y: A)
: A ?- y: A
- A ?
Multiply y with this number.
If the operation overflows this function errors.
fun box mul_partial(
y: A)
: A ?- y: A
- A ?
Divides this number by y, rounds the result towards zero.
If y is 0 or the operation overflows, this function errors.
fun box div_partial(
y: A)
: A ?- y: A
- A ?
Calculates the remainder of this number divided by y. The result has the sign of the dividend.
If y is 0 or the operation overflows, this function errors.
fun box rem_partial(
y: A)
: A ?- y: A
- A ?
Divides this number by y and calculates the remainder of the operation.
If y is 0 or the operation overflows, this function errors.
fun box divrem_partial(
y: A)
: (A , A) ?- y: A
- (A , A) ?
Floored integer division, rounded towards negative infinity.
If y is 0 or the operation overflows, this function errors
fun box fld_partial(
y: A)
: A ?- y: A
- A ?
Calculates the modulo of this number and y after floored division (fld).
The result has the sign of the divisor.
If y is 0 or the operation overflows, this function errors.
fun box mod_partial(
y: A)
: A ?- y: A
- A ?
Unsafe operation. If the operation overflows, the result is undefined.
fun box neg_unsafe()
: A- A
Add y to this integer and return the result and a flag indicating overflow.
fun box addc(
y: A)
: (A , Bool val)- y: A
- (A , Bool val)
Subtract y from this integer and return the result and a flag indicating overflow.
fun box subc(
y: A)
: (A , Bool val)- y: A
- (A , Bool val)
Multiply y with this integer and return the result and a flag indicating overflow.
fun box mulc(
y: A)
: (A , Bool val)- y: A
- (A , Bool val)
Divide this integer by y and return the result and a flag indicating overflow or division by zero.
fun box divc(
y: A)
: (A , Bool val)- y: A
- (A , Bool val)
Calculate the remainder of this number divided by y and return the result and a flag indicating division by zero or overflow.
The result will have the sign of the dividend.
fun box remc(
y: A)
: (A , Bool val)- y: A
- (A , Bool val)
Divide this integer by y and return the result, rounded towards negative infinity and a flag indicating overflow or division by zero.
fun box fldc(
y: A)
: (A , Bool val)- y: A
- (A , Bool val)
Calculate the modulo of this number after floored division by y and return the result and a flag indicating division by zero or overflow.
The result will have the sign of the divisor.
fun box modc(
y: A)
: (A , Bool val)- y: A
- (A , Bool val)
fun box op_and(
y: A)
: A- y: A
- A
fun box op_or(
y: A)
: A- y: A
- A
fun box op_xor(
y: A)
: A- y: A
- A
fun box op_not()
: A- A
Reverse the order of the bits within the integer. For example, 0b11101101 (237) would return 0b10110111 (183).
fun box bit_reverse()
: A- A
fun box bswap()
: A- A
fun box add(
y: A)
: A- y: A
- A
fun box sub(
y: A)
: A- y: A
- A
fun box mul(
y: A)
: A- y: A
- A
fun box div(
y: A)
: A- y: A
- A
fun box divrem(
y: A)
: (A , A)- y: A
- (A , A)
fun box rem(
y: A)
: A- y: A
- A
fun box neg()
: A- A
fun box fld(
y: A)
: A- y: A
- A
fun box mod(
y: A)
: A- y: A
- A
fun box eq(
y: box->A)
: Bool val- y: box->A
- Bool val
fun box ne(
y: box->A)
: Bool val- y: box->A
- Bool val
fun box lt(
y: box->A)
: Bool val- y: box->A
- Bool val
fun box le(
y: box->A)
: Bool val- y: box->A
- Bool val
fun box ge(
y: box->A)
: Bool val- y: box->A
- Bool val
fun box gt(
y: box->A)
: Bool val- y: box->A
- Bool val
fun box min(
y: A)
: A- y: A
- A
fun box max(
y: A)
: A- y: A
- A
fun box hash()
: USize val- USize val
fun box hash64()
: U64 val- U64 val
fun box string()
: String iso^- String iso^
fun box i8()
: I8 val- I8 val
fun box i16()
: I16 val- I16 val
fun box i32()
: I32 val- I32 val
fun box i64()
: I64 val- I64 val
fun box i128()
: I128 val- I128 val
fun box ilong()
: ILong val- ILong val
fun box isize()
: ISize val- ISize val
fun box u8()
: U8 val- U8 val
fun box u16()
: U16 val- U16 val
fun box u32()
: U32 val- U32 val
fun box u64()
: U64 val- U64 val
fun box u128()
: U128 val- U128 val
fun box ulong()
: ULong val- ULong val
fun box usize()
: USize val- USize val
fun box f32()
: F32 val- F32 val
fun box f64()
: F64 val- F64 val
fun box i8_unsafe()
: I8 val- I8 val
fun box i16_unsafe()
: I16 val- I16 val
fun box i32_unsafe()
: I32 val- I32 val
fun box i64_unsafe()
: I64 val- I64 val
fun box i128_unsafe()
: I128 val- I128 val
fun box ilong_unsafe()
: ILong val- ILong val
fun box isize_unsafe()
: ISize val- ISize val
fun box u8_unsafe()
: U8 val- U8 val
fun box u16_unsafe()
: U16 val- U16 val
fun box u32_unsafe()
: U32 val- U32 val
fun box u64_unsafe()
: U64 val- U64 val
fun box u128_unsafe()
: U128 val- U128 val
fun box ulong_unsafe()
: ULong val- ULong val
fun box usize_unsafe()
: USize val- USize val
fun box f32_unsafe()
: F32 val- F32 val
fun box f64_unsafe()
: F64 val- F64 val
fun box compare(
that: box->A)
: (Less val | Equal val | Greater val)- that: box->A