This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Where are std::sinf( float ) etc.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]