@@ -121,20 +121,25 @@ function _iso_oscar_gap_field_finite_functions(FO::Union{FqPolyRepField, FqField
121
121
122
122
if FO isa FqField
123
123
f = function (x)
124
- v = [GAP. Obj (Nemo. _coeff (x, i)) for i in 0 : (d - 1 )]
125
- return sum ([v[i]* basis_FG[i] for i in 1 : d])
124
+ return sum ([GAP. Obj (Nemo. _coeff (x, i- 1 ))* basis_FG[i] for i in 1 : d])
126
125
end
127
126
else
128
127
f = function (x)
129
- v = [GAP. Obj (coeff (x, i)) for i in 0 : (d - 1 )]
130
- return sum ([v[i]* basis_FG[i] for i in 1 : d])
128
+ return sum ([GAP. Obj (coeff (x, i- 1 ))* basis_FG[i] for i in 1 : d])
131
129
end
132
130
end
133
-
134
- finv = function (x:: GAP.Obj )
135
- v = GAPWrap. Coefficients (basis_FG, x)
136
- v_int = [ZZRingElem (GAPWrap. IntFFE (v[i])) for i = 1 : d]
137
- return sum ([v_int[i]* basis_F[i] for i = 1 : d])
131
+ if p < 2 ^ 60
132
+ finv = function (x:: GAP.Obj )
133
+ v = GAPWrap. Coefficients (basis_FG, x)
134
+ v_int = [GAPWrap. IntFFE (v[i]):: Int for i = 1 : d]
135
+ return FO (v_int)
136
+ end
137
+ else
138
+ finv = function (x:: GAP.Obj )
139
+ v = GAPWrap. Coefficients (basis_FG, x)
140
+ v_int = [ZZRingElem (GAPWrap. IntFFE (v[i])):: ZZRingElem for i = 1 : d]
141
+ return FO (v_int)
142
+ end
138
143
end
139
144
else
140
145
# Create an Oscar field `FO2` that is compatible with `FG`
@@ -149,21 +154,19 @@ function _iso_oscar_gap_field_finite_functions(FO::Union{FqPolyRepField, FqField
149
154
if FO isa FqField
150
155
f = function (x)
151
156
y = preimage (emb, x)
152
- v = [GAP. Obj (Nemo. _coeff (y, i)) for i in 0 : (d - 1 )]
153
- return sum ([v[i]* basis_FG[i] for i in 1 : d])
157
+ return sum ([GAP. Obj (Nemo. _coeff (y, i- 1 ))* basis_FG[i] for i in 1 : d])
154
158
end
155
159
else
156
160
f = function (x)
157
161
y = preimage (emb, x)
158
- v = [GAP. Obj (coeff (y, i)) for i in 0 : (d - 1 )]
159
- return sum ([v[i]* basis_FG[i] for i in 1 : d])
162
+ return sum ([GAP. Obj (coeff (y, i- 1 ))* basis_FG[i] for i in 1 : d])
160
163
end
161
164
end
162
165
163
166
finv = function (x:: GAP.Obj )
164
167
v = GAPWrap. Coefficients (basis_FG, x)
165
168
v_int = [ZZRingElem (GAPWrap. IntFFE (v[i])) for i = 1 : d]
166
- return emb (sum ([ v_int[i] * basis_F[i] for i = 1 : d] ))
169
+ return emb (FO2 ( v_int))
167
170
end
168
171
end
169
172
0 commit comments