Similar to fast_exp in https://github.com/boulos/syrah
super nit: it's easier to read when range is on a single line
I'd remove f32_ prefix from all helpers, strictly speaking they do support any fp type. Also in this particular case they do not save much space, e.g. in f32_mul vs b.create<MulFOp> the latter doesn't require to keep in the head what all these helpers actually do.