interpn 0.6.1__tar.gz → 0.6.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.
Files changed (76) hide show
  1. {interpn-0.6.1 → interpn-0.6.2}/.github/workflows/test-rust.yml +3 -0
  2. {interpn-0.6.1 → interpn-0.6.2}/CHANGELOG.md +22 -0
  3. {interpn-0.6.1 → interpn-0.6.2}/Cargo.lock +1 -1
  4. {interpn-0.6.1 → interpn-0.6.2}/Cargo.toml +2 -1
  5. {interpn-0.6.1 → interpn-0.6.2}/PKG-INFO +1 -1
  6. {interpn-0.6.1 → interpn-0.6.2}/docs/1d_quality_of_fit_Rectilinear.svg +147 -147
  7. {interpn-0.6.1 → interpn-0.6.2}/docs/1d_quality_of_fit_Regular.svg +144 -307
  8. {interpn-0.6.1 → interpn-0.6.2}/docs/2d_quality_of_fit_Rectilinear.svg +346 -335
  9. {interpn-0.6.1 → interpn-0.6.2}/docs/2d_quality_of_fit_Regular.svg +245 -244
  10. {interpn-0.6.1 → interpn-0.6.2}/docs/3d_throughput_vs_nobs.svg +216 -202
  11. {interpn-0.6.1 → interpn-0.6.2}/docs/3d_throughput_vs_nobs_prealloc.svg +217 -203
  12. {interpn-0.6.1 → interpn-0.6.2}/docs/4d_throughput_vs_nobs.svg +233 -210
  13. {interpn-0.6.1 → interpn-0.6.2}/docs/4d_throughput_vs_nobs_prealloc.svg +204 -197
  14. {interpn-0.6.1 → interpn-0.6.2}/docs/throughput_vs_dims_1000_obs.svg +140 -140
  15. {interpn-0.6.1 → interpn-0.6.2}/docs/throughput_vs_dims_1_obs.svg +125 -125
  16. {interpn-0.6.1 → interpn-0.6.2}/pyproject.toml +2 -2
  17. interpn-0.6.2/scripts/pgo-profiles/pgo.profdata +0 -0
  18. {interpn-0.6.1 → interpn-0.6.2}/src/multicubic/mod.rs +17 -5
  19. {interpn-0.6.1 → interpn-0.6.2}/src/multicubic/rectilinear.rs +6 -6
  20. {interpn-0.6.1 → interpn-0.6.2}/src/multicubic/rectilinear_recursive.rs +26 -4
  21. {interpn-0.6.1 → interpn-0.6.2}/src/multicubic/regular.rs +35 -5
  22. {interpn-0.6.1 → interpn-0.6.2}/src/multicubic/regular_recursive.rs +30 -9
  23. {interpn-0.6.1 → interpn-0.6.2}/src/multilinear/rectilinear.rs +6 -0
  24. {interpn-0.6.1 → interpn-0.6.2}/src/multilinear/rectilinear_recursive.rs +9 -2
  25. {interpn-0.6.1 → interpn-0.6.2}/src/multilinear/regular.rs +13 -3
  26. {interpn-0.6.1 → interpn-0.6.2}/src/multilinear/regular_recursive.rs +9 -3
  27. {interpn-0.6.1 → interpn-0.6.2}/src/one_dim/linear.rs +11 -1
  28. interpn-0.6.1/scripts/pgo-profiles/pgo.profdata +0 -0
  29. {interpn-0.6.1 → interpn-0.6.2}/.cargo/config.toml +0 -0
  30. {interpn-0.6.1 → interpn-0.6.2}/.github/workflows/release-python.yml +0 -0
  31. {interpn-0.6.1 → interpn-0.6.2}/.github/workflows/release-rust.yml +0 -0
  32. {interpn-0.6.1 → interpn-0.6.2}/.github/workflows/test-python.yml +0 -0
  33. {interpn-0.6.1 → interpn-0.6.2}/.gitignore +0 -0
  34. {interpn-0.6.1 → interpn-0.6.2}/.readthedocs.yml +0 -0
  35. {interpn-0.6.1 → interpn-0.6.2}/LICENSE-APACHE +0 -0
  36. {interpn-0.6.1 → interpn-0.6.2}/LICENSE-MIT +0 -0
  37. {interpn-0.6.1 → interpn-0.6.2}/README.md +0 -0
  38. {interpn-0.6.1 → interpn-0.6.2}/benches/bench.rs +0 -0
  39. {interpn-0.6.1 → interpn-0.6.2}/benches/bench_cpu.py +0 -0
  40. {interpn-0.6.1 → interpn-0.6.2}/benches/bench_mem.py +0 -0
  41. {interpn-0.6.1 → interpn-0.6.2}/docs/API_Docs.md +0 -0
  42. {interpn-0.6.1 → interpn-0.6.2}/docs/index.md +0 -0
  43. {interpn-0.6.1 → interpn-0.6.2}/docs/perf.md +0 -0
  44. {interpn-0.6.1 → interpn-0.6.2}/docs/ram_vs_dims.svg +0 -0
  45. {interpn-0.6.1 → interpn-0.6.2}/docs/requirements.txt +0 -0
  46. {interpn-0.6.1 → interpn-0.6.2}/examples/cubic_comparison.py +0 -0
  47. {interpn-0.6.1 → interpn-0.6.2}/mkdocs.yml +0 -0
  48. {interpn-0.6.1 → interpn-0.6.2}/scripts/distr_pgo.sh +0 -0
  49. {interpn-0.6.1 → interpn-0.6.2}/scripts/distr_pgo_install.sh +0 -0
  50. {interpn-0.6.1 → interpn-0.6.2}/scripts/distr_pgo_profile.sh +0 -0
  51. {interpn-0.6.1 → interpn-0.6.2}/scripts/native_pgo.sh +0 -0
  52. {interpn-0.6.1 → interpn-0.6.2}/scripts/native_pgo_install.sh +0 -0
  53. {interpn-0.6.1 → interpn-0.6.2}/scripts/native_pgo_profile.sh +0 -0
  54. {interpn-0.6.1 → interpn-0.6.2}/scripts/profile_workload.py +0 -0
  55. {interpn-0.6.1 → interpn-0.6.2}/src/interpn/__init__.py +0 -0
  56. {interpn-0.6.1 → interpn-0.6.2}/src/interpn/multicubic_rectilinear.py +0 -0
  57. {interpn-0.6.1 → interpn-0.6.2}/src/interpn/multicubic_regular.py +0 -0
  58. {interpn-0.6.1 → interpn-0.6.2}/src/interpn/multilinear_rectilinear.py +0 -0
  59. {interpn-0.6.1 → interpn-0.6.2}/src/interpn/multilinear_regular.py +0 -0
  60. {interpn-0.6.1 → interpn-0.6.2}/src/interpn/py.typed +0 -0
  61. {interpn-0.6.1 → interpn-0.6.2}/src/interpn/raw.py +0 -0
  62. {interpn-0.6.1 → interpn-0.6.2}/src/interpn/serialization.py +0 -0
  63. {interpn-0.6.1 → interpn-0.6.2}/src/lib.rs +0 -0
  64. {interpn-0.6.1 → interpn-0.6.2}/src/multilinear/mod.rs +0 -0
  65. {interpn-0.6.1 → interpn-0.6.2}/src/one_dim/hold.rs +0 -0
  66. {interpn-0.6.1 → interpn-0.6.2}/src/one_dim/mod.rs +0 -0
  67. {interpn-0.6.1 → interpn-0.6.2}/src/python.rs +0 -0
  68. {interpn-0.6.1 → interpn-0.6.2}/src/testing.rs +0 -0
  69. {interpn-0.6.1 → interpn-0.6.2}/src/utils.rs +0 -0
  70. {interpn-0.6.1 → interpn-0.6.2}/test/test_docs.py +0 -0
  71. {interpn-0.6.1 → interpn-0.6.2}/test/test_examples.py +0 -0
  72. {interpn-0.6.1 → interpn-0.6.2}/test/test_multicubic_rectilinear.py +0 -0
  73. {interpn-0.6.1 → interpn-0.6.2}/test/test_multicubic_regular.py +0 -0
  74. {interpn-0.6.1 → interpn-0.6.2}/test/test_multilinear_rectilinear.py +0 -0
  75. {interpn-0.6.1 → interpn-0.6.2}/test/test_multilinear_regular.py +0 -0
  76. {interpn-0.6.1 → interpn-0.6.2}/uv.lock +0 -0
