changeset 30782:230c1c39744b

maint: Merge stable to default.
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 26 Feb 2022 10:34:32 +0100
parents 1fcb3359f6a4 (current diff) d041ca628d99 (diff)
children d37b9645fae7
files libinterp/corefcn/mappers.cc
diffstat 2 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/mappers.cc	Fri Feb 25 16:22:32 2022 -0800
+++ b/libinterp/corefcn/mappers.cc	Sat Feb 26 10:34:32 2022 +0100
@@ -1787,8 +1787,14 @@
 
 /*
 %!assert (log1p ([0, 2*eps, -2*eps]), [0, 2*eps, -2*eps], 1e-29)
-%!assert (log1p (single ([0, 2*eps, -2*eps])),
+%!assert (log1p (single ([0, 2*eps, -2*eps])), ...
 %!        single ([0, 2*eps, -2*eps]), 1e-29)
+## Compare to result from Wolfram Alpha rounded to 16 significant digits
+%!assert <*62094> (log1p (0.1i), ...
+%!                 0.004975165426584041 + 0.09966865249116203i, eps (0.2))
+%!assert <*62094> (log1p (single (0.1i)), ...
+%!                 single (0.004975165426584041 + 0.09966865249116203i), ...
+%!                 eps (single (0.2)))
 
 %!error log1p ()
 %!error log1p (1, 2)
--- a/liboctave/numeric/lo-specfun.cc	Fri Feb 25 16:22:32 2022 -0800
+++ b/liboctave/numeric/lo-specfun.cc	Sat Feb 26 10:34:32 2022 +0100
@@ -1965,7 +1965,7 @@
         {
           double u = 2*r + r*r + i*i;
           retval = Complex (log1p (u / (1+std::sqrt (u+1))),
-                            atan2 (1 + r, i));
+                            atan2 (i, 1 + r));
         }
       else
         retval = std::log (Complex (1) + x);
@@ -1984,7 +1984,7 @@
         {
           float u = 2*r + r*r + i*i;
           retval = FloatComplex (log1p (u / (1+std::sqrt (u+1))),
-                                 atan2 (1 + r, i));
+                                 atan2 (i, 1 + r));
         }
       else
         retval = std::log (FloatComplex (1) + x);