[
https://issues.apache.org/jira/browse/STDCXX-722?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Martin Sebor updated STDCXX-722:
--------------------------------
Component/s: 26. Numerics
Description:
For better efficiency and to reduce namespace pollution we can replace all the
math functions used in
[<complex>|http://svn.apache.org/repos/asf/stdcxx/trunk/include/complex] with
gcc's built-in equivalents.
Quoting from section [5.46 Other built-in functions provided by
GCC|http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Other-Builtins.html#Other-Builtins]
of the gcc online manual:
{quote}
The ISO C99 functions {{_Exit}}, {{acoshf}}, {{acoshl}}, {{acosh}}, {{asinhf}},
{{asinhl}}, {{asinh}}, {{atanhf}}, {{atanhl}}, {{atanh}}, {{cabsf}}, {{cabsl}},
{{cabs}}, {{cacosf}}, {{cacoshf}}, {{cacoshl}}, {{cacosh}}, {{cacosl}},
{{cacos}}, {{cargf}}, {{cargl}}, {{carg}}, {{casinf}}, {{casinhf}},
{{casinhl}}, {{casinh}}, {{casinl}}, {{casin}}, {{catanf}}, {{catanhf}},
{{catanhl}}, {{catanh}}, {{catanl}}, {{catan}}, {{cbrtf}}, {{cbrtl}}, {{cbrt}},
{{ccosf}}, {{ccoshf}}, {{ccoshl}}, {{ccosh}}, {{ccosl}}, {{ccos}}, {{cexpf}},
{{cexpl}}, {{cexp}}, {{cimagf}}, {{cimagl}}, {{cimag}}, {{clogf}}, {{clogl}},
{{clog}}, {{conjf}}, {{conjl}}, {{conj}}, {{copysignf}}, {{copysignl}},
{{copysign}}, {{cpowf}}, {{cpowl}}, {{cpow}}, {{cprojf}}, {{cprojl}},
{{cproj}}, {{crealf}}, {{creall}}, {{creal}}, {{csinf}}, {{csinhf}},
{{csinhl}}, {{csinh}}, {{csinl}}, {{csin}}, {{csqrtf}}, {{csqrtl}}, {{csqrt}},
{{ctanf}}, {{ctanhf}}, {{ctanhl}}, {{ctanh}}, {{ctanl}}, {{ctan}}, {{erfcf}},
{{erfcl}}, {{erfc}}, {{erff}}, {{erfl}}, {{erf}}, {{exp2f}}, {{exp2l}},
{{exp2}}, {{expm1f}}, {{expm1l}}, {{expm1}}, {{fdimf}}, {{fdiml}}, {{fdim}},
{{fmaf}}, {{fmal}}, {{fmaxf}}, {{fmaxl}}, {{fmax}}, {{fma}}, {{fminf}},
{{fminl}}, {{fmin}}, {{hypotf}}, {{hypotl}}, {{hypot}}, {{ilogbf}}, {{ilogbl}},
{{ilogb}}, {{imaxabs}}, {{isblank}}, {{iswblank}}, {{lgammaf}}, {{lgammal}},
{{lgamma}}, {{llabs}}, {{llrintf}}, {{llrintl}}, {{llrint}}, {{llroundf}},
{{llroundl}}, {{llround}}, {{log1pf}}, {{log1pl}}, {{log1p}}, {{log2f}},
{{log2l}}, {{log2}}, {{logbf}}, {{logbl}}, {{logb}}, {{lrintf}}, {{lrintl}},
{{lrint}}, {{lroundf}}, {{lroundl}}, {{lround}}, {{nearbyintf}},
{{nearbyintl}}, {{nearbyint}}, {{nextafterf}}, {{nextafterl}}, {{nextafter}},
{{nexttowardf}}, {{nexttowardl}}, {{nexttoward}}, {{remainderf}},
{{remainderl}}, {{remainder}}, {{remquof}}, {{remquol}}, {{remquo}}, {{rintf}},
{{rintl}}, {{rint}}, {{roundf}}, {{roundl}}, {{round}}, {{scalblnf}},
{{scalblnl}}, {{scalbln}}, {{scalbnf}}, {{scalbnl}}, {{scalbn}}, {{snprintf}},
{{tgammaf}}, {{tgammal}}, {{tgamma}}, {{truncf}}, {{truncl}}, {{trunc}},
{{vfscanf}}, {{vscanf}}, {{vsnprintf}} and {{vsscanf}} are handled as built-in
functions except in strict ISO C90 mode ({{-ansi}} or {{-std=c89}}).
There are also built-in versions of the ISO C99 functions {{acosf}}, {{acosl}},
{{asinf}}, {{asinl}}, {{atan2f}}, {{atan2l}}, {{atanf}}, {{atanl}}, {{ceilf}},
{{ceill}}, {{cosf}}, {{coshf}}, {{coshl}}, {{cosl}}, {{expf}}, {{expl}},
{{fabsf}}, {{fabsl}}, {{floorf}}, {{floorl}}, {{fmodf}}, {{fmodl}}, {{frexpf}},
{{frexpl}}, {{ldexpf}}, {{ldexpl}}, {{log10f}}, {{log10l}}, {{logf}}, {{logl}},
{{modfl}}, {{modf}}, {{powf}}, {{powl}}, {{sinf}}, {{sinhf}}, {{sinhl}},
{{sinl}}, {{sqrtf}}, {{sqrtl}}, {{tanf}}, {{tanhf}}, {{tanhl}} and {{tanl}}
that are recognized in any mode since ISO C90 reserves these names for the
purpose to which ISO C99 puts them. All these functions have corresponding
versions prefixed with {{__builtin_}}.
{quote}
Priority: Minor (was: Major)
Environment: gcc 4
Affects Version/s: 4.2.0
Fix Version/s: 4.2.1
Remaining Estimate: 2h
Original Estimate: 2h
> [gcc] use math __builtins
> -------------------------
>
> Key: STDCXX-722
> URL: https://issues.apache.org/jira/browse/STDCXX-722
> Project: C++ Standard Library
> Issue Type: Sub-task
> Components: 26. Numerics
> Affects Versions: 4.2.0
> Environment: gcc 4
> Reporter: Martin Sebor
> Assignee: Martin Sebor
> Priority: Minor
> Fix For: 4.2.1
>
> Original Estimate: 2h
> Remaining Estimate: 2h
>
> For better efficiency and to reduce namespace pollution we can replace all
> the math functions used in
> [<complex>|http://svn.apache.org/repos/asf/stdcxx/trunk/include/complex] with
> gcc's built-in equivalents.
> Quoting from section [5.46 Other built-in functions provided by
> GCC|http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Other-Builtins.html#Other-Builtins]
> of the gcc online manual:
> {quote}
> The ISO C99 functions {{_Exit}}, {{acoshf}}, {{acoshl}}, {{acosh}},
> {{asinhf}}, {{asinhl}}, {{asinh}}, {{atanhf}}, {{atanhl}}, {{atanh}},
> {{cabsf}}, {{cabsl}}, {{cabs}}, {{cacosf}}, {{cacoshf}}, {{cacoshl}},
> {{cacosh}}, {{cacosl}}, {{cacos}}, {{cargf}}, {{cargl}}, {{carg}},
> {{casinf}}, {{casinhf}}, {{casinhl}}, {{casinh}}, {{casinl}}, {{casin}},
> {{catanf}}, {{catanhf}}, {{catanhl}}, {{catanh}}, {{catanl}}, {{catan}},
> {{cbrtf}}, {{cbrtl}}, {{cbrt}}, {{ccosf}}, {{ccoshf}}, {{ccoshl}}, {{ccosh}},
> {{ccosl}}, {{ccos}}, {{cexpf}}, {{cexpl}}, {{cexp}}, {{cimagf}}, {{cimagl}},
> {{cimag}}, {{clogf}}, {{clogl}}, {{clog}}, {{conjf}}, {{conjl}}, {{conj}},
> {{copysignf}}, {{copysignl}}, {{copysign}}, {{cpowf}}, {{cpowl}}, {{cpow}},
> {{cprojf}}, {{cprojl}}, {{cproj}}, {{crealf}}, {{creall}}, {{creal}},
> {{csinf}}, {{csinhf}}, {{csinhl}}, {{csinh}}, {{csinl}}, {{csin}},
> {{csqrtf}}, {{csqrtl}}, {{csqrt}}, {{ctanf}}, {{ctanhf}}, {{ctanhl}},
> {{ctanh}}, {{ctanl}}, {{ctan}}, {{erfcf}}, {{erfcl}}, {{erfc}}, {{erff}},
> {{erfl}}, {{erf}}, {{exp2f}}, {{exp2l}}, {{exp2}}, {{expm1f}}, {{expm1l}},
> {{expm1}}, {{fdimf}}, {{fdiml}}, {{fdim}}, {{fmaf}}, {{fmal}}, {{fmaxf}},
> {{fmaxl}}, {{fmax}}, {{fma}}, {{fminf}}, {{fminl}}, {{fmin}}, {{hypotf}},
> {{hypotl}}, {{hypot}}, {{ilogbf}}, {{ilogbl}}, {{ilogb}}, {{imaxabs}},
> {{isblank}}, {{iswblank}}, {{lgammaf}}, {{lgammal}}, {{lgamma}}, {{llabs}},
> {{llrintf}}, {{llrintl}}, {{llrint}}, {{llroundf}}, {{llroundl}},
> {{llround}}, {{log1pf}}, {{log1pl}}, {{log1p}}, {{log2f}}, {{log2l}},
> {{log2}}, {{logbf}}, {{logbl}}, {{logb}}, {{lrintf}}, {{lrintl}}, {{lrint}},
> {{lroundf}}, {{lroundl}}, {{lround}}, {{nearbyintf}}, {{nearbyintl}},
> {{nearbyint}}, {{nextafterf}}, {{nextafterl}}, {{nextafter}},
> {{nexttowardf}}, {{nexttowardl}}, {{nexttoward}}, {{remainderf}},
> {{remainderl}}, {{remainder}}, {{remquof}}, {{remquol}}, {{remquo}},
> {{rintf}}, {{rintl}}, {{rint}}, {{roundf}}, {{roundl}}, {{round}},
> {{scalblnf}}, {{scalblnl}}, {{scalbln}}, {{scalbnf}}, {{scalbnl}},
> {{scalbn}}, {{snprintf}}, {{tgammaf}}, {{tgammal}}, {{tgamma}}, {{truncf}},
> {{truncl}}, {{trunc}}, {{vfscanf}}, {{vscanf}}, {{vsnprintf}} and {{vsscanf}}
> are handled as built-in functions except in strict ISO C90 mode ({{-ansi}} or
> {{-std=c89}}).
> There are also built-in versions of the ISO C99 functions {{acosf}},
> {{acosl}}, {{asinf}}, {{asinl}}, {{atan2f}}, {{atan2l}}, {{atanf}},
> {{atanl}}, {{ceilf}}, {{ceill}}, {{cosf}}, {{coshf}}, {{coshl}}, {{cosl}},
> {{expf}}, {{expl}}, {{fabsf}}, {{fabsl}}, {{floorf}}, {{floorl}}, {{fmodf}},
> {{fmodl}}, {{frexpf}}, {{frexpl}}, {{ldexpf}}, {{ldexpl}}, {{log10f}},
> {{log10l}}, {{logf}}, {{logl}}, {{modfl}}, {{modf}}, {{powf}}, {{powl}},
> {{sinf}}, {{sinhf}}, {{sinhl}}, {{sinl}}, {{sqrtf}}, {{sqrtl}}, {{tanf}},
> {{tanhf}}, {{tanhl}} and {{tanl}} that are recognized in any mode since ISO
> C90 reserves these names for the purpose to which ISO C99 puts them. All
> these functions have corresponding versions prefixed with {{__builtin_}}.
> {quote}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.