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 {
|
||||
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))
|
||||
}
|
||||
pub type BigInt
|
||||
|
||||
@external(erlang, "bigi_ffi", "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(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(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(javascript, "./bigi_ffi.mjs", "zero")
|
||||
fn bigint_zero() -> BigInt
|
||||
pub fn zero() -> BigInt
|
||||
|
||||
@external(erlang, "bigi_ffi", "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(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(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(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(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(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(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