If you use single precision (ps->iparm = 1), then values ps->fa.re, ps->fa.i,ps->fx.re, ps->fx.i, ps->fb.re = 0, ps->fb.i = 0 should be float.
You can create new structure
and replace type "doublecomplex" to "floatcomplex" in the example.
The speedup depends on many factors type of matrix, size of matrix, architecture ant etc. But we dont have tests which compare single precision with double one.