@@ -32,6 +32,9 @@ jobs:
32
32
  - name: Run tests
33
33
  run: cargo test
34
34
 
35
+ - name: Run tests with FMA
36
+ run: cargo test --features=fma
37
+
35
38
  - name: Test no-std
36
39
  run: |
37
40
  rustup target add thumbv7em-none-eabihf
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.2 2025-10-20
4
+
5
+ Add optional use of fused multiply-add, enabled for python distributions.
6
+ This substantially improves floating-point roundoff; cubic method now shows
7
+ O(1e-14) peak roundoff error even under extrapolation of a quadratic function,
8
+ and 0-4 epsilon roundoff inside interpolating region.
9
+ Overall effect on throughput performance is neutral.
10
+
11
+ ### Added
12
+
13
+ * Rust
14
+ * Add `fma` feature
15
+
16
+ ### Changed
17
+
18
+ * Rust
19
+ * Use Horner's method for evaluating normalized cubic hermite spline
20
+ * If `fma` feature is enabled, use FMA in cubic and linear methods where possible
21
+ * Python
22
+ * Enable `fma` feature for python distribution
23
+ * Update pgo profile data and benchmark plots
24
+
3
25
  ## 0.6.1 2025-10-10
4
26
 
5
27
  ### Changed
@@ -221,7 +221,7 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
221
221
 
222
222
  [[package]]
223
223
  name = "interpn"
224
- version = "0.6.1"
224
+ version = "0.6.2"
225
225
  dependencies = [
226
226
  "criterion",
227
227
  "crunchy",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "interpn"
3
- version = "0.6.1"
3
+ version = "0.6.2"
4
4
  edition = "2024"
5
5
  authors = ["James Logan <jlogan03@gmail.com>"]
6
6
  license = "MIT OR Apache-2.0"
@@ -35,6 +35,7 @@ ndarray = "0.16.1"
35
35
  default = ["std"]
36
36
  python = ["numpy", "pyo3", "std"]
37
37
  std = ["itertools"]
38
+ fma = []
38
39
 
39
40
  [profile.release]
40
41
  opt-level = 3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: interpn
3
- Version: 0.6.1
3
+ Version: 0.6.2
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy