Arbitrary for a modified-Givens-rotation param array
([flag, h11, h21, h12, h22]) — srotm/drotm's shape. flag can't be
generated as an arbitrary number: srotm.mjs/drotm.mjs reject anything
outside spec.range.flags (from param.json), and which of h11/h21/h12/
h22 are even meaningful depends on which flag comes up (see each
routine's own forwardFactor) — so this picks a flag index first, then
chains into the 4 coefficients, rather than treating all 5 slots as
independent scalars the way buildArb's generic per-field dispatch does.
spec.type === "float64array" (drotm's derived param64 — see
derive64 in validation.js) generates genuine wide doubles via
float64Arb into a Float64Array; the default (srotm's own plain
"srotm_param" spec) uses floatArb into a Float32Array.
Parameters
spec: any
loaded param/param64 spec (see tests/validation/params/param.json)
Arbitrary for a modified-Givens-rotation
paramarray ([flag, h11, h21, h12, h22]) — srotm/drotm's shape.flagcan't be generated as an arbitrary number: srotm.mjs/drotm.mjs reject anything outsidespec.range.flags(fromparam.json), and which of h11/h21/h12/ h22 are even meaningful depends on which flag comes up (see each routine's ownforwardFactor) — so this picks a flag index first, then chains into the 4 coefficients, rather than treating all 5 slots as independent scalars the waybuildArb's generic per-field dispatch does.spec.type === "float64array"(drotm's derivedparam64— seederive64in validation.js) generates genuine wide doubles viafloat64Arbinto a Float64Array; the default (srotm's own plain"srotm_param"spec) usesfloatArbinto a Float32Array.