MRTKLIB v0.3.1 Release Notes¶
Release date: 2026-03-06 Type: Patch (test quality improvement — no functional changes)
Overview¶
v0.3.1 corrects the MADOCALIB PPP-AR regression test baseline. The reference .pos files used in v0.3.0 were generated by upstream MADOCALIB with its default embedded LU solver, while MRTKLIB uses system LAPACK (Accelerate on macOS). This solver difference caused artificial 1.5–3.8 cm offsets that masked the true porting accuracy.
The references are now generated by upstream MADOCALIB built with -DLAPACK, making the comparison fair and the tolerances much tighter.
No library code, algorithms, or public API changed in this release.
What Changed¶
Reference .pos Files Replaced¶
| File | Description |
|---|---|
madocalib_MIZU_20250401-0000.pppar.pos | Upstream LAPACK build (was LU) |
madocalib_MIZU_20250401-0000.pppar_ion.pos | Upstream LAPACK build (was LU) |
Test Tolerances Tightened¶
The new tolerances apply when MRTKLIB is built with LAPACK support (LAPACK_FOUND is true, the default on macOS/Linux with Accelerate/OpenBLAS). Without LAPACK, the tests fall back to the original v0.3.0 tolerances (0.020 m / 0.040 m) because the internal LU solver diverges from the LAPACK-generated reference by the same ~1.5–3.8 cm.
| CTest Name | Old tolerance | New tolerance (LAPACK) | Actual RMS |
|---|---|---|---|
madocalib_pppar_check | 0.020 m | 0.008 m | 0.41 cm |
madocalib_pppar_ion_check | 0.040 m | 0.005 m | 0.25 cm |
Investigation Summary¶
Upstream MADOCALIB already supports LAPACK via #ifdef LAPACK in rtkcmn.c, using the same dgetrf_ / dgetri_ / dgetrs_ calls as MRTKLIB. Enabling it with -DLAPACK -framework Accelerate and re-running the same test inputs yielded:
| Comparison | pppar 3D RMS | pppar_ion 3D RMS |
|---|---|---|
| MRTKLIB vs upstream LU (v0.3.0 baseline) | 1.56 cm | 3.78 cm |
| upstream LAPACK vs upstream LU | 1.51 cm | 3.78 cm |
| MRTKLIB vs upstream LAPACK (v0.3.1 baseline) | 0.41 cm | 0.25 cm |
The 1.5–3.8 cm difference was entirely within the upstream itself (LU vs LAPACK divergence), not a MRTKLIB porting error. The residual 0.41 cm / 0.25 cm is attributable to minor structural differences (heap-allocated pppiono_t vs embedded struct in upstream).