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,132 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
# sage.doctest: needs sage.rings.complex_double
|
|
3
|
+
|
|
4
|
+
from cysignals.signals cimport sig_on, sig_off
|
|
5
|
+
|
|
6
|
+
from sage.libs.gsl.complex cimport *
|
|
7
|
+
|
|
8
|
+
from cypari2.paridecl cimport *
|
|
9
|
+
from cypari2.convert cimport new_gen_from_double, new_t_COMPLEX_from_double
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
cpdef ComplexDoubleElement pari_to_cdf(Gen g):
|
|
13
|
+
"""
|
|
14
|
+
Create a CDF element from a PARI ``gen``.
|
|
15
|
+
|
|
16
|
+
EXAMPLES::
|
|
17
|
+
|
|
18
|
+
sage: CDF(pari("Pi")) # indirect doctest
|
|
19
|
+
3.141592653589793
|
|
20
|
+
sage: CDF(pari("1 + I/2"))
|
|
21
|
+
1.0 + 0.5*I
|
|
22
|
+
|
|
23
|
+
TESTS:
|
|
24
|
+
|
|
25
|
+
Check that we handle PARI errors gracefully, see :issue:`17329`::
|
|
26
|
+
|
|
27
|
+
sage: CDF(-151.386325246 + 992.34771962*I).zeta() # needs sage.symbolic
|
|
28
|
+
Traceback (most recent call last):
|
|
29
|
+
...
|
|
30
|
+
PariError: overflow in t_REAL->double conversion
|
|
31
|
+
sage: CDF(pari(x^2 + 5)) # needs sage.symbolic
|
|
32
|
+
Traceback (most recent call last):
|
|
33
|
+
...
|
|
34
|
+
PariError: incorrect type in gtofp (t_POL)
|
|
35
|
+
"""
|
|
36
|
+
cdef ComplexDoubleElement z = ComplexDoubleElement.__new__(ComplexDoubleElement)
|
|
37
|
+
sig_on()
|
|
38
|
+
if typ(g.g) == t_COMPLEX:
|
|
39
|
+
z._complex = gsl_complex_rect(gtodouble(gel(g.g, 1)), gtodouble(gel(g.g, 2)))
|
|
40
|
+
else:
|
|
41
|
+
z._complex = gsl_complex_rect(gtodouble(g.g), 0.0)
|
|
42
|
+
sig_off()
|
|
43
|
+
return z
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
cpdef Gen new_gen_from_complex_double_element(ComplexDoubleElement self):
|
|
47
|
+
"""
|
|
48
|
+
Return PARI version of ``self``, as ``t_COMPLEX`` or ``t_REAL``.
|
|
49
|
+
|
|
50
|
+
EXAMPLES::
|
|
51
|
+
|
|
52
|
+
sage: from sage.libs.pari.convert_sage_complex_double import new_gen_from_complex_double_element
|
|
53
|
+
sage: new_gen_from_complex_double_element(CDF(1,0))
|
|
54
|
+
1.00000000000000
|
|
55
|
+
sage: new_gen_from_complex_double_element(CDF(0,1))
|
|
56
|
+
1.00000000000000*I
|
|
57
|
+
sage: new_gen_from_complex_double_element(CDF(1,1))
|
|
58
|
+
1.00000000000000 + 1.00000000000000*I
|
|
59
|
+
"""
|
|
60
|
+
if not GSL_IMAG(self._complex):
|
|
61
|
+
return new_gen_from_double(GSL_REAL(self._complex))
|
|
62
|
+
else:
|
|
63
|
+
return new_t_COMPLEX_from_double(GSL_REAL(self._complex), GSL_IMAG(self._complex))
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
cpdef ComplexDoubleElement complex_double_element_eta(ComplexDoubleElement self, int flag):
|
|
67
|
+
"""
|
|
68
|
+
TESTS::
|
|
69
|
+
|
|
70
|
+
sage: from sage.libs.pari.convert_sage_complex_double import complex_double_element_eta
|
|
71
|
+
sage: a = CDF(1,1)
|
|
72
|
+
sage: complex_double_element_eta(a, 0)
|
|
73
|
+
0.9981290699259585
|
|
74
|
+
sage: complex_double_element_eta(a, 1)
|
|
75
|
+
0.7420487758365647 + 0.1988313702299107*I
|
|
76
|
+
"""
|
|
77
|
+
return pari_to_cdf(new_gen_from_complex_double_element(self).eta(flag))
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
cpdef ComplexDoubleElement complex_double_element_agm(ComplexDoubleElement self, right):
|
|
81
|
+
"""
|
|
82
|
+
TESTS::
|
|
83
|
+
|
|
84
|
+
sage: from sage.libs.pari.convert_sage_complex_double import complex_double_element_agm
|
|
85
|
+
sage: complex_double_element_agm(CDF(1, 1), CDF(2, 2))
|
|
86
|
+
1.4567910310469068 + 1.4567910310469068*I
|
|
87
|
+
"""
|
|
88
|
+
return pari_to_cdf(new_gen_from_complex_double_element(self).agm(right))
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
cpdef ComplexDoubleElement complex_double_element_dilog(ComplexDoubleElement self):
|
|
92
|
+
"""
|
|
93
|
+
TESTS::
|
|
94
|
+
|
|
95
|
+
sage: from sage.libs.pari.convert_sage_complex_double import complex_double_element_dilog
|
|
96
|
+
sage: complex_double_element_dilog(CDF(1, 1))
|
|
97
|
+
0.6168502750680849 + 1.4603621167531196*I
|
|
98
|
+
"""
|
|
99
|
+
return pari_to_cdf(new_gen_from_complex_double_element(self).dilog())
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
cpdef ComplexDoubleElement complex_double_element_gamma(ComplexDoubleElement self):
|
|
103
|
+
"""
|
|
104
|
+
TESTS::
|
|
105
|
+
|
|
106
|
+
sage: from sage.libs.pari.convert_sage_complex_double import complex_double_element_gamma
|
|
107
|
+
sage: complex_double_element_gamma(CDF(1, 1))
|
|
108
|
+
0.49801566811835607 - 0.15494982830181067*I
|
|
109
|
+
"""
|
|
110
|
+
return pari_to_cdf(new_gen_from_complex_double_element(self).gamma())
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
cpdef ComplexDoubleElement complex_double_element_gamma_inc(ComplexDoubleElement self, t):
|
|
114
|
+
"""
|
|
115
|
+
TESTS::
|
|
116
|
+
|
|
117
|
+
sage: from sage.libs.pari.convert_sage_complex_double import complex_double_element_gamma_inc
|
|
118
|
+
sage: complex_double_element_gamma_inc(CDF(1, 1), CDF(2, 2))
|
|
119
|
+
0.054695987717541285 - 0.04676800059213122*I
|
|
120
|
+
"""
|
|
121
|
+
return pari_to_cdf(new_gen_from_complex_double_element(self).incgam(t))
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
cpdef ComplexDoubleElement complex_double_element_zeta(ComplexDoubleElement self):
|
|
125
|
+
"""
|
|
126
|
+
TESTS::
|
|
127
|
+
|
|
128
|
+
sage: from sage.libs.pari.convert_sage_complex_double import complex_double_element_zeta
|
|
129
|
+
sage: complex_double_element_zeta(CDF(1, 2))
|
|
130
|
+
0.5981655697623818 - 0.35185474521784527*I
|
|
131
|
+
"""
|
|
132
|
+
return pari_to_cdf(new_gen_from_complex_double_element(self).zeta())
|
|
Binary file
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
# sage.doctest: needs sage.modules
|
|
3
|
+
|
|
4
|
+
from cypari2.gen cimport Gen
|
|
5
|
+
from cypari2.types cimport (GEN, typ, t_INT, t_FRAC, t_REAL, t_COMPLEX,
|
|
6
|
+
t_INTMOD, t_PADIC, t_INFINITY, t_VEC, t_COL,
|
|
7
|
+
t_VECSMALL, t_MAT, t_STR,
|
|
8
|
+
lg, precp)
|
|
9
|
+
from cypari2.paridecl cimport *
|
|
10
|
+
|
|
11
|
+
from sage.matrix.args cimport (MatrixArgs, MA_ENTRIES_SEQ_SEQ,
|
|
12
|
+
MA_ENTRIES_SEQ_FLAT, MA_ENTRIES_CALLABLE,
|
|
13
|
+
MA_ENTRIES_UNKNOWN, MA_ENTRIES_SCALAR)
|
|
14
|
+
|
|
15
|
+
from .convert_sage cimport gen_to_sage
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def gen_to_sage_matrix(Gen z, locals=None):
|
|
19
|
+
cdef GEN g = z.g
|
|
20
|
+
nc = lg(g) - 1
|
|
21
|
+
nr = 0 if nc == 0 else lg(gel(g,1)) - 1
|
|
22
|
+
ma = MatrixArgs.__new__(MatrixArgs)
|
|
23
|
+
ma.nrows = nr
|
|
24
|
+
ma.ncols = nc
|
|
25
|
+
ma.entries = [gen_to_sage(z[i,j], locals) for i in range(nr) for j in range(nc)]
|
|
26
|
+
return ma.matrix()
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def pari_typ_to_entries_type(MatrixArgs self):
|
|
30
|
+
"""
|
|
31
|
+
Determine the ``entries_type`` of a :class:`sage.matrix.args.MatrixArgs`
|
|
32
|
+
with PARI entries.
|
|
33
|
+
|
|
34
|
+
This will modify the entries.
|
|
35
|
+
|
|
36
|
+
TESTS:
|
|
37
|
+
|
|
38
|
+
``MA_ENTRIES_SEQ_SEQ``::
|
|
39
|
+
|
|
40
|
+
sage: from sage.libs.pari.convert_sage import pari_typ_to_entries_type
|
|
41
|
+
sage: from sage.matrix.args import MatrixArgs
|
|
42
|
+
sage: ma = MatrixArgs(QQ, entries=pari("[1,2;3,4]"))
|
|
43
|
+
sage: 0x10_03 == pari_typ_to_entries_type(ma)
|
|
44
|
+
True
|
|
45
|
+
|
|
46
|
+
``MA_ENTRIES_SEQ_FLAT``::
|
|
47
|
+
|
|
48
|
+
sage: ma = MatrixArgs(QQ, entries=pari("[1,2]"))
|
|
49
|
+
sage: 0x10_04 == pari_typ_to_entries_type(ma)
|
|
50
|
+
True
|
|
51
|
+
sage: ma = MatrixArgs(QQ, entries=pari(vector([1,2])))
|
|
52
|
+
sage: 0x10_04 == pari_typ_to_entries_type(ma)
|
|
53
|
+
True
|
|
54
|
+
sage: ma = MatrixArgs(QQ, entries=pari(matrix(2, range(4))[0]))
|
|
55
|
+
sage: 0x10_04 == pari_typ_to_entries_type(ma)
|
|
56
|
+
True
|
|
57
|
+
|
|
58
|
+
``MA_ENTRIES_CALLABLE``::
|
|
59
|
+
|
|
60
|
+
sage: ma = MatrixArgs(QQ, entries=pari(lambda x: x))
|
|
61
|
+
sage: 0x13_06 == pari_typ_to_entries_type(ma)
|
|
62
|
+
True
|
|
63
|
+
|
|
64
|
+
``MA_ENTRIES_SCALAR``::
|
|
65
|
+
|
|
66
|
+
sage: ma = MatrixArgs(QQ, entries=pari(1/2))
|
|
67
|
+
sage: 0x17_02 == pari_typ_to_entries_type(ma)
|
|
68
|
+
True
|
|
69
|
+
|
|
70
|
+
``MA_ENTRIES_UNKNOWN``::
|
|
71
|
+
|
|
72
|
+
sage: ma = MatrixArgs(QQ, entries=pari('"2"'))
|
|
73
|
+
sage: 0 == pari_typ_to_entries_type(ma)
|
|
74
|
+
True
|
|
75
|
+
|
|
76
|
+
A second call gives an error::
|
|
77
|
+
|
|
78
|
+
sage: ma = MatrixArgs(QQ, entries=pari("[1,2]"))
|
|
79
|
+
sage: 0x10_04 == pari_typ_to_entries_type(ma)
|
|
80
|
+
True
|
|
81
|
+
sage: 0x10_04 == pari_typ_to_entries_type(ma)
|
|
82
|
+
Traceback (most recent call last):
|
|
83
|
+
...
|
|
84
|
+
ValueError: entries are not a PARI generator
|
|
85
|
+
"""
|
|
86
|
+
if not isinstance(self.entries, Gen):
|
|
87
|
+
raise ValueError("entries are not a PARI generator")
|
|
88
|
+
cdef long t = typ((<Gen>self.entries).g)
|
|
89
|
+
if t == t_MAT:
|
|
90
|
+
R = self.base
|
|
91
|
+
if R is None:
|
|
92
|
+
self.entries = self.entries.Col().sage()
|
|
93
|
+
else:
|
|
94
|
+
self.entries = [[R(x) for x in v]
|
|
95
|
+
for v in self.entries.mattranspose()]
|
|
96
|
+
return MA_ENTRIES_SEQ_SEQ
|
|
97
|
+
elif t in [t_VEC, t_COL, t_VECSMALL, t_LIST]:
|
|
98
|
+
self.entries = self.entries.sage()
|
|
99
|
+
return MA_ENTRIES_SEQ_FLAT
|
|
100
|
+
elif t == t_CLOSURE:
|
|
101
|
+
return MA_ENTRIES_CALLABLE
|
|
102
|
+
elif t == t_STR:
|
|
103
|
+
return MA_ENTRIES_UNKNOWN
|
|
104
|
+
else:
|
|
105
|
+
self.entries = self.entries.sage()
|
|
106
|
+
return MA_ENTRIES_SCALAR
|
|
Binary file
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
from cypari2.convert cimport new_gen_from_double
|
|
3
|
+
|
|
4
|
+
cpdef Gen new_gen_from_real_double_element(RealDoubleElement self):
|
|
5
|
+
"""
|
|
6
|
+
Return a PARI representation of ``self``.
|
|
7
|
+
|
|
8
|
+
EXAMPLES::
|
|
9
|
+
|
|
10
|
+
sage: from sage.libs.pari.convert_sage_real_double import new_gen_from_real_double_element
|
|
11
|
+
sage: new_gen_from_real_double_element(RDF(-2.5))
|
|
12
|
+
-2.50000000000000
|
|
13
|
+
"""
|
|
14
|
+
return new_gen_from_double(self._value)
|
|
Binary file
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
# sage.doctest: needs sage.rings.real_mpfr
|
|
3
|
+
|
|
4
|
+
from cypari2.stack cimport new_gen
|
|
5
|
+
from cypari2.paridecl cimport *
|
|
6
|
+
from cysignals.signals cimport sig_on
|
|
7
|
+
|
|
8
|
+
from sage.libs.gmp.mpz cimport *
|
|
9
|
+
from sage.libs.mpfr cimport *
|
|
10
|
+
from sage.libs.mpfr.types cimport mpfr_prec_t
|
|
11
|
+
from sage.rings.real_mpfr cimport RealField_class, RealField
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
cpdef Gen new_gen_from_real_mpfr_element(RealNumber self):
|
|
15
|
+
|
|
16
|
+
# This uses interfaces of MPFR and PARI which are documented
|
|
17
|
+
# (and not marked subject-to-change). It could be faster
|
|
18
|
+
# by using internal interfaces of MPFR, which are documented
|
|
19
|
+
# as subject-to-change.
|
|
20
|
+
|
|
21
|
+
if mpfr_nan_p(self.value) or mpfr_inf_p(self.value):
|
|
22
|
+
raise ValueError('cannot convert NaN or infinity to Pari float')
|
|
23
|
+
|
|
24
|
+
# wordsize for PARI
|
|
25
|
+
cdef unsigned long wordsize = sizeof(long)*8
|
|
26
|
+
|
|
27
|
+
cdef mpfr_prec_t prec
|
|
28
|
+
prec = (<RealField_class>self._parent)._prec
|
|
29
|
+
|
|
30
|
+
# We round up the precision to the nearest multiple of wordsize.
|
|
31
|
+
cdef int rounded_prec
|
|
32
|
+
rounded_prec = nbits2prec(self.prec())
|
|
33
|
+
|
|
34
|
+
# Yes, assigning to self works fine, even in Cython.
|
|
35
|
+
if rounded_prec > prec:
|
|
36
|
+
self = RealField(rounded_prec)(self)
|
|
37
|
+
|
|
38
|
+
cdef mpz_t mantissa
|
|
39
|
+
cdef mp_exp_t exponent
|
|
40
|
+
cdef GEN pari_float
|
|
41
|
+
|
|
42
|
+
sig_on()
|
|
43
|
+
if mpfr_zero_p(self.value):
|
|
44
|
+
pari_float = real_0_bit(-rounded_prec)
|
|
45
|
+
else:
|
|
46
|
+
# Now we can extract the mantissa, and it will be normalized
|
|
47
|
+
# (the most significant bit of the most significant word will be 1).
|
|
48
|
+
mpz_init(mantissa)
|
|
49
|
+
exponent = mpfr_get_z_exp(mantissa, self.value)
|
|
50
|
+
|
|
51
|
+
# Create a PARI REAL
|
|
52
|
+
pari_float = cgetr(rounded_prec)
|
|
53
|
+
pari_float[1] = evalexpo(exponent + rounded_prec - 1) + evalsigne(mpfr_sgn(self.value))
|
|
54
|
+
mpz_export(&pari_float[2], NULL, 1, wordsize // 8, 0, 0, mantissa)
|
|
55
|
+
mpz_clear(mantissa)
|
|
56
|
+
|
|
57
|
+
return new_gen(pari_float)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
cpdef bint set_real_mpfr_element_from_gen(RealNumber self, Gen x) noexcept:
|
|
61
|
+
r"""
|
|
62
|
+
EXAMPLES::
|
|
63
|
+
|
|
64
|
+
sage: rt2 = sqrt(pari('2.0'))
|
|
65
|
+
sage: rt2
|
|
66
|
+
1.41421356237310
|
|
67
|
+
sage: rt2.sage()
|
|
68
|
+
1.41421356237309505
|
|
69
|
+
sage: rt2.sage().prec()
|
|
70
|
+
64
|
|
71
|
+
sage: pari(rt2.sage()) == rt2
|
|
72
|
+
True
|
|
73
|
+
sage: for i in range(100, 200):
|
|
74
|
+
....: assert(sqrt(pari(i)) == pari(sqrt(pari(i)).sage()))
|
|
75
|
+
sage: (-3.1415).__pari__().sage()
|
|
76
|
+
-3.14150000000000000
|
|
77
|
+
"""
|
|
78
|
+
cdef GEN g = x.g
|
|
79
|
+
|
|
80
|
+
if typ((<Gen>x).g) != t_REAL:
|
|
81
|
+
return False
|
|
82
|
+
|
|
83
|
+
cdef int sgn
|
|
84
|
+
sgn = signe(g)
|
|
85
|
+
|
|
86
|
+
if sgn == 0:
|
|
87
|
+
mpfr_set_ui(self.value, 0, MPFR_RNDN)
|
|
88
|
+
return True
|
|
89
|
+
|
|
90
|
+
cdef int wordsize = 8 * sizeof(long)
|
|
91
|
+
|
|
92
|
+
cdef mpz_t mantissa
|
|
93
|
+
mpz_init(mantissa)
|
|
94
|
+
mpz_import(mantissa, lg(g) - 2, 1, wordsize/8, 0, 0, &g[2])
|
|
95
|
+
|
|
96
|
+
cdef mp_exp_t exponent = expo(g)
|
|
97
|
+
|
|
98
|
+
# Round to nearest for best results when setting a low-precision
|
|
99
|
+
# MPFR from a high-precision GEN
|
|
100
|
+
mpfr_set_z(self.value, mantissa, MPFR_RNDN)
|
|
101
|
+
mpfr_mul_2si(self.value, self.value, exponent - wordsize * (lg(g) - 2) + 1, MPFR_RNDN)
|
|
102
|
+
|
|
103
|
+
if sgn < 0:
|
|
104
|
+
mpfr_neg(self.value, self.value, MPFR_RNDN)
|
|
105
|
+
|
|
106
|
+
mpz_clear(mantissa)
|
|
107
|
+
|
|
108
|
+
return True
|
|
Binary file
|
sage/libs/pari/misc.pxd
ADDED
sage/libs/pari/misc.pyx
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
from cysignals.signals cimport sig_on
|
|
3
|
+
from cypari2.paridecl cimport *
|
|
4
|
+
from cypari2.stack cimport new_gen
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
cdef Gen new_t_POL_from_int_star(int* vals, unsigned long length, long varnum):
|
|
8
|
+
"""
|
|
9
|
+
Convert an array of ints to a PARI polynomial.
|
|
10
|
+
|
|
11
|
+
Note that ``length = degree + 1``, so that recognizing 0 is easier.
|
|
12
|
+
"""
|
|
13
|
+
cdef GEN z
|
|
14
|
+
cdef unsigned long i
|
|
15
|
+
|
|
16
|
+
sig_on()
|
|
17
|
+
z = cgetg(length + 2, t_POL)
|
|
18
|
+
if length == 0:
|
|
19
|
+
# Polynomial is zero
|
|
20
|
+
z[1] = evalvarn(varnum) + evalsigne(0)
|
|
21
|
+
else:
|
|
22
|
+
z[1] = evalvarn(varnum) + evalsigne(1)
|
|
23
|
+
for i in range(length):
|
|
24
|
+
set_gel(z, i+2, stoi(vals[i]))
|
|
25
|
+
|
|
26
|
+
return new_gen(z)
|