{"calculator":{"slug":"distance-equivalency-calculator","math":{"href":"https://www.tracktoolspro.com/api/calculators/distance-equivalency-calculator","jsonPointer":"/calculator/math","version":"2026-10-21.1","implementationVersion":"b5a8aca7b85361476e0321a08b7fa5f516fc9535","scope":"Canonical HTTP function and documented corresponding mounted-form math. This is public inspectable documentation, not access control or independent empirical validation.","unitNotation":"Input paths use [] and *; output paths are JSON Pointers with * (one segment) and ** (descendants). Empty output path denotes scalar result. Units apply to numeric quantities or explicitly described numeric strings; labels/statuses/booleans are dimensionless. More specific units, including count/index exceptions, override broad patterns.","interfaceNotes":["HTTP input is described by the adjacent inputSchema. The original handlers may accept numeric strings; this metadata adds no validation.","Mounted forms accept displayed clock/unit strings and enforce their own limits. Mounted tools limit strings to 200 characters and numeric parts to magnitude 1000000. Do not assume mounted/API input interchangeability.","Some legacy extreme/invalid tuples can produce null/empty results or nonfinite numbers serialized as null. Those are unavailable answers, not exact numerical predictions. Per-calculator domain describes the intended mathematical inputs."],"kind":"empirical-model","implementationFiles":["lib/formulas/vdot.ts"],"equations":["t=timeSeconds/60 (minutes); v=distanceMeters/t (m/min).","fraction(t)=0.8+0.1894393*exp(-0.012778*t)+0.2989558*exp(-0.1932605*t); oxygen(v)=-4.6+0.182258*v+0.000104*v^2; VDOT=oxygen(v)/fraction(t).","For each output distance, invert the positive-VDOT equation: upper=max(1,distance/100), double up to 1024 times until score<=VDOT, then bisect up to 1100 iterations; stop at relative bracket width<=1e-12 or floating-point stagnation. Return midpoint in minutes."],"inputUnits":{"distanceMeters":"m","timeSeconds":"s"},"outputUnits":{"/vdot":"dimensionless performance index","/predictionsMinutes/*":"min"},"domain":["Positive reference distance/time and positive finite VDOT; invalid/unrepresentable results return {vdot:null,predictionsMinutes:{}}."],"rounding":["Raw IEEE-754 numbers; the mounted page formats clocks separately."],"assumptions":["Uses the entered values and the selected convention; this documentation does not strengthen existing validation."],"limitations":["Daniels-Gilbert performance model, not laboratory VO2 or guaranteed race performance. Long-duration numerical inversion is not independent validation of physiology."],"mountedPageNotes":[],"workedExamples":[{"input":{"distanceMeters":5000,"timeSeconds":1200},"expected":{"/vdot":49.806233428066335,"/predictionsMinutes/5K":19.999999999998863},"absoluteTolerance":1e-8,"note":"Illustrative canonical-handler result; not independent validation of an empirical model."}],"constantsAndTables":{"commonDistancesMeters":{"100m":100,"200m":200,"400m":400,"800m":800,"1500m":1500,"Mile":1609.34,"3000m":3000,"3200m":3200,"5K":5000,"8K":8000,"10K":10000,"15K":15000,"Half Marathon":21097.5,"Marathon":42195},"vdotTimeUnit":"minutes","vdotVelocityUnit":"m/min","inverseRelativeTolerance":1e-12,"maxBracketExpansions":1024,"maxBisections":1100},"sources":[{"title":"Canonical HTTP binding at the documented implementation revision","url":"https://github.com/wickthumb/track_tools_pro_marketing/blob/b5a8aca7b85361476e0321a08b7fa5f516fc9535/lib/calculator-functions.ts","note":"Existing calculation handler; math metadata is additive."},{"title":"lib/formulas/vdot.ts","url":"https://github.com/wickthumb/track_tools_pro_marketing/blob/b5a8aca7b85361476e0321a08b7fa5f516fc9535/lib/formulas/vdot.ts","note":"Primary implementation source for these equations/tables, not a claim of scientific calibration."},{"title":"VDOT creator’s FAQ","url":"https://support.vdoto2.com/v-o2-faq/","note":"First-party explanation distinguishes VDOT from measured VO2max. Equation coefficients are documented from the canonical implementation, not derived from this FAQ. FAQ rechecked 2026-10-21."}]},"annotations":{"readOnlyHint":true,"consequentialHint":false},"name":"Race Equivalency Calculator","description":"Compare a reference performance with modeled equivalent times from 800m through the marathon using the Daniels–Gilbert VDOT equation. These comparisons depend on preparation and race conditions.","category":"Training & Fitness","method":"POST","endpoint":"/api/calculators/distance-equivalency-calculator","page":"/calculators/distance-equivalency-calculator","inputSchema":{"type":"object","required":["distanceMeters","timeSeconds"],"properties":{"distanceMeters":{"type":"number","description":"Known performance distance in meters.","minimum":0},"timeSeconds":{"type":"number","description":"Known performance time in seconds.","minimum":0}}},"example":{"distanceMeters":5000,"timeSeconds":1200}}}