Reusable exact-length F32 FFT plan. The direction and N are fixed; batches
may change, in which case the batched workspace is replaced, not grown
without bound. Caller-owned output bindings must be non-overlapping.
Raw bindings carry no dtype/device tag: pass F32 storage from this client.