You know what, I think `1.0f` is ok actually -- its `0.0f * float` that is tricky.

http://gcc.godbolt.org/ makes these really easy to try btw. In particular, compare:
http://gcc.godbolt.org/#%7B%22version%22%3A3%2C%22filterAsm%22%3A%7B%22labels%22%3Atrue%2C%22directives%22%3Atrue%2C%22commentOnly%22%3Atrue%7D%2C%22compilers%22%3A%5B%7B%22source%22%3A%22%2F%2F%20Type%20your%20code%20here%2C%20or%20load%20an%20example.%5Cnfloat%20foo(float%20f)%20%7B%5Cn%20%20return%200.0f*f%3B%5Cn%7D%22%2C%22compiler%22%3A%22%2Fusr%2Fbin%2Fg%2B%2B-4.4%22%2C%22options%22%3A%22-O3%20-march%3Dnative%22%7D%5D%7D

with and without `-ffast-math` (which assumes infs and NaNs can't happen).