To put things into context, I did some basic research trying to understand which lib calls transformation gcc does but llvm does not under -ffast-math, and started writing code to reduce the difference. Probably I should've explained this in my previous pow() patch, but, anyway.
This is the second one of a series of local patches I'll try to submit over the next weeks. It may at this point considered a WIP (still need to add more comprehensive tests, among others). I'm not completely sure if we should remove the call to atan (I wasn't confident on how to do that) or let subsequent passes deal with that. Ideas? Thanks!