?? flint.h
字號:
#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)
/* 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 UCHAR
typedef unsigned char UCHAR;
#endif /* UCHAR */
#ifndef USHORT
typedef unsigned short USHORT;
#endif /* USHORT */
#ifndef ULONG
typedef 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 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_ASM
extern int __FLINT_API div_l (CLINT, CLINT, CLINT, CLINT);
#else
extern 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 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 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 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 void __FLINT_API purge_l (CLINT);
extern void __FLINT_API purged_l (CLINTD);
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 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 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_ASM
extern 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);
#else
extern void __FLINT_API mult (CLINT, CLINT, CLINT);
extern void __FLINT_API umul (CLINT, USHORT, CLINT);
extern void __FLINT_API sqr (CLINT, CLINT);
#endif
extern 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__ */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -