# HG changeset patch
# User Willem Jan Palenstijn <wpalenst@math.leidenuniv.nl>
# Date 1207694492 -7200
# Node ID 48e6dbc80d25821e66f7ec3bb7e230a7ce436ac0
# Parent bb63d33f61c4cfe7a797ff674e44654f489ea72e
convert ZZ_pX_eis_shift's local modulus to a pointer since NTL doesn't
always support re-assignment of ZZ_pXModulus objects
diff -r bb63d33f61c4 -r 48e6dbc80d25 sage/rings/padics/pow_computer_ext.pyx
a
|
b
|
cdef int ZZ_pX_eis_shift(PowComputer_ZZ_ |
254 | 254 | cdef ZZ_pX_c highshift |
255 | 255 | cdef ZZ_pX_c working, working2 |
256 | 256 | cdef ntl_ZZ_pContext_class c |
257 | | cdef ZZ_pX_Modulus_c m |
| 257 | cdef ZZ_pX_Modulus_c* m |
258 | 258 | cdef long pshift = n / self.e |
259 | 259 | cdef long eis_part = n % self.e |
260 | 260 | cdef long two_shift = 1 |
… |
… |
cdef int ZZ_pX_eis_shift(PowComputer_ZZ_ |
287 | 287 | if n < 0: |
288 | 288 | if fm: |
289 | 289 | c = self.get_top_context() |
290 | | m = self.get_top_modulus()[0] |
| 290 | m = self.get_top_modulus() |
291 | 291 | else: |
292 | 292 | c = self.get_context(finalprec) |
293 | | m = self.get_modulus(finalprec)[0] |
| 293 | m = self.get_modulus(finalprec) |
294 | 294 | c.restore_c() |
295 | 295 | ##printer = ntl_ZZ_pX([],c) |
296 | | ZZ_pX_PowerXMod_long_pre(powerx, -n, m) |
| 296 | ZZ_pX_PowerXMod_long_pre(powerx, -n, m[0]) |
297 | 297 | ##printer.x = powerx |
298 | 298 | ##print printer |
299 | 299 | ZZ_pX_conv_modulus(x[0], a[0], c.x) |
300 | | ZZ_pX_MulMod_pre(x[0], powerx, a[0], m) |
| 300 | ZZ_pX_MulMod_pre(x[0], powerx, a[0], m[0]) |
301 | 301 | ##printer.x = x[0] |
302 | 302 | ##print printer |
303 | 303 | return 0 |
… |
… |
cdef int ZZ_pX_eis_shift(PowComputer_ZZ_ |
356 | 356 | # pshift = pshift >> 1 |
357 | 357 | if fm: |
358 | 358 | c = self.get_top_context() |
359 | | m = self.get_top_modulus()[0] |
| 359 | m = self.get_top_modulus() |
360 | 360 | else: |
361 | 361 | c = self.get_context(finalprec + pshift + 1) |
362 | 362 | c.restore_c() |
… |
… |
cdef int ZZ_pX_eis_shift(PowComputer_ZZ_ |
366 | 366 | pshift -= 1 |
367 | 367 | if fm: |
368 | 368 | ZZ_pX_right_pshift(working, working, self.pow_ZZ_tmp(1)[0],c.x) |
369 | | ZZ_pX_MulMod_premul(working, working, high_shifter_fm[0], m) |
| 369 | ZZ_pX_MulMod_premul(working, working, high_shifter_fm[0], m[0]) |
370 | 370 | else: |
371 | 371 | c = self.get_context(finalprec + pshift + 1) |
372 | | m = self.get_modulus(finalprec + pshift + 1)[0] |
| 372 | m = self.get_modulus(finalprec + pshift + 1) |
373 | 373 | ZZ_pX_right_pshift(working, working, self.pow_ZZ_tmp(1)[0],c.x) |
374 | 374 | ZZ_pX_conv_modulus(highshift, high_shifter[0], c.x) |
375 | | ZZ_pX_MulMod_pre(working, working, highshift, m) |
| 375 | ZZ_pX_MulMod_pre(working, working, highshift, m[0]) |
376 | 376 | elif not fm: |
377 | | m = self.get_modulus(finalprec + 1)[0] |
| 377 | m = self.get_modulus(finalprec + 1) |
378 | 378 | ZZ_pX_conv_modulus(working2, working, c.x) |
379 | 379 | i = 0 |
380 | 380 | two_shift = 1 |
… |
… |
cdef int ZZ_pX_eis_shift(PowComputer_ZZ_ |
396 | 396 | ##printer.x = low_part |
397 | 397 | ##print "low_part = %s"%(printer) |
398 | 398 | if fm: |
399 | | ZZ_pX_MulMod_premul(low_part, low_part, low_shifter_fm[i], m) |
| 399 | ZZ_pX_MulMod_premul(low_part, low_part, low_shifter_fm[i], m[0]) |
400 | 400 | else: |
401 | 401 | ZZ_pX_conv_modulus(lowshift, low_shifter[i], c.x) |
402 | | ZZ_pX_MulMod_pre(low_part, low_part, lowshift, m) |
| 402 | ZZ_pX_MulMod_pre(low_part, low_part, lowshift, m[0]) |
403 | 403 | ##printer.x = low_part |
404 | 404 | ##print "low_part = %s"%(printer) |
405 | 405 | ZZ_pX_add(working2, low_part, shifted_high_part) |