sagemath: update to 10.0.

Also:
 - support networkx 3.1 (sagemath#35584)
 - support linbox 1.7.0 (sagemath#35612)
 - support maxima 5.46.0 (sagemath#35619)
 - support sympy 1.12 (sagemath#35635)
This commit is contained in:
Gonzalo Tornaría 2023-02-16 22:53:33 -03:00 committed by Leah Neukirchen
parent 1afb8ba215
commit faa5bf4b2a
23 changed files with 828 additions and 2469 deletions

View File

@ -1,4 +1,3 @@
# configuration for sage on void linux
SAGE_SHARE = "/usr/share/sagemath"
GAP_SHARE_DIR = "/usr/share/gap"
GAP_LIB_DIR = "/usr/lib/gap"

View File

@ -1,281 +1,152 @@
{
"doc.ca.intro.index": {"walltime": 8},
"doc.en.constructions.calculus": {"walltime": 64},
"doc.en.constructions.plotting": {"walltime": 32},
"doc.en.prep.Advanced-2DPlotting": {"walltime": 16},
"doc.en.prep.Calculus": {"walltime": 8},
"doc.en.prep.Symbolics-and-Basic-Plotting": {"walltime": 8},
"doc.en.thematic_tutorials.explicit_methods_in_number_theory.birds_other": {"walltime": 8},
"doc.en.thematic_tutorials.explicit_methods_in_number_theory.elliptic_curves": {"walltime": 8},
"doc.en.thematic_tutorials.geometry.polyhedra_tutorial": {"walltime": 16},
"doc.en.thematic_tutorials.sandpile": {"walltime": 16},
"doc.en.thematic_tutorials.vector_calculus.vector_calc_advanced": {"walltime": 32},
"doc.en.thematic_tutorials.vector_calculus.vector_calc_cartesian": {"walltime": 32},
"doc.en.thematic_tutorials.vector_calculus.vector_calc_change": {"walltime": 32},
"doc.en.thematic_tutorials.vector_calculus.vector_calc_curvilinear": {"walltime": 32},
"doc.en.thematic_tutorials.vector_calculus.vector_calc_plane": {"walltime": 16},
"doc.ja.tutorial.tour_plotting": {"walltime": 8},
"sage.algebras.cluster_algebra": {"walltime": 8},
"sage.algebras.commutative_dga": {"walltime": 16},
"sage.algebras.hecke_algebras.ariki_koike_algebra": {"walltime": 8},
"sage.algebras.iwahori_hecke_algebra": {"walltime": 8},
"sage.algebras.lie_algebras.classical_lie_algebra": {"walltime": 128},
"sage.algebras.lie_algebras.nilpotent_lie_algebra": {"walltime": 16},
"sage.algebras.quantum_clifford": {"walltime": 16},
"sage.algebras.quantum_groups.fock_space": {"walltime": 8},
"sage.algebras.quatalg.quaternion_algebra": {"walltime": 8},
"sage.algebras.steenrod.steenrod_algebra": {"walltime": 64},
"sage.algebras.steenrod.steenrod_algebra_bases": {"walltime": 8},
"sage.algebras.yangian": {"walltime": 8},
"sage.arith.misc": {"walltime": 32},
"sage.algebras.fusion_rings.f_matrix": {"walltime": 16},
"sage.algebras.fusion_rings.fusion_ring": {"walltime": 16},
"sage.algebras.hecke_algebras.cubic_hecke_algebra": {"walltime": 8},
"sage.algebras.lie_conformal_algebras.n2_lie_conformal_algebra": {"walltime": 8},
"sage.algebras.quantum_clifford": {"walltime": 8},
"sage.algebras.steenrod.steenrod_algebra": {"walltime": 8},
"sage.calculus.calculus": {"walltime": 16},
"sage.calculus.desolvers": {"walltime": 8},
"sage.calculus.functional": {"walltime": 8},
"sage.calculus.riemann": {"walltime": 64},
"sage.calculus.tests": {"walltime": 16},
"sage.calculus.transforms.dwt": {"walltime": 16},
"sage.calculus.riemann": {"walltime": 8},
"sage.calculus.transforms.fft": {"walltime": 8},
"sage.categories.coxeter_groups": {"walltime": 8},
"sage.categories.finite_monoids": {"walltime": 16},
"sage.categories.lie_conformal_algebras": {"walltime": 8},
"sage.categories.finite_monoids": {"walltime": 8},
"sage.categories.loop_crystals": {"walltime": 8},
"sage.categories.pushout": {"walltime": 8},
"sage.categories.super_hopf_algebras_with_basis": {"walltime": 32},
"sage.categories.super_lie_conformal_algebras": {"walltime": 8},
"sage.coding.ag_code": {"walltime": 64},
"sage.coding.ag_code_decoders": {"walltime": 128},
"sage.coding.binary_code": {"walltime": 8},
"sage.coding.linear_code": {"walltime": 16},
"sage.combinat.backtrack": {"walltime": 32},
"sage.combinat.chas.wqsym": {"walltime": 32},
"sage.combinat.cluster_algebra_quiver.cluster_seed": {"walltime": 64},
"sage.combinat.cluster_algebra_quiver.quiver": {"walltime": 128},
"sage.combinat.crystals.affine_factorization": {"walltime": 16},
"sage.combinat.crystals.alcove_path": {"walltime": 32},
"sage.combinat.crystals.highest_weight_crystals": {"walltime": 8},
"sage.combinat.crystals.kirillov_reshetikhin": {"walltime": 16},
"sage.combinat.crystals.letters": {"walltime": 8},
"sage.combinat.crystals.littelmann_path": {"walltime": 16},
"sage.combinat.crystals.mv_polytopes": {"walltime": 16},
"sage.combinat.crystals.pbw_crystal": {"walltime": 16},
"sage.combinat.crystals.star_crystal": {"walltime": 8},
"sage.combinat.designs.bibd": {"walltime": 8},
"sage.combinat.designs.database": {"walltime": 16},
"sage.coding.ag_code": {"walltime": 32},
"sage.coding.ag_code_decoders": {"walltime": 32},
"sage.coding.linear_code": {"walltime": 32},
"sage.combinat.designs.database": {"walltime": 8},
"sage.combinat.designs.difference_family": {"walltime": 8},
"sage.combinat.designs.gen_quadrangles_with_spread": {"walltime": 128},
"sage.combinat.designs.orthogonal_arrays_build_recursive": {"walltime": 16},
"sage.combinat.designs.orthogonal_arrays_find_recursive": {"walltime": 8},
"sage.combinat.diagram_algebras": {"walltime": 64},
"sage.combinat.fqsym": {"walltime": 32},
"sage.combinat.free_prelie_algebra": {"walltime": 8},
"sage.combinat.fully_commutative_elements": {"walltime": 8},
"sage.combinat.grossman_larson_algebras": {"walltime": 8},
"sage.combinat.interval_posets": {"walltime": 8},
"sage.combinat.designs.orthogonal_arrays_build_recursive": {"walltime": 8},
"sage.combinat.k_regular_sequence": {"walltime": 8},
"sage.combinat.k_tableau": {"walltime": 16},
"sage.combinat.matrices.hadamard_matrix": {"walltime": 8},
"sage.combinat.multiset_partition_into_sets_ordered": {"walltime": 8},
"sage.combinat.ncsf_qsym.ncsf": {"walltime": 16},
"sage.combinat.ncsf_qsym.qsym": {"walltime": 16},
"sage.combinat.partition": {"walltime": 16},
"sage.combinat.partition_kleshchev": {"walltime": 16},
"sage.combinat.ncsf_qsym.ncsf": {"walltime": 8},
"sage.combinat.ncsf_qsym.qsym": {"walltime": 8},
"sage.combinat.partition": {"walltime": 8},
"sage.combinat.partition_tuple": {"walltime": 8},
"sage.combinat.posets.moebius_algebra": {"walltime": 16},
"sage.combinat.permutation": {"walltime": 8},
"sage.combinat.posets.posets": {"walltime": 8},
"sage.combinat.rigged_configurations.kr_tableaux": {"walltime": 32},
"sage.combinat.rigged_configurations.rigged_configurations": {"walltime": 16},
"sage.combinat.rigged_configurations.tensor_product_kr_tableaux": {"walltime": 16},
"sage.combinat.rigged_configurations.kr_tableaux": {"walltime": 8},
"sage.combinat.root_system.associahedron": {"walltime": 8},
"sage.combinat.root_system.branching_rules": {"walltime": 8},
"sage.combinat.root_system.fusion_ring": {"walltime": 8},
"sage.combinat.root_system.integrable_representations": {"walltime": 16},
"sage.combinat.root_system.non_symmetric_macdonald_polynomials": {"walltime": 16},
"sage.combinat.root_system.pieri_factors": {"walltime": 8},
"sage.combinat.root_system.plot": {"walltime": 32},
"sage.combinat.root_system.root_lattice_realization_algebras": {"walltime": 16},
"sage.combinat.root_system.root_lattice_realizations": {"walltime": 16},
"sage.combinat.root_system.root_system": {"walltime": 8},
"sage.combinat.root_system.weyl_group": {"walltime": 8},
"sage.combinat.rsk": {"walltime": 32},
"sage.combinat.sf.classical": {"walltime": 16},
"sage.combinat.sf.jack": {"walltime": 16},
"sage.combinat.sf.k_dual": {"walltime": 16},
"sage.combinat.sf.llt": {"walltime": 16},
"sage.combinat.sf.macdonald": {"walltime": 64},
"sage.combinat.sf.new_kschur": {"walltime": 8},
"sage.combinat.sf.sfa": {"walltime": 32},
"sage.combinat.shifted_primed_tableau": {"walltime": 16},
"sage.combinat.root_system.non_symmetric_macdonald_polynomials": {"walltime": 8},
"sage.combinat.root_system.plot": {"walltime": 16},
"sage.combinat.root_system.root_lattice_realizations": {"walltime": 8},
"sage.combinat.rsk": {"walltime": 8},
"sage.combinat.sf.k_dual": {"walltime": 8},
"sage.combinat.sf.sf": {"walltime": 8},
"sage.combinat.sf.sfa": {"walltime": 8},
"sage.combinat.shifted_primed_tableau": {"walltime": 8},
"sage.combinat.skew_tableau": {"walltime": 8},
"sage.combinat.symmetric_group_algebra": {"walltime": 16},
"sage.combinat.tableau": {"walltime": 32},
"sage.combinat.tableau_tuple": {"walltime": 32},
"sage.combinat.tiling": {"walltime": 16},
"sage.combinat.tutorial": {"walltime": 16},
"sage.combinat.words.paths": {"walltime": 64},
"sage.crypto.block_cipher.des": {"walltime": 16},
"sage.crypto.mq.sr": {"walltime": 64},
"sage.crypto.sbox": {"walltime": 16},
"sage.combinat.species.generating_series": {"walltime": 8},
"sage.combinat.tableau": {"walltime": 8},
"sage.combinat.tableau_tuple": {"walltime": 8},
"sage.combinat.tiling": {"walltime": 8},
"sage.combinat.tutorial": {"walltime": 8},
"sage.crypto.sboxes": {"walltime": 8},
"sage.doctest.forker": {"walltime": 16},
"sage.doctest.sources": {"walltime": 64},
"sage.doctest.test": {"walltime": 128},
"sage.dynamics.arithmetic_dynamics.projective_ds": {"walltime": 64},
"sage.dynamics.arithmetic_dynamics.wehlerK3": {"walltime": 8},
"sage.dynamics.cellular_automata.glca": {"walltime": 8},
"sage.dynamics.arithmetic_dynamics.projective_ds": {"walltime": 32},
"sage.dynamics.cellular_automata.solitons": {"walltime": 8},
"sage.dynamics.complex_dynamics.mandel_julia": {"walltime": 16},
"sage.functions.bessel": {"walltime": 16},
"sage.functions.exp_integral": {"walltime": 8},
"sage.functions.hypergeometric": {"walltime": 8},
"sage.functions.orthogonal_polys": {"walltime": 8},
"sage.functions.other": {"walltime": 16},
"sage.functions.piecewise": {"walltime": 8},
"sage.games.quantumino": {"walltime": 8},
"sage.geometry.cone": {"walltime": 32},
"sage.geometry.fan": {"walltime": 8},
"sage.geometry.hyperbolic_space.hyperbolic_geodesic": {"walltime": 8},
"sage.geometry.hyperplane_arrangement.arrangement": {"walltime": 16},
"sage.geometry.hyperplane_arrangement.library": {"walltime": 8},
"sage.geometry.hyperplane_arrangement.arrangement": {"walltime": 8},
"sage.geometry.hyperplane_arrangement.plot": {"walltime": 8},
"sage.geometry.lattice_polytope": {"walltime": 16},
"sage.geometry.polyhedral_complex": {"walltime": 8},
"sage.geometry.polyhedron.base": {"walltime": 32},
"sage.geometry.polyhedron.library": {"walltime": 32},
"sage.geometry.polyhedron.plot": {"walltime": 8},
"sage.geometry.polyhedron.base": {"walltime": 8},
"sage.geometry.polyhedron.base5": {"walltime": 8},
"sage.geometry.polyhedron.base6": {"walltime": 16},
"sage.geometry.polyhedron.library": {"walltime": 16},
"sage.geometry.riemannian_manifolds.parametrized_surface3d": {"walltime": 16},
"sage.geometry.triangulation.base": {"walltime": 32},
"sage.geometry.triangulation.point_configuration": {"walltime": 16},
"sage.graphs.chrompoly": {"walltime": 8},
"sage.graphs.connectivity": {"walltime": 16},
"sage.graphs.generators.basic": {"walltime": 16},
"sage.graphs.generators.classical_geometries": {"walltime": 32},
"sage.graphs.generators.distance_regular": {"walltime": 256},
"sage.graphs.generators.families": {"walltime": 32},
"sage.graphs.generators.smallgraphs": {"walltime": 16},
"sage.graphs.generic_graph": {"walltime": 32},
"sage.graphs.genus": {"walltime": 16},
"sage.graphs.connectivity": {"walltime": 8},
"sage.graphs.generators.classical_geometries": {"walltime": 8},
"sage.graphs.generators.distance_regular": {"walltime": 32},
"sage.graphs.generators.smallgraphs": {"walltime": 8},
"sage.graphs.generic_graph": {"walltime": 16},
"sage.graphs.graph": {"walltime": 16},
"sage.graphs.graph_generators": {"walltime": 8},
"sage.graphs.graph_list": {"walltime": 8},
"sage.graphs.graph_plot": {"walltime": 8},
"sage.graphs.strongly_regular_db": {"walltime": 16},
"sage.groups.cubic_braid": {"walltime": 16},
"sage.groups.fqf_orthogonal": {"walltime": 16},
"sage.groups.libgap_mixin": {"walltime": 8},
"sage.groups.libgap_morphism": {"walltime": 8},
"sage.groups.lie_gps.nilpotent_lie_group": {"walltime": 16},
"sage.groups.matrix_gps.finitely_generated": {"walltime": 8},
"sage.groups.matrix_gps.heisenberg": {"walltime": 32},
"sage.groups.matrix_gps.linear": {"walltime": 8},
"sage.groups.perm_gps.cubegroup": {"walltime": 16},
"sage.groups.perm_gps.partn_ref.refinement_graphs": {"walltime": 8},
"sage.graphs.strongly_regular_db": {"walltime": 8},
"sage.groups.cactus_group": {"walltime": 8},
"sage.groups.cubic_braid": {"walltime": 8},
"sage.groups.lie_gps.nilpotent_lie_group": {"walltime": 8},
"sage.groups.matrix_gps.finitely_generated_gap": {"walltime": 8},
"sage.groups.perm_gps.permgroup": {"walltime": 8},
"sage.groups.perm_gps.permgroup_named": {"walltime": 8},
"sage.homology.hochschild_complex": {"walltime": 8},
"sage.homology.homology_vector_space_with_basis": {"walltime": 8},
"sage.interacts.test_jupyter": {"walltime": 16},
"sage.interfaces.ecm": {"walltime": 8},
"sage.interfaces.expect": {"walltime": 8},
"sage.interfaces.gap": {"walltime": 16},
"sage.interfaces.maxima": {"walltime": 8},
"sage.interfaces.maxima_abstract": {"walltime": 64},
"sage.interfaces.psage": {"walltime": 8},
"sage.interfaces.sage0": {"walltime": 8},
"sage.lfunctions.zero_sums": {"walltime": 8},
"sage.libs.eclib.interface": {"walltime": 16},
"sage.interfaces.gap": {"walltime": 8},
"sage.interfaces.gap_workspace": {"walltime": 8},
"sage.interfaces.sage0": {"walltime": 16},
"sage.libs.eclib.interface": {"walltime": 32},
"sage.libs.eclib.mwrank": {"walltime": 16},
"sage.libs.gap.test_long": {"walltime": 32},
"sage.libs.giac": {"walltime": 32},
"sage.manifolds.catalog": {"walltime": 8},
"sage.manifolds.chart": {"walltime": 32},
"sage.manifolds.chart": {"walltime": 16},
"sage.manifolds.chart_func": {"walltime": 8},
"sage.manifolds.continuous_map": {"walltime": 8},
"sage.manifolds.differentiable.affine_connection": {"walltime": 128},
"sage.manifolds.differentiable.affine_connection": {"walltime": 32},
"sage.manifolds.differentiable.automorphismfield": {"walltime": 32},
"sage.manifolds.differentiable.automorphismfield_group": {"walltime": 8},
"sage.manifolds.differentiable.bundle_connection": {"walltime": 8},
"sage.manifolds.differentiable.characteristic_cohomology_class": {"walltime": 64},
"sage.manifolds.differentiable.characteristic_cohomology_class": {"walltime": 8},
"sage.manifolds.differentiable.curve": {"walltime": 16},
"sage.manifolds.differentiable.degenerate": {"walltime": 32},
"sage.manifolds.differentiable.degenerate_submanifold": {"walltime": 16},
"sage.manifolds.differentiable.diff_form": {"walltime": 64},
"sage.manifolds.differentiable.degenerate": {"walltime": 16},
"sage.manifolds.differentiable.degenerate_submanifold": {"walltime": 8},
"sage.manifolds.differentiable.diff_form": {"walltime": 32},
"sage.manifolds.differentiable.diff_map": {"walltime": 8},
"sage.manifolds.differentiable.examples.euclidean": {"walltime": 32},
"sage.manifolds.differentiable.examples.sphere": {"walltime": 32},
"sage.manifolds.differentiable.integrated_curve": {"walltime": 32},
"sage.manifolds.differentiable.levi_civita_connection": {"walltime": 32},
"sage.manifolds.differentiable.manifold": {"walltime": 16},
"sage.manifolds.differentiable.manifold_homset": {"walltime": 16},
"sage.manifolds.differentiable.levi_civita_connection": {"walltime": 16},
"sage.manifolds.differentiable.manifold": {"walltime": 8},
"sage.manifolds.differentiable.manifold_homset": {"walltime": 8},
"sage.manifolds.differentiable.metric": {"walltime": 64},
"sage.manifolds.differentiable.mixed_form": {"walltime": 16},
"sage.manifolds.differentiable.mixed_form_algebra": {"walltime": 8},
"sage.manifolds.differentiable.multivectorfield": {"walltime": 64},
"sage.manifolds.differentiable.pseudo_riemannian": {"walltime": 16},
"sage.manifolds.differentiable.pseudo_riemannian_submanifold": {"walltime": 128},
"sage.manifolds.differentiable.scalarfield": {"walltime": 16},
"sage.manifolds.differentiable.pseudo_riemannian": {"walltime": 8},
"sage.manifolds.differentiable.pseudo_riemannian_submanifold": {"walltime": 32},
"sage.manifolds.differentiable.scalarfield": {"walltime": 8},
"sage.manifolds.differentiable.scalarfield_algebra": {"walltime": 8},
"sage.manifolds.differentiable.tangent_vector": {"walltime": 16},
"sage.manifolds.differentiable.tangent_vector": {"walltime": 8},
"sage.manifolds.differentiable.tensorfield": {"walltime": 128},
"sage.manifolds.differentiable.tensorfield_paral": {"walltime": 16},
"sage.manifolds.differentiable.vector_bundle": {"walltime": 16},
"sage.manifolds.differentiable.vectorfield": {"walltime": 64},
"sage.manifolds.differentiable.vectorframe": {"walltime": 8},
"sage.manifolds.differentiable.vectorfield": {"walltime": 16},
"sage.manifolds.point": {"walltime": 16},
"sage.manifolds.scalarfield": {"walltime": 16},
"sage.manifolds.scalarfield_algebra": {"walltime": 8},
"sage.manifolds.section": {"walltime": 32},
"sage.manifolds.trivialization": {"walltime": 8},
"sage.manifolds.vector_bundle": {"walltime": 8},
"sage.matrix.benchmark": {"walltime": 8},
"sage.manifolds.section": {"walltime": 16},
"sage.matrix.matrix2": {"walltime": 16},
"sage.matrix.matrix_integer_dense": {"walltime": 16},
"sage.matrix.matrix_integer_dense_hnf": {"walltime": 32},
"sage.matrix.matrix_mod2_dense": {"walltime": 8},
"sage.matrix.matrix_rational_dense": {"walltime": 8},
"sage.matrix.special": {"walltime": 8},
"sage.matroids.catalog": {"walltime": 64},
"sage.misc.cachefunc": {"walltime": 16},
"sage.misc.cython": {"walltime": 8},
"sage.misc.functional": {"walltime": 8},
"sage.misc.randstate": {"walltime": 16},
"sage.misc.sagedoc": {"walltime": 64},
"sage.misc.sageinspect": {"walltime": 32},
"sage.modular.abvar.abvar": {"walltime": 16},
"sage.misc.sagedoc": {"walltime": 16},
"sage.misc.sageinspect": {"walltime": 16},
"sage.misc.trace": {"walltime": 8},
"sage.modular.abvar.abvar": {"walltime": 8},
"sage.modular.abvar.homspace": {"walltime": 8},
"sage.modular.abvar.lseries": {"walltime": 8},
"sage.modular.arithgroup.arithgroup_perm": {"walltime": 8},
"sage.modular.arithgroup.tests": {"walltime": 8},
"sage.modular.btquotients.pautomorphicform": {"walltime": 32},
"sage.modular.hypergeometric_motive": {"walltime": 16},
"sage.modular.local_comp.local_comp": {"walltime": 32},
"sage.modular.local_comp.type_space": {"walltime": 16},
"sage.modular.modform.ambient_R": {"walltime": 16},
"sage.modular.modform.constructor": {"walltime": 8},
"sage.modular.modform.cuspidal_submodule": {"walltime": 16},
"sage.modular.modform.element": {"walltime": 64},
"sage.modular.modform.ring": {"walltime": 64},
"sage.modular.modform.space": {"walltime": 8},
"sage.modular.btquotients.btquotient": {"walltime": 8},
"sage.modular.btquotients.pautomorphicform": {"walltime": 16},
"sage.modular.hecke.submodule": {"walltime": 8},
"sage.modular.hypergeometric_motive": {"walltime": 8},
"sage.modular.local_comp.local_comp": {"walltime": 16},
"sage.modular.local_comp.type_space": {"walltime": 8},
"sage.modular.modform.element": {"walltime": 32},
"sage.modular.modform_hecketriangle.abstract_space": {"walltime": 16},
"sage.modular.modform_hecketriangle.graded_ring_element": {"walltime": 16},
"sage.modular.modform_hecketriangle.hecke_triangle_group_element": {"walltime": 32},
"sage.modular.modform_hecketriangle.readme": {"walltime": 16},
"sage.modular.modform_hecketriangle.space": {"walltime": 8},
"sage.modular.modsym.ambient": {"walltime": 16},
"sage.modular.modsym.space": {"walltime": 8},
"sage.modular.pollack_stevens.modsym": {"walltime": 64},
"sage.modular.pollack_stevens.padic_lseries": {"walltime": 32},
"sage.modules.finite_submodule_iter": {"walltime": 16},
"sage.modules.free_module": {"walltime": 16},
"sage.modules.free_module_element": {"walltime": 8},
"sage.modules.free_module_integer": {"walltime": 32},
"sage.modules.free_quadratic_module_integer_symmetric": {"walltime": 8},
"sage.modules.torsion_quadratic_module": {"walltime": 16},
"sage.modular.overconvergent.genus0": {"walltime": 8},
"sage.modular.pollack_stevens.modsym": {"walltime": 8},
"sage.modules.fp_graded.morphism": {"walltime": 8},
"sage.modules.free_module": {"walltime": 8},
"sage.parallel.map_reduce": {"walltime": 8},
"sage.plot.animate": {"walltime": 16},
"sage.plot.arrow": {"walltime": 8},
"sage.plot.circle": {"walltime": 8},
"sage.plot.complex_plot": {"walltime": 8},
"sage.plot.complex_plot": {"walltime": 16},
"sage.plot.contour_plot": {"walltime": 32},
"sage.plot.density_plot": {"walltime": 8},
"sage.plot.graphics": {"walltime": 32},
"sage.plot.line": {"walltime": 8},
"sage.plot.matrix_plot": {"walltime": 16},
@ -283,115 +154,53 @@
"sage.plot.plot": {"walltime": 64},
"sage.plot.plot3d.base": {"walltime": 8},
"sage.plot.plot3d.implicit_plot3d": {"walltime": 16},
"sage.plot.plot3d.implicit_surface": {"walltime": 8},
"sage.plot.plot3d.parametric_plot3d": {"walltime": 8},
"sage.plot.plot3d.parametric_plot3d": {"walltime": 16},
"sage.plot.plot3d.parametric_surface": {"walltime": 8},
"sage.plot.plot3d.plot3d": {"walltime": 16},
"sage.plot.plot3d.tachyon": {"walltime": 8},
"sage.plot.plot3d.transform": {"walltime": 32},
"sage.plot.point": {"walltime": 8},
"sage.plot.polygon": {"walltime": 8},
"sage.plot.streamline_plot": {"walltime": 8},
"sage.quadratic_forms.genera.genus": {"walltime": 16},
"sage.quadratic_forms.quadratic_form__automorphisms": {"walltime": 8},
"sage.quadratic_forms.quadratic_form__local_representation_conditions": {"walltime": 64},
"sage.quadratic_forms.quadratic_form__neighbors": {"walltime": 8},
"sage.quadratic_forms.quadratic_form__siegel_product": {"walltime": 8},
"sage.repl.ipython_extension": {"walltime": 8},
"sage.rings.asymptotic.asymptotic_expansion_generators": {"walltime": 64},
"sage.rings.asymptotic.asymptotic_expansion_generators": {"walltime": 16},
"sage.rings.asymptotic.asymptotic_ring": {"walltime": 8},
"sage.rings.asymptotic.asymptotics_multivariate_generating_functions": {"walltime": 32},
"sage.rings.asymptotic.term_monoid": {"walltime": 8},
"sage.rings.continued_fraction": {"walltime": 8},
"sage.rings.asymptotic.asymptotics_multivariate_generating_functions": {"walltime": 8},
"sage.rings.finite_rings.finite_field_base": {"walltime": 8},
"sage.rings.function_field.function_field": {"walltime": 128},
"sage.rings.function_field.function_field_valuation": {"walltime": 64},
"sage.rings.function_field.function_field": {"walltime": 8},
"sage.rings.function_field.ideal": {"walltime": 8},
"sage.rings.function_field.place": {"walltime": 8},
"sage.rings.integer": {"walltime": 64},
"sage.rings.invariants.invariant_theory": {"walltime": 8},
"sage.rings.number_field.bdd_height": {"walltime": 8},
"sage.rings.number_field.number_field": {"walltime": 64},
"sage.rings.number_field.number_field_element": {"walltime": 16},
"sage.rings.number_field.splitting_field": {"walltime": 8},
"sage.rings.number_field.totallyreal": {"walltime": 16},
"sage.rings.number_field.totallyreal_rel": {"walltime": 8},
"sage.rings.padics.padic_base_leaves": {"walltime": 64},
"sage.rings.padics.padic_extension_leaves": {"walltime": 64},
"sage.rings.padics.padic_generic_element": {"walltime": 16},
"sage.rings.padics.padic_lattice_element": {"walltime": 32},
"sage.rings.padics.relative_extension_leaves": {"walltime": 32},
"sage.rings.lazy_series": {"walltime": 8},
"sage.rings.lazy_series_ring": {"walltime": 32},
"sage.rings.number_field.number_field": {"walltime": 32},
"sage.rings.number_field.number_field_element": {"walltime": 8},
"sage.rings.padics.padic_base_leaves": {"walltime": 8},
"sage.rings.padics.padic_generic_element": {"walltime": 8},
"sage.rings.polynomial.multi_polynomial_ideal": {"walltime": 8},
"sage.rings.polynomial.multi_polynomial_sequence": {"walltime": 8},
"sage.rings.polynomial.ore_function_element": {"walltime": 8},
"sage.rings.polynomial.polynomial_element": {"walltime": 16},
"sage.rings.polynomial.polynomial_rational_flint": {"walltime": 8},
"sage.rings.qqbar": {"walltime": 16},
"sage.rings.tests": {"walltime": 16},
"sage.rings.valuation.augmented_valuation": {"walltime": 32},
"sage.rings.valuation.mapped_valuation": {"walltime": 64},
"sage.rings.valuation.valuation": {"walltime": 8},
"sage.sandpiles.sandpile": {"walltime": 16},
"sage.sandpiles.sandpile": {"walltime": 8},
"sage.schemes.curves.affine_curve": {"walltime": 16},
"sage.schemes.curves.closed_point": {"walltime": 8},
"sage.schemes.curves.projective_curve": {"walltime": 32},
"sage.schemes.cyclic_covers.cycliccover_finite_field": {"walltime": 64},
"sage.schemes.elliptic_curves.BSD": {"walltime": 8},
"sage.schemes.elliptic_curves.Qcurves": {"walltime": 8},
"sage.schemes.elliptic_curves.constructor": {"walltime": 32},
"sage.schemes.elliptic_curves.ell_curve_isogeny": {"walltime": 16},
"sage.schemes.elliptic_curves.ell_egros": {"walltime": 32},
"sage.schemes.elliptic_curves.ell_finite_field": {"walltime": 8},
"sage.schemes.elliptic_curves.ell_curve_isogeny": {"walltime": 8},
"sage.schemes.elliptic_curves.ell_generic": {"walltime": 8},
"sage.schemes.elliptic_curves.ell_modular_symbols": {"walltime": 16},
"sage.schemes.elliptic_curves.ell_number_field": {"walltime": 128},
"sage.schemes.elliptic_curves.ell_modular_symbols": {"walltime": 8},
"sage.schemes.elliptic_curves.ell_point": {"walltime": 8},
"sage.schemes.elliptic_curves.ell_rational_field": {"walltime": 128},
"sage.schemes.elliptic_curves.gal_reps_number_field": {"walltime": 32},
"sage.schemes.elliptic_curves.gp_simon": {"walltime": 16},
"sage.schemes.elliptic_curves.heegner": {"walltime": 32},
"sage.schemes.elliptic_curves.height": {"walltime": 64},
"sage.schemes.elliptic_curves.isogeny_class": {"walltime": 32},
"sage.schemes.elliptic_curves.isogeny_small_degree": {"walltime": 64},
"sage.schemes.elliptic_curves.kraus": {"walltime": 16},
"sage.schemes.elliptic_curves.ell_rational_field": {"walltime": 32},
"sage.schemes.elliptic_curves.height": {"walltime": 8},
"sage.schemes.elliptic_curves.isogeny_small_degree": {"walltime": 16},
"sage.schemes.elliptic_curves.mod_sym_num": {"walltime": 8},
"sage.schemes.elliptic_curves.padic_lseries": {"walltime": 8},
"sage.schemes.elliptic_curves.padics": {"walltime": 16},
"sage.schemes.elliptic_curves.saturation": {"walltime": 16},
"sage.schemes.elliptic_curves.sha_tate": {"walltime": 32},
"sage.schemes.hyperelliptic_curves.hyperelliptic_finite_field": {"walltime": 64},
"sage.schemes.hyperelliptic_curves.hyperelliptic_generic": {"walltime": 8},
"sage.schemes.hyperelliptic_curves.hyperelliptic_padic_field": {"walltime": 32},
"sage.schemes.hyperelliptic_curves.monsky_washnitzer": {"walltime": 8},
"sage.schemes.projective.projective_rational_point": {"walltime": 8},
"sage.schemes.riemann_surfaces.riemann_surface": {"walltime": 64},
"sage.schemes.elliptic_curves.padics": {"walltime": 8},
"sage.schemes.elliptic_curves.sha_tate": {"walltime": 16},
"sage.schemes.hyperelliptic_curves.hyperelliptic_padic_field": {"walltime": 16},
"sage.schemes.riemann_surfaces.riemann_surface": {"walltime": 32},
"sage.schemes.toric.chow_group": {"walltime": 8},
"sage.schemes.toric.sheaf.klyachko": {"walltime": 8},
"sage.stats.distributions.discrete_gaussian_integer": {"walltime": 8},
"sage.stats.time_series": {"walltime": 8},
"sage.structure.coerce_dict": {"walltime": 32},
"sage.structure.element": {"walltime": 16},
"sage.structure.sage_object": {"walltime": 8},
"sage.symbolic.expression": {"walltime": 32},
"sage.symbolic.integration.integral": {"walltime": 32},
"sage.symbolic.random_tests": {"walltime": 32},
"sage.symbolic.integration.integral": {"walltime": 16},
"sage.symbolic.relation": {"walltime": 8},
"sage.tests.book_schilling_zabrocki_kschur_primer": {"walltime": 32},
"sage.tests.book_stein_ent": {"walltime": 16},
"sage.tests.books.computational-mathematics-with-sagemath.combinat_doctest": {"walltime": 32},
"sage.tests.books.computational-mathematics-with-sagemath.float_doctest": {"walltime": 16},
"sage.tests.books.computational-mathematics-with-sagemath.graphique_doctest": {"walltime": 32},
"sage.tests.books.computational-mathematics-with-sagemath.graphtheory_doctest": {"walltime": 8},
"sage.tests.books.computational-mathematics-with-sagemath.integration_doctest": {"walltime": 32},
"sage.tests.books.computational-mathematics-with-sagemath.mpoly_doctest": {"walltime": 8},
"sage.tests.books.computational-mathematics-with-sagemath.nonlinear_doctest": {"walltime": 8},
"sage.tests.books.computational-mathematics-with-sagemath.recequadiff_doctest": {"walltime": 8},
"sage.tests.books.computational-mathematics-with-sagemath.sol.graphique_doctest": {"walltime": 16},
"sage.tests.books.computational-mathematics-with-sagemath.sol.numbertheory_doctest": {"walltime": 16},
"sage.tests.books.computational-mathematics-with-sagemath.sol.polynomes_doctest": {"walltime": 16},
"sage.tests.cmdline": {"walltime": 64},
"sage.tests.gosper-sum": {"walltime": 16},
"sage.tests.parigp": {"walltime": 8},
"sage.topology.simplicial_complex": {"walltime": 8},
"sage.topology.simplicial_complex_examples": {"walltime": 16}
"sage.tests.book_schilling_zabrocki_kschur_primer": {"walltime": 16},
"sage.tests.book_stein_ent": {"walltime": 8},
"sage.topology.simplicial_complex": {"walltime": 16}
}

View File

@ -1,205 +0,0 @@
diff --git a/build/pkgs/singular/checksums.ini b/build/pkgs/singular/checksums.ini
index 2e33a405d36..313463d2fea 100644
--- a/build/pkgs/singular/checksums.ini
+++ b/build/pkgs/singular/checksums.ini
@@ -1,5 +1,5 @@
tarball=singular-VERSION.tar.gz
-sha1=6c2b622d3681e2de3d58d30c654d43d3e32b720c
-md5=abb1e37c794472e7760655358ab66054
-cksum=17455733
+sha1=28bb3ee97ef48d04dfa96de182fd93eebe08426c
+md5=fc0a4f5720dadba45a52ee94324ce00c
+cksum=1573851737
upstream_url=ftp://jim.mathematik.uni-kl.de/pub/Math/Singular/SOURCES/4-3-1/singular-VERSION.tar.gz
diff --git a/build/pkgs/singular/package-version.txt b/build/pkgs/singular/package-version.txt
index 11300c77e7d..66e2bede53a 100644
--- a/build/pkgs/singular/package-version.txt
+++ b/build/pkgs/singular/package-version.txt
@@ -1 +1 @@
-4.3.1p1
+4.3.1p3
diff --git a/src/sage/libs/singular/decl.pxd b/src/sage/libs/singular/decl.pxd
index 8e3ac314b67..747a6b1e2fb 100644
--- a/src/sage/libs/singular/decl.pxd
+++ b/src/sage/libs/singular/decl.pxd
@@ -574,7 +574,7 @@ cdef extern from "singular/Singular/libsingular.h":
# gets a component out of a polynomial vector
- poly *pTakeOutComp1(poly **, int)
+ poly *pTakeOutComp(poly **, int)
# deep copy p
diff --git a/src/sage/libs/singular/singular.pyx b/src/sage/libs/singular/singular.pyx
index d8ea7b07f3c..3a1271cd59f 100644
--- a/src/sage/libs/singular/singular.pyx
+++ b/src/sage/libs/singular/singular.pyx
@@ -1726,20 +1726,21 @@ cdef int overflow_check(unsigned long e, ring *_ring) except -1:
Whether an overflow occurs or not partially depends
on the number of variables in the ring. See trac ticket
- :trac:`11856`. With Singular 4, it is by default optimized
- for at least 4 variables on 64-bit and 2 variables on 32-bit,
- which in both cases makes a maximal default exponent of
- 2^16-1.
+ :trac:`11856`.
EXAMPLES::
sage: P.<x,y> = QQ[]
- sage: y^(2^16-1)
- y^65535
- sage: y^2^16
+ sage: y^(2^30)
+ Traceback (most recent call last): # 32-bit
+ ... # 32-bit
+ OverflowError: exponent overflow (1073741824) # 32-bit
+ y^1073741824 # 64-bit
+ sage: y^2^32
Traceback (most recent call last):
...
- OverflowError: exponent overflow (65536)
+ OverflowError: Python int too large to convert to C unsigned long # 32-bit
+ OverflowError: exponent overflow (4294967296) # 64-bit
"""
if unlikely(e > _ring.bitmask):
raise OverflowError("exponent overflow (%d)"%(e))
diff --git a/src/sage/rings/polynomial/multi_polynomial_ideal.py b/src/sage/rings/polynomial/multi_polynomial_ideal.py
index 7dc058a22f0..71494eddbc0 100644
--- a/src/sage/rings/polynomial/multi_polynomial_ideal.py
+++ b/src/sage/rings/polynomial/multi_polynomial_ideal.py
@@ -60,7 +60,7 @@
Note that the result of a computation is not necessarily reduced::
sage: (a+b)^17
- 256*a*b^16 + 256*b^17
+ a*b^16 + b^17
sage: S(17) == 0
True
diff --git a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
index 4dad016b33f..9bf67dd1425 100644
--- a/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
+++ b/src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
@@ -193,7 +193,7 @@ from sage.libs.singular.decl cimport (
p_IsUnit, p_IsOne, p_Series, p_Head, idInit, fast_map_common_subexp, id_Delete,
p_IsHomogeneous, p_Homogen, p_Totaldegree,pLDeg1_Totaldegree, singclap_pdivide, singclap_factorize,
idLift, IDELEMS, On, Off, SW_USE_CHINREM_GCD, SW_USE_EZGCD,
- p_LmIsConstant, pTakeOutComp1, singclap_gcd, pp_Mult_qq, p_GetMaxExp,
+ p_LmIsConstant, pTakeOutComp, singclap_gcd, pp_Mult_qq, p_GetMaxExp,
pLength, kNF, p_Neg, p_Minus_mm_Mult_qq, p_Plus_mm_Mult_qq,
pDiff, singclap_resultant, p_Normalize,
prCopyR, prCopyR_NoSort)
@@ -1587,7 +1587,8 @@ cdef class MPolynomialRing_libsingular(MPolynomialRing_base):
9/4
sage: P.monomial_quotient(x,y) # Note the wrong result
- x*y^65535*z^65535
+ x*y^65535*z^65535 # 32-bit
+ x*y^1048575*z^1048575 # 64-bit
sage: P.monomial_quotient(x,P(1))
x
@@ -2247,10 +2248,11 @@ cdef class MPolynomial_libsingular(MPolynomial):
9/4*x^2 - 1/4*y^2 - y - 1
sage: P.<x,y> = PolynomialRing(QQ,order='lex')
- sage: (x^2^15) * x^2^15
+ sage: (x^2^32) * x^2^32
Traceback (most recent call last):
...
- OverflowError: exponent overflow (...)
+ OverflowError: Python int too large to convert to C unsigned long # 32-bit
+ OverflowError: exponent overflow (...) # 64-bit
"""
# all currently implemented rings are commutative
cdef poly *_p
@@ -2371,10 +2373,11 @@ cdef class MPolynomial_libsingular(MPolynomial):
ValueError: not a 2nd power
sage: P.<x,y> = PolynomialRing(QQ,order='lex')
- sage: (x+y^2^15)^10
+ sage: (x+y^2^32)^10
Traceback (most recent call last):
....
- OverflowError: exponent overflow (...)
+ OverflowError: Python int too large to convert to C unsigned long # 32-bit
+ OverflowError: exponent overflow (...) # 64-bit
Test fractional powers (:trac:`22329`)::
@@ -3461,7 +3464,7 @@ cdef class MPolynomial_libsingular(MPolynomial):
x^10000
no overflow
- sage: n = 1000
+ sage: n = 100000
sage: try:
....: f = x^n
....: f.subs(x = x^n)
@@ -4567,7 +4570,7 @@ cdef class MPolynomial_libsingular(MPolynomial):
l = []
for i from 0 <= i < IDELEMS(res):
for j from 1 <= j <= IDELEMS(_I):
- l.append( new_MP(parent, pTakeOutComp1(&res.m[i], j)) )
+ l.append( new_MP(parent, pTakeOutComp(&res.m[i], 1)) )
id_Delete(&fI, r)
id_Delete(&_I, r)
@@ -4635,7 +4638,7 @@ cdef class MPolynomial_libsingular(MPolynomial):
sage: f = 3*x
sage: f.reduce([2*x,y])
- 3*x
+ x
The reduction is not canonical when ``I`` is not a Groebner
basis::
diff --git a/src/sage/rings/polynomial/plural.pyx b/src/sage/rings/polynomial/plural.pyx
index 1c9f35e56ba..587511c3888 100644
--- a/src/sage/rings/polynomial/plural.pyx
+++ b/src/sage/rings/polynomial/plural.pyx
@@ -1619,10 +1619,10 @@ cdef class NCPolynomial_plural(RingElement):
sage: P = A.g_algebra(relations={y*x:-x*y + z}, order='lex')
sage: P.inject_variables()
Defining x, z, y
- sage: (x^2^15) * x^2^15
+ sage: (x^2^31) * x^2^31
Traceback (most recent call last):
...
- OverflowError: exponent overflow (65536)
+ OverflowError: exponent overflow (2147483648)
"""
# all currently implemented rings are commutative
cdef poly *_p
@@ -1689,10 +1689,10 @@ cdef class NCPolynomial_plural(RingElement):
sage: P = A.g_algebra(relations={y*x:-x*y + z}, order='lex')
sage: P.inject_variables()
Defining x, z, y
- sage: (x+y^2^15)^10
+ sage: (x+y^2^31)^10
Traceback (most recent call last):
....
- OverflowError: exponent overflow (327680)
+ OverflowError: exponent overflow (2147483648)
"""
if type(exp) is not Integer:
try:
diff --git a/src/sage/structure/element.pyx b/src/sage/structure/element.pyx
index b5d83ef71b6..5c45b3fb528 100644
--- a/src/sage/structure/element.pyx
+++ b/src/sage/structure/element.pyx
@@ -2705,10 +2705,10 @@ cdef class RingElement(ModuleElement):
with Singular 4::
sage: K.<x,y> = ZZ[]
- sage: (x^12345)^54321
+ sage: (x^123456)^654321
Traceback (most recent call last):
...
- OverflowError: exponent overflow (670592745)
+ OverflowError: exponent overflow (...)
"""
return arith_generic_power(self, n)

View File

@ -1,49 +0,0 @@
diff --git a/src/sage/rings/number_field/number_field_ideal.py b/src/sage/rings/number_field/number_field_ideal.py
index d5f7157217f..8ca1f958039 100644
--- a/src/sage/rings/number_field/number_field_ideal.py
+++ b/src/sage/rings/number_field/number_field_ideal.py
@@ -996,16 +996,38 @@ def is_prime(self):
False
sage: K.ideal(17).is_prime() # ramified
False
+
+ TESTS:
+
+ Check that we do not factor the norm of the ideal, this used
+ to take half an hour, see :trac:`33360`::
+
+ sage: K.<a,b,c> = NumberField([x^2-2,x^2-3,x^2-5])
+ sage: t = (((-2611940*c + 1925290/7653)*b - 1537130/7653*c
+ ....: + 10130950)*a + (1343014/7653*c - 8349770)*b
+ ....: + 6477058*c - 2801449990/4002519)
+ sage: t.is_prime()
+ False
"""
try:
return self._pari_prime is not None
except AttributeError:
- F = self.factor() # factorization with caching
- if len(F) != 1 or F[0][1] != 1:
- self._pari_prime = None
- else:
- self._pari_prime = F[0][0]._pari_prime
- return self._pari_prime is not None
+ pass
+
+ K = self.number_field().pari_nf()
+ I = self.pari_hnf()
+
+ candidate = K.idealismaximal(I) or None
+
+ # PARI uses probabilistic primality testing inside idealismaximal().
+ if get_flag(None, 'arithmetic'):
+ # proof required, check using isprime()
+ if candidate and not candidate[0].isprime():
+ candidate = None
+
+ self._pari_prime = candidate
+
+ return self._pari_prime is not None
def pari_prime(self):
r"""

View File

@ -1,58 +0,0 @@
diff --git a/src/sage/misc/persist.pyx b/src/sage/misc/persist.pyx
index 3ac5f1cc2b0..cb1f327c199 100644
--- a/src/sage/misc/persist.pyx
+++ b/src/sage/misc/persist.pyx
@@ -157,7 +157,7 @@ def load(*filename, compress=True, verbose=True, **kwargs):
....: _ = f.write(code)
sage: load(t)
sage: hello
- <fortran object>
+ <fortran ...>
"""
import sage.repl.load
if len(filename) != 1:
diff --git a/src/sage/plot/complex_plot.pyx b/src/sage/plot/complex_plot.pyx
index 6f0aeab87ae..b77c69b2f77 100644
--- a/src/sage/plot/complex_plot.pyx
+++ b/src/sage/plot/complex_plot.pyx
@@ -461,6 +461,8 @@ def complex_to_rgb(z_values, contoured=False, tiled=False,
rgb[i, j, 2] = b
sig_off()
+ nan_indices = np.isnan(rgb).any(-1) # Mask for undefined points
+ rgb[nan_indices] = 1 # Make nan_indices white
return rgb
diff --git a/src/sage/plot/histogram.py b/src/sage/plot/histogram.py
index 3bc2b76b58e..388c2d1391d 100644
--- a/src/sage/plot/histogram.py
+++ b/src/sage/plot/histogram.py
@@ -87,13 +87,8 @@ def get_minmax_data(self):
TESTS::
- sage: h = histogram([10,3,5], normed=True)[0]
- doctest:warning...:
- DeprecationWarning: the 'normed' option is deprecated. Use 'density' instead.
- See https://trac.sagemath.org/25260 for details.
+ sage: h = histogram([10,3,5], density=True)[0]
sage: h.get_minmax_data()
- doctest:warning ...
- ...VisibleDeprecationWarning: Passing `normed=True` on non-uniform bins has always been broken, and computes neither the probability density function nor the probability mass function. The result is only correct if the bins are uniform, when density=True will produce the same result anyway. The argument will be removed in a future version of numpy.
{'xmax': 10.0, 'xmin': 3.0, 'ymax': 0.476190476190..., 'ymin': 0}
"""
import numpy
diff --git a/src/sage/repl/ipython_extension.py b/src/sage/repl/ipython_extension.py
index 798671aab42..cad6a47ca8b 100644
--- a/src/sage/repl/ipython_extension.py
+++ b/src/sage/repl/ipython_extension.py
@@ -405,7 +405,7 @@ def fortran(self, line, cell):
....: C END FILE FIB1.F
....: ''')
sage: fib
- <fortran object>
+ <fortran ...>
sage: from numpy import array
sage: a = array(range(10), dtype=float)
sage: fib(a, 10)

View File

@ -1,57 +0,0 @@
diff --git a/src/sage/interfaces/tachyon.py b/src/sage/interfaces/tachyon.py
index 23671e50892..ce1d50f71bc 100644
--- a/src/sage/interfaces/tachyon.py
+++ b/src/sage/interfaces/tachyon.py
@@ -683,12 +683,14 @@
#*****************************************************************************
import os
+import re
from sage.cpython.string import bytes_to_str
from sage.misc.pager import pager
from sage.misc.superseded import deprecation
from sage.misc.temporary_file import tmp_filename
from sage.structure.sage_object import SageObject
+from sage.misc.cachefunc import cached_method
class TachyonRT(SageObject):
@@ -799,6 +801,11 @@ def __call__(self, model, outfile='sage.png', verbose=1, extra_opts=''):
Parser failed due to an input file syntax error.
Aborting render.
"""
+ if self.version() >= '0.99.2':
+ # this keyword was changed in 0.99.2
+ model = model.replace(
+ " focallength ",
+ " focaldist ")
modelfile = tmp_filename(ext='.dat')
with open(modelfile, 'w') as file:
file.write(model)
@@ -851,6 +858,25 @@ def usage(self, use_pager=True):
else:
print(r)
+ @cached_method
+ def version(self):
+ """
+ Returns the version of the Tachyon raytracer being used.
+
+ TESTS::
+
+ sage: tachyon_rt.version() # random
+ 0.98.9
+ sage: tachyon_rt.version() >= '0.98.9'
+ True
+ """
+ with os.popen('tachyon') as f:
+ r = f.readline()
+ res = re.search(r"Version ([\d.]*)", r)
+ # debian patches tachyon so it won't report the version
+ # we hardcode '0.99' since that's indeed the version they ship
+ return res[1] if res else '0.99'
+
def help(self, use_pager=True):
"""
Deprecated: type 'sage.interfaces.tachyon?' for help

View File

@ -1,36 +0,0 @@
diff --git a/src/sage/arith/long.pxd b/src/sage/arith/long.pxd
index 1c9a53387a0..d96b98f247c 100644
--- a/src/sage/arith/long.pxd
+++ b/src/sage/arith/long.pxd
@@ -270,6 +270,17 @@ cdef inline bint integer_check_long_py(x, long* value, int* err):
sage: L += [-x for x in L] + [0, long_min()]
sage: for v in L:
....: assert check_long_py(int(v)) == v
+ sage: check_long_py(int(2^60))
+ 1152921504606846976 # 64-bit
+ 'Overflow (...)' # 32-bit
+ sage: check_long_py(int(2^61))
+ 2305843009213693952 # 64-bit
+ 'Overflow (...)' # 32-bit
+ sage: check_long_py(int(2^62))
+ 4611686018427387904 # 64-bit
+ 'Overflow (...)' # 32-bit
+ sage: check_long_py(int(2^63))
+ 'Overflow (...)'
sage: check_long_py(int(2^100))
'Overflow (...)'
sage: check_long_py(int(long_max() + 1))
@@ -309,7 +320,12 @@ cdef inline bint integer_check_long_py(x, long* value, int* err):
cdef long lead
cdef long lead_2_overflow = (<long>1) << (BITS_IN_LONG - PyLong_SHIFT)
- cdef long lead_3_overflow = (<long>1) << (BITS_IN_LONG - 2 * PyLong_SHIFT)
+ cdef long lead_3_overflow
+ if BITS_IN_LONG < 2 * PyLong_SHIFT:
+ # in this case 3 digit is always overflow
+ lead_3_overflow = 0
+ else:
+ lead_3_overflow = (<long>1) << (BITS_IN_LONG - 2 * PyLong_SHIFT)
if size == 0:
value[0] = 0
err[0] = 0

View File

@ -1,22 +0,0 @@
diff --git a/src/sage/schemes/toric/sheaf/klyachko.py b/src/sage/schemes/toric/sheaf/klyachko.py
index b1304a16913..77fae4b7545 100644
--- a/src/sage/schemes/toric/sheaf/klyachko.py
+++ b/src/sage/schemes/toric/sheaf/klyachko.py
@@ -26,7 +26,7 @@
(0, 0, 18, 16, 1)
sage: Gtilde = G_sum.random_deformation()
sage: V = Gtilde.wedge(2) * K # long time
- sage: V.cohomology(dim=True, weight=(0,0,0,0)) # long time
+ sage: V.cohomology(dim=True, weight=(0,0,0,0)) # long time # random failure (see #32773)
(0, 0, 3, 0, 0)
REFERENCES:
@@ -948,7 +948,7 @@ def random_deformation(self, epsilon=None):
sage: V.cohomology(dim=True, weight=(0,))
(1, 0)
sage: Vtilde = V.random_deformation()
- sage: Vtilde.cohomology(dim=True, weight=(0,))
+ sage: Vtilde.cohomology(dim=True, weight=(0,)) # random failure (see #32773)
(1, 0)
"""
filt = self._filt.random_deformation(epsilon)

View File

@ -1,62 +0,0 @@
From 9ac7840134054155545e24fa3e66402d42b91c0f Mon Sep 17 00:00:00 2001
From: Antonio Rojas <arojas@archlinux.org>
Date: Fri, 20 Jan 2023 21:36:27 +0100
Subject: [PATCH] Fix tests with giac 1.9.0.35
---
src/sage/libs/giac/giac.pyx | 3 +--
src/sage/symbolic/relation.py | 15 +++++----------
2 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/src/sage/libs/giac/giac.pyx b/src/sage/libs/giac/giac.pyx
index 4e451dba5e7..ccad5169836 100644
--- a/src/sage/libs/giac/giac.pyx
+++ b/src/sage/libs/giac/giac.pyx
@@ -374,8 +374,7 @@ def _giac(s):
sage: x = libgiac('x')
sage: (1+2*sin(3*x)).solve(x).simplify()
- Warning, argument is not an equation, solving 1+2*sin(3*x)=0
- list[-pi/18,7*pi/18]
+ ...list[-pi/18,7*pi/18]
sage: libgiac.solve('sin(3*x)>2*sin(x)',x)
Traceback (most recent call last):
diff --git a/src/sage/symbolic/relation.py b/src/sage/symbolic/relation.py
index e9dbc0fea30..b8896a94be9 100644
--- a/src/sage/symbolic/relation.py
+++ b/src/sage/symbolic/relation.py
@@ -935,8 +935,7 @@ def solve(f, *args, **kwds):
sage: f = (sin(x) - 8*cos(x)*sin(x))*(sin(x)^2 + cos(x)) - (2*cos(x)*sin(x) - sin(x))*(-2*sin(x)^2 + 2*cos(x)^2 - cos(x))
sage: solve(f, x, algorithm='giac')
- ...
- [-2*arctan(sqrt(2)), 0, 2*arctan(sqrt(2)), pi]
+ ...[-2*arctan(sqrt(2)), 0, 2*arctan(sqrt(2)), pi]
sage: x, y = SR.var('x,y')
sage: solve([x+y-4,x*y-3],[x,y],algorithm='giac')
@@ -1440,19 +1439,15 @@ def _giac_solver(f, x, solution_dict=False):
EXAMPLES::
sage: solve([(2/3)^x-2], [x], algorithm='giac')
- ...
- [[-log(2)/(log(3) - log(2))]]
+ ...[[-log(2)/(log(3) - log(2))]]
sage: solve([(2/3)^x-2], [x], algorithm='giac', solution_dict=True)
- ...
- [{x: -log(2)/(log(3) - log(2))}]
+ ...[{x: -log(2)/(log(3) - log(2))}]
sage: f = (sin(x) - 8*cos(x)*sin(x))*(sin(x)^2 + cos(x)) - (2*cos(x)*sin(x) - sin(x))*(-2*sin(x)^2 + 2*cos(x)^2 - cos(x))
sage: solve(f, x, algorithm='giac')
- ...
- [-2*arctan(sqrt(2)), 0, 2*arctan(sqrt(2)), pi]
+ ...[-2*arctan(sqrt(2)), 0, 2*arctan(sqrt(2)), pi]
sage: solve(f, x, algorithm='giac', solution_dict=True)
- ...
- [{x: -2*arctan(sqrt(2))}, {x: 0}, {x: 2*arctan(sqrt(2))}, {x: pi}]
+ ...[{x: -2*arctan(sqrt(2))}, {x: 0}, {x: 2*arctan(sqrt(2))}, {x: pi}]
sage: x, y = SR.var('x,y')
sage: solve([x+y-7,x*y-10],[x,y],algorithm='giac')

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +0,0 @@
diff --git a/src/sage/data_structures/stream.py b/src/sage/data_structures/stream.py
index f8f6dc6a186..002e925f02f 100644
--- a/src/sage/data_structures/stream.py
+++ b/src/sage/data_structures/stream.py
@@ -2090,8 +2090,8 @@ def compute_product(self, n, la):
sage: f = Stream_exact([1]) # irrelevant for this test
sage: g = Stream_function(lambda n: s[n], True, 0)
sage: h = Stream_plethysm(f, g, True, p)
- sage: B = p[2, 2, 1](sum(s[i] for i in range(7)))
- sage: all(h.compute_product(k, Partition([2, 2, 1])) == B.restrict_degree(k) for k in range(7))
+ sage: B = p[2, 2, 1](sum(p(s[i]) for i in range(7))) # long time
+ sage: all(h.compute_product(k, Partition([2, 2, 1])) == B.restrict_degree(k) for k in range(7)) # long time
True
"""
# This is the approximate order of the result

View File

@ -1,95 +0,0 @@
diff --git a/src/sage/plot/complex_plot.pyx b/src/sage/plot/complex_plot.pyx
index b77c69b2f77..0586a96ae55 100644
--- a/src/sage/plot/complex_plot.pyx
+++ b/src/sage/plot/complex_plot.pyx
@@ -563,7 +563,7 @@ def complex_to_cmap_rgb(z_values, cmap='turbo', contoured=False, tiled=False,
import matplotlib as mpl
if isinstance(cmap, str):
- cmap = mpl.cm.get_cmap(cmap)
+ cmap = mpl.colormaps[cmap]
if contour_base is None:
if contour_type == "linear":
@@ -1206,11 +1206,11 @@ def complex_plot(f, x_range, y_range, contoured=False, tiled=False, cmap=None,
domain = np.linspace(0, 1, 256)
shifted_domain = np.roll(domain, 128)
default_cmap = mpl.colors.LinearSegmentedColormap.from_list(
- "sage_default", mpl.cm.get_cmap('hsv')(shifted_domain)
+ "sage_default", mpl.colormaps['hsv'](shifted_domain)
)
cmap = default_cmap
else:
- cmap = mpl.cm.get_cmap(cmap)
+ cmap = mpl.colormaps[cmap]
rgbs = complex_to_cmap_rgb(
z_values, cmap=cmap, contoured=contoured, tiled=tiled,
contour_type=contour_type, contour_base=contour_base,
diff --git a/src/sage/plot/contour_plot.py b/src/sage/plot/contour_plot.py
index c0cab456686..4accb309580 100644
--- a/src/sage/plot/contour_plot.py
+++ b/src/sage/plot/contour_plot.py
@@ -848,9 +848,7 @@ def f(x,y): return cos(x) + sin(y)
sage: contour_plot(lambda x,y: 0, (-1,1), (-1,1),
....: contours=[0], fill=False, cmap=['blue'])
- ...
- UserWarning: No contour levels were found within the data range.
- Graphics object consisting of 1 graphics primitive
+ ...Graphics object consisting of 1 graphics primitive
.. PLOT::
@@ -874,8 +872,7 @@ def f(x,y): return cos(x) + sin(y)
Check that :trac:`18074` is fixed::
sage: contour_plot(0, (0,1), (0,1))
- ... UserWarning: No contour levels were found within the data range.
- Graphics object consisting of 1 graphics primitive
+ ...Graphics object consisting of 1 graphics primitive
Domain points in :trac:`11648` with complex output are now skipped::
diff --git a/src/sage/plot/graphics.py b/src/sage/plot/graphics.py
index 64ea1a7e10f..cdc99ced263 100644
--- a/src/sage/plot/graphics.py
+++ b/src/sage/plot/graphics.py
@@ -2341,7 +2341,7 @@ def _matplotlib_tick_formatter(self, subplot, base=(10, 10),
sage: subplot = Figure().add_subplot(111)
sage: p._objects[0]._render_on_subplot(subplot)
sage: p._matplotlib_tick_formatter(subplot, **d)
- (<AxesSubplot:...>,
+ (<Axes...>,
<matplotlib.ticker.MaxNLocator object at ...>,
<matplotlib.ticker.MaxNLocator object at ...>,
<matplotlib.ticker.ScalarFormatter object at ...>,
diff --git a/src/sage/plot/multigraphics.py b/src/sage/plot/multigraphics.py
index 99c817f03a6..ae85183dc93 100644
--- a/src/sage/plot/multigraphics.py
+++ b/src/sage/plot/multigraphics.py
@@ -1207,7 +1207,7 @@ def _add_subplot(self, figure, index, **options):
sage: fig = Figure()
sage: ax1 = G._add_subplot(fig, 0)
sage: type(ax1)
- <class 'matplotlib.axes._subplots.AxesSubplot'>
+ <class 'matplotlib.axes...'>
sage: ax2 = G._add_subplot(fig, 1)
sage: fig.get_axes() == [ax1, ax2]
True
diff --git a/src/sage/plot/plot3d/plot_field3d.py b/src/sage/plot/plot3d/plot_field3d.py
index bdf39391d3e..fe10e27f58f 100644
--- a/src/sage/plot/plot3d/plot_field3d.py
+++ b/src/sage/plot/plot3d/plot_field3d.py
@@ -126,9 +126,9 @@ def plot_vector_field3d(functions, xrange, yrange, zrange,
vectors = [vector((ff(*point), gg(*point), hh(*point))) for point in points]
try:
- from matplotlib.cm import get_cmap
- cm = get_cmap(colors)
- except (TypeError, ValueError):
+ import matplotlib as mpl
+ cm = mpl.colormaps[colors]
+ except (TypeError, KeyError):
cm = None
if cm is None:
if isinstance(colors, (list, tuple)):

View File

@ -1,56 +0,0 @@
diff --git a/src/sage/interfaces/maxima_lib.py b/src/sage/interfaces/maxima_lib.py
index c9ca5e30939..9459cb70334 100644
--- a/src/sage/interfaces/maxima_lib.py
+++ b/src/sage/interfaces/maxima_lib.py
@@ -77,6 +77,26 @@
sage: bar == foo
True
+TESTS:
+
+Check our workaround for a race in ecl works, see :trac:`26968`.
+We use a temporary `MAXIMA_USERDIR` so it's empty; we place it
+in `DOT_SAGE` since we expect it to have more latency than `/tmp`.
+
+ sage: import tempfile, subprocess
+ sage: tmpdir = tempfile.TemporaryDirectory(dir=DOT_SAGE)
+ sage: _ = subprocess.run(['sage', '-c', # long time
+ ....: f'''
+ ....: import os
+ ....: os.environ["MAXIMA_USERDIR"] = "{tmpdir.name}"
+ ....: if not os.fork():
+ ....: import sage.interfaces.maxima_lib
+ ....: else:
+ ....: import sage.interfaces.maxima_lib
+ ....: os.wait()
+ ....: '''])
+ sage: tmpdir.cleanup()
+
"""
# ****************************************************************************
@@ -116,7 +136,23 @@
ecl_eval("(setq $nolabels t))")
ecl_eval("(defvar *MAXIMA-LANG-SUBDIR* NIL)")
ecl_eval("(set-locale-subdir)")
-ecl_eval("(set-pathnames)")
+
+try:
+ ecl_eval("(set-pathnames)")
+except RuntimeError:
+ # Recover from :trac:`26968` by creating `*maxima-objdir*` here.
+ # This cannot be done before calling `(set-pathnames)` since
+ # `*maxima-objdir*` is computed there.
+ # We use python `os.makedirs()` which is immune to the race.
+ # Using `(ensure-directories-exist ...)` in lisp would be
+ # subject to the same race condition and since `*maxima-objdir*`
+ # has multiple components this is quite plausible to happen.
+ maxima_objdir = ecl_eval("*maxima-objdir*").python()[1:-1]
+ import os
+ os.makedirs(maxima_objdir, exist_ok=True)
+ # Call `(set-pathnames)` again to complete its job.
+ ecl_eval("(set-pathnames)")
+
ecl_eval("(defun add-lineinfo (x) x)")
ecl_eval('(defun principal nil (cond ($noprincipal (diverg)) ((not pcprntd) (merror "Divergent Integral"))))')
ecl_eval("(remprop 'mfactorial 'grind)") # don't use ! for factorials (#11539)

View File

@ -1,28 +0,0 @@
diff --git a/src/bin/sage-cleaner b/src/bin/sage-cleaner
index e2e578eec60..dc7d8f0482e 100755
--- a/src/bin/sage-cleaner
+++ b/src/bin/sage-cleaner
@@ -99,6 +99,15 @@ def cleanup():
return len(pid_list)
+def cleanup_cruft():
+ """ remove directories leftover from improper shutdown """
+ tmp_dirs = os.listdir(SAGE_TMP_ROOT)
+ for dir_entry in tmp_dirs:
+ baddir = os.path.join(SAGE_TMP_ROOT, dir_entry)
+ if os.path.isdir(baddir):
+ logger.warning('Removing old directory %s from SAGE_TMP_ROOT', baddir)
+ rm_rf(baddir)
+
def kill_spawned_jobs(jobfile, parent_pid):
logger.info("Killing %s's spawned jobs", parent_pid)
killed_them_all = True
@@ -193,6 +202,7 @@ if __name__ == '__main__':
setup_daemon()
fix_old_mistakes()
logger.info("Starting sage-cleaner with PID %s", os.getpid())
+ cleanup_cruft()
if len(sys.argv) > 1:
wait = int(sys.argv[1])

View File

@ -1,35 +0,0 @@
diff --git a/src/sage/graphs/generators/families.py b/src/sage/graphs/generators/families.py
index ec6a5c19e60..9dd7bc1cb1e 100644
--- a/src/sage/graphs/generators/families.py
+++ b/src/sage/graphs/generators/families.py
@@ -3660,7 +3660,7 @@ def nauty_gentreeg(options="", debug=False):
sage: gen = graphs.nauty_gentreeg("4", debug=True)
sage: print(next(gen))
- >A ...gentreeg Z=2:3 D=3 n=4
+ >A ...gentreeg ...
sage: gen = graphs.nauty_gentreeg("4 -q", debug=True)
sage: next(gen)
''
@@ -3687,7 +3687,7 @@ def nauty_gentreeg(options="", debug=False):
sage: list(graphs.nauty_gentreeg("3 -x", debug=True))
['>E Usage: ...gentreeg [-D#] [-Z#:#] [-ulps] [-q] n [res/mod] ...
sage: list(graphs.nauty_gentreeg("3", debug=True))
- ['>A ...gentreeg Z=2:2 D=2 n=3\n', Graph on 3 vertices]
+ ['>A ...gentreeg ...\n', Graph on 3 vertices]
"""
import shlex
from sage.features.nauty import NautyExecutable
diff --git a/src/sage/graphs/graph_generators.py b/src/sage/graphs/graph_generators.py
index df88bbe2713..1a8016976c2 100644
--- a/src/sage/graphs/graph_generators.py
+++ b/src/sage/graphs/graph_generators.py
@@ -966,7 +966,7 @@ def nauty_geng(self, options="", debug=False):
...
ValueError: wrong format of parameter option
sage: list(graphs.nauty_geng("-c3", debug=True))
- ['>E Usage: ...geng [-cCmtfbd#D#] [-uygsnh] [-lvq] ...
+ ['>E Usage: ...geng ...\n']
sage: list(graphs.nauty_geng("-c 3", debug=True))
['>A ...geng -cd1D2 n=3 e=2-3\n', Graph on 3 vertices, Graph on 3 vertices]
"""

View File

@ -1,51 +0,0 @@
diff --git a/src/sage/repl/inputhook.py b/src/sage/repl/inputhook.py
index da5df0268c0..7f7894f6dcf 100644
--- a/src/sage/repl/inputhook.py
+++ b/src/sage/repl/inputhook.py
@@ -17,6 +17,8 @@
import select
import errno
+import contextlib
+import io
from IPython import get_ipython
from IPython.terminal.pt_inputhooks import register
@@ -47,15 +49,27 @@ def install():
"""
Install the Sage input hook
- EXAMPLES::
+ EXAMPLES:
+
+ Make sure ipython is running so we really test this function::
+
+ sage: from sage.repl.interpreter import get_test_shell
+ sage: get_test_shell()
+ <sage.repl.interpreter.SageTestShell object at ...>
+
+ Run the function twice, to check it is idempotent (see :trac:`35235`)::
sage: from sage.repl.inputhook import install
sage: install()
+ sage: install()
"""
ip = get_ipython()
if not ip:
return # Not running in ipython, e.g. doctests
- ip.enable_gui('sage')
+ if ip._inputhook != sage_inputhook:
+ # silence `ip.enable_gui()` useless output
+ with contextlib.redirect_stdout(io.StringIO()):
+ ip.enable_gui('sage')
def uninstall():
@@ -71,4 +85,6 @@ def uninstall():
if not ip:
return
if ip._inputhook == sage_inputhook:
- ip.enable_gui(None)
+ # silence `ip.enable_gui()` useless output
+ with contextlib.redirect_stdout(io.StringIO()):
+ ip.enable_gui(None)

View File

@ -1,41 +0,0 @@
From 532fbbaf71bb41c73920b584108eb2a09d6deeb1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= <tornaria@cmat.edu.uy>
Date: Tue, 4 Apr 2023 12:56:57 -0300
Subject: [PATCH] Ignore deprecation warnings triggered by pythran 0.12.1
These happen with python 3.11, setuptools 67.6.1, numpy 1.24.2.
When pythran 0.12.1 is installed, I get 24 doctest failures due to
deprecation warnings; they are all gone with this commit.
[backported from 839a6e928c264a9863bd42860c78ae95a6d9f3e0]
---
src/sage/all.py | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/sage/all.py b/src/sage/all.py
index 93588df1b93..ee775aad0e9 100644
--- a/src/sage/all.py
+++ b/src/sage/all.py
@@ -96,9 +96,17 @@ warnings.filterwarnings('ignore', category=DeprecationWarning,
warnings.filterwarnings('ignore', category=DeprecationWarning,
module='(.*[.]_vendor[.])?packaging')
-# Ignore numpy warnings triggered by pythran
+# Ignore a few warnings triggered by pythran 0.12.1
warnings.filterwarnings('ignore', category=DeprecationWarning,
- module='pythran')
+ message='\n\n `numpy.distutils` is deprecated since NumPy 1.23.0',
+ module='pythran.dist')
+warnings.filterwarnings('ignore', category=DeprecationWarning,
+ message='pkg_resources is deprecated as an API|'
+ 'Deprecated call to `pkg_resources.declare_namespace(.*)`',
+ module='pkg_resources')
+warnings.filterwarnings('ignore', category=DeprecationWarning,
+ message='msvccompiler is deprecated and slated to be removed',
+ module='distutils.msvccompiler')
warnings.filterwarnings('ignore', category=DeprecationWarning,
message='The distutils(.sysconfig module| package) is deprecated',
--
2.40.0

View File

@ -1,8 +1,8 @@
diff --git a/src/sage/graphs/graph.py b/src/sage/graphs/graph.py
index c2e42bcbd3..b6a10efbf4 100644
index c2e42bcbd38..0d13f071dc4 100644
--- a/src/sage/graphs/graph.py
+++ b/src/sage/graphs/graph.py
@@ -6786,13 +6786,21 @@ def cliques_number_of(self, vertices=None, cliques=None):
@@ -6786,13 +6786,26 @@ def cliques_number_of(self, vertices=None, cliques=None):
{(0, 0): 2, (0, 1): 3, (0, 2): 2, (1, 0): 2, (1, 1): 3, (1, 2): 2}
sage: F.cliques_number_of(vertices=[(0, 1), (1, 2)])
{(0, 1): 3, (1, 2): 2}
@ -18,15 +18,20 @@ index c2e42bcbd3..b6a10efbf4 100644
+ if cliques is None:
+ cliques = self.cliques_maximal()
+
+ if vertices in self: # single vertex
+ if vertices in self: # single vertex
+ return sum(1 for c in cliques if vertices in c)
+ else:
+ return { v : sum(1 for c in cliques if v in c)
+ for v in vertices or self }
+
+ from collections import Counter
+ count = Counter()
+
+ for c in cliques:
+ count.update(c)
+
+ return {v : count[v] for v in vertices or self}
@doc_index("Clique-related methods")
def cliques_get_max_clique_graph(self):
@@ -7493,17 +7501,32 @@ def cliques_containing_vertex(self, vertices=None, cliques=None):
@@ -7493,17 +7506,32 @@ def cliques_containing_vertex(self, vertices=None, cliques=None):
sage: C = Graph('DJ{')
sage: C.cliques_containing_vertex()
@ -62,7 +67,7 @@ index c2e42bcbd3..b6a10efbf4 100644
Since each clique of a 2 dimensional grid corresponds to an edge, the
number of cliques in which a vertex is involved equals its degree::
@@ -7518,8 +7541,14 @@ def cliques_containing_vertex(self, vertices=None, cliques=None):
@@ -7518,8 +7546,20 @@ def cliques_containing_vertex(self, vertices=None, cliques=None):
sage: sorted(sorted(x for x in L) for L in d[(0, 1)])
[[(0, 0), (0, 1)], [(0, 1), (0, 2)], [(0, 1), (1, 1)]]
"""
@ -71,11 +76,17 @@ index c2e42bcbd3..b6a10efbf4 100644
+ if cliques is None:
+ cliques = self.cliques_maximal()
+
+ if vertices in self: # single vertex
+ if vertices in self: # single vertex
+ return [c for c in cliques if vertices in c]
+ else:
+ return { v : [c for c in cliques if v in c]
+ for v in vertices or self }
+
+ from collections import defaultdict
+ d = defaultdict(list)
+
+ for c in cliques:
+ for v in c:
+ d[v].append(c)
+
+ return {v : d[v] for v in vertices or self}
@doc_index("Clique-related methods")
def clique_complex(self):

View File

@ -0,0 +1,64 @@
diff --git a/src/sage/libs/linbox/conversion.pxd b/src/sage/libs/linbox/conversion.pxd
index 7794c9edc39..1753277b1f1 100644
--- a/src/sage/libs/linbox/conversion.pxd
+++ b/src/sage/libs/linbox/conversion.pxd
@@ -177,9 +177,8 @@ cdef inline Vector_integer_dense new_sage_vector_integer_dense(P, DenseVector_in
- v -- linbox vector
"""
cdef Vector_integer_dense res = P()
- cdef cppvector[Integer] * vec = &v.refRep()
cdef size_t i
for i in range(<size_t> res._degree):
- mpz_set(res._entries[i], vec[0][i].get_mpz_const())
+ mpz_set(res._entries[i], v.getEntry(i).get_mpz_const())
return res
diff --git a/src/sage/libs/linbox/linbox.pxd b/src/sage/libs/linbox/linbox.pxd
index 9112d151f8b..bfeda4b6042 100644
--- a/src/sage/libs/linbox/linbox.pxd
+++ b/src/sage/libs/linbox/linbox.pxd
@@ -32,7 +32,6 @@ cdef extern from "linbox/matrix/dense-matrix.h":
ctypedef Modular_double Field
ctypedef double Element
DenseMatrix_Modular_double(Field F, size_t m, size_t n)
- DenseMatrix_Modular_double(Field F, Element*, size_t m, size_t n)
void setEntry(size_t i, size_t j, Element& a)
Element &getEntry(size_t i, size_t j)
@@ -42,7 +41,6 @@ cdef extern from "linbox/matrix/dense-matrix.h":
ctypedef Modular_float Field
ctypedef float Element
DenseMatrix_Modular_float(Field F, size_t m, size_t n)
- DenseMatrix_Modular_float(Field F, Element*, size_t m, size_t n)
void setEntry(size_t i, size_t j, Element& a)
Element &getEntry(size_t i, size_t j)
@@ -101,7 +99,6 @@ cdef extern from "linbox/vector/vector.h":
DenseVector_integer (Field &F)
DenseVector_integer (Field &F, long& m)
DenseVector_integer (Field &F, cppvector[Integer]&)
- cppvector[Element]& refRep()
size_t size()
void resize(size_t)
void resize(size_t n, const Element&)
diff --git a/src/sage/matrix/matrix_modn_dense_template.pxi b/src/sage/matrix/matrix_modn_dense_template.pxi
index abf29badce6..68b869ce314 100644
--- a/src/sage/matrix/matrix_modn_dense_template.pxi
+++ b/src/sage/matrix/matrix_modn_dense_template.pxi
@@ -221,9 +221,14 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_
return 0,[]
cdef ModField *F = new ModField(<long>modulus)
- cdef DenseMatrix *A = new DenseMatrix(F[0], <ModField.Element*>entries,<Py_ssize_t>nrows, <Py_ssize_t>ncols)
- cdef Py_ssize_t r = reducedRowEchelonize(A[0])
+ cdef DenseMatrix *A = new DenseMatrix(F[0], nrows, ncols)
+
cdef Py_ssize_t i,j
+ for i in range(nrows):
+ for j in range(ncols):
+ A.setEntry(i, j, entries[i*ncols+j])
+
+ cdef Py_ssize_t r = reducedRowEchelonize(A[0])
for i in range(nrows):
for j in range(ncols):
entries[i*ncols+j] = <celement>A.getEntry(i,j)

View File

@ -0,0 +1,569 @@
diff --git a/build/pkgs/ecl/dependencies b/build/pkgs/ecl/dependencies
index cda6316bf5a..51a953403e9 100644
--- a/build/pkgs/ecl/dependencies
+++ b/build/pkgs/ecl/dependencies
@@ -1,4 +1,4 @@
-$(MP_LIBRARY) readline gc libffi
+$(MP_LIBRARY) readline gc libffi info
----------
All lines of this file are ignored except the first.
diff --git a/build/pkgs/ecl/spkg-configure.m4 b/build/pkgs/ecl/spkg-configure.m4
index ae1e0ac5e1a..7dbcfa6377b 100644
--- a/build/pkgs/ecl/spkg-configure.m4
+++ b/build/pkgs/ecl/spkg-configure.m4
@@ -35,10 +35,7 @@ SAGE_SPKG_CONFIGURE([ecl], [
AC_SUBST(SAGE_ECL_CONFIG, [$ECL_CONFIG])
fi
- # Maxima cannot yet be provided by the system, so we always use
+ # Kenzo cannot yet be provided by the system, so we always use
# the SAGE_LOCAL path for now.
- AC_SUBST(SAGE_MAXIMA_FAS, ['${prefix}'/lib/ecl/maxima.fas])
-
- # Likewise for the optional Kenzo SPKG
AC_SUBST(SAGE_KENZO_FAS, ['${prefix}'/lib/ecl/kenzo.fas])
])
diff --git a/build/pkgs/ecl/spkg-install.in b/build/pkgs/ecl/spkg-install.in
index ee1667aec16..72083337942 100644
--- a/build/pkgs/ecl/spkg-install.in
+++ b/build/pkgs/ecl/spkg-install.in
@@ -31,18 +31,6 @@ cp "$SAGE_ROOT"/config/config.* src
if [ x"$SAGE_SPKG_INSTALL_DOCS" != xyes ] ; then
ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no"
-else
- # ECL 2020 needs modern makeinfo
- command -v texi2any >/dev/null 2>&1
- if [ $? -ne 0 ]; then # texi2any not found -> makeinfo too old, if present
- ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no"
- else
- if makeinfo -c foo 2>&1 | grep -q invalid; then
- # makeinfo found but does not support all options that ecl
- # likes to use
- ECL_CONFIGURE="$ECL_CONFIGURE --enable-manual=no"
- fi
- fi
fi
sdh_configure $SAGE_CONFIGURE_GMP \
diff --git a/build/pkgs/giac/spkg-configure.m4 b/build/pkgs/giac/spkg-configure.m4
index 5859e35f12e..b677184b7be 100644
--- a/build/pkgs/giac/spkg-configure.m4
+++ b/build/pkgs/giac/spkg-configure.m4
@@ -5,7 +5,7 @@ SAGE_SPKG_CONFIGURE([giac], [
m4_pushdef([GIAC_MAX_VERSION], [1.9.999])
AC_CACHE_CHECK([for giac >= ]GIAC_MIN_VERSION[, <= ]GIAC_MAX_VERSION, [ac_cv_path_GIAC], [
AC_PATH_PROGS_FEATURE_CHECK([GIAC], [giac], [
- giac_version=$($ac_path_GIAC --version 2> /dev/null | tail -1)
+ giac_version=$($ac_path_GIAC --version 2> /dev/null | tail -n -1)
AS_IF([test -n "$giac_version"], [
AX_COMPARE_VERSION([$giac_version], [ge], GIAC_MIN_VERSION, [
AX_COMPARE_VERSION([$giac_version], [le], GIAC_MAX_VERSION, [
diff --git a/build/pkgs/info/spkg-configure.m4 b/build/pkgs/info/spkg-configure.m4
index 0980a4b8ef8..85fe1ea4731 100644
--- a/build/pkgs/info/spkg-configure.m4
+++ b/build/pkgs/info/spkg-configure.m4
@@ -1,4 +1,14 @@
SAGE_SPKG_CONFIGURE([info], [
AC_PATH_PROG(INFO, info)
- AS_IF([test -z "${INFO}"], [sage_spkg_install_info=yes])
+ AS_IF([test -z "${INFO}"], [sage_spkg_install_info=yes
+ ], [
+ dnl very old makeinfo are not texi2any, newer are symlinks to texi2any
+ AC_PATH_PROG(TEXI2ANY, texi2any)
+ AS_IF([test -z "${TEXI2ANY}"], [sage_spkg_install_info=yes
+ ], [
+ AS_IF([makeinfo -c foo 2>&1 | grep -q invalid], [
+ dnl makeinfo found, but too old, and does not support all options that ecl likes to use
+ sage_spkg_install_info=yes])
+ ])
+ ])
])
diff --git a/build/pkgs/info/spkg-install.in b/build/pkgs/info/spkg-install.in
index 8086e4b2ec8..3ea8c053669 100644
--- a/build/pkgs/info/spkg-install.in
+++ b/build/pkgs/info/spkg-install.in
@@ -1,2 +1,2 @@
-cd src/info
+cd src
sdh_make_install
diff --git a/build/pkgs/info/type b/build/pkgs/info/type
index 134d9bc32d5..a6a7b9cd726 100644
--- a/build/pkgs/info/type
+++ b/build/pkgs/info/type
@@ -1 +1 @@
-optional
+standard
diff --git a/build/pkgs/maxima/checksums.ini b/build/pkgs/maxima/checksums.ini
index a804c7b831f..0f594389fe6 100644
--- a/build/pkgs/maxima/checksums.ini
+++ b/build/pkgs/maxima/checksums.ini
@@ -1,5 +1,5 @@
tarball=maxima-VERSION.tar.gz
-sha1=ed15d5285794413ba94412079eca3d0fa55a47bf
-md5=9b9ae1dace55b1386739dabaa9122e60
-cksum=1765409766
+sha1=1010594e6d6082bbd8efaac1b7756ec1721a4ed5
+md5=3c01f1daa6936e11d8713fef7751d3fe
+cksum=2420393096
upstream_url=https://sourceforge.net/projects/maxima/files/Maxima-source/VERSION-source/maxima-VERSION.tar.gz/download
diff --git a/build/pkgs/maxima/distros/arch.txt b/build/pkgs/maxima/distros/arch.txt
index 6400290f44d..6ac052fa62b 100644
--- a/build/pkgs/maxima/distros/arch.txt
+++ b/build/pkgs/maxima/distros/arch.txt
@@ -1 +1 @@
-maxima-ecl
+maxima-fas
diff --git a/build/pkgs/maxima/distros/cygwin.txt b/build/pkgs/maxima/distros/cygwin.txt
new file mode 100644
index 00000000000..f5fe3fdc6cb
--- /dev/null
+++ b/build/pkgs/maxima/distros/cygwin.txt
@@ -0,0 +1 @@
+maxima
diff --git a/build/pkgs/maxima/distros/freebsd.txt b/build/pkgs/maxima/distros/freebsd.txt
new file mode 100644
index 00000000000..766a71b5074
--- /dev/null
+++ b/build/pkgs/maxima/distros/freebsd.txt
@@ -0,0 +1 @@
+math/maxima
diff --git a/build/pkgs/maxima/distros/gentoo.txt b/build/pkgs/maxima/distros/gentoo.txt
new file mode 100644
index 00000000000..85fb33f1610
--- /dev/null
+++ b/build/pkgs/maxima/distros/gentoo.txt
@@ -0,0 +1,2 @@
+sci-mathematics/maxima[ecls]
+
diff --git a/build/pkgs/maxima/package-version.txt b/build/pkgs/maxima/package-version.txt
index 83476624dc0..5681375f3be 100644
--- a/build/pkgs/maxima/package-version.txt
+++ b/build/pkgs/maxima/package-version.txt
@@ -1 +1 @@
-5.45.0.p0
+5.46.0
diff --git a/build/pkgs/maxima/patches/matrixexp.patch b/build/pkgs/maxima/patches/matrixexp.patch
deleted file mode 100644
index 5c8527c33bf..00000000000
--- a/build/pkgs/maxima/patches/matrixexp.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/share/linearalgebra/matrixexp.lisp b/share/linearalgebra/matrixexp.lisp
-index 218bf35..f2fd468 100644
---- a/share/linearalgebra/matrixexp.lisp
-+++ b/share/linearalgebra/matrixexp.lisp
-@@ -138,8 +138,8 @@
- (print `(ratvars = ,$ratvars gcd = '$gcd algebraic = ,$algebraic))
- (print `(ratfac = ,$ratfac))
- (merror "Unable to find the spectrum")))
--
-- (setq res ($fullratsimp (ncpower (sub (mult z ($ident n)) mat) -1) z))
-+
-+ (setq res ($fullratsimp ($invert_by_lu (sub (mult z ($ident n)) mat) '$crering) z))
- (setq m (length sp))
- (dotimes (i m)
- (setq zi (nth i sp))
diff --git a/build/pkgs/maxima/patches/maxima.system.patch b/build/pkgs/maxima/patches/maxima.system.patch
deleted file mode 100644
index 74db62e7f9f..00000000000
--- a/build/pkgs/maxima/patches/maxima.system.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff --git a/src/maxima.system b/src/maxima.system
-index 76f2452..cf25f51 100644
---- a/src/maxima.system
-+++ b/src/maxima.system
-@@ -1,5 +1,8 @@
- ;;; -*- Lisp -*-
-
-+(require :cmp)
-+(setf c::*compile-in-constants* t)
-+
- (in-package :cl-user)
-
- (pushnew :cl *features*)
-@@ -75,6 +78,11 @@
- ;; Convert dir/foo.fas to dir/foo.o
- (make-pathname :type "o" :defaults p))
- files)))
-+ (c::build-fasl "binary-ecl/maxima" :lisp-files obj
-+ :ld-flags
-+ (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*"
-+ (find-package "MAXIMA")))))
-+ (if (and x (not (string= x ""))) (list x))))
- (c::build-program "binary-ecl/maxima" :lisp-files obj
- :ld-flags
- (let ((x (symbol-value (find-symbol "*AUTOCONF-LD-FLAGS*"
diff --git a/build/pkgs/maxima/spkg-configure.m4 b/build/pkgs/maxima/spkg-configure.m4
new file mode 100644
index 00000000000..dc54525320e
--- /dev/null
+++ b/build/pkgs/maxima/spkg-configure.m4
@@ -0,0 +1,46 @@
+SAGE_SPKG_CONFIGURE([maxima], [
+ m4_pushdef([SAGE_MAXIMA_MINVER],["5.45.0"])dnl this version and higher allowed
+ SAGE_SPKG_DEPCHECK([ecl], [
+ dnl First check for the "maxima" executable in the user's PATH, because
+ dnl we still use pexpect to communicate with it in a few places.
+ AC_CACHE_CHECK([for Maxima >= $SAGE_MAXIMA_MINVER], [ac_cv_path_MAXIMA], [
+ AC_PATH_PROGS_FEATURE_CHECK([MAXIMA], [maxima], [
+ maxima_version=`$ac_path_MAXIMA --version 2>&1 | tail -n -1\
+ | $SED -n -e 's/Maxima *\([[0-9]]*\.[[0-9]]*\.[[0-9]]*\)/\1/p'`
+ AS_IF([test -n "$maxima_version"], [
+ AX_COMPARE_VERSION([$maxima_version], [ge], [SAGE_MAXIMA_MINVER], [
+ ac_cv_path_MAXIMA="$ac_path_MAXIMA"
+ ac_path_MAXIMA_found=:
+ ])
+ ])
+ ])
+ ])
+ SAGE_MAXIMA="$ac_cv_path_MAXIMA"
+ AS_IF([test -z "${SAGE_MAXIMA}"], [
+ sage_spkg_install_maxima=yes
+ ],[
+ dnl If we have the executable, check also for the ECL library.
+ AC_MSG_CHECKING([if ECL can "require" the maxima module])
+ AS_IF([ecl --eval "(require 'maxima)" --eval "(quit)" \
+ >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD], [
+ AC_MSG_RESULT(yes)
+ ], [
+ AC_MSG_RESULT(no)
+ sage_spkg_install_maxima=yes
+ ])
+ ])
+ ])
+ m4_popdef([SAGE_MAXIMA_MINVER])
+],[],[],[
+ # post-check
+ AS_IF([test x$sage_spkg_install_maxima = xyes], [
+ dnl Leaving this variable empty will tell sagelib to load
+ dnl the maxima library (within ECL) by name instead of by
+ dnl absolute path.
+ SAGE_MAXIMA='${prefix}'/bin/maxima
+ SAGE_MAXIMA_FAS='${prefix}'/lib/ecl/maxima.fas
+ ])
+
+ AC_SUBST(SAGE_MAXIMA, "${SAGE_MAXIMA}")
+ AC_SUBST(SAGE_MAXIMA_FAS, "${SAGE_MAXIMA_FAS}")
+])
diff --git a/build/pkgs/maxima/spkg-install.in b/build/pkgs/maxima/spkg-install.in
index 3ae6382f9ba..cdb6fbf2069 100644
--- a/build/pkgs/maxima/spkg-install.in
+++ b/build/pkgs/maxima/spkg-install.in
@@ -28,28 +28,6 @@ echo
echo "Now configuring Maxima..."
sdh_configure --enable-ecl git_found=false
-# Note the following is regression in maxima build system
-# see https://sourceforge.net/p/maxima/bugs/3278/
-# and https://sourceforge.net/p/maxima/bugs/2878/
-# For the previous time it was fixed.
-#---------------------------------------------------------------
-# Touching html and info file to avoid to regenerate them.
-# This must be done after configuration since the timestamp need
-# to be later than include-maxima.texi which is generated at
-# configuration time
-for i in doc/info/*.html ; do
- touch "${i}"
-done
-touch doc/info/maxima.info*
-# Maxima 5.44.0 build_html.sh is not compatible with makeinfo 4.8
-# (which is /usr/bin/makeinfo on macOS). #30063
-# Do not build the HTML docs unless the user asks for it,
-# in which case it is their problem to install a better
-# makeinfo version.
-if [[ "$SAGE_SPKG_INSTALL_DOCS" != yes ]] ; then
-touch doc/info/maxima_toc.html interfaces/xmaxima/doc/xmaxima.html
-fi
-
#---------------------------------------------------------------
sdh_make
diff --git a/build/pkgs/tox/spkg-configure.m4 b/build/pkgs/tox/spkg-configure.m4
index 7d8ade4c14b..3de0b9b710d 100644
--- a/build/pkgs/tox/spkg-configure.m4
+++ b/build/pkgs/tox/spkg-configure.m4
@@ -5,7 +5,7 @@ SAGE_SPKG_CONFIGURE([tox], [
m4_pushdef([TOX4_MIN_VERSION], [4.0.15])
AC_CACHE_CHECK([for tox 3 >= ]TOX3_MIN_VERSION[ or tox 4 >= ]TOX4_MIN_VERSION, [ac_cv_path_TOX], [
AC_PATH_PROGS_FEATURE_CHECK([TOX], [tox], [
- tox_version=$($ac_path_TOX --version 2> /dev/null | tail -1)
+ tox_version=$($ac_path_TOX --version 2> /dev/null | tail -n -1)
AS_IF([test -n "$tox_version"], [
AX_COMPARE_VERSION([$tox_version], [lt], [4], [
AX_COMPARE_VERSION([$tox_version], [ge], TOX3_MIN_VERSION, [
diff --git a/pkgs/sage-conf/_sage_conf/_conf.py.in b/pkgs/sage-conf/_sage_conf/_conf.py.in
index d66bdb3d264..f2e197b45ed 100644
--- a/pkgs/sage-conf/_sage_conf/_conf.py.in
+++ b/pkgs/sage-conf/_sage_conf/_conf.py.in
@@ -9,9 +9,11 @@ VERSION = "@PACKAGE_VERSION@"
SAGE_LOCAL = "@prefix@"
SAGE_ROOT = "@SAGE_ROOT@"
-MAXIMA = "@prefix@/bin/maxima"
+# The path to the standalone maxima executable.
+MAXIMA = "@SAGE_MAXIMA@".replace('${prefix}', SAGE_LOCAL)
-# Delete this line if your ECL can load maxima without further prodding.
+# Set this to the empty string if your ECL can load maxima without
+# further prodding.
MAXIMA_FAS = "@SAGE_MAXIMA_FAS@".replace('${prefix}', SAGE_LOCAL)
# Delete this line if your ECL can load Kenzo without further prodding.
diff --git a/src/bin/sage-env b/src/bin/sage-env
index a7da60df28f..13b54fa7e92 100644
--- a/src/bin/sage-env
+++ b/src/bin/sage-env
@@ -440,9 +440,6 @@ if [ -d "$DOT_SAGE" ] ; then
fi
fi
-if [ -n "$SAGE_LOCAL" ]; then
- export MAXIMA_PREFIX="$SAGE_LOCAL"
-fi
export MAXIMA_USERDIR="$DOT_SAGE/maxima"
if [ -n "$SAGE_LOCAL" ]; then
diff --git a/src/sage/calculus/calculus.py b/src/sage/calculus/calculus.py
index dae380180ac..ee8f632e94c 100644
--- a/src/sage/calculus/calculus.py
+++ b/src/sage/calculus/calculus.py
@@ -136,10 +136,11 @@
[ 1/2*(e^(2*sqrt(x)) + 1)*e^(x - sqrt(x)) 1/2*(x*e^(2*sqrt(x)) - x)*sqrt(x)*e^(x - sqrt(x))]
[ 1/2*(e^(2*sqrt(x)) - 1)*e^(x - sqrt(x))/x^(3/2) 1/2*(e^(2*sqrt(x)) + 1)*e^(x - sqrt(x))]
-And complex exponentiation works now::
+Complex exponentiation works, but may require a patched version of
+maxima (:trac:`32898`) for now::
sage: M = i*matrix([[pi]])
- sage: e^M
+ sage: e^M # not tested, requires patched maxima
[-1]
sage: M = i*matrix([[pi,0],[0,2*pi]])
sage: e^M
@@ -1186,8 +1187,18 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv):
e
sage: f.limit(x=5)
7776/3125
- sage: f.limit(x=1.2)
+
+ Domain to real, a regression in 5.46.0, see https://sf.net/p/maxima/bugs/4138 ::
+
+ sage: maxima_calculus.eval("domain:real")
+ ...
+ sage: f.limit(x=1.2).n()
2.06961575467...
+ sage: maxima_calculus.eval("domain:complex");
+ ...
+
+ Otherwise, it works ::
+
sage: f.limit(x=I, taylor=True)
(-I + 1)^I
sage: f(x=1.2)
@@ -1215,7 +1226,7 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv):
With this example, Maxima is looking for a LOT of information::
sage: assume(a>0)
- sage: limit(x^a,x=0)
+ sage: limit(x^a,x=0) # random - maxima 5.46.0 does not need extra assumption
Traceback (most recent call last):
...
ValueError: Computation failed since Maxima requested additional
@@ -1224,7 +1235,7 @@ def limit(ex, dir=None, taylor=False, algorithm='maxima', **argv):
more details)
Is a an integer?
sage: assume(a,'integer')
- sage: limit(x^a, x=0)
+ sage: limit(x^a, x=0) # random - maxima 5.46.0 does not need extra assumption
Traceback (most recent call last):
...
ValueError: Computation failed since Maxima requested additional
@@ -2251,10 +2262,10 @@ def symbolic_expression_from_maxima_string(x, equals_sub=False, maxima=maxima):
True
sage: sefms("x # 3") == SR(x != 3)
True
- sage: solve([x != 5], x)
- [[x - 5 != 0]]
+ sage: solve([x != 5], x) in [[[x - 5 != 0]], [[x < 5], [5 < x]]]
+ True
sage: solve([2*x==3, x != 5], x)
- [[x == (3/2), (-7/2) != 0]]
+ [[x == (3/2)...
Make sure that we don't accidentally pick up variables in the maxima namespace (:trac:`8734`)::
diff --git a/src/sage/functions/exp_integral.py b/src/sage/functions/exp_integral.py
index e6c888c64b6..f314e525145 100644
--- a/src/sage/functions/exp_integral.py
+++ b/src/sage/functions/exp_integral.py
@@ -601,8 +601,8 @@ class Function_log_integral_offset(BuiltinFunction):
1/log(x)
sage: f.integrate(x)
-x*log_integral(2) + x*log_integral(x) - Ei(2*log(x))
- sage: Li(x).integrate(x,2.0,4.5)
- -2.5*log_integral(2) + 5.799321147411334
+ sage: Li(x).integrate(x,2.0,4.5).n(digits=10)
+ 3.186411697
sage: N(f.integrate(x,2.0,3.0)) # abs tol 1e-15
0.601621785860587
diff --git a/src/sage/interfaces/expect.py b/src/sage/interfaces/expect.py
index 68ae715e4c3..84adf0341b5 100644
--- a/src/sage/interfaces/expect.py
+++ b/src/sage/interfaces/expect.py
@@ -620,7 +620,7 @@ def quit(self, verbose=False):
sage: a = maxima('y')
sage: maxima.quit(verbose=True)
- Exiting Maxima with PID ... running .../bin/maxima...
+ Exiting Maxima with PID ... running ...maxima...
sage: a._check_valid()
Traceback (most recent call last):
...
diff --git a/src/sage/interfaces/maxima.py b/src/sage/interfaces/maxima.py
index 27b1e98a6ac..4829560f98b 100644
--- a/src/sage/interfaces/maxima.py
+++ b/src/sage/interfaces/maxima.py
@@ -622,11 +622,6 @@ def _start(self):
sage: m.is_running()
True
- Test that we can use more than 256MB RAM (see :trac:`6772`)::
-
- sage: a = maxima(10)^(10^5)
- sage: b = a^600 # long time -- about 10-15 seconds
-
"""
Expect._start(self)
self._sendline(r":lisp (defun tex-derivative (x l r) (tex (if $derivabbrev (tex-dabbrev x) (tex-d x '\\partial)) l r lop rop ))")
@@ -634,9 +629,6 @@ def _start(self):
# Don't use ! for factorials (#11539)
self._sendline(":lisp (remprop 'mfactorial 'grind)")
- # Remove limit on the max heapsize (since otherwise it defaults
- # to 256MB with ECL).
- self._sendline(":lisp (ext:set-limit 'ext:heap-size 0)")
self._eval_line('0;')
# set random seed
diff --git a/src/sage/interfaces/maxima_lib.py b/src/sage/interfaces/maxima_lib.py
index c263ac65f02..bba8504aa92 100644
--- a/src/sage/interfaces/maxima_lib.py
+++ b/src/sage/interfaces/maxima_lib.py
@@ -934,8 +934,15 @@ def sr_limit(self, expr, v, a, dir=None):
e
sage: limit(f,x = 5)
7776/3125
- sage: limit(f,x = 1.2)
+
+ Domain to real, a regression in 5.46.0, see https://sf.net/p/maxima/bugs/4138 ::
+
+ sage: maxima_calculus.eval("domain:real")
+ ...
+ sage: limit(f,x = 1.2).n()
2.06961575467...
+ sage: maxima_calculus.eval("domain:complex");
+ ...
sage: var('a')
a
sage: limit(x^a,x=0)
@@ -947,7 +954,7 @@ def sr_limit(self, expr, v, a, dir=None):
for more details)
Is a positive, negative or zero?
sage: assume(a>0)
- sage: limit(x^a,x=0)
+ sage: limit(x^a,x=0) # random - not needed for maxima 5.46.0
Traceback (most recent call last):
...
ValueError: Computation failed ...
diff --git a/src/sage/matrix/matrix2.pyx b/src/sage/matrix/matrix2.pyx
index e2e6449dfa9..15914b0be3e 100644
--- a/src/sage/matrix/matrix2.pyx
+++ b/src/sage/matrix/matrix2.pyx
@@ -15425,9 +15425,10 @@ cdef class Matrix(Matrix1):
TESTS:
- Check that sparse matrices are handled correctly (:trac:`28935`)::
+ Sparse matrices are handled correctly (:trac:`28935`), but may
+ require a patched version of maxima (:trac:`32898`) for now::
- sage: matrix.diagonal([0], sparse=True).exp()
+ sage: matrix.diagonal([0], sparse=True).exp() # not tested, requires patched maxima
[1]
sage: matrix.zero(CBF, 2, sparse=True).exp()
[1.000000000000000 0]
diff --git a/src/sage/matrix/matrix_symbolic_dense.pyx b/src/sage/matrix/matrix_symbolic_dense.pyx
index 19ca5c85cb2..58a25e002f6 100644
--- a/src/sage/matrix/matrix_symbolic_dense.pyx
+++ b/src/sage/matrix/matrix_symbolic_dense.pyx
@@ -402,7 +402,8 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense):
[1/2*(e^(2*x) + 1)*e^(-x) 1/2*(e^(2*x) - 1)*e^(-x)]
[1/2*(e^(2*x) - 1)*e^(-x) 1/2*(e^(2*x) + 1)*e^(-x)]
- Exp works on 0x0 and 1x1 matrices::
+ Exponentiation works on 0x0 and 1x1 matrices, but the 1x1 example
+ requires a patched version of maxima (:trac:`32898`) for now::
sage: m = matrix(SR,0,[]); m
[]
@@ -410,7 +411,7 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense):
[]
sage: m = matrix(SR,1,[2]); m
[2]
- sage: m.exp()
+ sage: m.exp() # not tested, requires patched maxima
[e^2]
Commuting matrices `m, n` have the property that
@@ -451,7 +452,6 @@ cdef class Matrix_symbolic_dense(Matrix_generic_dense):
[ 0 1/2*(e^(2*x) + 1)*e^(-x) 1/2*(e^(2*x) - 1)*e^(-x) 0]
[ 0 1/2*(e^(2*x) - 1)*e^(-x) 1/2*(e^(2*x) + 1)*e^(-x) 0]
[1/2*(e^(2*x) - 1)*e^(-x) 0 0 1/2*(e^(2*x) + 1)*e^(-x)]
-
"""
if not self.is_square():
raise ValueError("exp only defined on square matrices")
diff --git a/src/sage/symbolic/integration/integral.py b/src/sage/symbolic/integration/integral.py
index c82e9ed73c3..e84ad357ee2 100644
--- a/src/sage/symbolic/integration/integral.py
+++ b/src/sage/symbolic/integration/integral.py
@@ -741,14 +741,14 @@ def integrate(expression, v=None, a=None, b=None, algorithm=None, hold=False):
sage: _ = var('x,y')
sage: f = log(x^2+y^2)
- sage: res = integral(f,x,0.0001414, 1.); res
+ sage: res = integral(f,x,1414/10^7, 1); res
Traceback (most recent call last):
...
- ValueError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help (example of legal syntax is 'assume(50015104*y^2-50015103>0)', see `assume?` for more details)
- Is 50015104*y^2-50015103 positive, negative or zero?
+ ValueError: Computation failed since Maxima requested additional constraints; using the 'assume' command before evaluation *may* help ...
+ Is ... positive, negative or zero?
sage: assume(y>1)
- sage: res = integral(f,x,0.0001414, 1.); res
- 2*y*arctan(1.0/y) - 2*y*arctan(0.0001414/y) + 1.0*log(1.0*y^2 + 1.0) - 0.0001414*log(1.0*y^2 + 1.9993959999999997e-08) - 1.9997172
+ sage: res = integral(f,x,1414/10^7, 1); res
+ -2*y*arctan(707/5000000/y) + 2*y*arctan(1/y) + log(y^2 + 1) - 707/5000000*log(y^2 + 499849/25000000000000) - 4999293/2500000
sage: nres = numerical_integral(f.subs(y=2), 0.0001414, 1.); nres
(1.4638323264144..., 1.6251803529759...e-14)
sage: res.subs(y=2).n()
diff --git a/src/sage/symbolic/relation.py b/src/sage/symbolic/relation.py
index 94813315181..a72ab547c76 100644
--- a/src/sage/symbolic/relation.py
+++ b/src/sage/symbolic/relation.py
@@ -1787,8 +1787,8 @@ def solve_ineq_fourier(ineq, vars=None):
sage: y = var('y')
sage: solve_ineq_fourier([x+y<9,x-y>4],[x,y])
[[y + 4 < x, x < -y + 9, y < (5/2)]]
- sage: solve_ineq_fourier([x+y<9,x-y>4],[y,x])
- [[y < min(x - 4, -x + 9)]]
+ sage: solve_ineq_fourier([x+y<9,x-y>4],[y,x])[0][0](x=42)
+ y < -33
sage: solve_ineq_fourier([x^2>=0])
[[x < +Infinity]]

View File

@ -0,0 +1,54 @@
diff --git a/src/sage/calculus/calculus.py b/src/sage/calculus/calculus.py
index dae380180ac..ca3c59e63d2 100644
--- a/src/sage/calculus/calculus.py
+++ b/src/sage/calculus/calculus.py
@@ -1690,8 +1690,11 @@ def laplace(ex, t, s, algorithm='maxima'):
Testing SymPy::
- sage: laplace(t^n, t, s, algorithm='sympy')
- (gamma(n + 1)/(s*s^n), 0, re(n) > -1)
+ sage: F, a, cond = laplace(t^n, t, s, algorithm='sympy')
+ sage: a, cond
+ (0, re(n) > -1)
+ sage: F.simplify()
+ s^(-n - 1)*gamma(n + 1)
Testing Maxima::
@@ -1700,17 +1703,19 @@ def laplace(ex, t, s, algorithm='maxima'):
Check that :trac:`24212` is fixed::
- sage: laplace(cos(t^2), t, s, algorithm='sympy')
- (-1/2*sqrt(pi)*(sqrt(2)*cos(1/4*s^2)*fresnel_sin(1/2*sqrt(2)*s/sqrt(pi)) -
- sqrt(2)*fresnel_cos(1/2*sqrt(2)*s/sqrt(pi))*sin(1/4*s^2) - cos(1/4*pi + 1/4*s^2)),
- 0, True)
+ sage: F, a, cond = laplace(cos(t^2), t, s, algorithm='sympy')
+ sage: a, cond
+ (0, True)
+ sage: F._sympy_().simplify()
+ sqrt(pi)*(sqrt(2)*sin(s**2/4)*fresnelc(sqrt(2)*s/(2*sqrt(pi))) -
+ sqrt(2)*cos(s**2/4)*fresnels(sqrt(2)*s/(2*sqrt(pi))) + cos(s**2/4 + pi/4))/2
Testing result from SymPy that Sage doesn't know how to handle::
sage: laplace(cos(-1/t), t, s, algorithm='sympy')
Traceback (most recent call last):
...
- AttributeError: Unable to convert SymPy result (=meijerg(((), ()), ((-1/2, 0, 1/2), (0,)), s**2/16)/4) into Sage
+ AttributeError: Unable to convert SymPy result (=meijerg(((), ()), ((-1/2, 0, 1/2), (0,)), ...)/4) into Sage
"""
if not isinstance(ex, (Expression, Function)):
ex = SR(ex)
@@ -1817,8 +1822,8 @@ def inverse_laplace(ex, s, t, algorithm='maxima'):
Transform an expression involving a time-shift, via SymPy::
- sage: inverse_laplace(1/s^2*exp(-s), s, t, algorithm='sympy')
- -(log(e^(-t)) + 1)*heaviside(t - 1)
+ sage: inverse_laplace(1/s^2*exp(-s), s, t, algorithm='sympy').simplify()
+ (t - 1)*heaviside(t - 1)
The same instance with Giac::

View File

@ -1,7 +1,7 @@
#! /bin/sh
URL_BASE_PR="https://github.com/sagemath/sage/pull/"
URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/9.8..."
URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/10.0..."
case "$1" in
-n) DO=echo ;;
@ -15,49 +15,13 @@ get_pr() {
$DO wget "$URL_BASE_PR$pr.$ext" -O "$pr-$desc.patch"
}
get_trac() {
ticket=$1
desc=$(echo "$2" | sed -e 's/ /_/g')
commit=$3
$DO wget "$URL_BASE_COMPARE$commit.diff" -O "$ticket-$desc-$commit.patch"
}
# run from patches dir
cd $(dirname "$0")
# merged in 10.0.beta0
get_trac 34851 "support singular 4.3.1.p3" 5e5737a0c
get_pr 35068 "fix tests giac 1.9.0.35" patch
# merged in 10.0.beta1
get_pr 35058 "skip unstable tests klyachko"
# merged in 10.0.beta2
get_pr 34994 "fix tests numpy 1.24"
get_pr 34997 "fix edge case of integer_check"
# merged in 10.0.beta3
get_pr 34995 "support tachyon 0.99.2"
# merged in 10.0.beta4
get_pr 34980 "avoid factoring in is_prime"
# merged in 10.0.beta5
get_pr 35094 "support gap 4.12" # includes PR 35093
# merged in 10.0.beta6
get_pr 35127 "fix very slow test stream.py"
get_pr 35177 "matplotlib 3.7"
get_pr 35195 "workaround ecl race"
get_pr 35204 "fix sage-cleaner"
# merged in 10.0.beta7
get_pr 35250 "nauty 2.8.6"
# merged in 10.0.beta8
#get_pr 35337 "ipython 8.11"
get_pr 35423 "ipython 8.12" # includes PR 35337
get_pr 35438 "pythran 0.12.1"
# positive review
get_pr 35584 "networkx 3.1"
get_pr 35612 "linbox 1.7.0"
get_pr 35635 "sympy 1.12"
# needs review
get_pr 35584 "networkx 3.1"
get_pr 35619 "maxima 5.46.0"

View File

@ -1,7 +1,7 @@
# Template file for 'sagemath'
pkgname=sagemath
version=9.8
revision=2
version=10.0
revision=1
build_wrksrc=pkgs/sagemath-standard
build_style=python3-module
_bindir=/usr/lib/sagemath/$version/bin
@ -31,8 +31,10 @@ short_desc="Open source mathematics software"
maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
license="GPL-2.0-or-later"
homepage="http://sagemath.org/"
changelog="https://github.com/sagemath/sage/releases"
distfiles="https://github.com/sagemath/sage/archive/refs/tags/$version.tar.gz"
checksum=2aff28bd1d18c2d526581f5298acb8336f5b92db5675a7403dec8eaf9a86bc4c
checksum=60858efd0d1f2526486740962bf72c99f9141a56caf8395f3291fded276faf55
nocross="due to ntl (flintlib), fflas-ffpack, givaro, linbox, cysignals, sympow, maxima"
do_configure() {
# git tree needs bootstrapping