Active Forums > Programs
libtommath for Win-64
(1/1)
jack:
made a win64 dll of LibTomMath https://www.libtom.net/
--- Code: QB64: ---$Console:Only_Dest _Console Const MP_64BIT = 1Type private_mp_word As String * 128 mpwordEnd TypeConst MP_DIGIT_BIT = 60 Type mp_int used As Long alloc As Long sign As Long dp As _OffsetEnd Type Declare Dynamic Library "libtommath" Function mp_init& (a As mp_int) ' as mp_err Function mp_init_size& (a As mp_int, Byval size As Long) ' as mp_err Function mp_init_i32& (a As mp_int, Byval b As Long) ' as mp_err Function mp_init_l& (a As mp_int, Byval b As Long) ' ' as mp_err Function mp_init_u32& (a As mp_int, Byval b As _Unsigned Long) ' as mp_err Function mp_init_ul& (a As mp_int, Byval b As _Unsigned Long) ' as mp_err Function mp_init_i64& (a As mp_int, Byval b As _Integer64) ' as mp_err Function mp_init_ll& (a As mp_int, Byval b As _Integer64) ' as mp_err Function mp_init_u64& (a As mp_int, Byval b As _Unsigned _Integer64) ' as mp_err Function mp_init_ull& (a As mp_int, Byval b As _Unsigned _Integer64) ' as mp_err Function mp_init_set& (a As mp_int, Byval b As _Unsigned _Integer64) ' as mp_err Function mp_init_set_int& (a As mp_int, Byval b As _Unsigned Long) ' as mp_err Function mp_init_copy (a As mp_int, b As mp_int) ' as mp_err Sub mp_clear (a As mp_int) Sub mp_exch (a As mp_int, b As mp_int) Function mp_shrink& (a As mp_int) ' as mp_err Function mp_grow& (a As mp_int, Byval size As Long) ' as mp_err Function mp_iseven& (a As mp_int) ' as long Function mp_isodd& (a As mp_int) ' as long Sub mp_zero (a As mp_int) Function mp_get_double# (a As mp_int) ' as double Function mp_set_double& (a As mp_int, Byval b As Double) ' as mp_err Function mp_get_i32& (a As mp_int) ' as long Function mp_get_l& (a As mp_int) ' as long Function mp_get_int~& (a As mp_int) ' as ulong Function mp_get_long~& (a As mp_int) ' as ulong Function mp_get_i64&& (a As mp_int) ' as longint Function mp_get_ll&& (a As mp_int) ' as longint Function mp_get_long_long~&& (a As mp_int) ' as ulongint Sub mp_set_i32 (a As mp_int, Byval b As Long) Sub mp_set_l (a As mp_int, Byval b As Long) Function mp_set_long& (a As mp_int, Byval b As _Unsigned Long) ' as mp_err Sub mp_set_u32 (a As mp_int, Byval b As _Unsigned Long) Sub mp_set_ul (a As mp_int, Byval b As _Unsigned Long) Function mp_set_int& (a As mp_int, Byval b As _Unsigned Long) ' as mp_err Sub mp_set_i64 (a As mp_int, Byval b As _Integer64) Function mp_set_long_long& (a As mp_int, Byval b As _Unsigned _Integer64) ' as mp_err Sub mp_set_ll (a As mp_int, Byval b As _Integer64) Sub mp_set_u64 (a As mp_int, Byval b As _Unsigned _Integer64) Sub mp_set_ull (a As mp_int, Byval b As _Unsigned _Integer64) Sub mp_set (a As mp_int, Byval b As _Unsigned _Integer64) Function mp_get_mag_u32~& (a As mp_int) ' as ulong Function mp_get_mag_ul~& (a As mp_int) ' as ulong Function mp_get_mag_u64~&& (a As mp_int) ' as ulongint Function mp_get_mag_ull~&& (a As mp_int) ' as ulongint Function mp_copy (a As mp_int, b As mp_int) ' as mp_err Sub mp_clamp (a As mp_int) Function mp_export& (rop As _Offset, countp As _Unsigned Long, Byval order As Long, Byval size As _Unsigned Long, Byval endian As Long, Byval nails As _Unsigned Long, op As mp_int) ' as mp_err Function mp_import& (rop As mp_int, Byval count As _Unsigned Long, Byval order As Long, Byval size As _Unsigned Long, Byval endian As Long, Byval nails As _Unsigned Long, Byval op As _Offset) ' as mp_err Function mp_unpack& (rop As mp_int, Byval count As _Unsigned Long, Byval order As Long, Byval size As _Unsigned Long, Byval endian As Long, Byval nails As _Unsigned Long, op As _Offset) ' as mp_err Function mp_pack_count~& (a As mp_int, Byval nails As _Unsigned Long, Byval size As _Unsigned Long) ' as uinteger Function mp_pack& (rop As _Offset, Byval maxcount As _Unsigned Long, written As _Unsigned Long, Byval order As Long, Byval size As _Unsigned Long, Byval endian As Long, Byval nails As _Unsigned Long, op As mp_int) ' as mp_err Sub mp_rshd (a As mp_int, Byval b As Long) Function mp_lshd& (a As mp_int, Byval b As Long) ' as mp_err Function mp_div_2d& (a As mp_int, Byval b As Long, c As mp_int, d As mp_int) ' as mp_err Function mp_div_2& (a As mp_int, b As mp_int) ' as mp_err Function mp_div_3& (a As mp_int, c As mp_int, d As _Unsigned _Integer64) ' as mp_err Function mp_mul_2d& (a As mp_int, Byval b As Long, c As mp_int) ' as mp_err Function mp_mul_2& (a As mp_int, b As mp_int) ' as mp_err Function mp_mod_2d& (a As mp_int, Byval b As Long, c As mp_int) ' as mp_err Function mp_2expt& (a As mp_int, Byval b As Long) ' as mp_err Function mp_cnt_lsb& (a As mp_int) ' as long Function mp_rand& (a As mp_int, Byval digits As Long) ' as mp_err Function mp_rand_digit& (r As _Unsigned _Integer64) ' as mp_err Function mp_get_bit& (a As mp_int, Byval b As Long) ' as long Function mp_tc_xor& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_xor& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_tc_or& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_or& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_tc_and& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_and& (a As mp_int, b As mp_int, c As mp_int) 'as mp_err Function mp_complement& (a As mp_int, b As mp_int) ' as mp_err Function mp_tc_div_2d& (a As mp_int, Byval b As Long, c As mp_int) ' as mp_err Function mp_signed_rsh& (a As mp_int, Byval b As Long, c As mp_int) ' as mp_err Function mp_neg (a As mp_int, b As mp_int) ' as mp_err Function mp_abs& (a As mp_int, b As mp_int) ' as mp_err Function mp_cmp& (a As mp_int, b As mp_int) 'as mp_ord Function mp_cmp_mag& (a As mp_int, b As mp_int) ' as mp_ord Function mp_add& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_sub& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_mul& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_sqr& (a As mp_int, b As mp_int) ' as mp_err Function mp_div& (a As mp_int, b As mp_int, c As mp_int, d As mp_int) ' as mp_err Function mp_mod& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_incr& (a As mp_int) ' as mp_err Function mp_decr& (a As mp_int) ' as mp_err Function mp_cmp_d& (a As mp_int, Byval b As _Unsigned _Integer64) ' as mp_ord Function mp_add_d& (a As mp_int, Byval b As _Unsigned _Integer64, c As mp_int) ' as mp_err Function mp_sub_d& (a As mp_int, Byval b As _Unsigned _Integer64, c As mp_int) ' as mp_err Function mp_mul_d& (a As mp_int, Byval b As _Unsigned _Integer64, c As mp_int) ' as mp_err Function mp_div_d& (a As mp_int, Byval b As _Unsigned _Integer64, c As mp_int, d As _Unsigned _Integer64) ' as mp_err Function mp_mod_d& (a As mp_int, Byval b As _Unsigned _Integer64, c As _Unsigned _Integer64) ' as mp_err Function mp_addmod& (a As mp_int, b As mp_int, c As mp_int, d As mp_int) ' as mp_err Function mp_submod& (a As mp_int, b As mp_int, c As mp_int, d As mp_int) ' as mp_err Function mp_mulmod& (a As mp_int, b As mp_int, c As mp_int, d As mp_int) ' as mp_err Function mp_sqrmod& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_invmod& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_gcd& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_exteuclid& (a As mp_int, b As mp_int, U1 As mp_int, U2 As mp_int, U3 As mp_int) ' as mp_err Function mp_lcm& (a As mp_int, b As mp_int, c As mp_int) ' as mp_err Function mp_root_u32& (a As mp_int, Byval b As _Unsigned Long, c As mp_int) ' as mp_err Function mp_n_root& (a As mp_int, Byval b As _Unsigned _Integer64, c As mp_int) ' as mp_err Function mp_n_root_ex& (a As mp_int, Byval b As _Unsigned _Integer64, c As mp_int, Byval fast As Long) ' as mp_err Function mp_sqrt& (arg As mp_int, ret As mp_int) ' as mp_err Function mp_sqrtmod_prime& (n As mp_int, prime As mp_int, ret As mp_int) ' as mp_err Function mp_is_square& (arg As mp_int, ret As Long) ' as mp_err Function mp_jacobi& (a As mp_int, n As mp_int, c As Long) ' as mp_err Function mp_kronecker& (a As mp_int, p As mp_int, c As Long) ' as mp_err Function mp_reduce_setup& (a As mp_int, b As mp_int) ' as mp_err Function mp_reduce& (x As mp_int, m As mp_int, mu As mp_int) ' as mp_err Function mp_montgomery_setup& (n As mp_int, rho As _Unsigned _Integer64) ' as mp_err Function mp_montgomery_calc_normalization& (a As mp_int, b As mp_int) ' as mp_err Function mp_montgomery_reduce& (x As mp_int, n As mp_int, Byval rho As _Unsigned _Integer64) ' as mp_err Function mp_dr_is_modulus& (a As mp_int) ' as mp_bool Sub mp_dr_setup (a As mp_int, d As _Unsigned _Integer64) Function mp_dr_reduce& (x As mp_int, n As mp_int, Byval k As _Unsigned _Integer64) ' as mp_err Function mp_reduce_is_2k& (a As mp_int) ' as mp_bool Function mp_reduce_2k_setup& (a As mp_int, d As _Unsigned _Integer64) ' as mp_err Function mp_reduce_2k& (a As mp_int, n As mp_int, Byval d As _Unsigned _Integer64) ' as mp_err Function mp_reduce_is_2k_l& (a As mp_int) ' as mp_bool Function mp_reduce_2k_setup_l& (a As mp_int, d As mp_int) ' as mp_err Function mp_reduce_2k_l& (a As mp_int, n As mp_int, d As mp_int) ' as mp_err Function mp_exptmod& (G As mp_int, X As mp_int, P As mp_int, Y As mp_int) ' as mp_err Function mp_prime_is_divisible& (a As mp_int, result As Long) ' as mp_err Function mp_prime_fermat& (a As mp_int, b As mp_int, result As Long) ' as mp_err Function mp_prime_miller_rabin& (a As mp_int, b As mp_int, result As Long) ' as mp_err Function mp_prime_rabin_miller_trials& (ByVal size As Long) ' as long Function mp_prime_strong_lucas_selfridge& (a As mp_int, result As Long) ' as mp_err Function mp_prime_frobenius_underwood& (N As mp_int, result As Long) ' as mp_err Function mp_prime_is_prime& (a As mp_int, Byval t As Long, result As Long) ' as mp_err Function mp_prime_next_prime& (a As mp_int, Byval t As Long, Byval bbs_style As Long) ' as mp_err Function mp_prime_rand& (a As mp_int, Byval t As Long, Byval size As Long, Byval flags As Long) ' as mp_err Function mp_log_u32& (a As mp_int, Byval base As _Unsigned Long, c As _Unsigned Long) ' as mp_err Function mp_expt_u32& (a As mp_int, Byval b As _Unsigned Long, c As mp_int) ' as mp_err Function mp_expt_d& (a As mp_int, Byval b As _Unsigned _Integer64, c As mp_int) ' as mp_err Function mp_expt_d_ex& (a As mp_int, Byval b As _Unsigned _Integer64, c As mp_int, Byval fast As Long) ' as mp_err Function mp_count_bits& (a As mp_int) ' as long Function mp_unsigned_bin_size& (a As mp_int) ' as long Function mp_read_unsigned_bin& (a As mp_int, Byval b As _Offset, Byval c As Long) ' as mp_err Function mp_to_unsigned_bin& (a As mp_int, Byval b As _Offset) ' as mp_err Function mp_to_unsigned_bin_n& (a As mp_int, Byval b As _Offset, outlen As _Unsigned Long) ' as mp_err Function mp_signed_bin_size& (a As mp_int) ' as long Function mp_read_signed_bin& (a As mp_int, Byval b As _Offset, Byval c As Long) ' as mp_err Function mp_to_signed_bin& (a As mp_int, Byval b As _Offset) ' as mp_err Function mp_to_signed_bin_n& (a As mp_int, Byval b As _Offset, outlen As _Unsigned Long) ' as mp_err Function mp_ubin_size~&& (a As mp_int) ' as uinteger Function mp_from_ubin& (a As mp_int, Byval buf As _Offset, Byval size As _Unsigned _Integer64) ' as mp_err Function mp_to_ubin& (a As mp_int, Byval buf As _Offset, Byval maxlen As _Unsigned _Integer64, written As _Unsigned _Integer64) ' as mp_err Function mp_sbin_size~&& (a As mp_int) ' as uinteger Function mp_from_sbin& (a As mp_int, Byval buf As _Offset, Byval size As _Unsigned _Integer64) ' as mp_err Function mp_to_sbin& (a As mp_int, Byval buf As _Offset, Byval maxlen As _Unsigned _Integer64, written As _Unsigned _Integer64) ' as mp_err Function mp_to_radix& (a As mp_int, str As String, Byval maxlen As _Unsigned _Integer64, written As _Unsigned _Integer64, Byval radix As Long) ' as mp_err Function mp_radix_size& (a As mp_int, Byval radix As Long, size As Long) ' as mp_err Function mp_read_radix& (a As mp_int, str As String, Byval radix As Long) ' as mp_err Function mp_toradix (a As mp_int, str As String, Byval radix As Long) ' as mp_err Function mp_toradix_n& (a As mp_int, str As String, Byval radix As Long, Byval maxlen As Long) ' as mp_errEnd Declare Dim As mp_int n, m, q, rDim As Long ok, kDim As Double tt = Timer(.0001)If mp_init(n) <> 0 Then Print "failed to initialize"If mp_init(m) <> 0 Then Print "failed to initiali"If mp_init(q) <> 0 Then Print "failed to initiali"If mp_init(r) <> 0 Then Print "failed to initiali"'mp_val "2" + String$(100, "0"), n, 10'ok = mp_n_root&(n, 2, r)'Print mp_str(r, 10)'ok = mp_sqrt&(n, m)'Print mp_str(m, 10)mp_set_i32 n, 2 '4784969ok = mp_expt_u32(n, 1024, n)'mp_set_i32 m, 10'ok = mp_expt_u32(m, 1000000, m)'fib_mod n, m, r'mp_set_i32 m, 10'ok = mp_expt_u32(m, 999960, m)'ok = mp_div(r, m, q, r)'Print mp_str(q, 10)mp_set_i32 m, 10ok = mp_expt_u32(m, 40, m)fib_mod n, m, rPrint mp_str(r, 10)t = Timer(.0001) - tPrint tmp_clear rmp_clear qmp_clear mmp_clear n Sub fib_mod (k As mp_int, m As mp_int, result As mp_int) Dim As mp_int x, y, xx, temp, tmp Dim As Long ok, cmp, i, bit_length If mp_init(x) <> 0 Then Print "failed to initialize" Exit Sub End If If mp_init(y) <> 0 Then Print "failed to initialize" Exit Sub End If If mp_init(xx) <> 0 Then Print "failed to initialize" Exit Sub End If If mp_init(temp) <> 0 Then Print "failed to initialize" Exit Sub End If If mp_init(tmp) <> 0 Then Print "failed to initialize" Exit Sub End If mp_set_i32 tmp, 1 If mp_cmp(k, tmp) <= 0 Then Print "mp_cmp(k, tmp) <= 0" ok = mp_copy(k, result) Exit Sub End If mp_set_i32 x, 1 mp_set_i32 y, 0 ok = mp_log_u32(k, 2, bit_length) Print "bit_length="; bit_length For i = bit_length - 1 To 0 Step -1 ok = mp_sqr(x, tmp) ok = mp_mod(tmp, m, xx) ok = mp_mul(x, y, tmp) ok = mp_add(tmp, tmp, tmp) ok = mp_add(xx, tmp, tmp) ok = mp_mod(tmp, m, x) ok = mp_sqr(y, tmp) ok = mp_add(xx, tmp, tmp) ok = mp_mod(tmp, m, y) If mp_get_bit(k, i) Then ok = mp_copy(x, temp) ok = mp_add(x, y, tmp) ok = mp_mod(tmp, m, x) ok = mp_copy(temp, y) End If Next ok = mp_copy(x, result) mp_clear tmp mp_clear temp mp_clear xx mp_clear y mp_clear xEnd Sub Function mp_str$ (n As mp_int, radix As Long) Dim sresult As String Dim As Long status, size status = mp_radix_size&(n, radix, size) sresult = Space$(size) + Chr$(0) status = mp_toradix_n(n, sresult, radix, size) If status = 0 Then mp_str$ = _Trim$(sresult) Else mp_str$ = "error in mp_toradix" End IfEnd Function Sub mp_val (s As String, n As mp_int, radix As Long) Dim value As String Dim status As Long Dim As Long ok value = s + Chr$(0) status = mp_read_radix(n, value, radix) If status <> 0 Then Print "could not read number"End Sub
Navigation
[0] Message Index
Go to full version