Where are std::sinf( float ) etc.

Howard Hinnant hhinnant@apple.com
Thu Dec 29 16:52:00 GMT 2005


On Dec 28, 2005, at 11:53 PM, Gabriel Dos Reis wrote:

> | I Googled around and saw c_shadow that had these but was later  
> removed.
> |
> | In addition, TR1 is very clear that the new C99 math functions in
> | section 8.16.1 such as
> | double acosh(double x);
> | float acoshf(float x);
> | long double acoshl(long double x);
> | have these suffixed versions
>
> TR1 is not part of the standard (yet) and we still have to dig out
> which part of TR1 will be merged into C+0x.

We seem to have already merged (perhaps incompletely) some parts of  
this very part of TR1 as if it was already standard.  I'm curious as  
to what our policy is for deciding on some parts of TR1 while  
rejecting others.  There is evidently more to it than is explained  
here.  Is our policy documented somewhere?

#include <cmath>
#include <iostream>

int main()
{
     std::cout << std::sin(1) << '\n';            // ambiguous by C+ 
+03, not by TR1, not by gcc 4
     std::cout << std::atan2(1.0F, 1.0) << '\n';  // ambiguous by C+ 
+03, by gcc 4, not by TR1
     std::cout << std::signbit(1.0) << '\n';      // doesn't exist in  
C++03, does in TR1, gcc 4
}

(assuming appropriate configure)

Note that I'm not at all complaining about the parts we've merged in  
already.  I'm simply seeking clarification on how we decide which  
parts are ok to merge now and which aren't.

Thanks,
Howard



More information about the Libstdc++ mailing list