FA-69746 / Orbital propagation / Open access
Exponential atmosphere drag: Altitudes below the table use the lowest band · case 01
Out-of-range altitudes silently extrapolate.
ROOT CAUSE
When no band applies, the lowest band is substituted.
VERIFIED REPAIR
Return None below every band base.
Unsuccessful approach: Returning zero density hides the out-of-range input.
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: cand=[min(rows)]
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 [-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 [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 [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 [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 [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 [-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 [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 [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 [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 [-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 [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 [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])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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]]] | [2.441692, 109876.1] | None | Failed |
| 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 [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 / 53d3813c848bc9ed4d631e799ced3319d16e8c4b3760a65e2d62e873125fbf11
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 [0.0,0.0]
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 [-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 [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 [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 [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 [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 [-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 [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 [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 [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 [-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 [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 [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])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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]]] | [0.0, 0.0] | None | Failed |
| 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 [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 / 9b12bfdf404c364e832ca1ae43021c5ebe809d5fdd3e80e67c567139fc7baddd
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 [-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 [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 [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 [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 [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 [-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 [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 [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 [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 [-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 [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 [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])]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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]]] | None | None | Passed |
| 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 [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 / bf029380b43cd7bcad944ec26a28f14193ee3db2a3ad62622985d33e877be802
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.245164+00:00.
Case digest / 9e2958f4ba75030460064d26e492c81251d3094eaad7c4bf14990adec25e076c