On the i386 platform, the ABI for functions returning a floating-point value is incompatible with that for functions returning an integral type. On the i386 platform, therefore, you must use objc_msgSend_fpret for functions that for functions returning non-integral type. For float or long double return types, cast the function to an appropriate function pointer type first. This function is not used on the PPC or PPC64 platforms.
https://developer.apple.com/documentation/objectivec/1456697-objc_msgsend_fpret