Patchwork [PR] Crash of Bessel functions at x==0!

login
register
mail settings
Submitter François Dumont
Date Feb. 9, 2013, 8:56 p.m.
Message ID <5116B802.8030401@gmail.com>
Download mbox | patch
Permalink /patch/219448/
State New
Headers show

Comments

François Dumont - Feb. 9, 2013, 8:56 p.m.
Attached patch applied then.

2013-02-09  François Dumont  <fdumont@gcc.gnu.org>

     * include/tr1/bessel_function.tcc (__cyl_bessel_ij_series): Code
     simplification.


On 02/08/2013 08:46 PM, Paolo Carlini wrote:
> On 02/08/2013 07:08 PM, François Dumont wrote:
>> Just a small remark, in bessel_function.tcc, the following:
>>
>> +      if (__x == _Tp(0))
>> +    {
>> +          if (__nu == _Tp(0))
>> +            return _Tp(1);
>> +          else if (__nu == _Tp(1))
>> +            return _Tp(0);
>> +          else
>> +            return _Tp(0);
>> +    }
>>
>> could be simplified into
>>
>> +      if (__x == _Tp(0))
>> +        return (__nu == _Tp(0)) ? _Tp(1) : _Tp(0);
> Thanks Francois. Besides the tiny-winy specific issue, we can all 
> learn why normally unrelated changes should not be bundled together in 
> the same patch, even more so when the more substantive one is by far 
> the smaller.
>
> Anyway, change pre-approved, whoever cares to commit it.
>
> Thanks,
> Paolo.
>

Patch

Index: include/tr1/bessel_function.tcc
===================================================================
--- include/tr1/bessel_function.tcc	(revision 195919)
+++ include/tr1/bessel_function.tcc	(working copy)
@@ -409,14 +409,8 @@ 
                            unsigned int __max_iter)
     {
       if (__x == _Tp(0))
-	{
-          if (__nu == _Tp(0))
-            return _Tp(1);
-          else if (__nu == _Tp(1))
-            return _Tp(0);
-          else
-            return _Tp(0);
-	}
+	return __nu == _Tp(0) ? _Tp(1) : _Tp(0);
+
       const _Tp __x2 = __x / _Tp(2);
       _Tp __fact = __nu * std::log(__x2);
 #if _GLIBCXX_USE_C99_MATH_TR1