mpi/add mpi/clear-bit mpi/div mpi/flip-sign mpi/gcd mpi/get-bit mpi/inverse-mod mpi/is-negative mpi/is-positive mpi/is-prime mpi/is-zero mpi/lshift mpi/mod-mul mpi/mul mpi/new mpi/new-random mpi/num-bytes mpi/pow-mod mpi/rshift mpi/set-bit mpi/sub mpi/swap mpi/to-bin mpi/to-hex mpi/to-int mpi/to-u32
(mpi/add mpi-obj x)
Add x to `mpi-obj` and return the new `mpi-obj`. `x` can be either `mpi-obj` or u32 number.
(mpi/clear-bit mpi-obj bit)
Clears the specified `bit` of `mpi-obj`. Returns `mpi-obj`.
(mpi/div mpi-obj-1 mpi-obj-2)
Divide `mpi-obj-1` by `mpi-obj-2`. Create new quotient `mpi-obj` and remainder `mpi-obj`. Return quotient `mpi-obj` and remainder `mpi-obj` in tuple.
(mpi/gcd mpi-obj mpi-obj2)
Return a new `mpi-obj` representing the greatest common divisor of `mpi-obj` and `mpi-obj2`.
(mpi/get-bit mpi-obj bit)
Returns 0 if the specified `bit` of `mpi-obj` is not set, 1 if it is set.
(mpi/inverse-mod mpi-obj modulus)
Create the inverse of `mpi-obj` modulo `modulus`, or nil if no inverse exists.Returns new `mpi-obj`.
(mpi/is-negative mpi-obj)
Return true if `mpi-obj` is less than zero, otherwise return false.
(mpi/is-positive mpi-obj)
Return true if `mpi-obj` is greater than or equal to zero. otherwise return false.
(mpi/is-prime mpi-obj rng &opt prob)
Return true if `mpi-obj` is prime, otherwise returns false. Default value of prob is 128.
(mpi/lshift mpi-obj shift)
Left shift by specified `shift` bit count. Return new `mpj-obj`.
(mpi/mod-mul mpi-obj mpi-obj2 modulus)
Return a new `mpi-obj` representing (`mpi-obj` * `mpi-obj2`) modulo `modulus`. `mpi-obj2` and `modulus` are also `mpi-obj` objects.
(mpi/sub mpi-obj-1 mpi-obj-2)
Multiply two `mpi-obj` and return the new `mpi-obj` as a result.
(mpi/new &opt value radix)
Create a new MPI object with optional `value` and `radix`:
* No arguments: Returns a zero-valued MPI
* `value` is an MPI object: Creates an MPI from another MPI
* `value` is an integer: Creates an MPI with that integer value
* `value` is a string: Creates an MPI from the string
(`radix` determines how the string is interpreted)
* `radix = 16`: Treats the string as a hexadecimal value
* `radix` not given: Treats the string as a base-10 integer
Returns `mpi-obj`.
(mpi/new-random bits &opt rng)
Create a `bits` sizes random MPI object. Use `rng` if provided. Returns `mpi-obj`.
(mpi/num-bytes mpi-obj)
Return the number of significant bytes in the `mpi-obj`.
(mpi/pow-mod mpi-obj exponent modulus)
Return a new `mpi-obj` representing (`mpi-obj` ^ `exponent`) mod `modulus`.`exponent` and `modulus` are also `mpi-obj` objects.
(mpi/rshift mpi-obj shift)
Right shift by specified `shift` bit count. Return new `mpj-obj`.
(mpi/set-bit mpi-obj bit)
Set the specified `bit` of `mpi-obj`. Returns `mpi-obj`.
(mpi/sub mpi-obj x)
Subtract x from `mpi-obj` and return the new `mpi-obj`. `x` can be either `mpi-obj` or u32 number.
(mpi/swap mpi-obj-1 mpi-obj-2)
Swap `mpi-obj-1` and `mpi-obj-2` values, Return `mpi-obj-1`.
(mpi/to-hex mpi-obj)
Convert the `mpi-obj` to a hex string and return as a string.
(mpi/to-int mpi-obj)
Convert the `mpi-obj` to an integer string and return as a string.
(mpi/to-u32 mpi-obj)
Convert the `mpi-obj` to a uint32_t, if possible. Fails if `mpi-obj` is negative or too large.