{"id":"v001","input":{"radius":"500 ft","delta":"30 deg"},"expect":{"result.tangent.value":133.97459621556135,"result.length.value":261.79938779914943,"result.chord.value":258.81904510252076,"result.external.value":17.63809020504148,"result.middle_ordinate.value":17.037086855465844,"ok":true},"source":"add-survey-suite scenarios","sourceVersion":"2026","tolerance":{"result.tangent.value":{"rel":1e-12,"abs":1e-09},"result.length.value":{"rel":1e-12,"abs":1e-09},"result.chord.value":{"rel":1e-12,"abs":1e-09},"result.external.value":{"rel":1e-12,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-12,"abs":1e-09}}}
{"id":"v002","input":{"tangent":311.1029854823917,"length":593.411945678072},"expect":{"result.tangent.value":311.1029854823917,"result.length.value":593.411945678072,"result.chord.value":579.9008612539226,"result.external.value":58.361851188679736,"result.middle_ordinate.value":54.393704573761156,"result.radius.value":800.0,"result.delta.value":42.5,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v003","input":{"chord":380.61334256512123,"middle_ordinate":15.18635606043457},"expect":{"result.tangent.value":192.74592819486577,"result.length.value":382.2271061867582,"result.chord.value":380.61334256512123,"result.external.value":15.38100727125924,"result.middle_ordinate.value":15.18635606043457,"result.radius.value":1200.0,"result.delta.value":18.25,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v004","input":{"external":78.14172420307936,"radius":300},"expect":{"result.tangent.value":230.1980963936881,"result.length.value":392.69908169872417,"result.chord.value":365.2568574052324,"result.external.value":78.14172420307936,"result.middle_ordinate.value":61.99399791262945,"result.radius.value":300.0,"result.delta.value":75.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v005","input":{"delta":"55.0 deg","length":623.9552075879728},"expect":{"result.tangent.value":338.3685828586351,"result.length.value":623.9552075879728,"result.chord.value":600.2731972055441,"result.external.value":82.79826546312256,"result.middle_ordinate.value":73.44295843415588,"result.radius.value":650.0,"result.delta.value":55.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v006","input":{"degree":"4 deg","delta":"20 deg","pi_station":"50+00"},"expect":{"result.pc_station":"47+47.43","result.pt_station":"52+47.43","ok":true},"source":"Arc definition D = 18000/(πR) with stationing","sourceVersion":"15th edition (2018)","tolerance":{}}
{"id":"v007","input":{"radius":500,"delta":"30 deg","tangent":100},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"add-survey-suite scenarios","sourceVersion":"2026","tolerance":{}}
{"id":"v008","input":{"tangent":262.7605881641912,"external":13.770698908791012},"expect":{"result.tangent.value":262.7605881641912,"result.length.value":523.5987755982989,"result.chord.value":522.6423163382674,"result.external.value":13.770698908791012,"result.middle_ordinate.value":13.695261579316774,"result.radius.value":2500.0,"result.delta.value":12.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v009","input":{"chord":156.45804045919743,"length":183.3468379220043},"expect":{"result.tangent.value":136.38813464387192,"result.length.value":183.3468379220043,"result.chord.value":156.45804045919743,"result.external.value":70.99916898181488,"result.middle_ordinate.value":40.7234503284751,"result.radius.value":95.5,"result.delta.value":110.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v010","input":{"middle_ordinate":1.865636653148428,"delta":"3.5 deg"},"expect":{"result.tangent.value":122.21105319435544,"result.length.value":244.34609527920614,"result.chord.value":244.30810567858128,"result.external.value":1.8665072092138857,"result.middle_ordinate.value":1.865636653148428,"result.radius.value":4000.0,"result.delta.value":3.5,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v011","input":{"radius":1432.39,"middle_ordinate":217.65438754649705},"expect":{"result.tangent.value":895.0566109814016,"result.length.value":1599.9949870490611,"result.chord.value":1518.102109790001,"result.external.value":256.65335319183333,"result.middle_ordinate.value":217.65438754649705,"result.radius.value":1432.39,"result.delta.value":64.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v012","input":{"external":2147.7774788672054,"delta":"150.0 deg"},"expect":{"result.tangent.value":2799.0381056766582,"result.length.value":1963.4954084936207,"result.chord.value":1448.8887394336025,"result.external.value":2147.7774788672054,"result.middle_ordinate.value":555.8857161731095,"result.radius.value":750.0,"result.delta.value":150.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v013","input":{"length":322.5368457685521,"radius":210},"expect":{"result.tangent.value":202.79464270948552,"result.length.value":322.5368457685521,"result.chord.value":291.75651559277884,"result.external.value":81.93435411350254,"result.middle_ordinate.value":58.93864192888325,"result.radius.value":210.0,"result.delta.value":88.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v014","input":{"tangent":50.00128715657574,"delta":"1.0 deg"},"expect":{"result.tangent.value":50.00128715657574,"result.length.value":100.00003575641671,"result.chord.value":99.99876652154666,"result.external.value":0.21817315735097093,"result.middle_ordinate.value":0.21816484998534746,"result.radius.value":5729.58,"result.delta.value":1.0,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-09,"abs":1e-09},"result.length.value":{"rel":1e-09,"abs":1e-09},"result.chord.value":{"rel":1e-09,"abs":1e-09},"result.external.value":{"rel":1e-09,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-09,"abs":1e-09},"result.radius.value":{"rel":1e-09,"abs":1e-09},"result.delta.value":{"rel":1e-09,"abs":1e-09}}}
{"id":"v015","input":{"degree_chord":"12 deg","delta":"38.5 deg"},"expect":{"result.tangent.value":167.04332126616342,"result.length.value":321.42047295636155,"result.chord.value":315.40753107465866,"result.external.value":28.328240012359966,"result.middle_ordinate.value":26.744380362720573,"result.radius.value":478.3386116752813,"ok":true},"source":"Surveying formulas (Ghilani & Wolf 2018) evaluated in Python (tools/vectors/gen_survey.py)","sourceVersion":"15th edition (2018)","tolerance":{"result.tangent.value":{"rel":1e-12,"abs":1e-09},"result.length.value":{"rel":1e-12,"abs":1e-09},"result.chord.value":{"rel":1e-12,"abs":1e-09},"result.external.value":{"rel":1e-12,"abs":1e-09},"result.middle_ordinate.value":{"rel":1e-12,"abs":1e-09},"result.radius.value":{"rel":1e-12,"abs":1e-09}}}
{"id":"v016","input":{"degree_chord":"12 deg","radius":400},"expect":{"ok":false,"error.code":"INVALID_INPUT"},"source":"add-survey-suite scenarios","sourceVersion":"2026","tolerance":{}}
{"id":"v017","input":{"delta":"45 deg","degree_chord":"15 deg","pi_station":"18+00"},"expect":{"result.pc_station":"16+41.33","ok":true},"source":"Headquarters, Department of the Army, FM 5-233 Construction Surveying, chapter 3 (simple curves)","sourceVersion":"FM 5-233 (1985)","tolerance":{}}
{"id":"v018","input":{"delta":"75 deg","degree":"15 deg"},"expect":{"result.tangent.value":293.11,"result.external.value":99.5,"ok":true},"source":"Headquarters, Department of the Army, FM 5-233 Construction Surveying, chapter 3 (simple curves)","sourceVersion":"FM 5-233 (1985)","tolerance":{"result.tangent.value":{"abs":0.02},"result.external.value":{"abs":0.02}}}
{"id":"v019","input":{"delta":"75 deg","degree_chord":"15 deg"},"expect":{"result.tangent.value":293.94,"result.external.value":99.79,"ok":true},"source":"Headquarters, Department of the Army, FM 5-233 Construction Surveying, chapter 3 (simple curves)","sourceVersion":"FM 5-233 (1985)","tolerance":{"result.tangent.value":{"abs":0.015},"result.external.value":{"abs":0.015}}}
{"id":"v020","input":{"delta":"42°15'","degree":"5°37'"},"expect":{"result.length.value":752.23,"ok":true},"source":"Headquarters, Department of the Army, FM 5-233 Construction Surveying, chapter 3 (simple curves)","sourceVersion":"FM 5-233 (1985)","tolerance":{"result.length.value":{"abs":0.005}}}
