{"calculator":{"slug":"100m-predictor","math":{"href":"https://www.tracktoolspro.com/api/calculators/100m-predictor","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/track-utilities.ts"],"equations":["base=exp(c0+c1*block30+c2*(10/fly10)); windAdjustment=w0*wind+w1*wind*base+w2*wind^2; predictedSeconds=base-windAdjustment+reaction."],"inputUnits":{"block30":"s","fly10":"s","wind":"m/s (positive tailwind)","reaction":"s"},"outputUnits":{"/predictedSeconds":"s"},"domain":["Positive block30/fly10; API reaction>=0; finite positive predicted result required or predictedSeconds=null."],"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":["Unvalidated practice-split regression. The published wind model does not validate the practice regression or start/reaction timing convention. Input timing origin must be consistent."],"mountedPageNotes":[],"workedExamples":[{"input":{"block30":4,"fly10":1,"wind":0,"reaction":0.149},"expected":{"/predictedSeconds":11.221161948458294},"absoluteTolerance":1e-8,"note":"Illustrative canonical-handler result; not independent validation of an empirical model."}],"constantsAndTables":{"practiceRegression":[2.2441850962837124,0.14735859276138946,-0.042918544171317706],"coefficientOrder":["intercept","block30","10/fly10"],"windCoefficients":[-0.0449,0.009459,-0.0042],"defaultReactionSeconds":0.149},"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/track-utilities.ts","url":"https://github.com/wickthumb/track_tools_pro_marketing/blob/b5a8aca7b85361476e0321a08b7fa5f516fc9535/lib/formulas/track-utilities.ts","note":"Primary implementation source for these equations/tables, not a claim of scientific calibration."},{"title":"Moinat, Fabius & Emanuel, 2018","url":"https://onlinelibrary.wiley.com/doi/full/10.1080/17461391.2018.1480062","note":"Moinat, Fabius, Emanuel 2018 empirical wind model. Does not validate the separate practice-split 100m regression."}]},"annotations":{"readOnlyHint":true,"consequentialHint":false},"name":"100m Predictor","description":"This 100m predictor estimates race performance from a block 30m split and a flying 10m split, with optional wind and reaction-time adjustments. Use it to translate practice timing into a realistic 100m projection.","category":"Sprints & Hurdles","method":"POST","endpoint":"/api/calculators/100m-predictor","page":"/calculators/100m-predictor","inputSchema":{"type":"object","required":["block30","fly10"],"properties":{"block30":{"type":"number","description":"Block or first-movement 30m split in seconds.","minimum":0},"fly10":{"type":"number","description":"Flying 10m split in seconds.","minimum":0},"wind":{"type":"number","description":"Wind in m/s. Positive is tailwind.","default":0},"reaction":{"type":"number","description":"Reaction time in seconds.","default":0.149,"minimum":0}}},"example":{"block30":4,"fly10":1,"wind":0,"reaction":0.149}}}