On Aug 8, 2013, at 6:37 AM, Scott Ribe <[email protected]> wrote:
> On Aug 8, 2013, at 6:37 AM, Roland King <[email protected]> wrote:
>> shouldn't do that as long as one uses the correct functions, ie sinf() and 
>> cosf().
> 
> But */+- promote…

If all the operands to an operator are floats, the operation occurs in float, 
and
the type of the result will be float.  However, if either type is double, the 
other
will be promoted, and the type of the result will be double.  This is an easy
situation to get into because (a) the type of an unsuffixed floating-point 
literal
(e.g. 1.0 instead of 1.0f) is double and (b) while many of the math library 
calls
come in both float and double varieties, the double version usually has the
more obvious name.

C does permit the implementation to use a larger-precision type to compute
intermediate results within an expression.  For example, if you compute
4.0f * someFloat + 7.0f * someOtherFloat, the implementation is allowed to
do this at a greater precision than float.  But note that, when this is done,
it’s done *for better performance*, so that machines that don’t provide native
float support (like the x87 coprocessor) aren’t forced to round to float after
every operation.  (Java permits something similar in the absence of ‘strictfp’.)

John.
_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to