Dipole
Builds the dipole (gx, gy, gz, px, py, pz), unitized, zero-sanitized, and blade-checked.
A round weight ‖(gx, gy)‖ that doesn't round to zero is divided out of every component, leaving the g-part the carrier line's unit normal and offset. A weight that rounds to zero at the SCALE quantum splits on gz: non-zero leaves the dipole at infinity with all six components raw (at-infinity weights are data — no unitization, no canonicalization), while a whole g-part of zero means the blade lies in the e41/e42/e43 span — it is the flat point (px, py, pz), not a dipole, and the constructor throws. Accepted components must satisfy the Plücker blade constraint gx·px + gy·py + gz·pz = 0 — what separates a factorizable wedge of two points from a general bivector; the residual is evaluated on the unitized components and must round to zero. Signed zeroes sanitize to +0.0.
Parameters
The e23 component: the carrier normal's x-component.
The e31 component: the carrier normal's y-component.
The e12 component: the carrier's offset term.
The e41 component of the flat bulk.
The e42 component of the flat bulk.
The e43 component of the flat bulk.
Throws
When the whole g-part rounds to zero — the blade collapses to the payload FlatPoint(px, py, pz).
When the Plücker residual doesn't round to zero; carries the residual for diagnostics.