FAILURE MAP
← Case archive

FA-69726 / Orbital propagation / Open access

Exponential atmosphere drag: Density band is the lowest band below the altitude · case 01

Upper-atmosphere densities are extrapolated from sea level.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The band is chosen with min() over bases below the altitude.

VERIFIED REPAIR

Use the highest base not above the altitude.

Unsuccessful approach: Using the first band at or above the altitude extrapolates downward.

Case contract

Input [alt km, v km/s, cd, area m^2, mass kg, rows]: rows are [base km, rho0 kg/m^3, H km]; the band is the highest base <= alt (None below every base). rho=rho0 exp(-(alt-base)/H). Drag acceleration = 0.5 rho (1000 v)^2 cd area/mass (m/s^2). Return [rho, accel] formatted with 7 significant digits.

Why this case matters

Orbit determination and mission planning chain many small conversions; one wrong branch or unit silently moves a spacecraft by kilometres.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    alt,v,cd,area,mass,rows=x
    cand=[rw for rw in rows if rw[0]<=alt]
    if not cand: return None
    b,rho0,H=min(cand)
    rho=rho0*math.exp(-(alt-b)/H)
    acc=0.5*rho*(v*1000)**2*cd*area/mass
    return [float('%.6e'%rho),float('%.6e'%acc)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07])], [('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None)], [('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05])], [('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07])], [('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.329707e-24, 1.720954e-18][2.968709e-12, 3.84221e-06]Failed
exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.289432e-15, 8.519115e-10][7.248111e-11, 4.788736e-05]Failed
exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.414069e-42, 1.590828e-36][3.614e-14, 4.06575e-08]Failed
exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.263262e-09, 0.008454255][1.06946e-10, 0.0007157254]Failed
exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.473263e-54, 8.87435e-49][3.787741e-15, 2.281583e-09]Failed
exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]NoneNonePassed
exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.357253e-30, 7.236454e-25][6.967e-13, 3.71459e-07]Failed

SHA-256 / 424e4f9a6809249d33d371f95d3ae8a5e114a41f1dd87ff129e06a39a49297eb

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    alt,v,cd,area,mass,rows=x
    cand=[rw for rw in rows if rw[0]<=alt]
    if not cand: return None
    b,rho0,H=min([rw for rw in rows if rw[0]>=alt] or cand)
    rho=rho0*math.exp(-(alt-b)/H)
    acc=0.5*rho*(v*1000)**2*cd*area/mass
    return [float('%.6e'%rho),float('%.6e'%acc)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07])], [('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None)], [('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05])], [('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07])], [('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][3.338286e-12, 4.320529e-06][2.968709e-12, 3.84221e-06]Failed
exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][4.867539e-11, 3.215922e-05][7.248111e-11, 4.788736e-05]Failed
exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][3.614e-14, 4.06575e-08][3.614e-14, 4.06575e-08]Passed
exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.073179e-09, 0.007182143][1.06946e-10, 0.0007157254]Failed
exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.473263e-54, 8.87435e-49][3.787741e-15, 2.281583e-09]Failed
exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]NoneNonePassed
exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][6.967e-13, 3.71459e-07][6.967e-13, 3.71459e-07]Passed

SHA-256 / f528c3a367e2bcab94f1cef156797b16a748fbe6e38166fa943bf8372703becf

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
N = 1
observations = []
def solve(x):
    alt,v,cd,area,mass,rows=x
    cand=[rw for rw in rows if rw[0]<=alt]
    if not cand: return None
    b,rho0,H=max(cand)
    rho=rho0*math.exp(-(alt-b)/H)
    acc=0.5*rho*(v*1000)**2*cd*area/mass
    return [float('%.6e'%rho),float('%.6e'%acc)]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07])], [('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None)], [('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05])], [('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06]), ('exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [7.248111e-11, 4.788736e-05]), ('exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.614e-14, 4.06575e-08]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07])], [('exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [3.787741e-15, 2.281583e-09]), ('exponential atmosphere drag [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [120, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.762316e-08, 0.1179412]), ('exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [1.06946e-10, 0.0007157254]), ('exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [6.967e-13, 3.71459e-07]), ('exponential atmosphere drag [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [50, 7.8, 2.2, 2.0, 20.0, [[100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], None), ('exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]', [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]], [2.968709e-12, 3.84221e-06])]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
exponential atmosphere drag [400, 7.67, 2.2, 10.0, 500.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][2.968709e-12, 3.84221e-06][2.968709e-12, 3.84221e-06]Passed
exponential atmosphere drag [250, 7.75, 2.2, 1.0, 100.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][7.248111e-11, 4.788736e-05][7.248111e-11, 4.788736e-05]Passed
exponential atmosphere drag [700, 7.5, 2.0, 20.0, 1000.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][3.614e-14, 4.06575e-08][3.614e-14, 4.06575e-08]Passed
exponential atmosphere drag [150, 7.8, 2.2, 5.0, 50.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][1.06946e-10, 0.0007157254][1.06946e-10, 0.0007157254]Passed
exponential atmosphere drag [900, 7.4, 2.2, 3.0, 300.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][3.787741e-15, 2.281583e-09][3.787741e-15, 2.281583e-09]Passed
exponential atmosphere drag [-5, 0.3, 1.0, 1.0, 1.0, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]]NoneNonePassed
exponential atmosphere drag [500, 7.6, 2.4, 0.01, 1.3, [[0, 1.225, 7.249], [100, 5.297e-07, 5.877], [200, 2.789e-10, 37.105], [300, 1.916e-11, 53.628], [500, 6.967e-13, 63.822], [700, 3.614e-14, 88.667]]][6.967e-13, 3.71459e-07][6.967e-13, 3.71459e-07]Passed

SHA-256 / 3abcb3193e6afd7a24d2bb6afd6bc722d674633475950a7bd85f43df9a11ee8a

Verification & scope

A deterministic toy two-body model with stipulated constants and conventions; not flight dynamics software or a validated SGP4 implementation. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:48:14.037383+00:00.

Case digest / aa5c8678f391a8a3cfc59b8a06c2da3ea1f440f2afc47950047c8cb6d83a51c5