Jeff Rodrigues asks why one should bother with fabs(x) instead of making it a macro. One answer is that if fabs were a macro, then fabs(x*x-y*y) would evaluate x*x-y*y twice on most C implementations.