handle float32 input correctly

When presented with a float32 input, the library should perform a 32-bit
single precision transform and not a full double-precision one.  Add test
cases for float32 and make the transform library pass.