{
  "benchmark": "schwarzschild-horizon-and-circular-orbits",
  "cases": {
    "horizonRegularity": {
      "coordinateTransformation": "v=t+r*, dr*/dr=1/f, so dt=dv-dr/f",
      "exactHorizonKretschmann": "3/4",
      "exactHorizonRadius": "2",
      "horizonKretschmann": 0.75,
      "horizonRadius": 2,
      "ingoingMetricSamples": [
        {
          "determinant": -1,
          "f": 0,
          "gRR": 0,
          "gVR": 1,
          "gVV": 0,
          "r": 2
        },
        {
          "determinant": -1,
          "f": 0.19999999999999996,
          "gRR": 0,
          "gVR": 1,
          "gVV": -0.19999999999999996,
          "r": 2.5
        },
        {
          "determinant": -1,
          "f": 0.5,
          "gRR": 0,
          "gVR": 1,
          "gVV": -0.5,
          "r": 4
        },
        {
          "determinant": -1,
          "f": 0.8,
          "gRR": 0,
          "gVR": 1,
          "gVV": -0.8,
          "r": 10
        }
      ]
    },
    "nullCircularOrbit": {
      "angularMomentum": 1,
      "exactFirstDerivative": "0",
      "exactPotential": "1/27",
      "exactSecondDerivative": "-2/81",
      "firstDerivative": 0,
      "potential": 0.03703703703703704,
      "r": 3,
      "secondDerivative": -0.024691358024691357,
      "stability": "unstable"
    },
    "timelikeCircularOrbits": {
      "insideIscoSample": {
        "angularMomentumSquared": 12.5,
        "classification": "unstable",
        "exactAngularMomentumSquared": "25/2",
        "exactSecondDerivative": "-1/125",
        "r": 5,
        "secondDerivative": -0.008
      },
      "isco": {
        "angularMomentumSquared": 12,
        "energySquared": 0.8888888888888888,
        "exactAngularMomentumSquared": "12",
        "exactEnergySquared": "8/9",
        "exactFirstDerivative": "0",
        "exactSecondDerivative": "0",
        "firstDerivative": 0,
        "r": 6,
        "secondDerivative": 0,
        "stability": "marginal"
      },
      "outsideIscoSample": {
        "angularMomentumSquared": 12.8,
        "classification": "stable",
        "exactAngularMomentumSquared": "64/5",
        "exactSecondDerivative": "1/640",
        "r": 8,
        "secondDerivative": 0.0015625
      }
    }
  },
  "checks": [
    {
      "absoluteError": 0,
      "actual": 2,
      "expected": 2,
      "name": "ingoing horizon radius",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0,
      "expected": 0,
      "name": "ingoing horizon lapse",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0,
      "expected": 0,
      "name": "ingoing horizon g_vv",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 1,
      "expected": 1,
      "name": "ingoing horizon g_vr",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0,
      "expected": 0,
      "name": "ingoing horizon g_rr",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": -1,
      "expected": -1,
      "name": "ingoing horizon radial-block determinant",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": -1,
      "expected": -1,
      "name": "ingoing determinant at r=2.5",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": -1,
      "expected": -1,
      "name": "ingoing determinant at r=4",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": -1,
      "expected": -1,
      "name": "ingoing determinant at r=10",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0.75,
      "expected": 0.75,
      "name": "horizon Kretschmann scalar",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0,
      "expected": 0,
      "name": "null orbit first derivative",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 6.938893903907228e-18,
      "actual": 0.03703703703703704,
      "expected": 0.037037037037037035,
      "name": "null orbit potential",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": -0.024691358024691357,
      "expected": -0.024691358024691357,
      "name": "null orbit second derivative",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 12,
      "expected": 12,
      "name": "ISCO circular angular momentum squared",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0.8888888888888888,
      "expected": 0.8888888888888888,
      "name": "ISCO circular energy squared",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0,
      "expected": 0,
      "name": "ISCO first derivative",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0,
      "expected": 0,
      "name": "ISCO fixed-L second derivative",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0,
      "expected": 0,
      "name": "ISCO fixed-L derivative agrees with circular-branch formula",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 12.5,
      "expected": 12.5,
      "name": "inside sample angular momentum squared",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": -0.008,
      "expected": -0.008,
      "name": "inside sample fixed-L second derivative",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": -1,
      "expected": -1,
      "name": "inside sample stability sign",
      "pass": true,
      "tolerance": 0
    },
    {
      "absoluteError": 0,
      "actual": -0.008,
      "expected": -0.008,
      "name": "inside fixed-L derivative agrees with circular-branch formula",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 12.8,
      "expected": 12.8,
      "name": "outside sample angular momentum squared",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 0.0015625,
      "expected": 0.0015625,
      "name": "outside sample fixed-L second derivative",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 0,
      "actual": 1,
      "expected": 1,
      "name": "outside sample stability sign",
      "pass": true,
      "tolerance": 0
    },
    {
      "absoluteError": 1.3010426069826053e-18,
      "actual": 0.0015625000000000014,
      "expected": 0.0015625,
      "name": "outside fixed-L derivative agrees with circular-branch formula",
      "pass": true,
      "tolerance": 1e-12
    },
    {
      "absoluteError": 1.1102230246251565e-16,
      "actual": 0.888888888888889,
      "expected": 0.8888888888888888,
      "name": "ISCO energy agrees with the timelike potential",
      "pass": true,
      "tolerance": 1e-12
    }
  ],
  "formulas": {
    "ingoingRadialMetric": "ds^2_(v,r)=-f dv^2+2 dv dr",
    "kretschmann": "K=48 m^2/r^6",
    "lapse": "f(r)=1-2m/r",
    "nullFirstDerivative": "V_null'=2 L^2(3-r)/r^4",
    "nullPotential": "V_null=f L^2/r^2",
    "nullSecondDerivative": "V_null''=6 L^2(r-4)/r^5",
    "staticRadialMetric": "ds^2_(t,r)=-f dt^2+dr^2/f",
    "timelikeCircularAngularMomentumSquared": "L^2=r^2/(r-3)",
    "timelikeCircularEnergySquared": "E^2=(r-2)^2/[r(r-3)]",
    "timelikeFirstDerivative": "V_timelike'=2(r^2-L^2 r+3L^2)/r^4",
    "timelikeFixedLSecondDerivativeOnCircularBranch": "V_timelike''|_(fixed L,circular)=2(r-6)/[r^3(r-3)]",
    "timelikePotential": "V_timelike=f(1+L^2/r^2)"
  },
  "inputs": {
    "arithmetic": "deterministic IEEE-754 binary64",
    "equatorialGeodesics": true,
    "m": 1,
    "nullAngularMomentum": 1,
    "signature": "(-,+,+,+)",
    "stabilitySampleRadii": [
      5,
      8
    ],
    "units": "geometrized benchmark with m=GM=1"
  },
  "schemaVersion": 1,
  "status": "pass",
  "summary": {
    "failed": 0,
    "passed": 27,
    "total": 27
  },
  "tolerances": {
    "absolute": 1e-12,
    "exactSignChecks": 0,
    "relative": null
  }
}
