
(FPCore (re im) :precision binary64 (atan2 im re))
double code(double re, double im) {
return atan2(im, re);
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = atan2(im, re)
end function
public static double code(double re, double im) {
return Math.atan2(im, re);
}
def code(re, im): return math.atan2(im, re)
function code(re, im) return atan(im, re) end
function tmp = code(re, im) tmp = atan2(im, re); end
code[re_, im_] := N[ArcTan[im / re], $MachinePrecision]
\begin{array}{l}
\\
\tan^{-1}_* \frac{im}{re}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 1 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (re im) :precision binary64 (atan2 im re))
double code(double re, double im) {
return atan2(im, re);
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = atan2(im, re)
end function
public static double code(double re, double im) {
return Math.atan2(im, re);
}
def code(re, im): return math.atan2(im, re)
function code(re, im) return atan(im, re) end
function tmp = code(re, im) tmp = atan2(im, re); end
code[re_, im_] := N[ArcTan[im / re], $MachinePrecision]
\begin{array}{l}
\\
\tan^{-1}_* \frac{im}{re}
\end{array}
(FPCore (re im) :precision binary64 (atan2 im re))
double code(double re, double im) {
return atan2(im, re);
}
real(8) function code(re, im)
real(8), intent (in) :: re
real(8), intent (in) :: im
code = atan2(im, re)
end function
public static double code(double re, double im) {
return Math.atan2(im, re);
}
def code(re, im): return math.atan2(im, re)
function code(re, im) return atan(im, re) end
function tmp = code(re, im) tmp = atan2(im, re); end
code[re_, im_] := N[ArcTan[im / re], $MachinePrecision]
\begin{array}{l}
\\
\tan^{-1}_* \frac{im}{re}
\end{array}
Initial program 100.0%
herbie shell --seed 2024214
(FPCore (re im)
:name "math.arg on complex"
:precision binary64
(atan2 im re))