TR1 Math Special Functions

Benjamin Kosnik bkoz@redhat.com
Thu Feb 8 18:49:00 GMT 2007


> check_value.exe: 
> */tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc:2143: 
> void test049() [with Tp = double]: Assertion `max_abs_frac < Tp(0.002)' 
> failed.
> FAIL: 
> tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc 
> execution test
> 
> check_value.exe: 
> */tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc:4336: 
> void test086() [with Tp = double]: Assertion `max_abs_frac < Tp(0.002)' 
> failed.
> FAIL: 
> tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc 
> execution test
> 
> check_value.exe: 
> */tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc:400: 
> void test007() [with Tp = double]: Assertion `max_abs_frac < Tp(0.002)' 
> failed.
> FAIL: 
> tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc 
> execution test
> 
> check_value.exe: 
> */tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc:1202: 
> void test022() [with Tp = double]: Assertion `max_abs_frac < 
> Tp(2.0000000000000016e-14)' failed.
> FAIL: 
> tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc 
> execution test

I think the best way to proceed with these tests is to get the main 
chunk of code in to svn first, with these specific tests XFAILED.

Ed, to do this, you add this to the top of the testfile you expect to fail:

// { dg-do run { xfail *-*-* } }

This would allow the tests to be run, and then the libstdc++.log files 
could be analyzed to see what the failure points are...

> Besides that, before we can do the first commit, I can see one blocker 
> issue (really, because affects the bootstrap itself, on some targets): 
> you are using in many places std::isnan, which, in fact, is only 
> available if the target supports the C99 math facilities (grep tr1/cmath 
> about isnan & co, about that). What do you suggest? As a stopgap 
> solution we could also disable completely the affected code (but I 
> appreciate your efforts with tgamma, elsewhere... )

Easy stopgap is to guard with these macros...

#if _GLIBCXX_USE_C99_MATH
#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC

// isnan

#endif
#endif

This will clutter things up but I don't see any way around this.

> Otherwise, I see un-uglified names in struct __numeric_constants, it 
> would be nice if you could take care of that and well, of course double 
> check that you are not using unconditionally any other C99 facility 
> (configuring --disable-c99 should help here). But I can take care of 
> these trivial things, in order to speed-up the process, if you are 
> willing to look into the above more substantive ones.

Seems reasonable to me.

> Many thanks for your patience with the various issues, I think we are 
> quickly converging to code ready for the first commit, really. I look 
> forward to the next, i.e., last, iteration...

It seems like this iteration could be a smaller step forward then the 
previous couple of leaps.

best,
-benjamin



More information about the Libstdc++ mailing list