Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-11-07 10:15:20

0001 /*
0002     Copyright (C) 2023, 2024 Albin Ahlbäck
0003 
0004     This file is part of FLINT.
0005 
0006     FLINT is free software: you can redistribute it and/or modify it under
0007     the terms of the GNU Lesser General Public License (LGPL) as published
0008     by the Free Software Foundation; either version 3 of the License, or
0009     (at your option) any later version.  See <https://www.gnu.org/licenses/>.
0010 */
0011 
0012 #ifndef FQ_NMOD_TYPES_H
0013 #define FQ_NMOD_TYPES_H
0014 
0015 #include "nmod_types.h"
0016 
0017 #ifdef __cplusplus
0018 extern "C" {
0019 #endif
0020 
0021 typedef nmod_poly_t fq_nmod_t;
0022 typedef nmod_poly_struct fq_nmod_struct;
0023 
0024 typedef struct
0025 {
0026     nmod_t mod;
0027 
0028     int sparse_modulus;
0029     int is_conway; /* whether field was generated using Flint Conway table (assures primitivity */
0030 
0031     ulong *a;
0032     slong *j;
0033     slong len;
0034 
0035     nmod_poly_t modulus;
0036     nmod_poly_t inv;
0037 
0038     char *var;
0039 }
0040 fq_nmod_ctx_struct;
0041 
0042 typedef fq_nmod_ctx_struct fq_nmod_ctx_t[1];
0043 
0044 typedef struct
0045 {
0046     fq_nmod_struct * entries;
0047     slong r;
0048     slong c;
0049     slong stride;
0050 }
0051 fq_nmod_mat_struct;
0052 
0053 typedef fq_nmod_mat_struct fq_nmod_mat_t[1];
0054 
0055 typedef struct
0056 {
0057     fq_nmod_struct * coeffs;
0058     slong alloc;
0059     slong length;
0060 }
0061 fq_nmod_poly_struct;
0062 
0063 typedef fq_nmod_poly_struct fq_nmod_poly_t[1];
0064 
0065 typedef struct
0066 {
0067     fq_nmod_poly_struct * poly;
0068     slong * exp;
0069     slong num;
0070     slong alloc;
0071 }
0072 fq_nmod_poly_factor_struct;
0073 
0074 typedef fq_nmod_poly_factor_struct fq_nmod_poly_factor_t[1];
0075 
0076 typedef struct {
0077     ulong * coeffs;
0078     ulong * exps;
0079     slong length;
0080     flint_bitcnt_t bits;    /* number of bits per exponent */
0081     slong coeffs_alloc;     /* abs size in ulong units */
0082     slong exps_alloc;       /* abs size in ulong units */
0083 } fq_nmod_mpoly_struct;
0084 
0085 typedef fq_nmod_mpoly_struct fq_nmod_mpoly_t[1];
0086 
0087 #ifdef __cplusplus
0088 }
0089 #endif
0090 
0091 #endif /* FQ_NMOD_TYPES_H */