pytensor 3.2.1__tar.gz → 3.2.2__tar.gz
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.
- {pytensor-3.2.1/pytensor.egg-info → pytensor-3.2.2}/PKG-INFO +1 -1
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/basic.rst +4 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/_version.py +3 -3
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/scalar.py +11 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/subtensor.py +2 -2
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/subtensor.py +1 -2
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/subtensor.py +3 -10
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/math.py +34 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/math.py +6 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/subtensor.py +25 -23
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/math.py +4 -0
- {pytensor-3.2.1 → pytensor-3.2.2/pytensor.egg-info}/PKG-INFO +1 -1
- {pytensor-3.2.1 → pytensor-3.2.2}/LICENSE.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/MANIFEST.in +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/README.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/.templates/PLACEHOLDER +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/.templates/layout.html +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/.templates/nb-badges.html +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/.templates/rendered_citation.html +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/LICENSE.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/README.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/_drafts/benchmark_mlx_v_jax_corrected.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/_thumbnails/autodiff/vector_jacobian_product.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/acknowledgement.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/bcast.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/bcast.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/blog.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/conf.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/core_development_guide.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/css.inc +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/dev_start_guide.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/environment.yml +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/apply.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/apply.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/apply2.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/creating_a_c_op.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/creating_a_numba_jax_op.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/creating_an_op.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/ctype.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/extending_faq.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/extending_pytensor_solution_1.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/graph_rewriting.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/graphstructures.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/inplace.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/op.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/other_ops.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/pics/symbolic_graph_opt.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/pics/symbolic_graph_unopt.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/pipeline.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/scan.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/tips.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/type.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/unification_kanren.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/unittest.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/extending/using_params.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/faq.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/applications/normalizing_flows_in_pytensor.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/applications/tiny_transformer_llm.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/autodiff/vector_jacobian_product.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/introduction/pytensor_intro.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/optimize/root.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/page_footer.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/rewrites/graph_rewrites.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/scan/scan_tutorial.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/generate_dtype_tensor_table.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/glossary.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/Elman_srnn.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/PyTensor.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/PyTensor_RGB.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/PyTensor_logo.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/binder.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/blocksparse.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/colab.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/github.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/lstm.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/lstm_memorycell.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/talk2010.gif +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/images/talk2010.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/install.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/internal/how_to_release.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/internal/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/internal/metadocumentation.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/introduction.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/debugmode.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/function.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/io.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/mode.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/nanguardmode.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/opfromgraph.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/ops.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/profilemode.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/compile/shared.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/config.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/d3viz/css/d3viz.css +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/d3viz/js/d3viz.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/mlp.html +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/mlp.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/mlp2.html +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/mlp2.pdf +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/mlp2.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/ofg.html +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/examples/ofg2.html +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/index.ipynb +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/index_files/index_10_0.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/index_files/index_11_0.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/index_files/index_24_0.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/d3viz/index_files/index_25_0.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/graph/features.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/graph/fgraph.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/graph/graph.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/graph/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/graph/op.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/graph/replace.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/graph/type.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/graph/utils.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/misc/pkl_utils.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/printing.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/scalar/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/scan.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/sparse/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/sparse/sandbox.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/basic_opt.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/bcast.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/bcast.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/elemwise.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/extra_ops.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/fft.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/functional.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/io.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/linalg.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/math_opt.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/nlinalg.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/optimize.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/plot_fft.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/random.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/slinalg.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/tensor/utils.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/typed_list.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/xtensor/index.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/xtensor/linalg.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/xtensor/math.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/xtensor/module_functions.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/xtensor/random.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/xtensor/signal.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/library/xtensor/type.md +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/links.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/optimizations.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/pylintrc +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/robots.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/troubleshooting.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/adding.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/adding_solution_1.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/aliasing.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/apply.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/apply.svg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/bcast.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/broadcasting.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/conditions.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/debug_faq.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/dlogistic.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/examples.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/faq_tutorial.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/gradients.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/index.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/loading_and_saving.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/logistic.gp +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/logistic.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/loop.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/loop_solution_1.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/modes.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/modes_solution_1.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/multi_cores.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/nan_tutorial.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/pics/d3viz.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/pics/logreg_pydotprint_predict.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/pics/logreg_pydotprint_prediction.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/pics/logreg_pydotprint_train.png +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/printing_drawing.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/prng.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/profiling.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/profiling_example.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/profiling_example_out.prof +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/shape_info.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/sparse.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/tutorial/symbolic_graphs.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/doc/user_guide.rst +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pyproject.toml +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/_sparse_lazy.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/alloc.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/blockwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/core.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/diagonal.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/dimshuffle.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/dot.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/elemwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/orthogonal.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/permutation.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/positive_definite.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/reshape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/selection.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/specify.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/subtensor.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/symmetric.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/assumptions/triangular.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/bin/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/bin/pytensor_cache.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/breakpoint.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/aliasing.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/builders.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/compiledir.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/compilelock.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/debug/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/debug/debugmode.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/debug/dump.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/debug/monitormode.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/debug/nanguardmode.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/debug/profiling.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/executor.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/inner_function.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/io.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/maker.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/mode.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/rebuild.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/rewriting.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/compile/sharedvalue.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/configdefaults.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/configparser.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/css/d3-context-menu.css +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/css/d3viz.css +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/d3viz.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/formatting.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/html/template.html +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/js/d3-context-menu.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/js/d3.v3.min.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/js/d3viz.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/js/dagre-d3.min.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/d3viz/js/graphlib-dot.min.js +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/gradient.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/destroyhandler.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/features.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/fg.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/null_type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/op.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/replace.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/rewriting/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/rewriting/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/rewriting/db.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/rewriting/kanren.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/rewriting/reachability.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/rewriting/unify.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/rewriting/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/traversal.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/graph/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/ifelse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/ipython.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/c_code/lazylinker_c.c +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/c_code/pytensor_mod_helper.h +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/cmodule.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/cutils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/cvm.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/exceptions.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/interface.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/lazylinker_c.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/op.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/params_type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/c/type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/blas.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/blockwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/einsum.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/elemwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/extra_ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/linalg/constructors.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/linalg/products.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/linalg/solvers.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/linalg/summary.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/math.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/pad.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/random.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/scan.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/signal/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/signal/conv.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/sort.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/sparse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/dispatch/tensor_basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/linker.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/jax/ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/blas.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/blockwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/einsum.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/elemwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/extra_ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/linalg/products.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/linalg/solvers.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/linalg/summary.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/math.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/pad.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/scalar.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/signal/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/signal/conv.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/sort.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/dispatch/tensor_basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/mlx/linker.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/cache.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/_llvmlite_self_ref.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/_patch_pointer_add.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/blockwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/compile_ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/cython_support.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/elemwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/extra_ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/_LAPACK.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/constructors.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/cholesky.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/dispatch.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/eigen.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/lu.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/lu_factor.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/qr.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/qz.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/schur.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/decomposition/svd.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/products.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/cholesky.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/dispatch.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/general.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/hermitian.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/linear_control.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/lu_solve.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/posdef.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/symmetric.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/triangular.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/tridiagonal.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/solvers/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/summary.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/linalg/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/random.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/scalar.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/scan.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/signal/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/signal/conv.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/sort.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/sparse/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/sparse/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/sparse/math.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/sparse/variable.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/string_codegen.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/subtensor.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/tensor_basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/typed_list.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/dispatch/vectorize_codegen.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/numba/linker.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/blas.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/blockwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/elemwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/extra_ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/linalg/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/linalg/decomposition.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/linalg/inverse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/linalg/products.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/linalg/summary.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/math.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/scalar.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/dispatch/sort.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/pytorch/linker.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/link/vm.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/check_blas.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/check_blas_many.sh +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/check_duplicate_key.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/elemwise_openmp_speedup.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/elemwise_time_test.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/frozendict.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/may_share_memory.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/ordered_set.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/misc/pkl_utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/npy_2_compat.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/printing.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/py.typed +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/raise_op.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/c_code/Faddeeva.cc +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/c_code/Faddeeva.hh +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/c_code/gamma.c +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/c_code/incbet.c +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/loop.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scalar/sharedvar.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/checkpoints.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/op.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/db.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/inner_graph.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/inplace.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/io.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/merge.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/push_out.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/trace.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/rewriting/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/scan_perform.pyx +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/scan_perform_ext.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/scan/views.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/linalg.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/math.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/rewriting.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/sharedvar.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/sparse/variable.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/_core.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/batched.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/blas_c.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/c_code/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/c_code/alt_blas_common.h +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/c_code/alt_blas_template.c +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/c_code/blas_headers.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/c_code/codegen.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/gemm.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/gemv.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blas/ger.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/blockwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/einsum.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/elemwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/elemwise_cgen.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/exceptions.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/extra_ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/fft.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/fourier.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/functional.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/interpolate.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/_lazy.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/constructors.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/decomposition/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/decomposition/cholesky.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/decomposition/eigen.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/decomposition/lu.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/decomposition/qr.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/decomposition/schur.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/decomposition/svd.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/dtype_utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/inverse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/products.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/solvers/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/solvers/core.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/solvers/general.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/solvers/linear_control.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/solvers/lstsq.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/solvers/psd.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/solvers/triangular.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/solvers/tridiagonal.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/linalg/summary.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/nlinalg.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/optimize.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/pad.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/op.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/rewriting/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/rewriting/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/rewriting/jax.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/rewriting/numba.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/random/variable.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/reshape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/assumptions.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/blas.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/blas_c.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/blockwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/einsum.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/elemwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/extra_ops.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/fused_elemwise.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/jax.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/linalg/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/linalg/decomposition.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/linalg/inverse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/linalg/products.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/linalg/solvers.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/linalg/summary.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/linalg/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/math.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/numba.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/ofg.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/optimize.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/reshape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/special.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/subtensor.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/subtensor_lift.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/rewriting/uncanonicalize.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/sharedvar.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/signal/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/signal/conv.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/slinalg.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/sort.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/special.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/symbolic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/type_other.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/var.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/variable.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/tensor/xlogx.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/typed_list/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/typed_list/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/typed_list/rewriting.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/typed_list/type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/indexing.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/linalg.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/random/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/random/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/random/type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/random/variable.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/reduction.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/rewriting/__init__.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/rewriting/basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/rewriting/indexing.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/rewriting/math.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/rewriting/reduction.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/rewriting/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/rewriting/utils.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/rewriting/vectorization.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/shape.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/signal.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/type.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor/xtensor/vectorization.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor.egg-info/SOURCES.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor.egg-info/dependency_links.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor.egg-info/entry_points.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor.egg-info/requires.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/pytensor.egg-info/top_level.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/scripts/mypy-failing.txt +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/scripts/slowest_tests/update-slowest-times-issue.sh +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/setup.cfg +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/setup.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/link/c/c_code/test_cenum.h +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/link/c/c_code/test_quadratic_function.c +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/test_basic.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/test_breakpoint.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/test_config.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/test_gradient.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/test_ifelse.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/test_printing.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/test_raise_op.py +0 -0
- {pytensor-3.2.1 → pytensor-3.2.2}/tests/test_rop.py +0 -0
|
@@ -1528,6 +1528,10 @@ Mathematical
|
|
|
1528
1528
|
|
|
1529
1529
|
Returns a variable representing the inverse error function or the inverse complementary error function. `wikipedia <http://en.wikipedia.org/wiki/Error_function#Inverse_functions>`__
|
|
1530
1530
|
|
|
1531
|
+
.. function:: ndtri_exp(a)
|
|
1532
|
+
|
|
1533
|
+
Returns a variable representing the inverse of the standard normal CDF evaluated at the exponent of a, computed accurately even where ``exp(a)`` underflows.
|
|
1534
|
+
|
|
1531
1535
|
.. function:: gamma(a)
|
|
1532
1536
|
|
|
1533
1537
|
Returns a variable representing the gamma function.
|
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-07-
|
|
11
|
+
"date": "2026-07-19T19:39:04+0200",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "3.2.
|
|
14
|
+
"full-revisionid": "301ed014903acb2d1ed1a34466819cf22f8a3a2b",
|
|
15
|
+
"version": "3.2.2"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -32,6 +32,7 @@ from pytensor.scalar.math import (
|
|
|
32
32
|
Ive,
|
|
33
33
|
Kve,
|
|
34
34
|
Log1mexp,
|
|
35
|
+
NdtriExp,
|
|
35
36
|
Psi,
|
|
36
37
|
TriGamma,
|
|
37
38
|
)
|
|
@@ -270,6 +271,16 @@ def jax_funcify_from_tfp(op, **kwargs):
|
|
|
270
271
|
return tfp_jax_op
|
|
271
272
|
|
|
272
273
|
|
|
274
|
+
@jax_funcify.register(NdtriExp)
|
|
275
|
+
def jax_funcify_NdtriExp(op, **kwargs):
|
|
276
|
+
def ndtri_exp(x):
|
|
277
|
+
# JAX has no ndtri_exp, so this composition loses accuracy where
|
|
278
|
+
# exp(x) underflows
|
|
279
|
+
return jax.scipy.special.ndtri(jnp.exp(x))
|
|
280
|
+
|
|
281
|
+
return ndtri_exp
|
|
282
|
+
|
|
283
|
+
|
|
273
284
|
@jax_funcify.register(Ive)
|
|
274
285
|
def jax_funcify_Ive(op, **kwargs):
|
|
275
286
|
return try_import_tfp_jax_op(op, jax_op_name="bessel_ive")
|
|
@@ -59,8 +59,8 @@ def jax_funcify_IncSubtensor(op, node, **kwargs):
|
|
|
59
59
|
if len(indices) == 1:
|
|
60
60
|
indices = indices[0]
|
|
61
61
|
|
|
62
|
-
if isinstance(op, AdvancedIncSubtensor)
|
|
63
|
-
op.
|
|
62
|
+
if isinstance(op, AdvancedIncSubtensor):
|
|
63
|
+
op._check_runtime_broadcast_of_vector_index(node, x, y, indices)
|
|
64
64
|
|
|
65
65
|
return jax_fn(x, indices, y)
|
|
66
66
|
|
|
@@ -97,8 +97,7 @@ def mlx_funcify_AdvancedIncSubtensor(op, node, **kwargs):
|
|
|
97
97
|
return x.at[indices].add(y)
|
|
98
98
|
|
|
99
99
|
def advancedincsubtensor(x, y, *ilist, mlx_fn=mlx_fn):
|
|
100
|
-
|
|
101
|
-
op._check_runtime_broadcasting(node, x, y, ilist[0])
|
|
100
|
+
op._check_runtime_broadcast_of_vector_index(node, x, y, ilist[0])
|
|
102
101
|
|
|
103
102
|
return mlx_fn(x, ilist, y)
|
|
104
103
|
|
|
@@ -63,8 +63,6 @@ def pytorch_funcify_IncSubtensor(op, node, **kwargs):
|
|
|
63
63
|
def set_subtensor(x, y, *flattened_indices):
|
|
64
64
|
indices = indices_from_subtensor(flattened_indices, idx_list)
|
|
65
65
|
check_negative_steps(indices)
|
|
66
|
-
if op.idx_list == (0,):
|
|
67
|
-
op._check_runtime_broadcasting(node, x, y, indices[0])
|
|
68
66
|
if not inplace:
|
|
69
67
|
x = x.clone()
|
|
70
68
|
x[indices] = y
|
|
@@ -77,8 +75,6 @@ def pytorch_funcify_IncSubtensor(op, node, **kwargs):
|
|
|
77
75
|
def inc_subtensor(x, y, *flattened_indices):
|
|
78
76
|
indices = indices_from_subtensor(flattened_indices, idx_list)
|
|
79
77
|
check_negative_steps(indices)
|
|
80
|
-
if op.idx_list == (0,):
|
|
81
|
-
op._check_runtime_broadcasting(node, x, y, indices[0])
|
|
82
78
|
if not inplace:
|
|
83
79
|
x = x.clone()
|
|
84
80
|
x[indices] += y
|
|
@@ -98,8 +94,7 @@ def pytorch_funcify_AdvancedIncSubtensor(op, node, **kwargs):
|
|
|
98
94
|
def adv_set_subtensor(x, y, *flattened_indices):
|
|
99
95
|
indices = indices_from_subtensor(flattened_indices, idx_list)
|
|
100
96
|
check_negative_steps(indices)
|
|
101
|
-
|
|
102
|
-
op._check_runtime_broadcasting(node, x, y, indices[0])
|
|
97
|
+
op._check_runtime_broadcast_of_vector_index(node, x, y, indices[0])
|
|
103
98
|
if not inplace:
|
|
104
99
|
x = x.clone()
|
|
105
100
|
x[indices] = y.type_as(x)
|
|
@@ -112,8 +107,7 @@ def pytorch_funcify_AdvancedIncSubtensor(op, node, **kwargs):
|
|
|
112
107
|
def adv_inc_subtensor_no_duplicates(x, y, *flattened_indices):
|
|
113
108
|
indices = indices_from_subtensor(flattened_indices, idx_list)
|
|
114
109
|
check_negative_steps(indices)
|
|
115
|
-
|
|
116
|
-
op._check_runtime_broadcasting(node, x, y, indices[0])
|
|
110
|
+
op._check_runtime_broadcast_of_vector_index(node, x, y, indices[0])
|
|
117
111
|
if not inplace:
|
|
118
112
|
x = x.clone()
|
|
119
113
|
x[indices] += y.type_as(x)
|
|
@@ -131,8 +125,7 @@ def pytorch_funcify_AdvancedIncSubtensor(op, node, **kwargs):
|
|
|
131
125
|
indices = indices_from_subtensor(flattened_indices, idx_list)
|
|
132
126
|
# Not needed because slices aren't supported in this path
|
|
133
127
|
# check_negative_steps(indices)
|
|
134
|
-
|
|
135
|
-
op._check_runtime_broadcasting(node, x, y, indices[0])
|
|
128
|
+
op._check_runtime_broadcast_of_vector_index(node, x, y, indices[0])
|
|
136
129
|
if not inplace:
|
|
137
130
|
x = x.clone()
|
|
138
131
|
x.index_put_(indices, y.type_as(x), accumulate=True)
|
|
@@ -268,6 +268,40 @@ class Erfcinv(UnaryScalarOp):
|
|
|
268
268
|
erfcinv = Erfcinv(upgrade_to_float_no_complex, name="erfcinv")
|
|
269
269
|
|
|
270
270
|
|
|
271
|
+
class NdtriExp(UnaryScalarOp):
|
|
272
|
+
"""
|
|
273
|
+
Implements the inverse of the standard normal CDF evaluated at the
|
|
274
|
+
exponent of x, `ndtri(exp(x))`, in a way that remains accurate for very
|
|
275
|
+
negative x, where `exp(x)` underflows.
|
|
276
|
+
"""
|
|
277
|
+
|
|
278
|
+
monotonic_increasing = True
|
|
279
|
+
nfunc_spec = ("scipy.special.ndtri_exp", 1, 1)
|
|
280
|
+
|
|
281
|
+
def impl(self, x):
|
|
282
|
+
return special.ndtri_exp(x)
|
|
283
|
+
|
|
284
|
+
def pullback(self, inputs, outputs, grads):
|
|
285
|
+
(x,) = inputs
|
|
286
|
+
(z,) = outputs
|
|
287
|
+
(gz,) = grads
|
|
288
|
+
if x.type in complex_types:
|
|
289
|
+
raise NotImplementedError()
|
|
290
|
+
if z.type in discrete_types:
|
|
291
|
+
if x.type in discrete_types:
|
|
292
|
+
return [x.zeros_like(dtype=config.floatX)]
|
|
293
|
+
else:
|
|
294
|
+
return [x.zeros_like()]
|
|
295
|
+
|
|
296
|
+
# d/dx ndtri(exp(x)) = exp(x) / pdf(z), evaluated as sqrt(2 * pi) * exp(x + z ** 2 / 2)
|
|
297
|
+
# so that the underflowing exp(x) and the overflowing 1 / pdf(z) never appear on their own
|
|
298
|
+
cst = np.asarray(np.sqrt(2 * np.pi), dtype=gz.type.dtype)
|
|
299
|
+
return (gz * cst * exp(x + z**2 / 2),)
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
ndtri_exp = NdtriExp(upgrade_to_float_no_complex, name="ndtri_exp")
|
|
303
|
+
|
|
304
|
+
|
|
271
305
|
class Owens_t(BinaryScalarOp):
|
|
272
306
|
nfunc_spec = ("scipy.special.owens_t", 2, 1)
|
|
273
307
|
|
|
@@ -2372,6 +2372,11 @@ def erfcinv(a):
|
|
|
2372
2372
|
"""inverse complementary error function"""
|
|
2373
2373
|
|
|
2374
2374
|
|
|
2375
|
+
@scalar_elemwise
|
|
2376
|
+
def ndtri_exp(a):
|
|
2377
|
+
"""inverse standard normal cdf of the exponent of a"""
|
|
2378
|
+
|
|
2379
|
+
|
|
2375
2380
|
@scalar_elemwise
|
|
2376
2381
|
def owens_t(h, a):
|
|
2377
2382
|
"""owens t function"""
|
|
@@ -4331,6 +4336,7 @@ __all__ = [
|
|
|
4331
4336
|
"mod",
|
|
4332
4337
|
"mul",
|
|
4333
4338
|
"nan_to_num",
|
|
4339
|
+
"ndtri_exp",
|
|
4334
4340
|
"neg",
|
|
4335
4341
|
"neq",
|
|
4336
4342
|
"not_equal",
|
|
@@ -2445,29 +2445,32 @@ class AdvancedIncSubtensor(BaseSubtensor, COp):
|
|
|
2445
2445
|
def c_code_cache_version(self):
|
|
2446
2446
|
return (2,)
|
|
2447
2447
|
|
|
2448
|
-
def
|
|
2449
|
-
"""Raise if ``y`` would
|
|
2448
|
+
def _check_runtime_broadcast_of_vector_index(self, node, x, y, idx) -> None:
|
|
2449
|
+
"""Raise if ``x[idx] (+)= y`` would broadcast ``y`` at runtime.
|
|
2450
2450
|
|
|
2451
|
-
|
|
2452
|
-
|
|
2451
|
+
Only the single integer vector index form is checked, where the update
|
|
2452
|
+
must have shape ``(idx.shape[0], *x.shape[1:])``. Other index forms
|
|
2453
|
+
(boolean masks, multidimensional or multiple indices) are left to the
|
|
2454
|
+
numpy-like broadcasting of the underlying implementation.
|
|
2453
2455
|
"""
|
|
2454
|
-
if
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
)
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2456
|
+
if self.idx_list != (0,):
|
|
2457
|
+
return
|
|
2458
|
+
idx_type = node.inputs[2].type
|
|
2459
|
+
if idx_type.ndim != 1 or idx_type.dtype == "bool":
|
|
2460
|
+
return
|
|
2461
|
+
|
|
2462
|
+
y_static_bcast = node.inputs[1].type.broadcastable
|
|
2463
|
+
expected_shape = (idx.shape[0], *x.shape[1:])
|
|
2464
|
+
if any(
|
|
2465
|
+
not y_bcast and y_dim == 1 and expected_dim != 1
|
|
2466
|
+
for y_bcast, y_dim, expected_dim in zip(
|
|
2467
|
+
reversed(y_static_bcast),
|
|
2468
|
+
reversed(y.shape),
|
|
2469
|
+
reversed(expected_shape),
|
|
2470
|
+
strict=False,
|
|
2471
|
+
)
|
|
2472
|
+
):
|
|
2473
|
+
raise ValueError(self._runtime_broadcast_error_msg)
|
|
2471
2474
|
|
|
2472
2475
|
def __init__(
|
|
2473
2476
|
self,
|
|
@@ -2510,8 +2513,7 @@ class AdvancedIncSubtensor(BaseSubtensor, COp):
|
|
|
2510
2513
|
def perform(self, node, inputs, out_):
|
|
2511
2514
|
x, y, *index_variables = inputs
|
|
2512
2515
|
|
|
2513
|
-
|
|
2514
|
-
self._check_runtime_broadcasting(node, x, y, index_variables[0])
|
|
2516
|
+
self._check_runtime_broadcast_of_vector_index(node, x, y, index_variables[0])
|
|
2515
2517
|
|
|
2516
2518
|
full_indices = unflatten_index_variables(index_variables, self.idx_list)
|
|
2517
2519
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pytensor-3.2.1 → pytensor-3.2.2}/doc/gallery/applications/normalizing_flows_in_pytensor.ipynb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|