Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: std::log10() problem



<snip>
What doesn't make sence to me is why things as std::log10() that's been part
of the standard C++ Library since 1999(?)
doesn't work as it should?
Same if you call some other <cmath> stuff as std::sin() with a float value
instead of a double.

I also tried to link with libstdc++.a from the 10.3.9 or 10.2.8 SDK, makes
no difference.

I'm building my app on an Intel Mac, haven't tried on my PPC with 10.4.0 SDK
instead of 10.4u
That might work??

It's easy to test thos things by just building a default Carbon application
with Xcode and then just
add say:

double dVal = std::log10(float(1.0));    // doesn't work with SDK 10.4u

double dVal = std::log10(double(1.0));    // work OK with SDK 10.4u

Thanks

Rolf


What seems to have happened is that 10.4 has added some new optimisations for float precision math in the C++ headers for GCC 3.3
When you compile std::log10( (float)1.0) with the 10.2.8 C++ headers, it ends up calling log10
When you compile std::log10( (float)1.0) with the 10.4 C++ headers, it ends up calling log10f 

log10f (and friends e.g. powf, sinf etc.) are not implemented in the 10.2.8 version of libstdc++, so you get the error.

<cmath> looks like this:

#if _GLIBCPP_HAVE_LOG10F
  inline float 
  log10(float __x) { return ::log10f(__x); }
#else
  inline float 
  log10(float __x) { return ::log10(static_cast<double>(__x)); }
#endif

I'm guessing that _GLIBCPP_HAVE_LOG10F shouldn't be defined if you are targeting 10.2.8. c++config.h doesn't look as if it defines it - anyone know where it is getting set?

I got around the problem by casting the parameters to all my math calls to double (messy).

- Paul Miller
AVA CAD/CAM.
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/xcode-users/email@hidden

This email sent to email@hidden



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.