File indexing completed on 2026-11-07 10:15:15
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef FMPZ_MOD_TYPES_H
0013 #define FMPZ_MOD_TYPES_H
0014
0015 #include "fmpz_types.h"
0016
0017 #ifdef __cplusplus
0018 extern "C" {
0019 #endif
0020
0021 typedef struct fmpz_mod_ctx
0022 {
0023 fmpz_t n;
0024 void (* add_fxn)(fmpz_t, const fmpz_t, const fmpz_t, const struct fmpz_mod_ctx *);
0025 void (* sub_fxn)(fmpz_t, const fmpz_t, const fmpz_t, const struct fmpz_mod_ctx *);
0026 void (* mul_fxn)(fmpz_t, const fmpz_t, const fmpz_t, const struct fmpz_mod_ctx *);
0027 nmod_t mod;
0028 ulong n_limbs[3];
0029 ulong ninv_limbs[3];
0030 fmpz_preinvn_struct * ninv_huge;
0031 }
0032 fmpz_mod_ctx_struct;
0033
0034 typedef fmpz_mod_ctx_struct fmpz_mod_ctx_t[1];
0035
0036 typedef fmpz_mat_struct fmpz_mod_mat_struct;
0037
0038 typedef fmpz_mod_mat_struct fmpz_mod_mat_t[1];
0039
0040 typedef struct
0041 {
0042 fmpz * coeffs;
0043 slong alloc;
0044 slong length;
0045 }
0046 fmpz_mod_poly_struct;
0047
0048 typedef fmpz_mod_poly_struct fmpz_mod_poly_t[1];
0049
0050 typedef struct
0051 {
0052 fmpz_mod_poly_struct * poly;
0053 slong *exp;
0054 slong num;
0055 slong alloc;
0056 }
0057 fmpz_mod_poly_factor_struct;
0058
0059 typedef fmpz_mod_poly_factor_struct fmpz_mod_poly_factor_t[1];
0060
0061 typedef struct
0062 {
0063 fmpz * coeffs;
0064 ulong * exps;
0065 slong length;
0066 flint_bitcnt_t bits;
0067 slong coeffs_alloc;
0068 slong exps_alloc;
0069 }
0070 fmpz_mod_mpoly_struct;
0071
0072 typedef fmpz_mod_mpoly_struct fmpz_mod_mpoly_t[1];
0073
0074 typedef struct
0075 {
0076 fmpz_t constant;
0077 fmpz_mod_mpoly_struct * poly;
0078 fmpz * exp;
0079 slong num;
0080 slong alloc;
0081 }
0082 fmpz_mod_mpoly_factor_struct;
0083
0084 typedef fmpz_mod_mpoly_factor_struct fmpz_mod_mpoly_factor_t[1];
0085
0086 typedef struct
0087 {
0088 fmpz_mod_mpoly_struct num;
0089 fmpz_mod_mpoly_struct den;
0090 }
0091 fmpz_mod_mpoly_q_struct;
0092
0093 typedef fmpz_mod_mpoly_q_struct fmpz_mod_mpoly_q_t[1];
0094
0095 #ifdef __cplusplus
0096 }
0097 #endif
0098
0099 #endif