Mercurial > hg > octave-max
comparison liboctave/lo-specfun.cc @ 14196:35ce1eab7400 stable
besseli: use special case for negative integer orders
* lo-specfun.cc (zbesi): Special case for negative integer orders.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 12 Jan 2012 12:10:33 -0500 |
parents | 72c96de7a403 |
children | ce731bb6a191 |
comparison
equal
deleted
inserted
replaced
14195:1eeb3a8d5708 | 14196:35ce1eab7400 |
---|---|
850 if (zi == 0.0 && zr >= 0.0) | 850 if (zi == 0.0 && zr >= 0.0) |
851 yi = 0.0; | 851 yi = 0.0; |
852 | 852 |
853 retval = bessel_return_value (Complex (yr, yi), ierr); | 853 retval = bessel_return_value (Complex (yr, yi), ierr); |
854 } | 854 } |
855 else if (is_integer_value (alpha)) | |
856 { | |
857 // zbesi can overflow as z->0, and cause troubles for generic case below | |
858 alpha = -alpha; | |
859 Complex tmp = zbesi (z, alpha, kode, ierr); | |
860 if ((static_cast <long> (alpha)) & 1) | |
861 tmp = - tmp; | |
862 retval = bessel_return_value (tmp, ierr); | |
863 } | |
855 else | 864 else |
856 { | 865 { |
857 alpha = -alpha; | 866 alpha = -alpha; |
858 | 867 |
859 Complex tmp = zbesi (z, alpha, kode, ierr); | 868 Complex tmp = zbesi (z, alpha, kode, ierr); |