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 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
Binary file
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
# sage.doctest: needs sage.libs.flint sage.libs.pari sage.modules
|
|
3
|
+
|
|
4
|
+
from cysignals.signals cimport sig_check, sig_on, sig_str, sig_off
|
|
5
|
+
|
|
6
|
+
from sage.libs.flint.fmpz cimport *
|
|
7
|
+
from sage.libs.flint.fmpz_mat cimport *
|
|
8
|
+
from sage.libs.gmp.mpz cimport *
|
|
9
|
+
from sage.matrix.matrix_integer_dense cimport Matrix_integer_dense
|
|
10
|
+
from sage.rings.integer cimport Integer
|
|
11
|
+
from sage.rings.integer_ring import ZZ
|
|
12
|
+
|
|
13
|
+
# PARI C library
|
|
14
|
+
from cypari2.gen cimport Gen
|
|
15
|
+
from cypari2.stack cimport clear_stack, new_gen
|
|
16
|
+
from cypari2.paridecl cimport *
|
|
17
|
+
from sage.libs.pari import pari
|
|
18
|
+
from sage.libs.pari.convert_gmp cimport INT_to_mpz
|
|
19
|
+
from sage.libs.pari.convert_flint cimport (_new_GEN_from_fmpz_mat_t,
|
|
20
|
+
_new_GEN_from_fmpz_mat_t_rotate90, integer_matrix)
|
|
21
|
+
from sage.libs.pari.convert_sage_matrix import gen_to_sage_matrix
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _pari(Matrix_integer_dense self):
|
|
25
|
+
return integer_matrix(self._matrix, 0)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _det_pari(Matrix_integer_dense self, int flag=0):
|
|
29
|
+
"""
|
|
30
|
+
Determinant of this matrix using Gauss-Bareiss. If (optional)
|
|
31
|
+
flag is set to 1, use classical Gaussian elimination.
|
|
32
|
+
|
|
33
|
+
For efficiency purposes, this det is computed entirely on the
|
|
34
|
+
PARI stack then the PARI stack is cleared. This function is
|
|
35
|
+
most useful for very small matrices.
|
|
36
|
+
|
|
37
|
+
EXAMPLES::
|
|
38
|
+
|
|
39
|
+
sage: from sage.matrix.matrix_integer_pari import _det_pari
|
|
40
|
+
sage: _det_pari(matrix(ZZ, 0))
|
|
41
|
+
1
|
|
42
|
+
sage: _det_pari(matrix(ZZ, 0), 1)
|
|
43
|
+
1
|
|
44
|
+
sage: _det_pari(matrix(ZZ, 3, [1..9]))
|
|
45
|
+
0
|
|
46
|
+
sage: _det_pari(matrix(ZZ, 3, [1..9]), 1)
|
|
47
|
+
0
|
|
48
|
+
"""
|
|
49
|
+
sig_on()
|
|
50
|
+
cdef GEN d = det0(pari_GEN(self), flag)
|
|
51
|
+
# now convert d to a Sage integer e
|
|
52
|
+
cdef Integer e = Integer.__new__(Integer)
|
|
53
|
+
INT_to_mpz(e.value, d)
|
|
54
|
+
clear_stack()
|
|
55
|
+
return e
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _lll_pari(Matrix_integer_dense self):
|
|
59
|
+
# call pari with flag=4: kernel+image
|
|
60
|
+
# pari uses column convention: need to transpose the matrices
|
|
61
|
+
A = integer_matrix(self._matrix, 1)
|
|
62
|
+
K, T = A.qflll(4)
|
|
63
|
+
r = ZZ(T.length())
|
|
64
|
+
# TODO: there is no optimized matrix converter pari -> sage
|
|
65
|
+
U = gen_to_sage_matrix(pari.matconcat([K, T]).mattranspose())
|
|
66
|
+
R = U * self
|
|
67
|
+
return R, U, r
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _rank_pari(Matrix_integer_dense self):
|
|
71
|
+
"""
|
|
72
|
+
Rank of this matrix, computed using PARI. The computation is
|
|
73
|
+
done entirely on the PARI stack, then the PARI stack is
|
|
74
|
+
cleared. This function is most useful for very small
|
|
75
|
+
matrices.
|
|
76
|
+
|
|
77
|
+
EXAMPLES::
|
|
78
|
+
|
|
79
|
+
sage: from sage.matrix.matrix_integer_pari import _rank_pari
|
|
80
|
+
sage: _rank_pari(matrix(ZZ,3,[1..9]))
|
|
81
|
+
2
|
|
82
|
+
"""
|
|
83
|
+
sig_on()
|
|
84
|
+
cdef long r = rank(pari_GEN(self))
|
|
85
|
+
clear_stack()
|
|
86
|
+
return r
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def _hnf_pari(Matrix_integer_dense self, int flag=0, bint include_zero_rows=True):
|
|
90
|
+
"""
|
|
91
|
+
Hermite normal form of this matrix, computed using PARI.
|
|
92
|
+
|
|
93
|
+
INPUT:
|
|
94
|
+
|
|
95
|
+
- ``flag`` -- 0 (default), 1, 3 or 4 (see docstring for
|
|
96
|
+
``pari.mathnf``)
|
|
97
|
+
|
|
98
|
+
- ``include_zero_rows`` -- boolean; if ``False``, do not include
|
|
99
|
+
any of the zero rows at the bottom of the matrix in the output
|
|
100
|
+
|
|
101
|
+
.. NOTE::
|
|
102
|
+
|
|
103
|
+
In no cases is the transformation matrix returned by this
|
|
104
|
+
function.
|
|
105
|
+
|
|
106
|
+
EXAMPLES::
|
|
107
|
+
|
|
108
|
+
sage: from sage.matrix.matrix_integer_pari import _hnf_pari
|
|
109
|
+
sage: _hnf_pari(matrix(ZZ,3,[1..9]))
|
|
110
|
+
[1 2 3]
|
|
111
|
+
[0 3 6]
|
|
112
|
+
[0 0 0]
|
|
113
|
+
sage: _hnf_pari(matrix(ZZ,3,[1..9]), 1)
|
|
114
|
+
[1 2 3]
|
|
115
|
+
[0 3 6]
|
|
116
|
+
[0 0 0]
|
|
117
|
+
sage: _hnf_pari(matrix(ZZ,3,[1..9]), 3)
|
|
118
|
+
[1 2 3]
|
|
119
|
+
[0 3 6]
|
|
120
|
+
[0 0 0]
|
|
121
|
+
sage: _hnf_pari(matrix(ZZ,3,[1..9]), 4)
|
|
122
|
+
[1 2 3]
|
|
123
|
+
[0 3 6]
|
|
124
|
+
[0 0 0]
|
|
125
|
+
|
|
126
|
+
Check that ``include_zero_rows=False`` works correctly::
|
|
127
|
+
|
|
128
|
+
sage: _hnf_pari(matrix(ZZ,3,[1..9]), 0, include_zero_rows=False)
|
|
129
|
+
[1 2 3]
|
|
130
|
+
[0 3 6]
|
|
131
|
+
sage: _hnf_pari(matrix(ZZ,3,[1..9]), 1, include_zero_rows=False)
|
|
132
|
+
[1 2 3]
|
|
133
|
+
[0 3 6]
|
|
134
|
+
sage: _hnf_pari(matrix(ZZ,3,[1..9]), 3, include_zero_rows=False)
|
|
135
|
+
[1 2 3]
|
|
136
|
+
[0 3 6]
|
|
137
|
+
sage: _hnf_pari(matrix(ZZ,3,[1..9]), 4, include_zero_rows=False)
|
|
138
|
+
[1 2 3]
|
|
139
|
+
[0 3 6]
|
|
140
|
+
|
|
141
|
+
Check that :issue:`12346` is fixed::
|
|
142
|
+
|
|
143
|
+
sage: pari('mathnf(Mat([0,1]), 4)')
|
|
144
|
+
[Mat(1), [1, 0; 0, 1]]
|
|
145
|
+
"""
|
|
146
|
+
sig_on()
|
|
147
|
+
A = _new_GEN_from_fmpz_mat_t_rotate90(self._matrix)
|
|
148
|
+
H = mathnf0(A, flag)
|
|
149
|
+
if typ(H) == t_VEC:
|
|
150
|
+
H = gel(H, 1)
|
|
151
|
+
GenH = new_gen(H)
|
|
152
|
+
return extract_hnf_from_pari_matrix(self, GenH, include_zero_rows)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
cdef inline GEN pari_GEN(Matrix_integer_dense B) noexcept:
|
|
156
|
+
r"""
|
|
157
|
+
Create the PARI GEN object on the stack defined by the integer
|
|
158
|
+
matrix B. This is used internally by the function for conversion
|
|
159
|
+
of matrices to PARI.
|
|
160
|
+
|
|
161
|
+
For internal use only; this directly uses the PARI stack.
|
|
162
|
+
One should call ``sig_on()`` before and ``sig_off()`` after.
|
|
163
|
+
"""
|
|
164
|
+
cdef GEN A = _new_GEN_from_fmpz_mat_t(B._matrix)
|
|
165
|
+
return A
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
cdef extract_hnf_from_pari_matrix(Matrix_integer_dense self, Gen H, bint include_zero_rows):
|
|
169
|
+
cdef mpz_t tmp
|
|
170
|
+
mpz_init(tmp)
|
|
171
|
+
|
|
172
|
+
# Figure out how many columns we got back.
|
|
173
|
+
cdef long H_nc = glength(H.g) # number of columns
|
|
174
|
+
# Now get the resulting Hermite form matrix back to Sage, suitably re-arranged.
|
|
175
|
+
cdef Matrix_integer_dense B
|
|
176
|
+
if include_zero_rows:
|
|
177
|
+
B = self.new_matrix()
|
|
178
|
+
else:
|
|
179
|
+
B = self.new_matrix(nrows=H_nc)
|
|
180
|
+
cdef long i, j
|
|
181
|
+
for i in range(self._ncols):
|
|
182
|
+
for j in range(H_nc):
|
|
183
|
+
sig_check()
|
|
184
|
+
INT_to_mpz(tmp, gcoeff(H.g, i+1, H_nc-j))
|
|
185
|
+
fmpz_set_mpz(fmpz_mat_entry(B._matrix,j,self._ncols-i-1),tmp)
|
|
186
|
+
mpz_clear(tmp)
|
|
187
|
+
return B
|
|
Binary file
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
# sage.doctest: needs sage.libs.flint sage.libs.pari sage.modules
|
|
3
|
+
|
|
4
|
+
from cysignals.signals cimport sig_on, sig_off
|
|
5
|
+
from cysignals.memory cimport sig_malloc, sig_free
|
|
6
|
+
|
|
7
|
+
from sage.libs.flint.fmpq cimport *
|
|
8
|
+
from sage.libs.flint.fmpq_mat cimport *
|
|
9
|
+
from sage.libs.gmp.mpq cimport mpq_init, mpq_clear, mpq_set_si, mpq_mul, mpq_add, mpq_set
|
|
10
|
+
from sage.matrix.matrix_rational_dense cimport Matrix_rational_dense
|
|
11
|
+
from sage.modules.vector_rational_dense cimport Vector_rational_dense
|
|
12
|
+
from sage.rings.rational cimport Rational
|
|
13
|
+
|
|
14
|
+
# ########################################################
|
|
15
|
+
# PARI C library
|
|
16
|
+
from sage.libs.pari.all import PariError
|
|
17
|
+
from sage.libs.pari.convert_gmp cimport INTFRAC_to_mpq
|
|
18
|
+
from sage.libs.pari.convert_flint cimport rational_matrix, _new_GEN_from_fmpq_mat_t
|
|
19
|
+
from cypari2.stack cimport clear_stack
|
|
20
|
+
from cypari2.paridecl cimport *
|
|
21
|
+
# ########################################################
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _pari(Matrix_rational_dense self):
|
|
25
|
+
"""
|
|
26
|
+
Return pari version of this matrix.
|
|
27
|
+
|
|
28
|
+
EXAMPLES::
|
|
29
|
+
|
|
30
|
+
sage: matrix(QQ,2,[1/5,-2/3,3/4,4/9]).__pari__()
|
|
31
|
+
[1/5, -2/3; 3/4, 4/9]
|
|
32
|
+
"""
|
|
33
|
+
return rational_matrix(self._matrix, False)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _det_pari(Matrix_rational_dense self, int flag=0):
|
|
37
|
+
"""
|
|
38
|
+
Return the determinant of this matrix computed using pari.
|
|
39
|
+
|
|
40
|
+
EXAMPLES::
|
|
41
|
+
|
|
42
|
+
sage: from sage.matrix.matrix_rational_pari import _det_pari
|
|
43
|
+
sage: _det_pari(matrix(QQ, 3, [1..9]))
|
|
44
|
+
0
|
|
45
|
+
sage: _det_pari(matrix(QQ, 3, [1..9]), 1)
|
|
46
|
+
0
|
|
47
|
+
sage: _det_pari(matrix(QQ, 3, [0] + [2..9]))
|
|
48
|
+
3
|
|
49
|
+
"""
|
|
50
|
+
sig_on()
|
|
51
|
+
cdef GEN d = det0(_new_GEN_from_fmpq_mat_t(self._matrix), flag)
|
|
52
|
+
# now convert d to a Sage rational
|
|
53
|
+
cdef Rational e = <Rational> Rational.__new__(Rational)
|
|
54
|
+
INTFRAC_to_mpq(e.value, d)
|
|
55
|
+
clear_stack()
|
|
56
|
+
return e
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _rank_pari(Matrix_rational_dense self):
|
|
60
|
+
"""
|
|
61
|
+
Return the rank of this matrix computed using pari.
|
|
62
|
+
|
|
63
|
+
EXAMPLES::
|
|
64
|
+
|
|
65
|
+
sage: from sage.matrix.matrix_rational_pari import _rank_pari
|
|
66
|
+
sage: _rank_pari(matrix(QQ, 3, [1..9]))
|
|
67
|
+
2
|
|
68
|
+
sage: _rank_pari(matrix(QQ, 0, 0))
|
|
69
|
+
0
|
|
70
|
+
"""
|
|
71
|
+
sig_on()
|
|
72
|
+
cdef long r = rank(_new_GEN_from_fmpq_mat_t(self._matrix))
|
|
73
|
+
clear_stack()
|
|
74
|
+
return r
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _multiply_pari(Matrix_rational_dense self, Matrix_rational_dense right):
|
|
78
|
+
"""
|
|
79
|
+
Return the product of ``self`` and ``right``, computed using PARI.
|
|
80
|
+
|
|
81
|
+
EXAMPLES::
|
|
82
|
+
|
|
83
|
+
sage: from sage.matrix.matrix_rational_pari import _multiply_pari
|
|
84
|
+
sage: _multiply_pari(matrix(QQ,2,[1/5,-2/3,3/4,4/9]), matrix(QQ,2,[1,2,3,4]))
|
|
85
|
+
[ -9/5 -34/15]
|
|
86
|
+
[ 25/12 59/18]
|
|
87
|
+
|
|
88
|
+
We verify that 0 rows or columns works::
|
|
89
|
+
|
|
90
|
+
sage: x = matrix(QQ,2,0); y = matrix(QQ,0,2); x*y
|
|
91
|
+
[0 0]
|
|
92
|
+
[0 0]
|
|
93
|
+
sage: matrix(ZZ, 0, 0) * matrix(QQ, 0, 5)
|
|
94
|
+
[]
|
|
95
|
+
"""
|
|
96
|
+
if self._ncols != right._nrows:
|
|
97
|
+
raise ArithmeticError("self must be a square matrix")
|
|
98
|
+
if not self._ncols*self._nrows or not right._ncols*right._nrows:
|
|
99
|
+
# pari doesn't work in case of 0 rows or columns
|
|
100
|
+
# This case is easy, since the answer must be the 0 matrix.
|
|
101
|
+
return self.matrix_space(self._nrows, right._ncols).zero_matrix().__copy__()
|
|
102
|
+
sig_on()
|
|
103
|
+
cdef GEN M = gmul(_new_GEN_from_fmpq_mat_t(self._matrix),
|
|
104
|
+
_new_GEN_from_fmpq_mat_t(right._matrix))
|
|
105
|
+
A = new_matrix_from_pari_GEN(self.matrix_space(self._nrows, right._ncols), M)
|
|
106
|
+
clear_stack()
|
|
107
|
+
return A
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def _invert_pari(Matrix_rational_dense self):
|
|
111
|
+
"""
|
|
112
|
+
Return the inverse of this matrix computed using PARI.
|
|
113
|
+
|
|
114
|
+
EXAMPLES::
|
|
115
|
+
|
|
116
|
+
sage: from sage.matrix.matrix_rational_pari import _invert_pari
|
|
117
|
+
sage: _invert_pari(matrix(QQ, 2, [1,2,3,4]))
|
|
118
|
+
[ -2 1]
|
|
119
|
+
[ 3/2 -1/2]
|
|
120
|
+
sage: _invert_pari(matrix(QQ, 2, [1,2,2,4]))
|
|
121
|
+
Traceback (most recent call last):
|
|
122
|
+
...
|
|
123
|
+
PariError: impossible inverse in ginv: [1, 2; 2, 4]
|
|
124
|
+
"""
|
|
125
|
+
if self._nrows != self._ncols:
|
|
126
|
+
raise ValueError("self must be a square matrix")
|
|
127
|
+
cdef GEN M, d
|
|
128
|
+
|
|
129
|
+
sig_on()
|
|
130
|
+
M = _new_GEN_from_fmpq_mat_t(self._matrix)
|
|
131
|
+
d = ginv(M)
|
|
132
|
+
# Convert matrix back to Sage.
|
|
133
|
+
A = new_matrix_from_pari_GEN(self._parent, d)
|
|
134
|
+
clear_stack()
|
|
135
|
+
return A
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
cdef new_matrix_from_pari_GEN(parent, GEN d):
|
|
139
|
+
"""
|
|
140
|
+
Given a PARI GEN with ``t_INT`` or ``t_FRAC entries, create a
|
|
141
|
+
:class:`Matrix_rational_dense` from it.
|
|
142
|
+
|
|
143
|
+
EXAMPLES::
|
|
144
|
+
|
|
145
|
+
sage: from sage.matrix.matrix_rational_pari import _multiply_pari
|
|
146
|
+
sage: _multiply_pari(matrix(QQ, 2, [1..4]), matrix(QQ, 2, [2..5])) # indirect doctest
|
|
147
|
+
[10 13]
|
|
148
|
+
[22 29]
|
|
149
|
+
"""
|
|
150
|
+
cdef Py_ssize_t i, j
|
|
151
|
+
cdef Matrix_rational_dense B = Matrix_rational_dense.__new__(
|
|
152
|
+
Matrix_rational_dense, parent, None, None, None)
|
|
153
|
+
cdef mpq_t tmp
|
|
154
|
+
mpq_init(tmp)
|
|
155
|
+
for i in range(B._nrows):
|
|
156
|
+
for j in range(B._ncols):
|
|
157
|
+
INTFRAC_to_mpq(tmp, gcoeff(d, i+1, j+1))
|
|
158
|
+
fmpq_set_mpq(fmpq_mat_entry(B._matrix, i, j), tmp)
|
|
159
|
+
mpq_clear(tmp)
|
|
160
|
+
return B
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
|
|
3
|
+
from sage.quadratic_forms.special_values import (gamma__exact, zeta__exact, QuadraticBernoulliNumber,
|
|
4
|
+
quadratic_L_function__exact, quadratic_L_function__numerical)
|
|
5
|
+
|
|
6
|
+
from sage.misc.lazy_import import lazy_import
|
|
7
|
+
|
|
8
|
+
lazy_import('sage.quadratic_forms.genera.genus', 'Genus')
|
|
9
|
+
|
|
10
|
+
del lazy_import
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# sage_setup: distribution = sagemath-pari
|
|
2
|
+
# ****************************************************************************
|
|
3
|
+
# Copyright (C) 2007 David Kohel <kohel@maths.usyd.edu.au>
|
|
4
|
+
#
|
|
5
|
+
# Distributed under the terms of the GNU General Public License (GPL)
|
|
6
|
+
#
|
|
7
|
+
# https://www.gnu.org/licenses/
|
|
8
|
+
# ****************************************************************************
|
|
9
|
+
from sage.quadratic_forms.genera.genus import Genus, LocalGenusSymbol, is_GlobalGenus
|