Back to home page

EIC code displayed by LXR

 
 

    


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

0001 /*
0002     Copyright (C) 2023 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_ZECH_TYPES_H
0013 #define FQ_ZECH_TYPES_H
0014 
0015 #include "fq_nmod_types.h"
0016 
0017 #ifdef __cplusplus
0018 extern "C" {
0019 #endif
0020 
0021 typedef struct
0022 {
0023     ulong value;
0024 }
0025 fq_zech_struct;
0026 
0027 typedef fq_zech_struct fq_zech_t[1];
0028 
0029 typedef struct
0030 {
0031     ulong qm1;     /* q - 1 */
0032     ulong qm1o2;   /* (q - 1) / 2 or 1 when p == 2 */
0033     ulong qm1opm1; /* (q - 1) / (p - 1) */
0034     ulong p;
0035     double ppre;
0036     ulong prime_root;       /* primitive root for prime subfield */
0037     ulong * zech_log_table;
0038     ulong * prime_field_table;
0039     ulong * eval_table;
0040 
0041     fq_nmod_ctx_struct * fq_nmod_ctx;
0042     int owns_fq_nmod_ctx;
0043     int is_conway; /* whether field was generated using Flint Conway tables (assures primitivity) */
0044 }
0045 fq_zech_ctx_struct;
0046 
0047 typedef fq_zech_ctx_struct fq_zech_ctx_t[1];
0048 
0049 typedef struct
0050 {
0051     fq_zech_struct * entries;
0052     slong r;
0053     slong c;
0054     slong stride;
0055 }
0056 fq_zech_mat_struct;
0057 
0058 typedef fq_zech_mat_struct fq_zech_mat_t[1];
0059 
0060 typedef struct
0061 {
0062     fq_zech_struct * coeffs;
0063     slong alloc;
0064     slong length;
0065 }
0066 fq_zech_poly_struct;
0067 
0068 typedef fq_zech_poly_struct fq_zech_poly_t[1];
0069 
0070 typedef struct
0071 {
0072     fq_zech_poly_struct * poly;
0073     slong * exp;
0074     slong num;
0075     slong alloc;
0076 }
0077 fq_zech_poly_factor_struct;
0078 
0079 typedef fq_zech_poly_factor_struct fq_zech_poly_factor_t[1];
0080 
0081 #ifdef __cplusplus
0082 }
0083 #endif
0084 
0085 #endif /* FQ_ZECH_TYPES_H */