passagemath-pari 10.6.32__cp314-cp314-musllinux_1_2_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of passagemath-pari might be problematic. Click here for more details.
- PARIKernel/__init__.py +2 -0
- PARIKernel/__main__.py +5 -0
- PARIKernel/io.cpython-314-x86_64-linux-musl.so +0 -0
- PARIKernel/io.pxd +7 -0
- PARIKernel/io.pyx +84 -0
- PARIKernel/kernel.cpython-314-x86_64-linux-musl.so +0 -0
- PARIKernel/kernel.pyx +260 -0
- PARIKernel/paridecl.pxd +95 -0
- PARIKernel/svg.cpython-314-x86_64-linux-musl.so +0 -0
- PARIKernel/svg.pyx +52 -0
- cypari2/__init__.py +8 -0
- cypari2/auto_paridecl.pxd +1070 -0
- cypari2/closure.cpython-314-x86_64-linux-musl.so +0 -0
- cypari2/closure.pxd +5 -0
- cypari2/closure.pyx +246 -0
- cypari2/convert.cpython-314-x86_64-linux-musl.so +0 -0
- cypari2/convert.pxd +80 -0
- cypari2/convert.pyx +613 -0
- cypari2/custom_block.cpython-314-x86_64-linux-musl.so +0 -0
- cypari2/custom_block.pyx +30 -0
- cypari2/cypari.h +13 -0
- cypari2/gen.cpython-314-x86_64-linux-musl.so +0 -0
- cypari2/gen.pxd +69 -0
- cypari2/gen.pyx +4819 -0
- cypari2/handle_error.cpython-314-x86_64-linux-musl.so +0 -0
- cypari2/handle_error.pxd +7 -0
- cypari2/handle_error.pyx +232 -0
- cypari2/pari_instance.cpython-314-x86_64-linux-musl.so +0 -0
- cypari2/pari_instance.pxd +27 -0
- cypari2/pari_instance.pyx +1438 -0
- cypari2/paridecl.pxd +5353 -0
- cypari2/paripriv.pxd +34 -0
- cypari2/pycore_long.h +98 -0
- cypari2/pycore_long.pxd +9 -0
- cypari2/stack.cpython-314-x86_64-linux-musl.so +0 -0
- cypari2/stack.pxd +27 -0
- cypari2/stack.pyx +278 -0
- cypari2/string_utils.cpython-314-x86_64-linux-musl.so +0 -0
- cypari2/string_utils.pxd +29 -0
- cypari2/string_utils.pyx +65 -0
- cypari2/types.pxd +147 -0
- passagemath_pari-10.6.32.data/data/etc/jupyter/nbconfig/notebook.d/gp-mode.json +5 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/kernels/pari_jupyter/kernel.js +28 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/kernels/pari_jupyter/kernel.json +6 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/kernels/pari_jupyter/logo-64x64.png +0 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/kernels/xeus-gp/kernel.json +13 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/kernels/xeus-gp/logo-32x32.png +0 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/kernels/xeus-gp/logo-64x64.png +0 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/kernels/xeus-gp/logo-svg.svg +75 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/nbextensions/gp-mode/gp.js +284 -0
- passagemath_pari-10.6.32.data/data/share/jupyter/nbextensions/gp-mode/main.js +15 -0
- passagemath_pari-10.6.32.dist-info/METADATA +209 -0
- passagemath_pari-10.6.32.dist-info/RECORD +331 -0
- passagemath_pari-10.6.32.dist-info/WHEEL +5 -0
- passagemath_pari-10.6.32.dist-info/top_level.txt +4 -0
- passagemath_pari.libs/libcrypto-f04afe95.so.3 +0 -0
- passagemath_pari.libs/libflint-fd6f12fc.so.21.0.0 +0 -0
- passagemath_pari.libs/libgcc_s-0cd532bd.so.1 +0 -0
- passagemath_pari.libs/libgf2x-9e30c3e3.so.3.0.0 +0 -0
- passagemath_pari.libs/libgfortran-2c33b284.so.5.0.0 +0 -0
- passagemath_pari.libs/libgivaro-9a94c711.so.9.2.1 +0 -0
- passagemath_pari.libs/libgmp-0e7fc84e.so.10.5.0 +0 -0
- passagemath_pari.libs/libgmpxx-9e08595c.so.4.7.0 +0 -0
- passagemath_pari.libs/libgsl-42cda06f.so.28.0.0 +0 -0
- passagemath_pari.libs/libmpfr-aaecbfc0.so.6.2.1 +0 -0
- passagemath_pari.libs/libncursesw-9c9e32c3.so.6.5 +0 -0
- passagemath_pari.libs/libntl-26885ca2.so.44.0.1 +0 -0
- passagemath_pari.libs/libopenblasp-r0-905cb27d.3.29.so +0 -0
- passagemath_pari.libs/libpari-gmp-tls-f31f908f.so.2.17.2 +0 -0
- passagemath_pari.libs/libquadmath-bb76a5fc.so.0.0.0 +0 -0
- passagemath_pari.libs/libreadline-06542304.so.8.2 +0 -0
- passagemath_pari.libs/libstdc++-5d72f927.so.6.0.33 +0 -0
- passagemath_pari.libs/libuuid-f3770415.so.1.3.0 +0 -0
- passagemath_pari.libs/libxeus-735780ff.so.13.1.0 +0 -0
- passagemath_pari.libs/libxeus-zmq-c68577b4.so.6.0.1 +0 -0
- passagemath_pari.libs/libzmq-1ba9a3da.so.5.2.5 +0 -0
- sage/all__sagemath_pari.py +26 -0
- sage/databases/all__sagemath_pari.py +7 -0
- sage/databases/conway.py +274 -0
- sage/ext/all__sagemath_pari.py +1 -0
- sage/ext/memory.cpython-314-x86_64-linux-musl.so +0 -0
- sage/ext/memory.pyx +98 -0
- sage/ext_data/pari/buzzard/DimensionSk.g +286 -0
- sage/ext_data/pari/buzzard/Tpprog.g +179 -0
- sage/ext_data/pari/buzzard/genusn.g +129 -0
- sage/ext_data/pari/dokchitser/computel.gp +740 -0
- sage/ext_data/pari/dokchitser/computel.gp.template +740 -0
- sage/ext_data/pari/dokchitser/ex-bsw +43 -0
- sage/ext_data/pari/dokchitser/ex-chgen +48 -0
- sage/ext_data/pari/dokchitser/ex-chqua +37 -0
- sage/ext_data/pari/dokchitser/ex-delta +35 -0
- sage/ext_data/pari/dokchitser/ex-eisen +30 -0
- sage/ext_data/pari/dokchitser/ex-gen2 +38 -0
- sage/ext_data/pari/dokchitser/ex-gen3 +49 -0
- sage/ext_data/pari/dokchitser/ex-gen4 +54 -0
- sage/ext_data/pari/dokchitser/ex-nf +48 -0
- sage/ext_data/pari/dokchitser/ex-shin +50 -0
- sage/ext_data/pari/dokchitser/ex-tau2 +30 -0
- sage/ext_data/pari/dokchitser/ex-zeta +27 -0
- sage/ext_data/pari/dokchitser/ex-zeta2 +47 -0
- sage/ext_data/pari/dokchitser/testall +13 -0
- sage/ext_data/pari/simon/ell.gp +2129 -0
- sage/ext_data/pari/simon/ellQ.gp +2151 -0
- sage/ext_data/pari/simon/ellcommon.gp +126 -0
- sage/ext_data/pari/simon/qfsolve.gp +722 -0
- sage/ext_data/pari/simon/resultant3.gp +306 -0
- sage/groups/all__sagemath_pari.py +3 -0
- sage/groups/pari_group.py +175 -0
- sage/interfaces/all__sagemath_pari.py +1 -0
- sage/interfaces/genus2reduction.py +464 -0
- sage/interfaces/gp.py +1114 -0
- sage/libs/all__sagemath_pari.py +2 -0
- sage/libs/linkages/__init__.py +1 -0
- sage/libs/linkages/padics/API.pxi +617 -0
- sage/libs/linkages/padics/Polynomial_ram.pxi +388 -0
- sage/libs/linkages/padics/Polynomial_shared.pxi +554 -0
- sage/libs/linkages/padics/__init__.py +1 -0
- sage/libs/linkages/padics/fmpz_poly_unram.pxi +869 -0
- sage/libs/linkages/padics/mpz.pxi +691 -0
- sage/libs/linkages/padics/relaxed/API.pxi +518 -0
- sage/libs/linkages/padics/relaxed/__init__.py +1 -0
- sage/libs/linkages/padics/relaxed/flint.pxi +543 -0
- sage/libs/linkages/padics/unram_shared.pxi +247 -0
- sage/libs/pari/__init__.py +210 -0
- sage/libs/pari/all.py +5 -0
- sage/libs/pari/convert_flint.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/pari/convert_flint.pxd +14 -0
- sage/libs/pari/convert_flint.pyx +159 -0
- sage/libs/pari/convert_gmp.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/pari/convert_gmp.pxd +14 -0
- sage/libs/pari/convert_gmp.pyx +210 -0
- sage/libs/pari/convert_sage.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/pari/convert_sage.pxd +16 -0
- sage/libs/pari/convert_sage.pyx +588 -0
- sage/libs/pari/convert_sage_complex_double.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/pari/convert_sage_complex_double.pxd +14 -0
- sage/libs/pari/convert_sage_complex_double.pyx +132 -0
- sage/libs/pari/convert_sage_matrix.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/pari/convert_sage_matrix.pyx +106 -0
- sage/libs/pari/convert_sage_real_double.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/pari/convert_sage_real_double.pxd +5 -0
- sage/libs/pari/convert_sage_real_double.pyx +14 -0
- sage/libs/pari/convert_sage_real_mpfr.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/pari/convert_sage_real_mpfr.pxd +7 -0
- sage/libs/pari/convert_sage_real_mpfr.pyx +108 -0
- sage/libs/pari/misc.cpython-314-x86_64-linux-musl.so +0 -0
- sage/libs/pari/misc.pxd +4 -0
- sage/libs/pari/misc.pyx +26 -0
- sage/libs/pari/tests.py +1848 -0
- sage/matrix/all__sagemath_pari.py +1 -0
- sage/matrix/matrix_integer_pari.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix_integer_pari.pyx +187 -0
- sage/matrix/matrix_rational_pari.cpython-314-x86_64-linux-musl.so +0 -0
- sage/matrix/matrix_rational_pari.pyx +160 -0
- sage/quadratic_forms/all__sagemath_pari.py +10 -0
- sage/quadratic_forms/genera/all.py +9 -0
- sage/quadratic_forms/genera/genus.py +3506 -0
- sage/quadratic_forms/genera/normal_form.py +1519 -0
- sage/quadratic_forms/genera/spinor_genus.py +243 -0
- sage/quadratic_forms/qfsolve.py +255 -0
- sage/quadratic_forms/quadratic_form__automorphisms.py +427 -0
- sage/quadratic_forms/quadratic_form__genus.py +141 -0
- sage/quadratic_forms/quadratic_form__local_density_interfaces.py +140 -0
- sage/quadratic_forms/quadratic_form__local_normal_form.py +421 -0
- sage/quadratic_forms/quadratic_form__local_representation_conditions.py +889 -0
- sage/quadratic_forms/quadratic_form__mass.py +69 -0
- sage/quadratic_forms/quadratic_form__mass__Conway_Sloane_masses.py +663 -0
- sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py +373 -0
- sage/quadratic_forms/quadratic_form__siegel_product.py +198 -0
- sage/quadratic_forms/special_values.py +323 -0
- sage/rings/all__sagemath_pari.py +15 -0
- sage/rings/factorint_pari.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/factorint_pari.pyx +80 -0
- sage/rings/finite_rings/all__sagemath_pari.py +1 -0
- sage/rings/finite_rings/element_givaro.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/finite_rings/element_givaro.pxd +91 -0
- sage/rings/finite_rings/element_givaro.pyx +1769 -0
- sage/rings/finite_rings/element_ntl_gf2e.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/finite_rings/element_ntl_gf2e.pxd +22 -0
- sage/rings/finite_rings/element_ntl_gf2e.pyx +1333 -0
- sage/rings/finite_rings/element_pari_ffelt.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/finite_rings/element_pari_ffelt.pxd +13 -0
- sage/rings/finite_rings/element_pari_ffelt.pyx +1441 -0
- sage/rings/finite_rings/finite_field_givaro.py +612 -0
- sage/rings/finite_rings/finite_field_pari_ffelt.py +238 -0
- sage/rings/finite_rings/hom_finite_field_givaro.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/finite_rings/hom_finite_field_givaro.pxd +28 -0
- sage/rings/finite_rings/hom_finite_field_givaro.pyx +280 -0
- sage/rings/finite_rings/residue_field_givaro.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/finite_rings/residue_field_givaro.pyx +133 -0
- sage/rings/finite_rings/residue_field_pari_ffelt.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/finite_rings/residue_field_pari_ffelt.pyx +128 -0
- sage/rings/function_field/all__sagemath_pari.py +1 -0
- sage/rings/function_field/valuation.py +1450 -0
- sage/rings/function_field/valuation_ring.py +212 -0
- sage/rings/number_field/all__sagemath_pari.py +14 -0
- sage/rings/number_field/totallyreal.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/number_field/totallyreal.pyx +509 -0
- sage/rings/number_field/totallyreal_data.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/number_field/totallyreal_data.pxd +26 -0
- sage/rings/number_field/totallyreal_data.pyx +928 -0
- sage/rings/number_field/totallyreal_phc.py +144 -0
- sage/rings/number_field/totallyreal_rel.py +1018 -0
- sage/rings/padics/CA_template.pxi +1847 -0
- sage/rings/padics/CA_template_header.pxi +50 -0
- sage/rings/padics/CR_template.pxi +2563 -0
- sage/rings/padics/CR_template_header.pxi +57 -0
- sage/rings/padics/FM_template.pxi +1575 -0
- sage/rings/padics/FM_template_header.pxi +50 -0
- sage/rings/padics/FP_template.pxi +2176 -0
- sage/rings/padics/FP_template_header.pxi +57 -0
- sage/rings/padics/all.py +3 -0
- sage/rings/padics/all__sagemath_pari.py +11 -0
- sage/rings/padics/common_conversion.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/common_conversion.pxd +15 -0
- sage/rings/padics/common_conversion.pyx +508 -0
- sage/rings/padics/eisenstein_extension_generic.py +232 -0
- sage/rings/padics/factory.py +3623 -0
- sage/rings/padics/generic_nodes.py +1615 -0
- sage/rings/padics/lattice_precision.py +2889 -0
- sage/rings/padics/morphism.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/morphism.pxd +11 -0
- sage/rings/padics/morphism.pyx +366 -0
- sage/rings/padics/padic_base_generic.py +467 -0
- sage/rings/padics/padic_base_leaves.py +1235 -0
- sage/rings/padics/padic_capped_absolute_element.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/padic_capped_absolute_element.pxd +15 -0
- sage/rings/padics/padic_capped_absolute_element.pyx +520 -0
- sage/rings/padics/padic_capped_relative_element.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/padic_capped_relative_element.pxd +14 -0
- sage/rings/padics/padic_capped_relative_element.pyx +614 -0
- sage/rings/padics/padic_extension_generic.py +990 -0
- sage/rings/padics/padic_extension_leaves.py +738 -0
- sage/rings/padics/padic_fixed_mod_element.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/padic_fixed_mod_element.pxd +15 -0
- sage/rings/padics/padic_fixed_mod_element.pyx +584 -0
- sage/rings/padics/padic_floating_point_element.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/padic_floating_point_element.pxd +14 -0
- sage/rings/padics/padic_floating_point_element.pyx +447 -0
- sage/rings/padics/padic_generic_element.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/padic_generic_element.pxd +48 -0
- sage/rings/padics/padic_generic_element.pyx +4642 -0
- sage/rings/padics/padic_lattice_element.py +1342 -0
- sage/rings/padics/padic_printing.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/padic_printing.pxd +38 -0
- sage/rings/padics/padic_printing.pyx +1505 -0
- sage/rings/padics/padic_relaxed_element.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/padic_relaxed_element.pxd +56 -0
- sage/rings/padics/padic_relaxed_element.pyx +18 -0
- sage/rings/padics/padic_relaxed_errors.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/padic_relaxed_errors.pxd +11 -0
- sage/rings/padics/padic_relaxed_errors.pyx +71 -0
- sage/rings/padics/padic_template_element.pxi +1212 -0
- sage/rings/padics/padic_template_element_header.pxi +50 -0
- sage/rings/padics/padic_valuation.py +1423 -0
- sage/rings/padics/pow_computer_flint.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/pow_computer_flint.pxd +38 -0
- sage/rings/padics/pow_computer_flint.pyx +641 -0
- sage/rings/padics/pow_computer_relative.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/pow_computer_relative.pxd +29 -0
- sage/rings/padics/pow_computer_relative.pyx +415 -0
- sage/rings/padics/qadic_flint_CA.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/qadic_flint_CA.pxd +21 -0
- sage/rings/padics/qadic_flint_CA.pyx +130 -0
- sage/rings/padics/qadic_flint_CR.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/qadic_flint_CR.pxd +13 -0
- sage/rings/padics/qadic_flint_CR.pyx +172 -0
- sage/rings/padics/qadic_flint_FM.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/qadic_flint_FM.pxd +14 -0
- sage/rings/padics/qadic_flint_FM.pyx +111 -0
- sage/rings/padics/qadic_flint_FP.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/qadic_flint_FP.pxd +12 -0
- sage/rings/padics/qadic_flint_FP.pyx +165 -0
- sage/rings/padics/relative_extension_leaves.py +429 -0
- sage/rings/padics/relative_ramified_CA.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/relative_ramified_CA.pxd +9 -0
- sage/rings/padics/relative_ramified_CA.pyx +33 -0
- sage/rings/padics/relative_ramified_CR.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/relative_ramified_CR.pxd +8 -0
- sage/rings/padics/relative_ramified_CR.pyx +33 -0
- sage/rings/padics/relative_ramified_FM.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/relative_ramified_FM.pxd +9 -0
- sage/rings/padics/relative_ramified_FM.pyx +33 -0
- sage/rings/padics/relative_ramified_FP.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/padics/relative_ramified_FP.pxd +8 -0
- sage/rings/padics/relative_ramified_FP.pyx +33 -0
- sage/rings/padics/relaxed_template.pxi +4229 -0
- sage/rings/padics/relaxed_template_header.pxi +160 -0
- sage/rings/padics/tests.py +35 -0
- sage/rings/padics/tutorial.py +341 -0
- sage/rings/padics/unramified_extension_generic.py +335 -0
- sage/rings/padics/witt_vector.py +917 -0
- sage/rings/padics/witt_vector_ring.py +934 -0
- sage/rings/pari_ring.py +235 -0
- sage/rings/polynomial/all__sagemath_pari.py +1 -0
- sage/rings/polynomial/padics/all.py +1 -0
- sage/rings/polynomial/padics/polynomial_padic.py +360 -0
- sage/rings/polynomial/padics/polynomial_padic_capped_relative_dense.py +1324 -0
- sage/rings/polynomial/padics/polynomial_padic_flat.py +72 -0
- sage/rings/power_series_pari.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/power_series_pari.pxd +6 -0
- sage/rings/power_series_pari.pyx +934 -0
- sage/rings/tate_algebra.py +1282 -0
- sage/rings/tate_algebra_element.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/tate_algebra_element.pxd +49 -0
- sage/rings/tate_algebra_element.pyx +3464 -0
- sage/rings/tate_algebra_ideal.cpython-314-x86_64-linux-musl.so +0 -0
- sage/rings/tate_algebra_ideal.pxd +7 -0
- sage/rings/tate_algebra_ideal.pyx +1307 -0
- sage/rings/valuation/all.py +7 -0
- sage/rings/valuation/augmented_valuation.py +2118 -0
- sage/rings/valuation/developing_valuation.py +362 -0
- sage/rings/valuation/gauss_valuation.py +812 -0
- sage/rings/valuation/inductive_valuation.py +1686 -0
- sage/rings/valuation/limit_valuation.py +946 -0
- sage/rings/valuation/mapped_valuation.py +656 -0
- sage/rings/valuation/scaled_valuation.py +322 -0
- sage/rings/valuation/trivial_valuation.py +382 -0
- sage/rings/valuation/valuation.py +1119 -0
- sage/rings/valuation/valuation_space.py +1615 -0
- sage/rings/valuation/valuations_catalog.py +10 -0
- sage/rings/valuation/value_group.py +697 -0
- sage/schemes/all__sagemath_pari.py +1 -0
- sage/schemes/elliptic_curves/all__sagemath_pari.py +1 -0
- sage/schemes/elliptic_curves/descent_two_isogeny_pari.cpython-314-x86_64-linux-musl.so +0 -0
- sage/schemes/elliptic_curves/descent_two_isogeny_pari.pyx +46 -0
- sage_wheels/bin/gp +0 -0
- sage_wheels/bin/gp2c +0 -0
- sage_wheels/bin/gp2c-run +57 -0
- sage_wheels/bin/xeus-gp +0 -0
- sage_wheels/share/gp2c/func.dsc +18414 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
# sage.doctest: needs sage.rings.padics
|
|
3
|
+
r"""
|
|
4
|
+
`p`-adic Floating Point Elements
|
|
5
|
+
|
|
6
|
+
Elements of `p`-adic Rings with Floating Point Precision
|
|
7
|
+
|
|
8
|
+
AUTHORS:
|
|
9
|
+
|
|
10
|
+
- David Roe: initial version (2016-12-6)
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
#*****************************************************************************
|
|
14
|
+
# Copyright (C) 2016 David Roe <roed.math@gmail.com>
|
|
15
|
+
#
|
|
16
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
17
|
+
# as published by the Free Software Foundation; either version 2 of
|
|
18
|
+
# the License, or (at your option) any later version.
|
|
19
|
+
#
|
|
20
|
+
# http://www.gnu.org/licenses/
|
|
21
|
+
#*****************************************************************************
|
|
22
|
+
|
|
23
|
+
include "sage/libs/linkages/padics/mpz.pxi"
|
|
24
|
+
include "FP_template.pxi"
|
|
25
|
+
|
|
26
|
+
from sage.libs.pari import pari
|
|
27
|
+
from sage.libs.pari.convert_gmp cimport new_gen_from_padic
|
|
28
|
+
from sage.rings.finite_rings.integer_mod import Mod
|
|
29
|
+
|
|
30
|
+
cdef extern from "transcendantal.c":
|
|
31
|
+
cdef void padicexp(mpz_t ans, const mpz_t a, unsigned long p, unsigned long prec, const mpz_t modulo)
|
|
32
|
+
cdef void padicexp_Newton(mpz_t ans, const mpz_t a, unsigned long p, unsigned long prec, unsigned long precinit, const mpz_t modulo)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
cdef class PowComputer_(PowComputer_base):
|
|
36
|
+
"""
|
|
37
|
+
A PowComputer for a floating-point `p`-adic ring or field.
|
|
38
|
+
"""
|
|
39
|
+
def __init__(self, Integer prime, long cache_limit, long prec_cap, long ram_prec_cap, bint in_field):
|
|
40
|
+
"""
|
|
41
|
+
Initialization.
|
|
42
|
+
|
|
43
|
+
EXAMPLES::
|
|
44
|
+
|
|
45
|
+
sage: R = ZpFP(5)
|
|
46
|
+
sage: type(R.prime_pow)
|
|
47
|
+
<class 'sage.rings.padics.padic_floating_point_element.PowComputer_'>
|
|
48
|
+
sage: R.prime_pow._prec_type
|
|
49
|
+
'floating-point'
|
|
50
|
+
"""
|
|
51
|
+
self._prec_type = 'floating-point'
|
|
52
|
+
PowComputer_base.__init__(self, prime, cache_limit, prec_cap, ram_prec_cap, in_field)
|
|
53
|
+
|
|
54
|
+
cdef class pAdicFloatingPointElement(FPElement):
|
|
55
|
+
"""
|
|
56
|
+
Construct new element with given parent and value.
|
|
57
|
+
|
|
58
|
+
INPUT:
|
|
59
|
+
|
|
60
|
+
- ``x`` -- value to coerce into a floating point ring or field
|
|
61
|
+
|
|
62
|
+
- ``absprec`` -- maximum number of digits of absolute precision
|
|
63
|
+
|
|
64
|
+
- ``relprec`` -- maximum number of digits of relative precision
|
|
65
|
+
|
|
66
|
+
EXAMPLES::
|
|
67
|
+
|
|
68
|
+
sage: R = Zp(5, 10, 'floating-point')
|
|
69
|
+
|
|
70
|
+
Construct from integers::
|
|
71
|
+
|
|
72
|
+
sage: R(3)
|
|
73
|
+
3
|
|
74
|
+
sage: R(75)
|
|
75
|
+
3*5^2
|
|
76
|
+
sage: R(0)
|
|
77
|
+
0
|
|
78
|
+
sage: R(-1)
|
|
79
|
+
4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + 4*5^9
|
|
80
|
+
sage: R(-5)
|
|
81
|
+
4*5 + 4*5^2 + 4*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + 4*5^9 + 4*5^10
|
|
82
|
+
sage: R(-7*25)
|
|
83
|
+
3*5^2 + 3*5^3 + 4*5^4 + 4*5^5 + 4*5^6 + 4*5^7 + 4*5^8 + 4*5^9 + 4*5^10 + 4*5^11
|
|
84
|
+
|
|
85
|
+
Construct from rationals::
|
|
86
|
+
|
|
87
|
+
sage: R(1/2)
|
|
88
|
+
3 + 2*5 + 2*5^2 + 2*5^3 + 2*5^4 + 2*5^5 + 2*5^6 + 2*5^7 + 2*5^8 + 2*5^9
|
|
89
|
+
sage: R(-7875/874)
|
|
90
|
+
3*5^3 + 2*5^4 + 2*5^5 + 5^6 + 3*5^7 + 2*5^8 + 3*5^10 + 3*5^11 + 3*5^12
|
|
91
|
+
sage: R(15/425)
|
|
92
|
+
Traceback (most recent call last):
|
|
93
|
+
...
|
|
94
|
+
ValueError: p divides the denominator
|
|
95
|
+
|
|
96
|
+
Construct from IntegerMod::
|
|
97
|
+
|
|
98
|
+
sage: R(Integers(125)(3))
|
|
99
|
+
3
|
|
100
|
+
sage: R(Integers(5)(3))
|
|
101
|
+
3
|
|
102
|
+
sage: R(Integers(5^30)(3))
|
|
103
|
+
3
|
|
104
|
+
sage: R(Integers(5^30)(1+5^23))
|
|
105
|
+
1
|
|
106
|
+
sage: R(Integers(49)(3))
|
|
107
|
+
Traceback (most recent call last):
|
|
108
|
+
...
|
|
109
|
+
TypeError: p does not divide modulus 49
|
|
110
|
+
|
|
111
|
+
::
|
|
112
|
+
|
|
113
|
+
sage: R(Integers(48)(3))
|
|
114
|
+
Traceback (most recent call last):
|
|
115
|
+
...
|
|
116
|
+
TypeError: p does not divide modulus 48
|
|
117
|
+
|
|
118
|
+
Some other conversions::
|
|
119
|
+
|
|
120
|
+
sage: R(R(5))
|
|
121
|
+
5
|
|
122
|
+
|
|
123
|
+
Construct from Pari objects::
|
|
124
|
+
|
|
125
|
+
sage: R = ZpFP(5)
|
|
126
|
+
sage: x = pari(123123) ; R(x) # needs sage.libs.pari
|
|
127
|
+
3 + 4*5 + 4*5^2 + 4*5^3 + 5^4 + 4*5^5 + 2*5^6 + 5^7
|
|
128
|
+
sage: R(pari(R(5252)))
|
|
129
|
+
2 + 2*5^3 + 3*5^4 + 5^5
|
|
130
|
+
sage: R = ZpFP(5,prec=5)
|
|
131
|
+
sage: R(pari(-1))
|
|
132
|
+
4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4
|
|
133
|
+
sage: pari(R(-1)) # needs sage.libs.pari
|
|
134
|
+
4 + 4*5 + 4*5^2 + 4*5^3 + 4*5^4 + O(5^5)
|
|
135
|
+
sage: pari(R(0)) # needs sage.libs.pari
|
|
136
|
+
0
|
|
137
|
+
sage: R(pari(R(0,5)))
|
|
138
|
+
0
|
|
139
|
+
|
|
140
|
+
# todo: doctests for converting from other types of p-adic rings
|
|
141
|
+
"""
|
|
142
|
+
def lift(self):
|
|
143
|
+
r"""
|
|
144
|
+
Return an integer or rational congruent to ``self`` modulo ``self``'s
|
|
145
|
+
precision. If a rational is returned, its denominator will equal
|
|
146
|
+
``p^ordp(self)``.
|
|
147
|
+
|
|
148
|
+
This method will raise a :exc:`ValueError` when this element
|
|
149
|
+
is infinity.
|
|
150
|
+
|
|
151
|
+
EXAMPLES::
|
|
152
|
+
|
|
153
|
+
sage: R = Zp(7,4,'floating-point'); a = R(8); a.lift()
|
|
154
|
+
8
|
|
155
|
+
sage: R = QpFP(7,4); a = R(8); a.lift()
|
|
156
|
+
8
|
|
157
|
+
sage: R = QpFP(7,4); a = R(8/7); a.lift()
|
|
158
|
+
8/7
|
|
159
|
+
"""
|
|
160
|
+
return self.lift_c()
|
|
161
|
+
|
|
162
|
+
cdef lift_c(self):
|
|
163
|
+
r"""
|
|
164
|
+
Implementation of lift.
|
|
165
|
+
|
|
166
|
+
TESTS::
|
|
167
|
+
|
|
168
|
+
sage: ZpFP(5)(0).lift() # indirect doctest
|
|
169
|
+
0
|
|
170
|
+
sage: R = QpFP(5); R(0).lift()
|
|
171
|
+
0
|
|
172
|
+
sage: R(5/9).lift()
|
|
173
|
+
264909532335070
|
|
174
|
+
sage: R(9/5).lift()
|
|
175
|
+
9/5
|
|
176
|
+
"""
|
|
177
|
+
cdef Integer ans
|
|
178
|
+
cdef Rational ansr
|
|
179
|
+
if self.ordp >= 0:
|
|
180
|
+
ans = PY_NEW(Integer)
|
|
181
|
+
if very_pos_val(self.ordp):
|
|
182
|
+
mpz_set_ui(ans.value, 0)
|
|
183
|
+
else:
|
|
184
|
+
mpz_set(ans.value, self.unit)
|
|
185
|
+
mpz_mul(ans.value, ans.value, self.prime_pow.pow_mpz_t_tmp(self.ordp))
|
|
186
|
+
return ans
|
|
187
|
+
else:
|
|
188
|
+
ansr = Rational.__new__(Rational)
|
|
189
|
+
if very_neg_val(self.ordp):
|
|
190
|
+
raise ValueError("infinity cannot be lifted to an integer or rational")
|
|
191
|
+
mpz_set(mpq_numref(ansr.value), self.unit)
|
|
192
|
+
mpz_set(mpq_denref(ansr.value), self.prime_pow.pow_mpz_t_tmp(-self.ordp))
|
|
193
|
+
return ansr
|
|
194
|
+
|
|
195
|
+
def __pari__(self):
|
|
196
|
+
"""
|
|
197
|
+
Convert this element to an equivalent pari element.
|
|
198
|
+
|
|
199
|
+
EXAMPLES::
|
|
200
|
+
|
|
201
|
+
sage: R = ZpFP(17, 10); a = ~R(14); pari(a) # indirect doctest
|
|
202
|
+
11 + 3*17 + 17^2 + 6*17^3 + 13*17^4 + 15*17^5 + 10*17^6 + 3*17^7 + 17^8 + 6*17^9 + O(17^10)
|
|
203
|
+
sage: pari(R(0)) # needs sage.libs.pari
|
|
204
|
+
0
|
|
205
|
+
"""
|
|
206
|
+
return self._to_gen()
|
|
207
|
+
|
|
208
|
+
cdef pari_gen _to_gen(self):
|
|
209
|
+
"""
|
|
210
|
+
Convert this element to an equivalent pari element.
|
|
211
|
+
|
|
212
|
+
EXAMPLES::
|
|
213
|
+
|
|
214
|
+
sage: R = ZpFP(5, 10); a = R(17); pari(a) # indirect doctest
|
|
215
|
+
2 + 3*5 + O(5^10)
|
|
216
|
+
sage: pari(R(0)) # needs sage.libs.pari
|
|
217
|
+
0
|
|
218
|
+
"""
|
|
219
|
+
if very_pos_val(self.ordp):
|
|
220
|
+
return pari.zero()
|
|
221
|
+
elif very_neg_val(self.ordp):
|
|
222
|
+
raise ValueError("no analogue of p-adic infinity in pari")
|
|
223
|
+
else:
|
|
224
|
+
return new_gen_from_padic(self.ordp, self.prime_pow.prec_cap,
|
|
225
|
+
self.prime_pow.prime.value,
|
|
226
|
+
self.prime_pow.pow_mpz_t_top(),
|
|
227
|
+
self.unit)
|
|
228
|
+
|
|
229
|
+
def _integer_(self, Z=None):
|
|
230
|
+
r"""
|
|
231
|
+
Return an integer congruent to this element modulo
|
|
232
|
+
``p^self.absolute_precision()``.
|
|
233
|
+
|
|
234
|
+
EXAMPLES::
|
|
235
|
+
|
|
236
|
+
sage: R = ZpFP(5); a = R(-1); a._integer_()
|
|
237
|
+
95367431640624
|
|
238
|
+
"""
|
|
239
|
+
if self.ordp < 0:
|
|
240
|
+
raise ValueError("cannot form an integer out of a p-adic field element with negative valuation")
|
|
241
|
+
return self.lift_c()
|
|
242
|
+
|
|
243
|
+
def residue(self, absprec=1, field=None, check_prec=False):
|
|
244
|
+
r"""
|
|
245
|
+
Reduce this element modulo `p^{\mathrm{absprec}}`.
|
|
246
|
+
|
|
247
|
+
INPUT:
|
|
248
|
+
|
|
249
|
+
- ``absprec`` -- nonnegative integer (default: 1)
|
|
250
|
+
|
|
251
|
+
- ``field`` -- boolean (default: ``None``); whether to return an
|
|
252
|
+
element of `\GF{p}` or `\ZZ / p\ZZ`
|
|
253
|
+
|
|
254
|
+
- ``check_prec`` -- ignored (for compatibility with other types)
|
|
255
|
+
|
|
256
|
+
OUTPUT:
|
|
257
|
+
|
|
258
|
+
This element reduced modulo `p^{\mathrm{absprec}}` as an element of
|
|
259
|
+
`\ZZ/p^{\mathrm{absprec}}\ZZ`.
|
|
260
|
+
|
|
261
|
+
EXAMPLES::
|
|
262
|
+
|
|
263
|
+
sage: R = ZpFP(7,4)
|
|
264
|
+
sage: a = R(8)
|
|
265
|
+
sage: a.residue(1)
|
|
266
|
+
1
|
|
267
|
+
sage: a.residue(2)
|
|
268
|
+
8
|
|
269
|
+
|
|
270
|
+
sage: K = QpFP(7,4)
|
|
271
|
+
sage: a = K(8)
|
|
272
|
+
sage: a.residue(1)
|
|
273
|
+
1
|
|
274
|
+
sage: a.residue(2)
|
|
275
|
+
8
|
|
276
|
+
sage: b = K(1/7)
|
|
277
|
+
sage: b.residue()
|
|
278
|
+
Traceback (most recent call last):
|
|
279
|
+
...
|
|
280
|
+
ValueError: element must have nonnegative valuation in order to compute residue
|
|
281
|
+
|
|
282
|
+
TESTS::
|
|
283
|
+
|
|
284
|
+
sage: R = ZpFP(7,4)
|
|
285
|
+
sage: a = R(8)
|
|
286
|
+
sage: a.residue(0)
|
|
287
|
+
0
|
|
288
|
+
sage: a.residue(-1)
|
|
289
|
+
Traceback (most recent call last):
|
|
290
|
+
...
|
|
291
|
+
ValueError: cannot reduce modulo a negative power of p
|
|
292
|
+
sage: a.residue(5)
|
|
293
|
+
8
|
|
294
|
+
|
|
295
|
+
sage: a.residue(field=True).parent()
|
|
296
|
+
Finite Field of size 7
|
|
297
|
+
"""
|
|
298
|
+
cdef Integer selfvalue, modulus
|
|
299
|
+
cdef long aprec
|
|
300
|
+
if not isinstance(absprec, Integer):
|
|
301
|
+
absprec = Integer(absprec)
|
|
302
|
+
if mpz_sgn((<Integer>absprec).value) < 0:
|
|
303
|
+
raise ValueError("cannot reduce modulo a negative power of p")
|
|
304
|
+
if self.ordp < 0:
|
|
305
|
+
raise ValueError("element must have nonnegative valuation in order to compute residue")
|
|
306
|
+
if field is None:
|
|
307
|
+
field = (absprec == 1)
|
|
308
|
+
elif field and absprec != 1:
|
|
309
|
+
raise ValueError("field keyword may only be set at precision 1")
|
|
310
|
+
if mpz_fits_slong_p((<Integer>absprec).value) == 0:
|
|
311
|
+
raise ValueError("absolute precision does not fit in a long")
|
|
312
|
+
aprec = mpz_get_si((<Integer>absprec).value)
|
|
313
|
+
modulus = PY_NEW(Integer)
|
|
314
|
+
mpz_set(modulus.value, self.prime_pow.pow_mpz_t_tmp(aprec))
|
|
315
|
+
selfvalue = PY_NEW(Integer)
|
|
316
|
+
if very_pos_val(self.ordp):
|
|
317
|
+
mpz_set_ui(selfvalue.value, 0)
|
|
318
|
+
else:
|
|
319
|
+
# Need to do this better.
|
|
320
|
+
mpz_mul(selfvalue.value, self.prime_pow.pow_mpz_t_tmp(self.ordp), self.unit)
|
|
321
|
+
if field:
|
|
322
|
+
from sage.rings.finite_rings.finite_field_constructor import GF
|
|
323
|
+
return GF(self.parent().prime())(selfvalue)
|
|
324
|
+
else:
|
|
325
|
+
return Mod(selfvalue, modulus)
|
|
326
|
+
|
|
327
|
+
def _exp_binary_splitting(self, aprec):
|
|
328
|
+
r"""
|
|
329
|
+
Compute the exponential power series of this element.
|
|
330
|
+
|
|
331
|
+
This is a helper method for :meth:`exp`.
|
|
332
|
+
|
|
333
|
+
INPUT:
|
|
334
|
+
|
|
335
|
+
- ``aprec`` -- integer; the precision to which to compute the
|
|
336
|
+
exponential
|
|
337
|
+
|
|
338
|
+
.. NOTE::
|
|
339
|
+
|
|
340
|
+
The function does not check that its argument ``self`` is
|
|
341
|
+
the disk of convergence of ``exp``. If this assumption is not
|
|
342
|
+
fulfilled the behaviour of the function is not specified.
|
|
343
|
+
|
|
344
|
+
ALGORITHM:
|
|
345
|
+
|
|
346
|
+
Write
|
|
347
|
+
|
|
348
|
+
.. MATH::
|
|
349
|
+
|
|
350
|
+
\mathrm{self} = \sum_{i=1}^\infty a_i p^{2^i}
|
|
351
|
+
|
|
352
|
+
with `0 \leq a_i < p^{2^i}` and compute
|
|
353
|
+
`\exp(a_i p^{2^i})` using the standard Taylor expansion
|
|
354
|
+
|
|
355
|
+
.. MATH::
|
|
356
|
+
|
|
357
|
+
\exp(x) = 1 + x + x^2/2 + x^3/6 + x^4/24 + \cdots
|
|
358
|
+
|
|
359
|
+
together with a binary splitting method.
|
|
360
|
+
|
|
361
|
+
The binary complexity of this algorithm is quasi-linear.
|
|
362
|
+
|
|
363
|
+
EXAMPLES::
|
|
364
|
+
|
|
365
|
+
sage: R = Zp(7,5)
|
|
366
|
+
sage: x = R(7)
|
|
367
|
+
sage: x.exp(algorithm='binary_splitting') # indirect doctest
|
|
368
|
+
1 + 7 + 4*7^2 + 2*7^3 + O(7^5)
|
|
369
|
+
"""
|
|
370
|
+
cdef unsigned long p
|
|
371
|
+
cdef unsigned long prec = aprec
|
|
372
|
+
cdef pAdicFloatingPointElement ans
|
|
373
|
+
cdef Integer selfint = self.lift_c()
|
|
374
|
+
|
|
375
|
+
if mpz_fits_slong_p(self.prime_pow.prime.value) == 0:
|
|
376
|
+
raise NotImplementedError("the prime %s does not fit in a long" % self.prime_pow.prime)
|
|
377
|
+
p = self.prime_pow.prime
|
|
378
|
+
|
|
379
|
+
ans = self._new_c()
|
|
380
|
+
ans.ordp = 0
|
|
381
|
+
sig_on()
|
|
382
|
+
padicexp(ans.unit, selfint.value, p, prec, self.prime_pow.pow_mpz_t_tmp(prec))
|
|
383
|
+
sig_off()
|
|
384
|
+
|
|
385
|
+
return ans
|
|
386
|
+
|
|
387
|
+
def _exp_newton(self, aprec, log_algorithm=None):
|
|
388
|
+
r"""
|
|
389
|
+
Compute the exponential power series of this element.
|
|
390
|
+
|
|
391
|
+
This is a helper method for :meth:`exp`.
|
|
392
|
+
|
|
393
|
+
INPUT:
|
|
394
|
+
|
|
395
|
+
- ``aprec`` -- integer; the precision to which to compute the
|
|
396
|
+
exponential
|
|
397
|
+
|
|
398
|
+
- ``log_algorithm`` -- (default: ``None``) the algorithm used for
|
|
399
|
+
computing the logarithm. This attribute is passed to the :meth:`log`
|
|
400
|
+
method; see :meth:`log` for more details about the possible
|
|
401
|
+
algorithms
|
|
402
|
+
|
|
403
|
+
.. NOTE::
|
|
404
|
+
|
|
405
|
+
The function does not check that its argument ``self`` is
|
|
406
|
+
the disk of convergence of ``exp``. If this assumption is not
|
|
407
|
+
fulfilled the behaviour of the function is not specified.
|
|
408
|
+
|
|
409
|
+
ALGORITHM:
|
|
410
|
+
|
|
411
|
+
Solve the equation `\log(x) = \mathrm{self}` using the Newton scheme::
|
|
412
|
+
|
|
413
|
+
.. MATH::
|
|
414
|
+
|
|
415
|
+
x_{i+1} = x_i \cdot (1 + \mathrm{self} - \log(x_i)).
|
|
416
|
+
|
|
417
|
+
The binary complexity of this algorithm is roughly the same
|
|
418
|
+
than that of the computation of the logarithm.
|
|
419
|
+
|
|
420
|
+
EXAMPLES::
|
|
421
|
+
|
|
422
|
+
sage: # needs sage.libs.ntl
|
|
423
|
+
sage: R.<w> = Zq(7^2,5)
|
|
424
|
+
sage: x = R(7*w)
|
|
425
|
+
sage: x.exp(algorithm='newton') # indirect doctest
|
|
426
|
+
1 + w*7 + (4*w + 2)*7^2 + (w + 6)*7^3 + 5*7^4 + O(7^5)
|
|
427
|
+
"""
|
|
428
|
+
cdef unsigned long p
|
|
429
|
+
cdef unsigned long prec = aprec
|
|
430
|
+
cdef pAdicFloatingPointElement ans
|
|
431
|
+
cdef Integer selfint = self.lift_c()
|
|
432
|
+
|
|
433
|
+
if mpz_fits_slong_p(self.prime_pow.prime.value) == 0:
|
|
434
|
+
raise NotImplementedError("the prime %s does not fit in a long" % self.prime_pow.prime)
|
|
435
|
+
p = self.prime_pow.prime
|
|
436
|
+
|
|
437
|
+
ans = self._new_c()
|
|
438
|
+
ans.ordp = 0
|
|
439
|
+
mpz_set_ui(ans.unit, 1)
|
|
440
|
+
sig_on()
|
|
441
|
+
if p == 2:
|
|
442
|
+
padicexp_Newton(ans.unit, selfint.value, p, prec, 2, self.prime_pow.pow_mpz_t_tmp(prec))
|
|
443
|
+
else:
|
|
444
|
+
padicexp_Newton(ans.unit, selfint.value, p, prec, 1, self.prime_pow.pow_mpz_t_tmp(prec))
|
|
445
|
+
sig_off()
|
|
446
|
+
|
|
447
|
+
return ans
|
|
Binary file
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
from cpython cimport array
|
|
3
|
+
|
|
4
|
+
cimport sage.structure.element
|
|
5
|
+
from sage.libs.gmp.types cimport mpz_t, mpq_t
|
|
6
|
+
from sage.structure.element cimport Element, RingElement
|
|
7
|
+
from sage.rings.padics.local_generic_element cimport LocalGenericElement
|
|
8
|
+
from sage.rings.padics.pow_computer cimport PowComputer_class
|
|
9
|
+
from sage.rings.integer cimport Integer
|
|
10
|
+
from sage.rings.rational cimport Rational
|
|
11
|
+
|
|
12
|
+
cpdef gauss_table(long long p, int f, int prec, bint use_longs)
|
|
13
|
+
|
|
14
|
+
cdef class pAdicGenericElement(LocalGenericElement):
|
|
15
|
+
cdef long valuation_c(self) noexcept
|
|
16
|
+
cpdef val_unit(self)
|
|
17
|
+
|
|
18
|
+
cdef int _set_from_Integer(self, Integer x, absprec, relprec) except -1
|
|
19
|
+
cdef int _set_from_mpz(self, mpz_t x) except -1
|
|
20
|
+
cdef int _set_from_mpz_rel(self, mpz_t x, long relprec) except -1
|
|
21
|
+
cdef int _set_from_mpz_abs(self, mpz_t value, long absprec) except -1
|
|
22
|
+
cdef int _set_from_mpz_both(self, mpz_t x, long absprec, long relprec) except -1
|
|
23
|
+
|
|
24
|
+
cdef int _set_from_Rational(self, Rational x, absprec, relprec) except -1
|
|
25
|
+
cdef int _set_from_mpq(self, mpq_t x) except -1
|
|
26
|
+
cdef int _set_from_mpq_rel(self, mpq_t x, long relprec) except -1
|
|
27
|
+
cdef int _set_from_mpq_abs(self, mpq_t value, long absprec) except -1
|
|
28
|
+
cdef int _set_from_mpq_both(self, mpq_t x, long absprec, long relprec) except -1
|
|
29
|
+
|
|
30
|
+
cdef int _pshift_self(self, long shift) except -1
|
|
31
|
+
|
|
32
|
+
cdef int _cmp_units(left, pAdicGenericElement right) except -2
|
|
33
|
+
|
|
34
|
+
cdef int _set_inexact_zero(self, long absprec) except -1
|
|
35
|
+
cdef int _set_exact_zero(self) except -1
|
|
36
|
+
|
|
37
|
+
cpdef bint _is_exact_zero(self) except -1
|
|
38
|
+
cpdef bint _is_inexact_zero(self) except -1
|
|
39
|
+
cpdef bint _is_zero_rep(self) except -1
|
|
40
|
+
|
|
41
|
+
cdef bint _set_prec_abs(self, long absprec) except -1
|
|
42
|
+
cdef bint _set_prec_rel(self, long relprec) except -1
|
|
43
|
+
cdef bint _set_prec_both(self, long absprec, long relprec) except -1
|
|
44
|
+
|
|
45
|
+
cpdef abs(self, prec=*)
|
|
46
|
+
cpdef _mod_(self, right)
|
|
47
|
+
cpdef _floordiv_(self, right)
|
|
48
|
+
cpdef bint _is_base_elt(self, p) except -1
|