1 /*
2 Copyright (C) 2021 William Hart
3
4 This file is part of FLINT.
5
6 FLINT is free software: you can redistribute it and/or modify it under
7 the terms of the GNU Lesser General Public License (LGPL) as published
8 by the Free Software Foundation; either version 2.1 of the License, or
9 (at your option) any later version. See <https://www.gnu.org/licenses/>.
10 */
11
12 #include "fq_default.h"
13
14 #include <stdlib.h>
15 #include <stdio.h>
16 #include <gmp.h>
17 #include "flint.h"
18 #include "nmod_poly.h"
19 #include "ulong_extras.h"
20
21 int
main(void)22 main(void)
23 {
24 int i, result;
25 FLINT_TEST_INIT(state);
26
27 flint_printf("get/set_fmpz_mod_poly....");
28 fflush(stdout);
29
30 /* fq_zech range */
31 for (i = 0; i < 100 * flint_test_multiplier(); i++)
32 {
33 fq_default_ctx_t ctx;
34 fq_default_t fq1, fq2;
35 fmpz_mod_ctx_t fctx;
36 fmpz_mod_poly_t fmod;
37 fmpz_t p;
38
39 fmpz_init(p);
40
41 fmpz_set_ui(p, 3);
42
43 fq_default_ctx_init(ctx, p, 3, "x");
44
45 fq_default_init(fq1, ctx);
46 fq_default_init(fq2, ctx);
47
48 fmpz_mod_ctx_init(fctx, p);
49 fmpz_mod_poly_init(fmod, fctx);
50
51 fq_default_randtest(fq1, state, ctx);
52
53 fq_default_get_fmpz_mod_poly(fmod, fq1, ctx);
54 fq_default_set_fmpz_mod_poly(fq2, fmod, ctx);
55
56 result = (fq_default_equal(fq1, fq2, ctx));
57 if (!result)
58 {
59 flint_printf("FAIL:\n");
60 fq_default_print(fq1, ctx); flint_printf("\n\n");
61 fq_default_print(fq2, ctx); flint_printf("\n\n");
62 fmpz_mod_poly_print(fmod, fctx); flint_printf("\n\n");
63 abort();
64 }
65
66 fmpz_mod_poly_clear(fmod, fctx);
67 fmpz_mod_ctx_clear(fctx);
68
69 fq_default_clear(fq1, ctx);
70 fq_default_clear(fq2, ctx);
71
72 fq_default_ctx_clear(ctx);
73 }
74
75 /* fq_nmod range */
76 for (i = 0; i < 100 * flint_test_multiplier(); i++)
77 {
78 fq_default_ctx_t ctx;
79 fq_default_t fq1, fq2;
80 fmpz_mod_ctx_t fctx;
81 fmpz_mod_poly_t fmod;
82 fmpz_t p;
83
84 fmpz_init(p);
85
86 fmpz_set_ui(p, 3);
87
88 fq_default_ctx_init(ctx, p, 16, "x");
89
90 fq_default_init(fq1, ctx);
91 fq_default_init(fq2, ctx);
92
93 fmpz_mod_ctx_init(fctx, p);
94 fmpz_mod_poly_init(fmod, fctx);
95
96 fq_default_randtest(fq1, state, ctx);
97
98 fq_default_get_fmpz_mod_poly(fmod, fq1, ctx);
99 fq_default_set_fmpz_mod_poly(fq2, fmod, ctx);
100
101 result = (fq_default_equal(fq1, fq2, ctx));
102 if (!result)
103 {
104 flint_printf("FAIL:\n");
105 fq_default_print(fq1, ctx); flint_printf("\n\n");
106 fq_default_print(fq2, ctx); flint_printf("\n\n");
107 fmpz_mod_poly_print(fmod, fctx); flint_printf("\n\n");
108 abort();
109 }
110
111 fmpz_mod_poly_clear(fmod, fctx);
112 fmpz_mod_ctx_clear(fctx);
113
114 fq_default_clear(fq1, ctx);
115 fq_default_clear(fq2, ctx);
116
117 fq_default_ctx_clear(ctx);
118
119 fmpz_clear(p);
120 }
121
122 /* fq range */
123 for (i = 0; i < 100 * flint_test_multiplier(); i++)
124 {
125 fq_default_ctx_t ctx;
126 fq_default_t fq1, fq2;
127 fmpz_mod_ctx_t fctx;
128 fmpz_mod_poly_t fmod;
129 fmpz_t p;
130
131 fmpz_init(p);
132
133 fmpz_set_str(p, "73786976294838206473", 10);
134
135 fq_default_ctx_init(ctx, p, 1, "x");
136
137 fq_default_init(fq1, ctx);
138 fq_default_init(fq2, ctx);
139
140 fmpz_mod_ctx_init(fctx, p);
141 fmpz_mod_poly_init(fmod, fctx);
142
143 fq_default_randtest(fq1, state, ctx);
144
145 fq_default_get_fmpz_mod_poly(fmod, fq1, ctx);
146 fq_default_set_fmpz_mod_poly(fq2, fmod, ctx);
147
148 result = (fq_default_equal(fq1, fq2, ctx));
149 if (!result)
150 {
151 flint_printf("FAIL:\n");
152 fq_default_print(fq1, ctx); flint_printf("\n\n");
153 fq_default_print(fq2, ctx); flint_printf("\n\n");
154 fmpz_mod_poly_print(fmod, fctx); flint_printf("\n\n");
155 abort();
156 }
157
158 fmpz_mod_poly_clear(fmod, fctx);
159 fmpz_mod_ctx_clear(fctx);
160
161 fq_default_clear(fq1, ctx);
162 fq_default_clear(fq2, ctx);
163
164 fq_default_ctx_clear(ctx);
165
166 fmpz_clear(p);
167 }
168
169 FLINT_TEST_CLEANUP(state);
170
171 flint_printf("PASS\n");
172 return 0;
173 }
174