Skip to content

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).


All 53 Tests Pass