Kaba class BigInt ed

...

Syntax ed

class BigInt
    var data: i32[]
    var sign: bool

    # constructors
    func mut __init__(s: string)
    func mut __init__(i: i32)
    func mut __init__()

    # functions
    func compare(o: BigInt) -> i32
    func pure count_bits() -> i32
    func div(div: BigInt, out rem: BigInt) -> BigInt
    func mut idiv(div: BigInt, out rem: BigInt)
    func static find_coprime(e: BigInt&, phi: BigInt&) -> bool
    func static find_mod_inverse(d: BigInt&, e: BigInt&, phi: BigInt&) -> bool
    func static gcd(a: BigInt, b: BigInt) -> BigInt
    func static miller_rabin_prime(p: BigInt, count: i32) -> bool
    func static pow(x: BigInt, e: BigInt) -> BigInt
    func static pow_mod(x: BigInt, e: BigInt, mod: BigInt) -> BigInt
    func static rand(bits: i32) -> BigInt

    # operators
    func mut __assign__(o: BigInt)       # BigInt = BigInt
    func mut __assign__(s: string)       # BigInt = string
    func mut __assign__(i: i32)          # BigInt = i32
    func pure __str__() -> string        # str(BigInt) -> string
    func __eq__(o: BigInt) -> bool       # BigInt == BigInt -> bool
    func __neq__(o: BigInt) -> bool      # BigInt __neq__ BigInt -> bool
    func __lt__(o: BigInt) -> bool       # BigInt < BigInt -> bool
    func __gt__(o: BigInt) -> bool       # BigInt > BigInt -> bool
    func __le__(o: BigInt) -> bool       # BigInt <= BigInt -> bool
    func __ge__(o: BigInt) -> bool       # BigInt >= BigInt -> bool
    func __add__(o: BigInt) -> BigInt    # BigInt + BigInt -> BigInt
    func __sub__(o: BigInt) -> BigInt    # BigInt - BigInt -> BigInt
    func __mul__(o: BigInt) -> BigInt    # BigInt * BigInt -> BigInt
    func mut __iadd__(o: BigInt)         # BigInt += BigInt
    func mut __isub__(o: BigInt)         # BigInt -= BigInt
    func mut __imul__(o: BigInt)         # BigInt *= BigInt

Functions ed

func compare(o: BigInt) -> i32
...

func pure count_bits() -> i32
...

func div(div: BigInt, out rem: BigInt) -> BigInt
...

func mut idiv(div: BigInt, out rem: BigInt)
...

func static find_coprime(e: BigInt&, phi: BigInt&) -> bool
...

func static find_mod_inverse(d: BigInt&, e: BigInt&, phi: BigInt&) -> bool
...

func static gcd(a: BigInt, b: BigInt) -> BigInt
...

func static miller_rabin_prime(p: BigInt, count: i32) -> bool
...

func static pow(x: BigInt, e: BigInt) -> BigInt
...

func static pow_mod(x: BigInt, e: BigInt, mod: BigInt) -> BigInt
...

func static rand(bits: i32) -> BigInt
...

Elements ed

var data: i32[]
...

var sign: bool
...