taking absolute value of CGFloat

Small addition:

CGFloat g = fabs(f);

This will result in a casting warning, because fabs() returns a double value. To get a float value back, you need to use fabsf().

CGFloat g = fabsf(f);

For 64/32 bit system

#if CGFLOAT_IS_DOUBLE
    CGFloat g = fabs(flo);
#else
    CGFloat g = fabsf(flo);
#endif

I normally just use the ABS macro, as far as I can tell, it works regardless of which system you're on or which primitive you're using.

CGFloat x = -1.1;
double y = -2.1;
NSInteger z = -5;

x = ABS(x);
y = ABS(y);
z = ABS(z);

Use fabs()

CGFloat f = -123.4f;
CGFloat g = fabs(f);

CGFloat is defined as a double on 64-bit machines, and float on 32-bit machines. If you are targeting both 64 and 32 bit than this answer gets more complicated, but is still correct.

You want to use fabs() because it works on double datatypes which are larger than float. On 32-bit, assigning the return value of fabs() (which is a double) into a CGFloat (which is a float) is ok ONLY if you are taking the absolute value of a CGFloat or float. You would potentially overflow a 32-bit CGFloat if you try to store the absolute value of a large double number. In short, 64-bit is fine, and on 32-bit don't mix and match double and CGFloat and you'll be fine.

The ABS() macro apparently can have side-effects on some compilers.