📄 flint.h
字号:
(cmp_l ((a_l), nul_l) == 1) /* a_l > 0 */#define gtz_l(a_l) \ (cmp_l ((a_l), nul_l) == 1) /* a_l > 0 */#define EQZ_L(a_l) \ (equ_l ((a_l), nul_l) == 1) /* a_l == 0 */#define eqz_l(a_l) \ (equ_l ((a_l), nul_l) == 1) /* a_l == 0 */#define EQONE_L(a_l) \ (equ_l ((a_l), one_l) == 1) /* a_l == 1 */#define eqone_l(a_l) \ (equ_l ((a_l), one_l) == 1) /* a_l == 1 */#define SET_L(a_l,ul)\ ul2clint_l ((a_l), (ul)) /* a_l <-- unsigned long ul */#define set_l(a_l,ul)\ ul2clint_l ((a_l), (ul)) /* a_l <-- unsigned long ul */#define ASSIGN_L(dest_l,src_l)\ cpy_l ((dest_l), (src_l)) /* src_l <-- dest_l */#define assign_l(dest_l,src_l)\ cpy_l ((dest_l), (src_l)) /* src_l <-- dest_l */#define ISEVEN_L(a_l)\ (DIGITS_L (a_l) == 0 || (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 0)) /* true: a_l is even */#define iseven_l(a_l)\ (DIGITS_L (a_l) == 0 || (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 0)) /* true: a_l is even */#define ISODD_L(a_l)\ (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 1) /* true: a_l is odd */#define isodd_l(a_l)\ (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 1) /* true: a_l is odd *//* Standard-Output of CLINT variables */#define DISP_L(S,A) printf ("%s%s\n%u bit\n\n", (S), hexstr_l(A), ld_l(A))#define disp_l(S,A) printf ("%s%s\n%u bit\n\n", (S), hexstr_l(A), ld_l(A))/* Initialization of pseudorandom number generators *//* with values derived from time */#define INITRAND_LT()\ ulseed64_l ((unsigned long)time(NULL))#define initrand_lt()\ ulseed64_l ((unsigned long)time(NULL))#define INITRAND64_LT()\ ulseed64_l ((unsigned long)time(NULL))#define initrand64_lt()\ ulseed64_l ((unsigned long)time(NULL))#define INITRANDBBS_LT()\ ulseedBBS_l ((unsigned long)time(NULL))#define initrandBBS_lt()\ ulseedBBS_l ((unsigned long)time(NULL))/* Compatibility with version 1.0 : Macro clint2str_l */#define CLINT2STR_L(n_l,b) xclint2str_l ((n_l), (b), 0)#define clint2str_l(n_l,b) xclint2str_l ((n_l), (b), 0)/* Implementation of functions xxxstr_l as macros */#define HEXSTR_L(n_l) xclint2str_l ((n_l), 16, 0)#define hexstr_l(n_l) xclint2str_l ((n_l), 16, 0)#define DECSTR_L(n_l) xclint2str_l ((n_l), 10, 0)#define decstr_l(n_l) xclint2str_l ((n_l), 10, 0)#define OCTSTR_L(n_l) xclint2str_l ((n_l), 8, 0)#define octstr_l(n_l) xclint2str_l ((n_l), 8, 0)#define BINSTR_L(n_l) xclint2str_l ((n_l), 2, 0)#define binstr_l(n_l) xclint2str_l ((n_l), 2, 0)/* Simple factorization with sieve_l() */#define SFACTOR_L(n_l) sieve_l ((n_l), NOOFSMALLPRIMES);#define sfactor_l(n_l) sieve_l ((n_l), NOOFSMALLPRIMES);/* Miller-Rabin primality test, parameters according to Lenstra and [MOV] */#define ISPRIME_L(n) prime_l ((n), 302, 0)#define isprime_l(n) prime_l ((n), 302, 0)/* Choice of functions for exponentiation *//* Automatic choice of mexpk_l oder mexpkm_l is provided by *//* function mexp_l. *//* * define MEXP_L(a,e,p,n) mexp5_l ((a), (e), (p), (n)) */#define MEXP_L(a,e,p,n) mexpk_l ((a), (e), (p), (n))/* * #define MEXP_L(a,e,p,n) mexp5m_l ((a), (e), (p), (n)) *//* * #define MEXP_L(a,e,p,n) mexpkm_l ((a), (e), (p), (n)) *//* Purge of CLINT variables by overwriting the storage */#ifdef FLINT_SECURE #define ZEROCLINT_L(A) Assert (sizeof(A) >= CLINTMAXBYTE);\ purge_l (A) #define ZEROCLINTD_L(A) Assert (sizeof(A) >= sizeof(CLINTD));\ purged_l (A) #define ZEROCLINTQ_L(A) Assert (sizeof(A) >= sizeof(CLINTQ));\ purgeq_l (A)#else #define ZEROCLINT_L(A) (void)0 #define ZEROCLINTD_L(A) (void)0 #define ZEROCLINTQ_L(A) (void)0#endif/***********************************************************//* Typedefs *//***********************************************************/typedef unsigned short clint;typedef unsigned long clintd;typedef clint CLINT[CLINTMAXSHORT];typedef clint CLINTD[1 + (CLINTMAXDIGIT << 1)];typedef clint CLINTQ[1 + (CLINTMAXDIGIT << 2)];typedef clint *CLINTPTR;#ifndef UCHARtypedef unsigned char UCHAR;#endif /* UCHAR */#ifndef USHORTtypedef unsigned short USHORT;#endif /* USHORT */#ifndef ULONGtypedef unsigned long ULONG;#endif /* ULONG *//***********************************************************//* Function prototypes *//***********************************************************/#ifndef __FLINT_API#ifdef FLINT_USEDLL#define __FLINT_API __cdecl#else#define __FLINT_API /**/#endif /* FLINT_USEDLL */#endif /* !defined __FLINT_API */#if !defined __FLINT_API_A#if defined __GNUC__ && !defined __cdecl#define __FLINT_API_A /**/#else#define __FLINT_API_A __cdecl#endif /* !defined __GNUC__ */#endif /* !defined __FLINT_API_A *//* If the FLINT/C-Package is used under MS Visual C/C++ as DLL, *//* all modules accessing data nul_l, one_l, two_l or smallprimes from outside *//* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport) */#ifndef __FLINT_API_DATA#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL#define __FLINT_API_DATA __declspec(dllimport)#else#define __FLINT_API_DATA /**/#endif /* MSC_VER && FLINT_USEDLL */#endif /* !defined __FLINT_API_DATA */extern int __FLINT_API add_l (CLINT, CLINT, CLINT);extern int __FLINT_API chinrem_l (unsigned int, clint**, CLINT);extern int __FLINT_API cmp_l (CLINT, CLINT);extern void __FLINT_API cpy_l (CLINT, CLINT);extern clint * __FLINT_API create_l (void);extern int __FLINT_API create_reg_l (void);extern int __FLINT_API dec_l (CLINT);#if !defined FLINT_ASMextern int __FLINT_API div_l (CLINT, CLINT, CLINT, CLINT);#elseextern int __FLINT_API_A div_l (CLINT, CLINT, CLINT, CLINT);#endif /* FLINT_ASM */extern void __FLINT_API and_l (CLINT, CLINT, CLINT);extern int __FLINT_API byte2clint_l (CLINT, UCHAR *, int);extern int __FLINT_API clearbit_l (CLINT, unsigned int);extern UCHAR * __FLINT_API clint2byte_l (CLINT, int *);extern char * __FLINT_API xclint2str_l (CLINT, USHORT, int);extern int __FLINT_API equ_l (CLINT, CLINT);extern char * __FLINT_API fbinstr_l (CLINT);extern char * __FLINT_API fdecstr_l (CLINT);extern char * __FLINT_API fhexstr_l (CLINT);extern char * __FLINT_API foctstr_l (CLINT);extern void __FLINT_API free_l (CLINT);extern void __FLINT_API free_reg_l (void);extern void __FLINT_API fswap_l (CLINT, CLINT);extern ULONG * __FLINT_API genprimes (ULONG);extern clint * __FLINT_API get_reg_l (unsigned int);extern void __FLINT_API gcd_l (CLINT, CLINT, CLINT);extern int __FLINT_API inc_l (CLINT);extern void __FLINT_API inv_l (CLINT, CLINT, CLINT, CLINT);extern USHORT __FLINT_API invmon_l (CLINT);extern void __FLINT_API iroot_l (CLINT, CLINT);extern unsigned __FLINT_API issqr_l (CLINT, CLINT);extern int __FLINT_API jacobi_l (CLINT, CLINT);extern int __FLINT_API lcm_l (CLINT, CLINT, CLINT);extern unsigned __FLINT_API ld_l (CLINT);extern int __FLINT_API madd_l (CLINT, CLINT, CLINT, CLINT);extern int __FLINT_API mequ_l (CLINT, CLINT, CLINT);extern int __FLINT_API mexp_l (CLINT, CLINT, CLINT, CLINT);extern int __FLINT_API mexp2_l (CLINT, USHORT, CLINT, CLINT);extern int __FLINT_API mexp5_l (CLINT, CLINT, CLINT, CLINT);extern int __FLINT_API mexp5m_l (CLINT, CLINT, CLINT, CLINT);extern int __FLINT_API mexpk_l (CLINT, CLINT, CLINT, CLINT);extern int __FLINT_API mexpkm_l (CLINT, CLINT, CLINT, CLINT);extern int __FLINT_API mmul_l (CLINT, CLINT, CLINT, CLINT);extern int __FLINT_API mod2_l (CLINT, ULONG, CLINT);extern int __FLINT_API mod_l (CLINT, CLINT, CLINT);extern int __FLINT_API msqr_l (CLINT, CLINT, CLINT);extern int __FLINT_API msub_l (CLINT, CLINT, CLINT, CLINT);extern int __FLINT_API mul_l (CLINT, CLINT, CLINT);extern void __FLINT_API mulmon_l (CLINT, CLINT, CLINT, USHORT, USHORT, CLINT);extern void __FLINT_API or_l (CLINT, CLINT, CLINT);extern int __FLINT_API prime_l (CLINT, unsigned int, unsigned int);extern int __FLINT_API primroot_l (CLINT, unsigned int, clint*[]);extern int __FLINT_API proot_l (CLINT, CLINT, CLINT);extern void __FLINT_API purge_l (CLINT);extern void __FLINT_API purged_l (CLINTD);extern void __FLINT_API purgeq_l (CLINTQ);extern int __FLINT_API purge_reg_l (unsigned int);extern int __FLINT_API purgeall_reg_l(void);extern clint * __FLINT_API rand64_l (void);extern void __FLINT_API rand_l (CLINT, int);extern void __FLINT_API randBBS_l (CLINT, int);extern int __FLINT_API randbit_l (void);extern int __FLINT_API root_l (CLINT, CLINT, CLINT, CLINT);extern clint * __FLINT_API seed64_l (CLINT);extern int __FLINT_API seedBBS_l (CLINT);extern void __FLINT_API set_noofregs_l(unsigned int);extern int __FLINT_API setbit_l (CLINT, unsigned int);extern clint * __FLINT_API setmax_l (CLINT);extern int __FLINT_API shift_l (CLINT, long int);extern int __FLINT_API shl_l (CLINT);extern int __FLINT_API shr_l (CLINT);extern USHORT __FLINT_API sieve_l (CLINT, unsigned int);extern int __FLINT_API sqr_l (CLINT, CLINT);extern void __FLINT_API sqrmon_l (CLINT, CLINT, USHORT, USHORT, CLINT);extern int __FLINT_API str2clint_l (CLINT, char *, USHORT);extern char * __FLINT_API strlwr_l (char *);extern char * __FLINT_API strrev_l (char *);extern char * __FLINT_API strupr_l (char *);extern int __FLINT_API sub_l (CLINT, CLINT, CLINT);extern int __FLINT_API testbit_l (CLINT, unsigned int);extern int __FLINT_API tolower_l (int);extern int __FLINT_API toupper_l (int);extern void __FLINT_API u2clint_l (CLINT, USHORT);extern int __FLINT_API uadd_l (CLINT, USHORT, CLINT);extern UCHAR __FLINT_API ucrand64_l (void);extern UCHAR __FLINT_API ucrandBBS_l (void);extern int __FLINT_API udiv_l (CLINT, USHORT, CLINT, CLINT);extern void __FLINT_API ul2clint_l (CLINT, ULONG);extern ULONG __FLINT_API ulrand64_l (void);extern ULONG __FLINT_API ulrandBBS_l (void);extern clint * __FLINT_API ulseed64_l (ULONG);extern void __FLINT_API ulseedBBS_l (ULONG);extern char * __FLINT_API ultoa_l (char *, ULONG, int);extern int __FLINT_API umadd_l (CLINT, USHORT, CLINT, CLINT);extern int __FLINT_API umexp_l (CLINT, USHORT, CLINT, CLINT);extern int __FLINT_API umexpm_l (CLINT, USHORT, CLINT, CLINT);extern int __FLINT_API ummul_l (CLINT, USHORT, CLINT, CLINT);extern USHORT __FLINT_API umod_l (CLINT, USHORT);extern int __FLINT_API umsub_l (CLINT, USHORT, CLINT, CLINT);extern int __FLINT_API umul_l (CLINT, USHORT, CLINT);extern USHORT __FLINT_API usrand64_l (void);extern USHORT __FLINT_API usrandBBS_l (void);extern int __FLINT_API usub_l (CLINT, USHORT, CLINT);extern int __FLINT_API vcheck_l (CLINT);extern ULONG __FLINT_API version_l (void);extern char * __FLINT_API verstr_l (void);extern int __FLINT_API wmexp_l (USHORT, CLINT, CLINT, CLINT);extern int __FLINT_API wmexpm_l (USHORT, CLINT, CLINT, CLINT);extern void __FLINT_API xgcd_l (CLINT, CLINT, CLINT, CLINT, int *, CLINT, int *);extern void __FLINT_API xor_l (CLINT, CLINT, CLINT);extern int __FLINT_API twofact_l (CLINT, CLINT);/* Kernel functions without Overflow-Detection */#if defined FLINT_ASMextern void __FLINT_API_A mult (CLINT, CLINT, CLINT);extern void __FLINT_API_A umul (CLINT, USHORT, CLINT);extern void __FLINT_API_A sqr (CLINT, CLINT);#elseextern void __FLINT_API mult (CLINT, CLINT, CLINT);extern void __FLINT_API umul (CLINT, USHORT, CLINT);extern void __FLINT_API sqr (CLINT, CLINT);#endifextern void __FLINT_API add (CLINT, CLINT, CLINT);extern void __FLINT_API sub (CLINT, CLINT, CLINT);/* Functions operating on signed CLINT-Values */extern int __FLINT_API sadd (CLINT, int, CLINT, int, CLINT);extern int __FLINT_API ssub (CLINT, int, CLINT, int, CLINT);extern int __FLINT_API smod (CLINT, int, CLINT, CLINT);/* Constants */extern clint __FLINT_API_DATA nul_l[];extern clint __FLINT_API_DATA one_l[];extern clint __FLINT_API_DATA two_l[];extern USHORT __FLINT_API_DATA smallprimes[];#ifdef __cplusplus}#endif#endif /* #defined __FLINTH__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -