{
  "schemaVersion": 1,
  "slug": "vertical-jump-calculator",
  "category": "sports",
  "kind": "implementation",
  "independentValidation": false,
  "implementationHash": "7fe5b8d329f7de94df0e61cda8ca609e983523cebd62e7ce80b99b3f1c9d5faf",
  "provenance": "Generated from the calculation contract used by the published page. Publication is not external validation.",
  "sourceFiles": [
    "data/calculators/vertical-jump-calculator.json",
    "src/engine.js"
  ],
  "runtimeSource": "/sources/engine.txt",
  "runtimeHash": "5c888d8898afbdee36267bb9977829e1e2ac568f6677c8ee87469c139864645c",
  "scope": "The compute function records implemented equations, constants, lookup tables and custom rules. Inputs record defaults and allowed values; outputs record precision and units. Defaults are examples, not recommendations. General background references are not evidence for this specific algorithm.",
  "publishedFormula": {
    "formula": "J=max(0,R_j−R_s); J_cm=2.54J; P=100J/H; T=120−R_j",
    "vars": [
      [
        "R_s",
        "Standing reach (in)"
      ],
      [
        "R_j",
        "Jump reach (in)"
      ],
      [
        "H",
        "Entered body height (in)"
      ],
      [
        "J",
        "Reach difference (in)"
      ],
      [
        "P",
        "Jump difference as % of height"
      ],
      [
        "T",
        "Difference from 10 ft reach (in)"
      ]
    ],
    "note": "The reach difference is a measurement estimate; T may be negative when jump reach exceeds 10 ft. No performance rating is assigned."
  },
  "externalEvidence": null,
  "contract": {
    "compute": "if(jumpReach<standingReach)return {verticalJump:null,verticalJumpCm:null,relativeToHeight:null,targetReach:null,__error:'inputError'};const jump=jumpReach-standingReach;return {verticalJump:jump,verticalJumpCm:jump*2.54,relativeToHeight:height>0?jump/height*100:null,targetReach:120-jumpReach};",
    "inputs": [
      {
        "name": "standingReach",
        "type": "number",
        "default": 88,
        "min": 24,
        "max": 160,
        "step": 0.5,
        "slider": true
      },
      {
        "name": "jumpReach",
        "type": "number",
        "default": 112,
        "min": 24,
        "max": 200,
        "step": 0.5,
        "slider": true
      },
      {
        "name": "height",
        "type": "number",
        "default": 70,
        "min": 40,
        "max": 100,
        "step": 0.5,
        "slider": true
      }
    ],
    "outputs": [
      {
        "name": "verticalJump",
        "precision": 2,
        "unit": "in"
      },
      {
        "name": "verticalJumpCm",
        "precision": 1,
        "unit": "cm"
      },
      {
        "name": "relativeToHeight",
        "precision": 1,
        "unit": "%"
      },
      {
        "name": "targetReach",
        "precision": 1,
        "unit": "in"
      }
    ],
    "interpret": null
  }
}
