{"id":"v001","input":{"distance":"1000 m","ppm":12,"prism_constant":"-30 mm"},"expect":{"result.corrected.value":999.982,"result.ppm":12,"result.atmospheric_correction.value":0.012,"result.prism_correction.value":-0.03,"ok":true},"source":"add-survey-suite ppm scenario (1,000.000 + 0.012 - 0.030 = 999.982 m)","sourceVersion":"2026","tolerance":{"result.corrected.value":{"rel":0,"abs":1e-09},"result.ppm":{"rel":0,"abs":1e-09},"result.atmospheric_correction.value":{"rel":0,"abs":1e-09},"result.prism_correction.value":{"rel":0,"abs":1e-09}}}
{"id":"v002","input":{"distance":"523.456 m","ppm":-4.5},"expect":{"result.corrected.value":523.453644448,"result.ppm":-4.5,"result.atmospheric_correction.value":-0.0023555520000000003,"result.prism_correction.value":0.0,"ok":true},"source":"IAG 1999 closed formula worked in Python (tools/vectors/gen_edm.py)","sourceVersion":"2026","tolerance":{"result.corrected.value":{"rel":0,"abs":1e-09},"result.ppm":{"rel":0,"abs":1e-09},"result.atmospheric_correction.value":{"rel":0,"abs":1e-09},"result.prism_correction.value":{"rel":0,"abs":1e-09}}}
{"id":"v003","input":{"distance":"2500 m","ppm":0,"prism_constant":"17.5 mm"},"expect":{"result.corrected.value":2500.0175,"result.ppm":0,"result.atmospheric_correction.value":0.0,"result.prism_correction.value":0.0175,"ok":true},"source":"IAG 1999 closed formula worked in Python (tools/vectors/gen_edm.py)","sourceVersion":"2026","tolerance":{"result.corrected.value":{"rel":0,"abs":1e-09},"result.ppm":{"rel":0,"abs":1e-09},"result.atmospheric_correction.value":{"rel":0,"abs":1e-09},"result.prism_correction.value":{"rel":0,"abs":1e-09}}}
{"id":"v004","input":{"distance":"1000 m","temperature":"28 degC","pressure":"980 hPa","wavelength":0.658,"reference_refractivity":286.34,"humidity":60},"expect":{"result.ppm":24.654726215686708,"result.refractivity":261.68527378431327,"result.corrected.value":1000.0246547262157,"ok":true},"source":"IAG 1999 closed formula worked in Python (tools/vectors/gen_edm.py)","sourceVersion":"2026","tolerance":{"result.ppm":{"rel":0,"abs":1e-09},"result.refractivity":{"rel":0,"abs":1e-09},"result.corrected.value":{"rel":0,"abs":1e-09}}}
{"id":"v005","input":{"distance":"1500 m","temperature":"-5 degC","pressure":"1030 hPa","wavelength":0.658,"reference_refractivity":286.34},"expect":{"result.ppm":-23.544187987254134,"result.refractivity":309.8841879872541,"result.corrected.value":1499.9646837180192,"ok":true},"source":"IAG 1999 closed formula worked in Python (tools/vectors/gen_edm.py)","sourceVersion":"2026","tolerance":{"result.ppm":{"rel":0,"abs":1e-09},"result.refractivity":{"rel":0,"abs":1e-09},"result.corrected.value":{"rel":0,"abs":1e-09}}}
{"id":"v006","input":{"distance":"800 m","temperature":"35 degC","pressure":"850 hPa","wavelength":0.87,"reference_refractivity":283.0,"humidity":30},"expect":{"result.ppm":64.85548438656875,"result.refractivity":218.14451561343125,"result.corrected.value":800.0518843875093,"ok":true},"source":"IAG 1999 closed formula worked in Python (tools/vectors/gen_edm.py)","sourceVersion":"2026","tolerance":{"result.ppm":{"rel":0,"abs":1e-09},"result.refractivity":{"rel":0,"abs":1e-09},"result.corrected.value":{"rel":0,"abs":1e-09}}}
{"id":"v007","input":{"distance":"1000 m"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"IAG 1999 closed formula worked in Python (tools/vectors/gen_edm.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v008","input":{"distance":"1000 m","ppm":5,"temperature":"20 degC","pressure":"1000 hPa"},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"IAG 1999 closed formula worked in Python (tools/vectors/gen_edm.py)","sourceVersion":"2026","tolerance":{}}
{"id":"v009","input":{"distance":"1000 m","temperature":"20 degC","pressure":"1000 hPa","wavelength":0.658},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"IAG 1999 closed formula worked in Python (tools/vectors/gen_edm.py)","sourceVersion":"2026","tolerance":{}}
