CGH0S7
699e443c7a
Optimize polint/polin2/polin3 interpolation for cache locality
...
Changes:
- polint: Rewrite Neville algorithm from array-slice operations to
scalar loop. Mathematically identical, avoids temporary array
allocations for den(1:n-m) slices. (Credit: yx-fmisc branch)
- polin2: Swap interpolation order so inner loop accesses ya(:,j)
(contiguous in Fortran column-major) instead of ya(i,:) (strided).
Tensor product interpolation is commutative; all call sites pass
identical coordinate arrays for all dimensions.
- polin3: Swap interpolation order to process contiguous first
dimension first: ya(:,j,k) -> yatmp(:,k) -> ymtmp(:).
Same commutativity argument as polin2.
Compile-time safety switch:
-DPOLINT_LEGACY_ORDER restores original dimension ordering
Default (no flag): uses optimized contiguous-memory ordering
Usage:
# Production (optimized order):
make clean && make -j ABE
# Fallback if results differ (original order):
Add -DPOLINT_LEGACY_ORDER to f90appflags in makefile.inc
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-06 19:00:35 +08:00
..
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-02-06 18:36:29 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-02-06 17:13:39 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-16 10:58:11 +08:00
2026-01-13 15:01:15 +08:00
2026-02-06 19:00:35 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-16 10:58:11 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-16 10:58:11 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-15 16:32:12 +08:00
2026-01-13 15:01:15 +08:00
2026-02-06 17:13:39 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-18 14:25:21 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00
2026-01-13 15:01:15 +08:00