facil.io

#./fio-stl/002 math.h

6 public symbols.

#Functions

#fio_math_div

c
inline void fio_math_div(uint64_t *dest, uint64_t *reminder, const uint64_t *a, const uint64_t *b, const size_t number_array_length)

Multi-precision DIV for len*64 bit long a, b.

This is NOT constant time.

The algorithm might be slow, as my math isn't that good and I couldn't understand faster division algorithms (such as Newton–Raphson division)... so this is sort of a factorized variation on long division.

Symbol type: function

#fio_math_shr

c
inline void fio_math_shr(uint64_t *dest, uint64_t *n, const size_t right_shift_bits, size_t number_array_length)

Multi-precision shift right for len word number n.

Symbol type: function

#fio_math_shl

c
inline void fio_math_shl(uint64_t *dest, uint64_t *n, const size_t left_shift_bits, const size_t number_array_length)

Multi-precision shift left for len*64 bit number n.

Symbol type: function

#fio_math_inv

c
inline void fio_math_inv(uint64_t *dest, uint64_t *n, size_t len)

Multi-precision Inverse for len*64 bit number n (turn 1 into -1).

Symbol type: function

#fio_math_msb_index

c
FIO_MIFN size_t fio_math_msb_index(uint64_t *n, const size_t len)

Multi-precision - returns the index for the most significant bit or -1.

Symbol type: function

#fio_math_lsb_index

c
FIO_MIFN size_t fio_math_lsb_index(uint64_t *n, const size_t len)

Multi-precision - returns the index for the least significant bit or -1.

Symbol type: function