#[unsafe(no_mangle)]pub unsafe extern "C" fn ballistics_calculate_trajectory_with_drag_table_scaled(
inputs: *const FFIBallisticInputs,
wind: *const FFIWindConditions,
atmosphere: *const FFIAtmosphericConditions,
max_range: c_double,
step_size: c_double,
drag_mach: *const c_double,
drag_cd: *const c_double,
drag_table_len: c_int,
cd_scale: c_double,
) -> *mut FFITrajectoryResultExpand description
ballistics_calculate_trajectory_with_drag_table with an additional whole-curve
drag scale (MBA-1356): the deck’s interpolated Cd is multiplied by cd_scale at the
same site the base export uses, i.e. Cd_used = table.interpolate(mach) * cd_scale.
cd_scale = 1.0 is neutral and produces byte-identical output to
ballistics_calculate_trajectory_with_drag_table on the same deck. Typical truing
values are in [0.90, 1.10]; values outside that band are accepted here (the engine
only rejects non-finite or non-positive) — an “unusually large” warning is a CLI-only
concern (Task 2), not part of this frozen C ABI.
Returns null when cd_scale is not finite or not > 0, in addition to every failure
mode of ballistics_calculate_trajectory_with_drag_table (matching that export’s
null sentinel for an invalid deck).
§Safety
Same contract as ballistics_calculate_trajectory_with_drag_table.