.gitattributes
.gitignore
.pre-commit-config.yaml
.readthedocs.yaml
CMakeLists.txt
LICENSE
MANIFEST.in
README.md
pyproject.toml
setup.py
.github/workflows/accelerate.yaml
.github/workflows/ci.yml
.github/workflows/publish.yaml
benchmarks/bench_chebyshev_preconditioner.py
benchmarks/bench_csr_matmul.py
benchmarks/bench_csr_matvec.py
benchmarks/bench_gmres_suitesparse_normal_equations.py
benchmarks/bench_ilu0_preconditioner.py
benchmarks/bench_jacobi_pcg_validation.py
benchmarks/bench_linalg_factorizations.py
benchmarks/bench_linalg_solvers.py
benchmarks/bench_linalg_spectral.py
benchmarks/bench_native_cpu_direct_solvers.py
benchmarks/bench_native_cpu_repeated_solves.py
benchmarks/bench_native_cpu_sparse_ops.py
benchmarks/bench_preconditioner_validation_matrix.py
benchmarks/bench_readme_cg_cpu.py
benchmarks/bench_reductions.py
benchmarks/bench_triangular_analysis.py
benchmarks/benchmark_utils.py
docs/changelog.rst
docs/conf.py
docs/index.rst
docs/installation.rst
docs/performance.rst
docs/quickstart.rst
docs/requirements.txt
docs/supported.rst
docs/_static/custom.css
docs/_static/images/v0_0_4b1_native_speedups.png
docs/_static/images/v0_0_4b1_rejected_paths.png
docs/_static/images/v0_0_4b1_scipy_ratio.png
docs/_static/images/v0_0_4b1_thread_scaling.png
docs/api/configuration.rst
docs/api/constructors.rst
docs/api/containers.rst
docs/api/device.rst
docs/api/index.rst
docs/api/linalg.rst
docs/api/operations.rst
docs/api/runtime.rst
docs/notebooks/01_first_steps.ipynb
docs/notebooks/02_csr_matvec.ipynb
docs/notebooks/03_csr_matmul.ipynb
docs/notebooks/04_constructors.ipynb
docs/notebooks/05_sparse_sparse.ipynb
docs/notebooks/06_autodiff.ipynb
docs/notebooks/07_dtype_device.ipynb
docs/notebooks/08_canonicalization.ipynb
docs/notebooks/09_scipy_bridge.ipynb
docs/notebooks/10_benchmarks.ipynb
docs/notebooks/11_graph_algorithms.ipynb
docs/notebooks/12_neural_layers.ipynb
docs/notebooks/13_linalg_solvers.ipynb
docs/notebooks/14_linalg_factorizations.ipynb
docs/notebooks/15_linalg_spectral.ipynb
docs/notebooks/16_linalg_operators.ipynb
docs/notebooks/18_csc_format.ipynb
docs/notebooks/19_accelerate_square_solvers.ipynb
docs/notebooks/20_accelerate_rectangular_solvers.ipynb
docs/notebooks/21_preconditioner_identity.ipynb
docs/notebooks/22_preconditioner_diagonal.ipynb
docs/notebooks/23_preconditioner_jacobi.ipynb
docs/notebooks/24_preconditioner_ilu0.ipynb
docs/notebooks/25_preconditioner_ichol0.ipynb
docs/notebooks/26_preconditioner_chebyshev.ipynb
docs/notebooks/27_preconditioner_exact.ipynb
docs/notebooks/28_preconditioner_callable.ipynb
docs/notebooks/index.rst
docs/parallelism/execution_model.rst
docs/parallelism/index.rst
docs/parallelism/performance_results.rst
docs/tutorials/finite_difference.rst
docs/tutorials/getting_started.rst
docs/tutorials/graph_laplacian.rst
docs/tutorials/index.rst
docs/tutorials/physics_workloads.rst
docs/tutorials/scipy_interop.rst
docs/tutorials/sparse_linear_systems.rst
docs/user_guide/autodiff.rst
docs/user_guide/device_execution.rst
docs/user_guide/dtype_policy.rst
docs/user_guide/index.rst
docs/user_guide/linalg.rst
docs/user_guide/linalg_solvers.rst
docs/user_guide/preconditioners.rst
docs/user_guide/sparse_formats.rst
docs/user_guide/validation.rst
examples/finite_difference_2d.py
examples/graph_laplacian.py
examples/quantum_hamiltonian.py
examples/sparse_linear_layer.py
mlx_sparse/__init__.py
mlx_sparse/_capabilities.py
mlx_sparse/_config.py
mlx_sparse/_construct.py
mlx_sparse/_coo.py
mlx_sparse/_csc.py
mlx_sparse/_csr.py
mlx_sparse/_device.py
mlx_sparse/_ext_loader.py
mlx_sparse/_fallback.py
mlx_sparse/_host.py
mlx_sparse/_native.py
mlx_sparse/_ops.py
mlx_sparse/_typing.py
mlx_sparse/_validation.py
mlx_sparse/_version.py
mlx_sparse/runtime.py
mlx_sparse.egg-info/PKG-INFO
mlx_sparse.egg-info/SOURCES.txt
mlx_sparse.egg-info/dependency_links.txt
mlx_sparse.egg-info/not-zip-safe
mlx_sparse.egg-info/requires.txt
mlx_sparse.egg-info/top_level.txt
mlx_sparse/linalg/__init__.py
mlx_sparse/linalg/_eigen.py
mlx_sparse/linalg/_factorizations.py
mlx_sparse/linalg/_interface.py
mlx_sparse/linalg/_iterative.py
mlx_sparse/linalg/_sparse_ops.py
mlx_sparse/linalg/_triangular.py
mlx_sparse/linalg/_utils.py
mlx_sparse/linalg/preconditioners.py
mlx_sparse/linalg/utils/__init__.py
mlx_sparse/linalg/utils/arrays.py
mlx_sparse/linalg/utils/factorization.py
mlx_sparse/linalg/utils/gmres.py
mlx_sparse/linalg/utils/iterative.py
mlx_sparse/linalg/utils/matrix_free.py
mlx_sparse/linalg/utils/operators.py
mlx_sparse/linalg/utils/preconditioners.py
mlx_sparse/linalg/utils/sparse.py
mlx_sparse/linalg/utils/spectral.py
mlx_sparse/linalg/utils/diagnostics/__init__.py
mlx_sparse/linalg/utils/diagnostics/callbacks.py
mlx_sparse/linalg/utils/diagnostics/info.py
mlx_sparse/linalg/utils/diagnostics/status.py
src/bindings.cpp
src/common/common.cpp
src/common/common.h
src/common/cpu_parallel.cpp
src/common/cpu_parallel.h
src/common/metal_common.h
src/linalg/linalg.h
src/linalg/accelerate/adapter/csc_adapter.cpp
src/linalg/accelerate/adapter/csc_adapter.h
src/linalg/accelerate/errors/status.cpp
src/linalg/accelerate/errors/status.h
src/linalg/accelerate/factorization/factorization.cpp
src/linalg/accelerate/factorization/factorization.h
src/linalg/accelerate/solve/solve.cpp
src/linalg/accelerate/solve/solve.h
src/linalg/arnoldi/arnoldi.cpp
src/linalg/arnoldi/arnoldi.h
src/linalg/arnoldi/arnoldi.metal
src/linalg/cg/cg.cpp
src/linalg/cg/cg.h
src/linalg/cg/cg.metal
src/linalg/cholesky/cholesky.cpp
src/linalg/cholesky/cholesky.h
src/linalg/common/common.h
src/linalg/common/metal_common.h
src/linalg/eigs/eigs.cpp
src/linalg/eigs/eigs.h
src/linalg/eigsh/eigsh.cpp
src/linalg/eigsh/eigsh.h
src/linalg/gmres/gmres.cpp
src/linalg/gmres/gmres.h
src/linalg/inner_product/inner_product.cpp
src/linalg/inner_product/inner_product.h
src/linalg/inner_product/inner_product.metal
src/linalg/lanczos/lanczos.cpp
src/linalg/lanczos/lanczos.h
src/linalg/lanczos/lanczos.metal
src/linalg/lu/lu.cpp
src/linalg/lu/lu.h
src/linalg/minres/minres.cpp
src/linalg/minres/minres.h
src/linalg/minres/minres.metal
src/linalg/permute_vector/permute_vector.cpp
src/linalg/permute_vector/permute_vector.h
src/linalg/permute_vector/permute_vector.metal
src/linalg/svds/svds.cpp
src/linalg/svds/svds.h
src/linalg/svds/svds.metal
src/linalg/triangular_solve/triangular_solve.cpp
src/linalg/triangular_solve/triangular_solve.h
src/linalg/triangular_solve/triangular_solve.metal
src/preconditioners/chebyshev/chebyshev.cpp
src/preconditioners/chebyshev/chebyshev.h
src/preconditioners/chebyshev/chebyshev.metal
src/preconditioners/diagonal/diagonal.cpp
src/preconditioners/diagonal/diagonal.h
src/preconditioners/diagonal/diagonal.metal
src/preconditioners/exact/exact.cpp
src/preconditioners/exact/exact.h
src/preconditioners/gmres/gmres.cpp
src/preconditioners/gmres/gmres.h
src/preconditioners/gmres/gmres.metal
src/preconditioners/ic0/ic0.cpp
src/preconditioners/ic0/ic0.h
src/preconditioners/ilu0/ilu0.cpp
src/preconditioners/ilu0/ilu0.h
src/preconditioners/minres/minres.cpp
src/preconditioners/minres/minres.h
src/preconditioners/minres/minres.metal
src/preconditioners/pcg/chebyshev.cpp
src/preconditioners/pcg/chebyshev.metal
src/preconditioners/pcg/ic0.cpp
src/preconditioners/pcg/pcg.cpp
src/preconditioners/pcg/pcg.h
src/preconditioners/pcg/pcg.metal
src/sparse/coo_batched_matmul/coo_batched_matmul.cpp
src/sparse/coo_batched_matmul/coo_batched_matmul.h
src/sparse/coo_batched_matmul/coo_batched_matmul.metal
src/sparse/coo_col_norms/coo_col_norms.cpp
src/sparse/coo_col_norms/coo_col_norms.h
src/sparse/coo_col_norms/coo_col_norms.metal
src/sparse/coo_col_sums/coo_col_sums.cpp
src/sparse/coo_col_sums/coo_col_sums.h
src/sparse/coo_col_sums/coo_col_sums.metal
src/sparse/coo_diagonal/coo_diagonal.cpp
src/sparse/coo_diagonal/coo_diagonal.h
src/sparse/coo_diagonal/coo_diagonal.metal
src/sparse/coo_matmat/coo_matmat.cpp
src/sparse/coo_matmat/coo_matmat.h
src/sparse/coo_matmat/coo_matmat.metal
src/sparse/coo_matmul/coo_matmul.cpp
src/sparse/coo_matmul/coo_matmul.h
src/sparse/coo_matmul/coo_matmul.metal
src/sparse/coo_matmul_data_vjp/coo_matmul_data_vjp.cpp
src/sparse/coo_matmul_data_vjp/coo_matmul_data_vjp.h
src/sparse/coo_matmul_data_vjp/coo_matmul_data_vjp.metal
src/sparse/coo_row_norms/coo_row_norms.cpp
src/sparse/coo_row_norms/coo_row_norms.h
src/sparse/coo_row_norms/coo_row_norms.metal
src/sparse/coo_row_sums/coo_row_sums.cpp
src/sparse/coo_row_sums/coo_row_sums.h
src/sparse/coo_row_sums/coo_row_sums.metal
src/sparse/coo_tocsc/coo_tocsc.cpp
src/sparse/coo_tocsc/coo_tocsc.h
src/sparse/coo_tocsc/coo_tocsc.metal
src/sparse/coo_tocsr/coo_tocsr.cpp
src/sparse/coo_tocsr/coo_tocsr.h
src/sparse/coo_tocsr/coo_tocsr.metal
src/sparse/coo_trace/coo_trace.cpp
src/sparse/coo_trace/coo_trace.h
src/sparse/coo_trace/coo_trace.metal
src/sparse/csc_batched_matmul/csc_batched_matmul.cpp
src/sparse/csc_batched_matmul/csc_batched_matmul.h
src/sparse/csc_batched_matmul/csc_batched_matmul.metal
src/sparse/csc_col_norms/csc_col_norms.cpp
src/sparse/csc_col_norms/csc_col_norms.h
src/sparse/csc_col_norms/csc_col_norms.metal
src/sparse/csc_col_sums/csc_col_sums.cpp
src/sparse/csc_col_sums/csc_col_sums.h
src/sparse/csc_col_sums/csc_col_sums.metal
src/sparse/csc_diagonal/csc_diagonal.cpp
src/sparse/csc_diagonal/csc_diagonal.h
src/sparse/csc_diagonal/csc_diagonal.metal
src/sparse/csc_matmat/csc_matmat.cpp
src/sparse/csc_matmat/csc_matmat.h
src/sparse/csc_matmat/csc_matmat.metal
src/sparse/csc_matmul/csc_matmul.cpp
src/sparse/csc_matmul/csc_matmul.h
src/sparse/csc_matmul/csc_matmul.metal
src/sparse/csc_matmul_data_vjp/csc_matmul_data_vjp.cpp
src/sparse/csc_matmul_data_vjp/csc_matmul_data_vjp.h
src/sparse/csc_matmul_data_vjp/csc_matmul_data_vjp.metal
src/sparse/csc_matmul_transpose/csc_matmul_transpose.cpp
src/sparse/csc_matmul_transpose/csc_matmul_transpose.h
src/sparse/csc_matmul_transpose/csc_matmul_transpose.metal
src/sparse/csc_matvec/csc_matvec.cpp
src/sparse/csc_matvec/csc_matvec.h
src/sparse/csc_matvec/csc_matvec.metal
src/sparse/csc_matvec_transpose/csc_matvec_transpose.cpp
src/sparse/csc_matvec_transpose/csc_matvec_transpose.h
src/sparse/csc_matvec_transpose/csc_matvec_transpose.metal
src/sparse/csc_row_norms/csc_row_norms.cpp
src/sparse/csc_row_norms/csc_row_norms.h
src/sparse/csc_row_norms/csc_row_norms.metal
src/sparse/csc_row_sums/csc_row_sums.cpp
src/sparse/csc_row_sums/csc_row_sums.h
src/sparse/csc_row_sums/csc_row_sums.metal
src/sparse/csc_sort_indices/csc_sort_indices.cpp
src/sparse/csc_sort_indices/csc_sort_indices.h
src/sparse/csc_sort_indices/csc_sort_indices.metal
src/sparse/csc_sum_duplicates/csc_sum_duplicates.cpp
src/sparse/csc_sum_duplicates/csc_sum_duplicates.h
src/sparse/csc_sum_duplicates/csc_sum_duplicates.metal
src/sparse/csc_tocsr/csc_tocsr.cpp
src/sparse/csc_tocsr/csc_tocsr.h
src/sparse/csc_tocsr/csc_tocsr.metal
src/sparse/csc_todense/csc_todense.cpp
src/sparse/csc_todense/csc_todense.h
src/sparse/csc_todense/csc_todense.metal
src/sparse/csc_trace/csc_trace.cpp
src/sparse/csc_trace/csc_trace.h
src/sparse/csc_trace/csc_trace.metal
src/sparse/csr_batched_matmul/csr_batched_matmul.cpp
src/sparse/csr_batched_matmul/csr_batched_matmul.h
src/sparse/csr_batched_matmul/csr_batched_matmul.metal
src/sparse/csr_batched_matvec/csr_batched_matvec.cpp
src/sparse/csr_batched_matvec/csr_batched_matvec.h
src/sparse/csr_batched_matvec/csr_batched_matvec.metal
src/sparse/csr_col_sums/csr_col_sums.cpp
src/sparse/csr_col_sums/csr_col_sums.h
src/sparse/csr_col_sums/csr_col_sums.metal
src/sparse/csr_diagonal/csr_diagonal.cpp
src/sparse/csr_diagonal/csr_diagonal.h
src/sparse/csr_diagonal/csr_diagonal.metal
src/sparse/csr_matmat/csr_matmat.cpp
src/sparse/csr_matmat/csr_matmat.h
src/sparse/csr_matmat/csr_matmat.metal
src/sparse/csr_matmul/csr_matmul.cpp
src/sparse/csr_matmul/csr_matmul.h
src/sparse/csr_matmul/csr_matmul.metal
src/sparse/csr_matmul_data_vjp/csr_matmul_data_vjp.cpp
src/sparse/csr_matmul_data_vjp/csr_matmul_data_vjp.h
src/sparse/csr_matmul_data_vjp/csr_matmul_data_vjp.metal
src/sparse/csr_matmul_transpose/csr_matmul_transpose.cpp
src/sparse/csr_matmul_transpose/csr_matmul_transpose.h
src/sparse/csr_matmul_transpose/csr_matmul_transpose.metal
src/sparse/csr_matvec/csr_matvec.cpp
src/sparse/csr_matvec/csr_matvec.h
src/sparse/csr_matvec/csr_matvec.metal
src/sparse/csr_matvec_data_vjp/csr_matvec_data_vjp.cpp
src/sparse/csr_matvec_data_vjp/csr_matvec_data_vjp.h
src/sparse/csr_matvec_data_vjp/csr_matvec_data_vjp.metal
src/sparse/csr_matvec_transpose/csr_matvec_transpose.cpp
src/sparse/csr_matvec_transpose/csr_matvec_transpose.h
src/sparse/csr_matvec_transpose/csr_matvec_transpose.metal
src/sparse/csr_row_norms/csr_row_norms.cpp
src/sparse/csr_row_norms/csr_row_norms.h
src/sparse/csr_row_norms/csr_row_norms.metal
src/sparse/csr_row_sums/csr_row_sums.cpp
src/sparse/csr_row_sums/csr_row_sums.h
src/sparse/csr_row_sums/csr_row_sums.metal
src/sparse/csr_sort_indices/csr_sort_indices.cpp
src/sparse/csr_sort_indices/csr_sort_indices.h
src/sparse/csr_sort_indices/csr_sort_indices.metal
src/sparse/csr_sum_duplicates/csr_sum_duplicates.cpp
src/sparse/csr_sum_duplicates/csr_sum_duplicates.h
src/sparse/csr_sum_duplicates/csr_sum_duplicates.metal
src/sparse/csr_tocsc/csr_tocsc.cpp
src/sparse/csr_tocsc/csr_tocsc.h
src/sparse/csr_tocsc/csr_tocsc.metal
src/sparse/csr_todense/csr_todense.cpp
src/sparse/csr_todense/csr_todense.h
src/sparse/csr_todense/csr_todense.metal
src/sparse/csr_trace/csr_trace.cpp
src/sparse/csr_trace/csr_trace.h
src/sparse/csr_trace/csr_trace.metal
src/sparse/csr_transpose/csr_transpose.cpp
src/sparse/csr_transpose/csr_transpose.h
src/sparse/csr_transpose/csr_transpose.metal
src/sparse/fromdense/fromdense.cpp
src/sparse/fromdense/fromdense.h
src/sparse/fromdense/fromdense.metal
src/sparse/identity_like/identity_like.cpp
src/sparse/identity_like/identity_like.h
tests/conftest.py
tests/test_accelerate_csc_adapter.py
tests/test_accelerate_direct_solvers.py
tests/test_accelerate_errors.py
tests/test_accelerate_factorization_wrappers.py
tests/test_benchmark_utils.py
tests/test_capabilities.py
tests/test_config.py
tests/test_constructor_edge_cases.py
tests/test_constructors.py
tests/test_conversion_api.py
tests/test_coo_csc_dense_products.py
tests/test_coo_csc_reductions.py
tests/test_coo_tocsr.py
tests/test_cpu_gpu_parity.py
tests/test_cpu_host_assembly.py
tests/test_cpu_parallel_remaining.py
tests/test_csc.py
tests/test_csr_matmul.py
tests/test_csr_matvec.py
tests/test_csr_properties.py
tests/test_csr_reductions.py
tests/test_csr_todense.py
tests/test_device_api.py
tests/test_direct_solver_benchmarks.py
tests/test_docs_preconditioner_notebooks.py
tests/test_dtypes.py
tests/test_fallback_dispatch.py
tests/test_fallback_validation_regressions.py
tests/test_gmres_suitesparse_benchmark.py
tests/test_grad.py
tests/test_host_utils_extended.py
tests/test_importless_error_paths.py
tests/test_imports.py
tests/test_jacobi_pcg_benchmarks.py
tests/test_linalg_completeness.py
tests/test_linalg_contract.py
tests/test_linalg_direct_factorizations.py
tests/test_linalg_errors.py
tests/test_linalg_integration_regressions.py
tests/test_linalg_interface_extended.py
tests/test_linalg_minres.py
tests/test_linalg_native.py
tests/test_linalg_pathological.py
tests/test_linalg_preconditioners.py
tests/test_linalg_repeated_solves.py
tests/test_linalg_utils.py
tests/test_native_extension.py
tests/test_numerical_correctness.py
tests/test_performance_regression.py
tests/test_preconditioner_validation_matrix_benchmark.py
tests/test_public_api.py
tests/test_reduction_dtype_tolerances.py
tests/test_runtime.py
tests/test_scalar_left_multiply.py
tests/test_sparse_api_edges.py
tests/test_sparse_ops_benchmarks.py
tests/test_sparse_suite.py
tests/test_streams_and_devices.py
tests/test_suitesparse_collection.py
tests/test_svds_normal_lanczos.py
tests/test_transpose.py
tests/test_validation_regressions.py
tests/fixtures/suitesparse/HB/bcsstk03.mtx
tests/fixtures/suitesparse/HB/illc1033.mtx
tests/fixtures/suitesparse/HB/illc1033_b.mtx
tests/fixtures/suitesparse/HB/well1033.mtx
tests/fixtures/suitesparse/HB/well1033_b.mtx