{
  "schemaVersion": 1,
  "slug": "ideal-weight-calculator",
  "category": "health",
  "kind": "implementation",
  "independentValidation": false,
  "implementationHash": "21e878bb80fb8a3b2df9d1cb57e0caca352963be21d18e06fe53066eeda99378",
  "provenance": "Generated from the calculation contract used by the published page. Publication is not external validation.",
  "sourceFiles": [
    "data/calculators/ideal-weight-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": "W = b + k × max(0, h ÷ 2.54 − 60) ; W_B ∈ [18.5 × (h ÷ 100)², 25 × (h ÷ 100)²]",
    "vars": [
      [
        "W",
        "ideal body weight (kg)"
      ],
      [
        "b",
        "base constant at 5 ft"
      ],
      [
        "k",
        "weight added per inch over 5 ft"
      ],
      [
        "h",
        "height (cm)"
      ],
      [
        "W_B",
        "healthy weight range for BMI 18.5–25 (kg)"
      ]
    ],
    "note": "Devine b/k: F 45.5/2.3, M 50/2.3; Robinson F 49/1.7, M 52/1.9; Miller F 53.1/1.36, M 56.2/1.41; Hamwi F 45.5/2.2, M 48/2.7."
  },
  "externalEvidence": {
    "reviewedAt": "2026-10-12",
    "sources": [
      {
        "name": "Pai and Paloucek (2000) — Historical origins of ideal-weight equations",
        "url": "https://pubmed.ncbi.nlm.nih.gov/10981254/"
      }
    ],
    "referenceRole": "context",
    "implementationHash": "21e878bb80fb8a3b2df9d1cb57e0caca352963be21d18e06fe53066eeda99378",
    "basis": "W = b + k × max(0, h ÷ 2.54 − 60) ; W_B ∈ [18.5 × (h ÷ 100)², 25 × (h ÷ 100)²]",
    "limitations": "The references provide context and limitations. They do not validate this page’s illustrative multipliers, lookup values or predictions."
  },
  "contract": {
    "compute": "const inches = height/2.54; const over = Math.max(inches-60, 0); const m = sex==='female'; const devine = (m?45.5:50) + 2.3*over; const robinson = (m?49:52) + (m?1.7:1.9)*over; const miller = (m?53.1:56.2) + (m?1.36:1.41)*over; const hamwi = (m?45.5:48) + (m?2.2:2.7)*over; const m2 = Math.pow(height/100, 2); return { devine, robinson, miller, hamwi, bmiRangeLow: 18.5*m2, bmiRangeHigh: 25*m2 };",
    "inputs": [
      {
        "name": "sex",
        "type": "select",
        "default": "male",
        "options": [
          {
            "value": "male"
          },
          {
            "value": "female"
          }
        ]
      },
      {
        "name": "height",
        "type": "number",
        "default": 178,
        "min": 120,
        "max": 230,
        "step": 0.5,
        "slider": true
      }
    ],
    "outputs": [
      {
        "name": "devine",
        "precision": 1,
        "unit": "kg"
      },
      {
        "name": "robinson",
        "precision": 1,
        "unit": "kg"
      },
      {
        "name": "miller",
        "precision": 1,
        "unit": "kg"
      },
      {
        "name": "hamwi",
        "precision": 1,
        "unit": "kg"
      },
      {
        "name": "bmiRangeLow",
        "precision": 1,
        "unit": "kg"
      },
      {
        "name": "bmiRangeHigh",
        "precision": 1,
        "unit": "kg"
      }
    ],
    "interpret": null
  }
}
