Simplify design
This commit is contained in:
parent
00b87715fa
commit
868bee8a06
1 changed files with 12 additions and 60 deletions
|
@ -1,93 +1,45 @@
|
||||||
pub opaque type Bigi {
|
pub type BigInt
|
||||||
Bigi(data: BigInt)
|
|
||||||
}
|
|
||||||
|
|
||||||
type BigInt
|
|
||||||
|
|
||||||
pub fn from_int(int: Int) {
|
|
||||||
Bigi(bigint_from(int))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn to_int(bigi: Bigi) {
|
|
||||||
bigint_to(bigi.data)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn to_string(bigi: Bigi) {
|
|
||||||
bigint_to_string(bigi.data)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn zero() {
|
|
||||||
Bigi(bigint_zero())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn add(a: Bigi, b: Bigi) {
|
|
||||||
Bigi(bigint_add(a.data, b.data))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn subtract(a: Bigi, b: Bigi) {
|
|
||||||
Bigi(bigint_subtract(a.data, b.data))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn multiply(a: Bigi, b: Bigi) {
|
|
||||||
Bigi(bigint_multiply(a.data, b.data))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn divide(a: Bigi, b: Bigi) {
|
|
||||||
Bigi(bigint_divide(a.data, b.data))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn remainder(a: Bigi, b: Bigi) {
|
|
||||||
Bigi(bigint_remainder(a.data, b.data))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn modulo(a: Bigi, b: Bigi) {
|
|
||||||
Bigi(bigint_modulo(a.data, b.data))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn power(a: Bigi, b: Bigi) {
|
|
||||||
Bigi(bigint_power(a.data, b.data))
|
|
||||||
}
|
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "from")
|
@external(erlang, "bigi_ffi", "from")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "from")
|
@external(javascript, "./bigi_ffi.mjs", "from")
|
||||||
fn bigint_from(int: Int) -> BigInt
|
pub fn from_int(int: Int) -> BigInt
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "to")
|
@external(erlang, "bigi_ffi", "to")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "to")
|
@external(javascript, "./bigi_ffi.mjs", "to")
|
||||||
fn bigint_to(bigint: BigInt) -> Result(Int, Nil)
|
pub fn to_int(bigint: BigInt) -> Result(Int, Nil)
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "to_string")
|
@external(erlang, "bigi_ffi", "to_string")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "to_string")
|
@external(javascript, "./bigi_ffi.mjs", "to_string")
|
||||||
fn bigint_to_string(bigint: BigInt) -> String
|
pub fn to_string(bigint: BigInt) -> String
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "zero")
|
@external(erlang, "bigi_ffi", "zero")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "zero")
|
@external(javascript, "./bigi_ffi.mjs", "zero")
|
||||||
fn bigint_zero() -> BigInt
|
pub fn zero() -> BigInt
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "add")
|
@external(erlang, "bigi_ffi", "add")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "add")
|
@external(javascript, "./bigi_ffi.mjs", "add")
|
||||||
fn bigint_add(a: BigInt, b: BigInt) -> BigInt
|
pub fn add(a: BigInt, b: BigInt) -> BigInt
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "subtract")
|
@external(erlang, "bigi_ffi", "subtract")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "subtract")
|
@external(javascript, "./bigi_ffi.mjs", "subtract")
|
||||||
fn bigint_subtract(a: BigInt, b: BigInt) -> BigInt
|
pub fn subtract(a: BigInt, b: BigInt) -> BigInt
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "multiply")
|
@external(erlang, "bigi_ffi", "multiply")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "multiply")
|
@external(javascript, "./bigi_ffi.mjs", "multiply")
|
||||||
fn bigint_multiply(a: BigInt, b: BigInt) -> BigInt
|
pub fn multiply(a: BigInt, b: BigInt) -> BigInt
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "divide")
|
@external(erlang, "bigi_ffi", "divide")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "divide")
|
@external(javascript, "./bigi_ffi.mjs", "divide")
|
||||||
fn bigint_divide(a: BigInt, b: BigInt) -> BigInt
|
pub fn divide(a: BigInt, b: BigInt) -> BigInt
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "remainder")
|
@external(erlang, "bigi_ffi", "remainder")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "remainder")
|
@external(javascript, "./bigi_ffi.mjs", "remainder")
|
||||||
fn bigint_remainder(a: BigInt, b: BigInt) -> BigInt
|
pub fn remainder(a: BigInt, b: BigInt) -> BigInt
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "modulo")
|
@external(erlang, "bigi_ffi", "modulo")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "modulo")
|
@external(javascript, "./bigi_ffi.mjs", "modulo")
|
||||||
fn bigint_modulo(a: BigInt, b: BigInt) -> BigInt
|
pub fn modulo(a: BigInt, b: BigInt) -> BigInt
|
||||||
|
|
||||||
@external(erlang, "bigi_ffi", "power")
|
@external(erlang, "bigi_ffi", "power")
|
||||||
@external(javascript, "./bigi_ffi.mjs", "power")
|
@external(javascript, "./bigi_ffi.mjs", "power")
|
||||||
fn bigint_power(a: BigInt, b: BigInt) -> BigInt
|
pub fn power(a: BigInt, b: BigInt) -> BigInt
|
||||||
|
|
Loading…
Reference in a new issue