FA-69741 / Orbital propagation / Open access
Exponential atmosphere drag: Area-to-mass ratio is inverted · case 01
Dense small satellites decay fastest.
ROOT CAUSE
The acceleration multiplies by mass/area.
VERIFIED REPAIR
Multiply by area/mass.
Unsuccessful approach: Omitting mass returns a force per unit density, not an acceleration.
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=max(cand)
rho=rho0*math.exp(-(alt-b)/H)
acc=0.5*rho*(v*1000)**2*cd*mass/area
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 [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 [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 [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 [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 [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 [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 [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 [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, 0.009605524] | [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]]] | [7.248111e-11, 0.4788736] | [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, 0.0001016438] | [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.06946e-10, 0.07157254] | [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]]] | [3.787741e-15, 2.281583e-05] | [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]]] | None | None | 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, 0.006277657] | [6.967e-13, 3.71459e-07] | Failed |
SHA-256 / 332e5c7ebc30b38ae627dbbfaac87401a200c084c50165cc546f170a507cc7f2
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=max(cand)
rho=rho0*math.exp(-(alt-b)/H)
acc=0.5*rho*(v*1000)**2*cd*area
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 [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 [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 [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 [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 [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 [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 [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 [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, 0.001921105] | [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]]] | [7.248111e-11, 0.004788736] | [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-05] | [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.06946e-10, 0.03578627] | [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]]] | [3.787741e-15, 6.84475e-07] | [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]]] | None | None | 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, 4.828967e-07] | [6.967e-13, 3.71459e-07] | Failed |
SHA-256 / 23ca1bca92cb5547e3d9cca6718571ff4ae3e7c1cea587871b6c5f88c71609e5
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 [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 [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 [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 [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 [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 [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 [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 [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]]] | None | None | 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 / c5b4ff887167470c642d286c1382b72c92ea6569bc9255dde5d57f0f0b16feb8
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.124411+00:00.
Case digest / 8c5e98de62897814d473f6c2027615b3026390c1f3d3228990360679da074c5a