https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89991

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #2 from kargl at gcc dot gnu.org ---
(In reply to t.sprodowski from comment #0)
> Following calculation of the complex number leads to a wrong imaginary part:
> 
> 
> #include <complex>
> #include <iomanip>
> #include <iostream>
> 
> int main(int argc, char *argv[])
> {
>   std::complex<double> val = std::complex<double>(-1.8425031517782417e-07,
> -0.0);
>   std::complex<double> testExp = std::pow(val, 0.5);
>   std::cout << "textExp: " << std::setprecision(30) << testExp << std::endl;
>   return 0;
> }
> 
> Result is:
> (2.6283607659835830609796003783e-20,-0.000429243887758258178214548772544),
> but it should be
> (2.628360765983583e-20, 0.0004292438877582582), obtained from Visual Studio,
> MATLAB and Octave.
>

What version of Octave.  I get

>> z = complex(-1.8425031517782417e-07, -0.0)
z = -0.00000018425 - 0.00000000000i
>> z**0.5
ans =  2.6284e-20 - 4.2924e-04i

which agrees with clang++ version 7.0.1 (and apparently g++
which I haven't tested).

Reply via email to