
(FPCore (z2 z0 z1) :precision binary64 (atan (* (tan (* (- (+ z2 z2) -0.5) PI)) (/ z0 z1))))
double code(double z2, double z0, double z1) {
return atan((tan((((z2 + z2) - -0.5) * ((double) M_PI))) * (z0 / z1)));
}
public static double code(double z2, double z0, double z1) {
return Math.atan((Math.tan((((z2 + z2) - -0.5) * Math.PI)) * (z0 / z1)));
}
def code(z2, z0, z1): return math.atan((math.tan((((z2 + z2) - -0.5) * math.pi)) * (z0 / z1)))
function code(z2, z0, z1) return atan(Float64(tan(Float64(Float64(Float64(z2 + z2) - -0.5) * pi)) * Float64(z0 / z1))) end
function tmp = code(z2, z0, z1) tmp = atan((tan((((z2 + z2) - -0.5) * pi)) * (z0 / z1))); end
code[z2_, z0_, z1_] := N[ArcTan[N[(N[Tan[N[(N[(N[(z2 + z2), $MachinePrecision] - -0.5), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision] * N[(z0 / z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\tan^{-1} \left(\tan \left(\left(\left(z2 + z2\right) - -0.5\right) \cdot \pi\right) \cdot \frac{z0}{z1}\right)
Herbie found 11 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z2 z0 z1) :precision binary64 (atan (* (tan (* (- (+ z2 z2) -0.5) PI)) (/ z0 z1))))
double code(double z2, double z0, double z1) {
return atan((tan((((z2 + z2) - -0.5) * ((double) M_PI))) * (z0 / z1)));
}
public static double code(double z2, double z0, double z1) {
return Math.atan((Math.tan((((z2 + z2) - -0.5) * Math.PI)) * (z0 / z1)));
}
def code(z2, z0, z1): return math.atan((math.tan((((z2 + z2) - -0.5) * math.pi)) * (z0 / z1)))
function code(z2, z0, z1) return atan(Float64(tan(Float64(Float64(Float64(z2 + z2) - -0.5) * pi)) * Float64(z0 / z1))) end
function tmp = code(z2, z0, z1) tmp = atan((tan((((z2 + z2) - -0.5) * pi)) * (z0 / z1))); end
code[z2_, z0_, z1_] := N[ArcTan[N[(N[Tan[N[(N[(N[(z2 + z2), $MachinePrecision] - -0.5), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision] * N[(z0 / z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\tan^{-1} \left(\tan \left(\left(\left(z2 + z2\right) - -0.5\right) \cdot \pi\right) \cdot \frac{z0}{z1}\right)
(FPCore (z2 z0 z1)
:precision binary64
(let* ((t_0 (* (* (/ (- z2 -0.5) z2) 1.0) (* z2 PI)))
(t_1 (/ (+ PI PI) 0.0)))
(if (<= z2 -2650000000.0)
(atan
(-
(* (* (- (+ PI PI) t_1) (/ z2 z1)) z0)
(* (/ -1.0 (* 0.0 z1)) z0)))
(if (<= z2 0.0066)
(atan
(/
(*
(+
(* (sin t_0) (cos (* z2 PI)))
(* (cos t_0) (sin (* z2 PI))))
z0)
(* (- (sin (* PI (+ z2 z2)))) z1)))
(atan
(+
(/ (* z0 (sin (* 0.5 PI))) (* z1 (cos (* 0.5 PI))))
(/ (* z0 (* z2 (+ t_1 (+ PI PI)))) z1)))))))double code(double z2, double z0, double z1) {
double t_0 = (((z2 - -0.5) / z2) * 1.0) * (z2 * ((double) M_PI));
double t_1 = (((double) M_PI) + ((double) M_PI)) / 0.0;
double tmp;
if (z2 <= -2650000000.0) {
tmp = atan((((((((double) M_PI) + ((double) M_PI)) - t_1) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 0.0066) {
tmp = atan(((((sin(t_0) * cos((z2 * ((double) M_PI)))) + (cos(t_0) * sin((z2 * ((double) M_PI))))) * z0) / (-sin((((double) M_PI) * (z2 + z2))) * z1)));
} else {
tmp = atan((((z0 * sin((0.5 * ((double) M_PI)))) / (z1 * cos((0.5 * ((double) M_PI))))) + ((z0 * (z2 * (t_1 + (((double) M_PI) + ((double) M_PI))))) / z1)));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double t_0 = (((z2 - -0.5) / z2) * 1.0) * (z2 * Math.PI);
double t_1 = (Math.PI + Math.PI) / 0.0;
double tmp;
if (z2 <= -2650000000.0) {
tmp = Math.atan((((((Math.PI + Math.PI) - t_1) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 0.0066) {
tmp = Math.atan(((((Math.sin(t_0) * Math.cos((z2 * Math.PI))) + (Math.cos(t_0) * Math.sin((z2 * Math.PI)))) * z0) / (-Math.sin((Math.PI * (z2 + z2))) * z1)));
} else {
tmp = Math.atan((((z0 * Math.sin((0.5 * Math.PI))) / (z1 * Math.cos((0.5 * Math.PI)))) + ((z0 * (z2 * (t_1 + (Math.PI + Math.PI)))) / z1)));
}
return tmp;
}
def code(z2, z0, z1): t_0 = (((z2 - -0.5) / z2) * 1.0) * (z2 * math.pi) t_1 = (math.pi + math.pi) / 0.0 tmp = 0 if z2 <= -2650000000.0: tmp = math.atan((((((math.pi + math.pi) - t_1) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))) elif z2 <= 0.0066: tmp = math.atan(((((math.sin(t_0) * math.cos((z2 * math.pi))) + (math.cos(t_0) * math.sin((z2 * math.pi)))) * z0) / (-math.sin((math.pi * (z2 + z2))) * z1))) else: tmp = math.atan((((z0 * math.sin((0.5 * math.pi))) / (z1 * math.cos((0.5 * math.pi)))) + ((z0 * (z2 * (t_1 + (math.pi + math.pi)))) / z1))) return tmp
function code(z2, z0, z1) t_0 = Float64(Float64(Float64(Float64(z2 - -0.5) / z2) * 1.0) * Float64(z2 * pi)) t_1 = Float64(Float64(pi + pi) / 0.0) tmp = 0.0 if (z2 <= -2650000000.0) tmp = atan(Float64(Float64(Float64(Float64(Float64(pi + pi) - t_1) * Float64(z2 / z1)) * z0) - Float64(Float64(-1.0 / Float64(0.0 * z1)) * z0))); elseif (z2 <= 0.0066) tmp = atan(Float64(Float64(Float64(Float64(sin(t_0) * cos(Float64(z2 * pi))) + Float64(cos(t_0) * sin(Float64(z2 * pi)))) * z0) / Float64(Float64(-sin(Float64(pi * Float64(z2 + z2)))) * z1))); else tmp = atan(Float64(Float64(Float64(z0 * sin(Float64(0.5 * pi))) / Float64(z1 * cos(Float64(0.5 * pi)))) + Float64(Float64(z0 * Float64(z2 * Float64(t_1 + Float64(pi + pi)))) / z1))); end return tmp end
function tmp_2 = code(z2, z0, z1) t_0 = (((z2 - -0.5) / z2) * 1.0) * (z2 * pi); t_1 = (pi + pi) / 0.0; tmp = 0.0; if (z2 <= -2650000000.0) tmp = atan((((((pi + pi) - t_1) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))); elseif (z2 <= 0.0066) tmp = atan(((((sin(t_0) * cos((z2 * pi))) + (cos(t_0) * sin((z2 * pi)))) * z0) / (-sin((pi * (z2 + z2))) * z1))); else tmp = atan((((z0 * sin((0.5 * pi))) / (z1 * cos((0.5 * pi)))) + ((z0 * (z2 * (t_1 + (pi + pi)))) / z1))); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := Block[{t$95$0 = N[(N[(N[(N[(z2 - -0.5), $MachinePrecision] / z2), $MachinePrecision] * 1.0), $MachinePrecision] * N[(z2 * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(Pi + Pi), $MachinePrecision] / 0.0), $MachinePrecision]}, If[LessEqual[z2, -2650000000.0], N[ArcTan[N[(N[(N[(N[(N[(Pi + Pi), $MachinePrecision] - t$95$1), $MachinePrecision] * N[(z2 / z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[(N[(-1.0 / N[(0.0 * z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[z2, 0.0066], N[ArcTan[N[(N[(N[(N[(N[Sin[t$95$0], $MachinePrecision] * N[Cos[N[(z2 * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] + N[(N[Cos[t$95$0], $MachinePrecision] * N[Sin[N[(z2 * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] / N[((-N[Sin[N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(N[(N[(z0 * N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(z1 * N[Cos[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(z0 * N[(z2 * N[(t$95$1 + N[(Pi + Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]
\begin{array}{l}
t_0 := \left(\frac{z2 - -0.5}{z2} \cdot 1\right) \cdot \left(z2 \cdot \pi\right)\\
t_1 := \frac{\pi + \pi}{0}\\
\mathbf{if}\;z2 \leq -2650000000:\\
\;\;\;\;\tan^{-1} \left(\left(\left(\left(\pi + \pi\right) - t\_1\right) \cdot \frac{z2}{z1}\right) \cdot z0 - \frac{-1}{0 \cdot z1} \cdot z0\right)\\
\mathbf{elif}\;z2 \leq 0.0066:\\
\;\;\;\;\tan^{-1} \left(\frac{\left(\sin t\_0 \cdot \cos \left(z2 \cdot \pi\right) + \cos t\_0 \cdot \sin \left(z2 \cdot \pi\right)\right) \cdot z0}{\left(-\sin \left(\pi \cdot \left(z2 + z2\right)\right)\right) \cdot z1}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{z0 \cdot \sin \left(0.5 \cdot \pi\right)}{z1 \cdot \cos \left(0.5 \cdot \pi\right)} + \frac{z0 \cdot \left(z2 \cdot \left(t\_1 + \left(\pi + \pi\right)\right)\right)}{z1}\right)\\
\end{array}
if z2 < -2.65e9Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
Applied rewrites38.8%
if -2.65e9 < z2 < 0.0066Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
Applied rewrites52.7%
if 0.0066 < z2 Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
lift--.f64N/A
lift-*.f64N/A
fp-cancel-sub-sign-invN/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites25.4%
(FPCore (z2 z0 z1)
:precision binary64
(let* ((t_0 (/ (+ PI PI) 0.0)))
(if (<= z2 -1.6e+16)
(atan
(-
(* (* (- (+ PI PI) t_0) (/ z2 z1)) z0)
(* (/ -1.0 (* 0.0 z1)) z0)))
(if (<= z2 0.0066)
(atan
(/
(* (sin (+ (* PI (- (- -0.5 z2) z2)) PI)) z0)
(* (- (sin (* PI (+ z2 z2)))) z1)))
(atan
(+
(/ (* z0 (sin (* 0.5 PI))) (* z1 (cos (* 0.5 PI))))
(/ (* z0 (* z2 (+ t_0 (+ PI PI)))) z1)))))))double code(double z2, double z0, double z1) {
double t_0 = (((double) M_PI) + ((double) M_PI)) / 0.0;
double tmp;
if (z2 <= -1.6e+16) {
tmp = atan((((((((double) M_PI) + ((double) M_PI)) - t_0) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 0.0066) {
tmp = atan(((sin(((((double) M_PI) * ((-0.5 - z2) - z2)) + ((double) M_PI))) * z0) / (-sin((((double) M_PI) * (z2 + z2))) * z1)));
} else {
tmp = atan((((z0 * sin((0.5 * ((double) M_PI)))) / (z1 * cos((0.5 * ((double) M_PI))))) + ((z0 * (z2 * (t_0 + (((double) M_PI) + ((double) M_PI))))) / z1)));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double t_0 = (Math.PI + Math.PI) / 0.0;
double tmp;
if (z2 <= -1.6e+16) {
tmp = Math.atan((((((Math.PI + Math.PI) - t_0) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 0.0066) {
tmp = Math.atan(((Math.sin(((Math.PI * ((-0.5 - z2) - z2)) + Math.PI)) * z0) / (-Math.sin((Math.PI * (z2 + z2))) * z1)));
} else {
tmp = Math.atan((((z0 * Math.sin((0.5 * Math.PI))) / (z1 * Math.cos((0.5 * Math.PI)))) + ((z0 * (z2 * (t_0 + (Math.PI + Math.PI)))) / z1)));
}
return tmp;
}
def code(z2, z0, z1): t_0 = (math.pi + math.pi) / 0.0 tmp = 0 if z2 <= -1.6e+16: tmp = math.atan((((((math.pi + math.pi) - t_0) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))) elif z2 <= 0.0066: tmp = math.atan(((math.sin(((math.pi * ((-0.5 - z2) - z2)) + math.pi)) * z0) / (-math.sin((math.pi * (z2 + z2))) * z1))) else: tmp = math.atan((((z0 * math.sin((0.5 * math.pi))) / (z1 * math.cos((0.5 * math.pi)))) + ((z0 * (z2 * (t_0 + (math.pi + math.pi)))) / z1))) return tmp
function code(z2, z0, z1) t_0 = Float64(Float64(pi + pi) / 0.0) tmp = 0.0 if (z2 <= -1.6e+16) tmp = atan(Float64(Float64(Float64(Float64(Float64(pi + pi) - t_0) * Float64(z2 / z1)) * z0) - Float64(Float64(-1.0 / Float64(0.0 * z1)) * z0))); elseif (z2 <= 0.0066) tmp = atan(Float64(Float64(sin(Float64(Float64(pi * Float64(Float64(-0.5 - z2) - z2)) + pi)) * z0) / Float64(Float64(-sin(Float64(pi * Float64(z2 + z2)))) * z1))); else tmp = atan(Float64(Float64(Float64(z0 * sin(Float64(0.5 * pi))) / Float64(z1 * cos(Float64(0.5 * pi)))) + Float64(Float64(z0 * Float64(z2 * Float64(t_0 + Float64(pi + pi)))) / z1))); end return tmp end
function tmp_2 = code(z2, z0, z1) t_0 = (pi + pi) / 0.0; tmp = 0.0; if (z2 <= -1.6e+16) tmp = atan((((((pi + pi) - t_0) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))); elseif (z2 <= 0.0066) tmp = atan(((sin(((pi * ((-0.5 - z2) - z2)) + pi)) * z0) / (-sin((pi * (z2 + z2))) * z1))); else tmp = atan((((z0 * sin((0.5 * pi))) / (z1 * cos((0.5 * pi)))) + ((z0 * (z2 * (t_0 + (pi + pi)))) / z1))); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := Block[{t$95$0 = N[(N[(Pi + Pi), $MachinePrecision] / 0.0), $MachinePrecision]}, If[LessEqual[z2, -1.6e+16], N[ArcTan[N[(N[(N[(N[(N[(Pi + Pi), $MachinePrecision] - t$95$0), $MachinePrecision] * N[(z2 / z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[(N[(-1.0 / N[(0.0 * z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[z2, 0.0066], N[ArcTan[N[(N[(N[Sin[N[(N[(Pi * N[(N[(-0.5 - z2), $MachinePrecision] - z2), $MachinePrecision]), $MachinePrecision] + Pi), $MachinePrecision]], $MachinePrecision] * z0), $MachinePrecision] / N[((-N[Sin[N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(N[(N[(z0 * N[Sin[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(z1 * N[Cos[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(z0 * N[(z2 * N[(t$95$0 + N[(Pi + Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]
\begin{array}{l}
t_0 := \frac{\pi + \pi}{0}\\
\mathbf{if}\;z2 \leq -1.6 \cdot 10^{+16}:\\
\;\;\;\;\tan^{-1} \left(\left(\left(\left(\pi + \pi\right) - t\_0\right) \cdot \frac{z2}{z1}\right) \cdot z0 - \frac{-1}{0 \cdot z1} \cdot z0\right)\\
\mathbf{elif}\;z2 \leq 0.0066:\\
\;\;\;\;\tan^{-1} \left(\frac{\sin \left(\pi \cdot \left(\left(-0.5 - z2\right) - z2\right) + \pi\right) \cdot z0}{\left(-\sin \left(\pi \cdot \left(z2 + z2\right)\right)\right) \cdot z1}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{z0 \cdot \sin \left(0.5 \cdot \pi\right)}{z1 \cdot \cos \left(0.5 \cdot \pi\right)} + \frac{z0 \cdot \left(z2 \cdot \left(t\_0 + \left(\pi + \pi\right)\right)\right)}{z1}\right)\\
\end{array}
if z2 < -1.6e16Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
Applied rewrites38.8%
if -1.6e16 < z2 < 0.0066Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
lift-cos.f64N/A
sin-+PI/2-revN/A
lift-PI.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
distribute-rgt-inN/A
metadata-evalN/A
sub-flipN/A
sub-negate-revN/A
distribute-rgt-neg-outN/A
lift-+.f64N/A
associate--r+N/A
lift--.f64N/A
distribute-rgt-out--N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
Applied rewrites76.5%
if 0.0066 < z2 Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
lift--.f64N/A
lift-*.f64N/A
fp-cancel-sub-sign-invN/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites25.4%
(FPCore (z2 z0 z1)
:precision binary64
(if (<= z2 -1.6e+16)
(atan
(-
(* (* (- (+ PI PI) (/ (+ PI PI) 0.0)) (/ z2 z1)) z0)
(* (/ -1.0 (* 0.0 z1)) z0)))
(if (<= z2 1.4)
(atan
(/
(* (sin (+ (* PI (- (- -0.5 z2) z2)) PI)) z0)
(* (- (sin (* PI (+ z2 z2)))) z1)))
(atan (/ 1.0 (* (/ z1 z0) (tan (+ (- (* 0.5 PI)) (* PI 0.5)))))))))double code(double z2, double z0, double z1) {
double tmp;
if (z2 <= -1.6e+16) {
tmp = atan((((((((double) M_PI) + ((double) M_PI)) - ((((double) M_PI) + ((double) M_PI)) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 1.4) {
tmp = atan(((sin(((((double) M_PI) * ((-0.5 - z2) - z2)) + ((double) M_PI))) * z0) / (-sin((((double) M_PI) * (z2 + z2))) * z1)));
} else {
tmp = atan((1.0 / ((z1 / z0) * tan((-(0.5 * ((double) M_PI)) + (((double) M_PI) * 0.5))))));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double tmp;
if (z2 <= -1.6e+16) {
tmp = Math.atan((((((Math.PI + Math.PI) - ((Math.PI + Math.PI) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 1.4) {
tmp = Math.atan(((Math.sin(((Math.PI * ((-0.5 - z2) - z2)) + Math.PI)) * z0) / (-Math.sin((Math.PI * (z2 + z2))) * z1)));
} else {
tmp = Math.atan((1.0 / ((z1 / z0) * Math.tan((-(0.5 * Math.PI) + (Math.PI * 0.5))))));
}
return tmp;
}
def code(z2, z0, z1): tmp = 0 if z2 <= -1.6e+16: tmp = math.atan((((((math.pi + math.pi) - ((math.pi + math.pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))) elif z2 <= 1.4: tmp = math.atan(((math.sin(((math.pi * ((-0.5 - z2) - z2)) + math.pi)) * z0) / (-math.sin((math.pi * (z2 + z2))) * z1))) else: tmp = math.atan((1.0 / ((z1 / z0) * math.tan((-(0.5 * math.pi) + (math.pi * 0.5)))))) return tmp
function code(z2, z0, z1) tmp = 0.0 if (z2 <= -1.6e+16) tmp = atan(Float64(Float64(Float64(Float64(Float64(pi + pi) - Float64(Float64(pi + pi) / 0.0)) * Float64(z2 / z1)) * z0) - Float64(Float64(-1.0 / Float64(0.0 * z1)) * z0))); elseif (z2 <= 1.4) tmp = atan(Float64(Float64(sin(Float64(Float64(pi * Float64(Float64(-0.5 - z2) - z2)) + pi)) * z0) / Float64(Float64(-sin(Float64(pi * Float64(z2 + z2)))) * z1))); else tmp = atan(Float64(1.0 / Float64(Float64(z1 / z0) * tan(Float64(Float64(-Float64(0.5 * pi)) + Float64(pi * 0.5)))))); end return tmp end
function tmp_2 = code(z2, z0, z1) tmp = 0.0; if (z2 <= -1.6e+16) tmp = atan((((((pi + pi) - ((pi + pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))); elseif (z2 <= 1.4) tmp = atan(((sin(((pi * ((-0.5 - z2) - z2)) + pi)) * z0) / (-sin((pi * (z2 + z2))) * z1))); else tmp = atan((1.0 / ((z1 / z0) * tan((-(0.5 * pi) + (pi * 0.5)))))); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := If[LessEqual[z2, -1.6e+16], N[ArcTan[N[(N[(N[(N[(N[(Pi + Pi), $MachinePrecision] - N[(N[(Pi + Pi), $MachinePrecision] / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 / z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[(N[(-1.0 / N[(0.0 * z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[z2, 1.4], N[ArcTan[N[(N[(N[Sin[N[(N[(Pi * N[(N[(-0.5 - z2), $MachinePrecision] - z2), $MachinePrecision]), $MachinePrecision] + Pi), $MachinePrecision]], $MachinePrecision] * z0), $MachinePrecision] / N[((-N[Sin[N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(1.0 / N[(N[(z1 / z0), $MachinePrecision] * N[Tan[N[((-N[(0.5 * Pi), $MachinePrecision]) + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
\mathbf{if}\;z2 \leq -1.6 \cdot 10^{+16}:\\
\;\;\;\;\tan^{-1} \left(\left(\left(\left(\pi + \pi\right) - \frac{\pi + \pi}{0}\right) \cdot \frac{z2}{z1}\right) \cdot z0 - \frac{-1}{0 \cdot z1} \cdot z0\right)\\
\mathbf{elif}\;z2 \leq 1.4:\\
\;\;\;\;\tan^{-1} \left(\frac{\sin \left(\pi \cdot \left(\left(-0.5 - z2\right) - z2\right) + \pi\right) \cdot z0}{\left(-\sin \left(\pi \cdot \left(z2 + z2\right)\right)\right) \cdot z1}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{1}{\frac{z1}{z0} \cdot \tan \left(\left(-0.5 \cdot \pi\right) + \pi \cdot 0.5\right)}\right)\\
\end{array}
if z2 < -1.6e16Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
Applied rewrites38.8%
if -1.6e16 < z2 < 1.3999999999999999Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
lift-cos.f64N/A
sin-+PI/2-revN/A
lift-PI.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
distribute-rgt-inN/A
metadata-evalN/A
sub-flipN/A
sub-negate-revN/A
distribute-rgt-neg-outN/A
lift-+.f64N/A
associate--r+N/A
lift--.f64N/A
distribute-rgt-out--N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
Applied rewrites76.5%
if 1.3999999999999999 < z2 Initial program 31.5%
Taylor expanded in z2 around 0
Applied rewrites43.0%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
div-flipN/A
lower-unsound-/.f64N/A
lower-unsound-/.f64N/A
lower-*.f6443.0%
Applied rewrites43.0%
lift-/.f64N/A
mult-flipN/A
associate-*r/N/A
lift-*.f64N/A
*-commutativeN/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lift-tan.f64N/A
tan-+PI/2-revN/A
lower-tan.f64N/A
lower-+.f64N/A
lower-neg.f64N/A
lift-PI.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6459.9%
Applied rewrites59.9%
(FPCore (z2 z0 z1)
:precision binary64
(let* ((t_0 (* PI (+ z2 z2))))
(if (<= z2 -2650000000.0)
(atan
(-
(* (* (- (+ PI PI) (/ (+ PI PI) 0.0)) (/ z2 z1)) z0)
(* (/ -1.0 (* 0.0 z1)) z0)))
(if (<= z2 1.4)
(atan (/ (* (cos t_0) z0) (* (- (sin t_0)) z1)))
(atan
(/ 1.0 (* (/ z1 z0) (tan (+ (- (* 0.5 PI)) (* PI 0.5))))))))))double code(double z2, double z0, double z1) {
double t_0 = ((double) M_PI) * (z2 + z2);
double tmp;
if (z2 <= -2650000000.0) {
tmp = atan((((((((double) M_PI) + ((double) M_PI)) - ((((double) M_PI) + ((double) M_PI)) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 1.4) {
tmp = atan(((cos(t_0) * z0) / (-sin(t_0) * z1)));
} else {
tmp = atan((1.0 / ((z1 / z0) * tan((-(0.5 * ((double) M_PI)) + (((double) M_PI) * 0.5))))));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double t_0 = Math.PI * (z2 + z2);
double tmp;
if (z2 <= -2650000000.0) {
tmp = Math.atan((((((Math.PI + Math.PI) - ((Math.PI + Math.PI) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 1.4) {
tmp = Math.atan(((Math.cos(t_0) * z0) / (-Math.sin(t_0) * z1)));
} else {
tmp = Math.atan((1.0 / ((z1 / z0) * Math.tan((-(0.5 * Math.PI) + (Math.PI * 0.5))))));
}
return tmp;
}
def code(z2, z0, z1): t_0 = math.pi * (z2 + z2) tmp = 0 if z2 <= -2650000000.0: tmp = math.atan((((((math.pi + math.pi) - ((math.pi + math.pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))) elif z2 <= 1.4: tmp = math.atan(((math.cos(t_0) * z0) / (-math.sin(t_0) * z1))) else: tmp = math.atan((1.0 / ((z1 / z0) * math.tan((-(0.5 * math.pi) + (math.pi * 0.5)))))) return tmp
function code(z2, z0, z1) t_0 = Float64(pi * Float64(z2 + z2)) tmp = 0.0 if (z2 <= -2650000000.0) tmp = atan(Float64(Float64(Float64(Float64(Float64(pi + pi) - Float64(Float64(pi + pi) / 0.0)) * Float64(z2 / z1)) * z0) - Float64(Float64(-1.0 / Float64(0.0 * z1)) * z0))); elseif (z2 <= 1.4) tmp = atan(Float64(Float64(cos(t_0) * z0) / Float64(Float64(-sin(t_0)) * z1))); else tmp = atan(Float64(1.0 / Float64(Float64(z1 / z0) * tan(Float64(Float64(-Float64(0.5 * pi)) + Float64(pi * 0.5)))))); end return tmp end
function tmp_2 = code(z2, z0, z1) t_0 = pi * (z2 + z2); tmp = 0.0; if (z2 <= -2650000000.0) tmp = atan((((((pi + pi) - ((pi + pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))); elseif (z2 <= 1.4) tmp = atan(((cos(t_0) * z0) / (-sin(t_0) * z1))); else tmp = atan((1.0 / ((z1 / z0) * tan((-(0.5 * pi) + (pi * 0.5)))))); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := Block[{t$95$0 = N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z2, -2650000000.0], N[ArcTan[N[(N[(N[(N[(N[(Pi + Pi), $MachinePrecision] - N[(N[(Pi + Pi), $MachinePrecision] / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 / z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[(N[(-1.0 / N[(0.0 * z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[z2, 1.4], N[ArcTan[N[(N[(N[Cos[t$95$0], $MachinePrecision] * z0), $MachinePrecision] / N[((-N[Sin[t$95$0], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(1.0 / N[(N[(z1 / z0), $MachinePrecision] * N[Tan[N[((-N[(0.5 * Pi), $MachinePrecision]) + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]
\begin{array}{l}
t_0 := \pi \cdot \left(z2 + z2\right)\\
\mathbf{if}\;z2 \leq -2650000000:\\
\;\;\;\;\tan^{-1} \left(\left(\left(\left(\pi + \pi\right) - \frac{\pi + \pi}{0}\right) \cdot \frac{z2}{z1}\right) \cdot z0 - \frac{-1}{0 \cdot z1} \cdot z0\right)\\
\mathbf{elif}\;z2 \leq 1.4:\\
\;\;\;\;\tan^{-1} \left(\frac{\cos t\_0 \cdot z0}{\left(-\sin t\_0\right) \cdot z1}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{1}{\frac{z1}{z0} \cdot \tan \left(\left(-0.5 \cdot \pi\right) + \pi \cdot 0.5\right)}\right)\\
\end{array}
if z2 < -2.65e9Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
Applied rewrites38.8%
if -2.65e9 < z2 < 1.3999999999999999Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
if 1.3999999999999999 < z2 Initial program 31.5%
Taylor expanded in z2 around 0
Applied rewrites43.0%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
div-flipN/A
lower-unsound-/.f64N/A
lower-unsound-/.f64N/A
lower-*.f6443.0%
Applied rewrites43.0%
lift-/.f64N/A
mult-flipN/A
associate-*r/N/A
lift-*.f64N/A
*-commutativeN/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lift-tan.f64N/A
tan-+PI/2-revN/A
lower-tan.f64N/A
lower-+.f64N/A
lower-neg.f64N/A
lift-PI.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6459.9%
Applied rewrites59.9%
(FPCore (z2 z0 z1)
:precision binary64
(let* ((t_0 (* PI (+ z2 z2))))
(if (<= z2 -2650000000.0)
(atan
(-
(* (* (- (+ PI PI) (/ (+ PI PI) 0.0)) (/ z2 z1)) z0)
(* (/ -1.0 (* 0.0 z1)) z0)))
(if (<= z2 1.4)
(atan (* z0 (/ (cos t_0) (* (- (sin t_0)) z1))))
(atan
(/ 1.0 (* (/ z1 z0) (tan (+ (- (* 0.5 PI)) (* PI 0.5))))))))))double code(double z2, double z0, double z1) {
double t_0 = ((double) M_PI) * (z2 + z2);
double tmp;
if (z2 <= -2650000000.0) {
tmp = atan((((((((double) M_PI) + ((double) M_PI)) - ((((double) M_PI) + ((double) M_PI)) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 1.4) {
tmp = atan((z0 * (cos(t_0) / (-sin(t_0) * z1))));
} else {
tmp = atan((1.0 / ((z1 / z0) * tan((-(0.5 * ((double) M_PI)) + (((double) M_PI) * 0.5))))));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double t_0 = Math.PI * (z2 + z2);
double tmp;
if (z2 <= -2650000000.0) {
tmp = Math.atan((((((Math.PI + Math.PI) - ((Math.PI + Math.PI) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 1.4) {
tmp = Math.atan((z0 * (Math.cos(t_0) / (-Math.sin(t_0) * z1))));
} else {
tmp = Math.atan((1.0 / ((z1 / z0) * Math.tan((-(0.5 * Math.PI) + (Math.PI * 0.5))))));
}
return tmp;
}
def code(z2, z0, z1): t_0 = math.pi * (z2 + z2) tmp = 0 if z2 <= -2650000000.0: tmp = math.atan((((((math.pi + math.pi) - ((math.pi + math.pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))) elif z2 <= 1.4: tmp = math.atan((z0 * (math.cos(t_0) / (-math.sin(t_0) * z1)))) else: tmp = math.atan((1.0 / ((z1 / z0) * math.tan((-(0.5 * math.pi) + (math.pi * 0.5)))))) return tmp
function code(z2, z0, z1) t_0 = Float64(pi * Float64(z2 + z2)) tmp = 0.0 if (z2 <= -2650000000.0) tmp = atan(Float64(Float64(Float64(Float64(Float64(pi + pi) - Float64(Float64(pi + pi) / 0.0)) * Float64(z2 / z1)) * z0) - Float64(Float64(-1.0 / Float64(0.0 * z1)) * z0))); elseif (z2 <= 1.4) tmp = atan(Float64(z0 * Float64(cos(t_0) / Float64(Float64(-sin(t_0)) * z1)))); else tmp = atan(Float64(1.0 / Float64(Float64(z1 / z0) * tan(Float64(Float64(-Float64(0.5 * pi)) + Float64(pi * 0.5)))))); end return tmp end
function tmp_2 = code(z2, z0, z1) t_0 = pi * (z2 + z2); tmp = 0.0; if (z2 <= -2650000000.0) tmp = atan((((((pi + pi) - ((pi + pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))); elseif (z2 <= 1.4) tmp = atan((z0 * (cos(t_0) / (-sin(t_0) * z1)))); else tmp = atan((1.0 / ((z1 / z0) * tan((-(0.5 * pi) + (pi * 0.5)))))); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := Block[{t$95$0 = N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z2, -2650000000.0], N[ArcTan[N[(N[(N[(N[(N[(Pi + Pi), $MachinePrecision] - N[(N[(Pi + Pi), $MachinePrecision] / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 / z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[(N[(-1.0 / N[(0.0 * z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[z2, 1.4], N[ArcTan[N[(z0 * N[(N[Cos[t$95$0], $MachinePrecision] / N[((-N[Sin[t$95$0], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(1.0 / N[(N[(z1 / z0), $MachinePrecision] * N[Tan[N[((-N[(0.5 * Pi), $MachinePrecision]) + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]
\begin{array}{l}
t_0 := \pi \cdot \left(z2 + z2\right)\\
\mathbf{if}\;z2 \leq -2650000000:\\
\;\;\;\;\tan^{-1} \left(\left(\left(\left(\pi + \pi\right) - \frac{\pi + \pi}{0}\right) \cdot \frac{z2}{z1}\right) \cdot z0 - \frac{-1}{0 \cdot z1} \cdot z0\right)\\
\mathbf{elif}\;z2 \leq 1.4:\\
\;\;\;\;\tan^{-1} \left(z0 \cdot \frac{\cos t\_0}{\left(-\sin t\_0\right) \cdot z1}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{1}{\frac{z1}{z0} \cdot \tan \left(\left(-0.5 \cdot \pi\right) + \pi \cdot 0.5\right)}\right)\\
\end{array}
if z2 < -2.65e9Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
Applied rewrites38.8%
if -2.65e9 < z2 < 1.3999999999999999Initial program 31.5%
lift-*.f64N/A
*-commutativeN/A
lift-/.f64N/A
lift-tan.f64N/A
tan-quotN/A
frac-timesN/A
associate-/l*N/A
lower-*.f64N/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites64.9%
if 1.3999999999999999 < z2 Initial program 31.5%
Taylor expanded in z2 around 0
Applied rewrites43.0%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
div-flipN/A
lower-unsound-/.f64N/A
lower-unsound-/.f64N/A
lower-*.f6443.0%
Applied rewrites43.0%
lift-/.f64N/A
mult-flipN/A
associate-*r/N/A
lift-*.f64N/A
*-commutativeN/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lift-tan.f64N/A
tan-+PI/2-revN/A
lower-tan.f64N/A
lower-+.f64N/A
lower-neg.f64N/A
lift-PI.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6459.9%
Applied rewrites59.9%
(FPCore (z2 z0 z1)
:precision binary64
(if (<= z2 -4500000.0)
(atan
(-
(* (* (- (+ PI PI) (/ (+ PI PI) 0.0)) (/ z2 z1)) z0)
(* (/ -1.0 (* 0.0 z1)) z0)))
(if (<= z2 0.0066)
(atan (* -0.5 (/ z0 (* (* z1 PI) z2))))
(atan (/ 1.0 (* (/ z1 z0) (tan (+ (- (* 0.5 PI)) (* PI 0.5)))))))))double code(double z2, double z0, double z1) {
double tmp;
if (z2 <= -4500000.0) {
tmp = atan((((((((double) M_PI) + ((double) M_PI)) - ((((double) M_PI) + ((double) M_PI)) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 0.0066) {
tmp = atan((-0.5 * (z0 / ((z1 * ((double) M_PI)) * z2))));
} else {
tmp = atan((1.0 / ((z1 / z0) * tan((-(0.5 * ((double) M_PI)) + (((double) M_PI) * 0.5))))));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double tmp;
if (z2 <= -4500000.0) {
tmp = Math.atan((((((Math.PI + Math.PI) - ((Math.PI + Math.PI) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 0.0066) {
tmp = Math.atan((-0.5 * (z0 / ((z1 * Math.PI) * z2))));
} else {
tmp = Math.atan((1.0 / ((z1 / z0) * Math.tan((-(0.5 * Math.PI) + (Math.PI * 0.5))))));
}
return tmp;
}
def code(z2, z0, z1): tmp = 0 if z2 <= -4500000.0: tmp = math.atan((((((math.pi + math.pi) - ((math.pi + math.pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))) elif z2 <= 0.0066: tmp = math.atan((-0.5 * (z0 / ((z1 * math.pi) * z2)))) else: tmp = math.atan((1.0 / ((z1 / z0) * math.tan((-(0.5 * math.pi) + (math.pi * 0.5)))))) return tmp
function code(z2, z0, z1) tmp = 0.0 if (z2 <= -4500000.0) tmp = atan(Float64(Float64(Float64(Float64(Float64(pi + pi) - Float64(Float64(pi + pi) / 0.0)) * Float64(z2 / z1)) * z0) - Float64(Float64(-1.0 / Float64(0.0 * z1)) * z0))); elseif (z2 <= 0.0066) tmp = atan(Float64(-0.5 * Float64(z0 / Float64(Float64(z1 * pi) * z2)))); else tmp = atan(Float64(1.0 / Float64(Float64(z1 / z0) * tan(Float64(Float64(-Float64(0.5 * pi)) + Float64(pi * 0.5)))))); end return tmp end
function tmp_2 = code(z2, z0, z1) tmp = 0.0; if (z2 <= -4500000.0) tmp = atan((((((pi + pi) - ((pi + pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))); elseif (z2 <= 0.0066) tmp = atan((-0.5 * (z0 / ((z1 * pi) * z2)))); else tmp = atan((1.0 / ((z1 / z0) * tan((-(0.5 * pi) + (pi * 0.5)))))); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := If[LessEqual[z2, -4500000.0], N[ArcTan[N[(N[(N[(N[(N[(Pi + Pi), $MachinePrecision] - N[(N[(Pi + Pi), $MachinePrecision] / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 / z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[(N[(-1.0 / N[(0.0 * z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[z2, 0.0066], N[ArcTan[N[(-0.5 * N[(z0 / N[(N[(z1 * Pi), $MachinePrecision] * z2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(1.0 / N[(N[(z1 / z0), $MachinePrecision] * N[Tan[N[((-N[(0.5 * Pi), $MachinePrecision]) + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
\mathbf{if}\;z2 \leq -4500000:\\
\;\;\;\;\tan^{-1} \left(\left(\left(\left(\pi + \pi\right) - \frac{\pi + \pi}{0}\right) \cdot \frac{z2}{z1}\right) \cdot z0 - \frac{-1}{0 \cdot z1} \cdot z0\right)\\
\mathbf{elif}\;z2 \leq 0.0066:\\
\;\;\;\;\tan^{-1} \left(-0.5 \cdot \frac{z0}{\left(z1 \cdot \pi\right) \cdot z2}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(\frac{1}{\frac{z1}{z0} \cdot \tan \left(\left(-0.5 \cdot \pi\right) + \pi \cdot 0.5\right)}\right)\\
\end{array}
if z2 < -4.5e6Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
Applied rewrites38.8%
if -4.5e6 < z2 < 0.0066Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
Taylor expanded in z2 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6458.7%
Applied rewrites58.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6458.7%
Applied rewrites58.7%
if 0.0066 < z2 Initial program 31.5%
Taylor expanded in z2 around 0
Applied rewrites43.0%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
div-flipN/A
lower-unsound-/.f64N/A
lower-unsound-/.f64N/A
lower-*.f6443.0%
Applied rewrites43.0%
lift-/.f64N/A
mult-flipN/A
associate-*r/N/A
lift-*.f64N/A
*-commutativeN/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lift-tan.f64N/A
tan-+PI/2-revN/A
lower-tan.f64N/A
lower-+.f64N/A
lower-neg.f64N/A
lift-PI.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6459.9%
Applied rewrites59.9%
(FPCore (z2 z0 z1)
:precision binary64
(if (<= z2 -4500000.0)
(atan
(-
(* (* (- (+ PI PI) (/ (+ PI PI) 0.0)) (/ z2 z1)) z0)
(* (/ -1.0 (* 0.0 z1)) z0)))
(if (<= z2 11500000.0)
(atan (* -0.5 (/ z0 (* (* z1 PI) z2))))
(atan (* z0 (/ (tan (* 0.5 PI)) z1))))))double code(double z2, double z0, double z1) {
double tmp;
if (z2 <= -4500000.0) {
tmp = atan((((((((double) M_PI) + ((double) M_PI)) - ((((double) M_PI) + ((double) M_PI)) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 11500000.0) {
tmp = atan((-0.5 * (z0 / ((z1 * ((double) M_PI)) * z2))));
} else {
tmp = atan((z0 * (tan((0.5 * ((double) M_PI))) / z1)));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double tmp;
if (z2 <= -4500000.0) {
tmp = Math.atan((((((Math.PI + Math.PI) - ((Math.PI + Math.PI) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else if (z2 <= 11500000.0) {
tmp = Math.atan((-0.5 * (z0 / ((z1 * Math.PI) * z2))));
} else {
tmp = Math.atan((z0 * (Math.tan((0.5 * Math.PI)) / z1)));
}
return tmp;
}
def code(z2, z0, z1): tmp = 0 if z2 <= -4500000.0: tmp = math.atan((((((math.pi + math.pi) - ((math.pi + math.pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))) elif z2 <= 11500000.0: tmp = math.atan((-0.5 * (z0 / ((z1 * math.pi) * z2)))) else: tmp = math.atan((z0 * (math.tan((0.5 * math.pi)) / z1))) return tmp
function code(z2, z0, z1) tmp = 0.0 if (z2 <= -4500000.0) tmp = atan(Float64(Float64(Float64(Float64(Float64(pi + pi) - Float64(Float64(pi + pi) / 0.0)) * Float64(z2 / z1)) * z0) - Float64(Float64(-1.0 / Float64(0.0 * z1)) * z0))); elseif (z2 <= 11500000.0) tmp = atan(Float64(-0.5 * Float64(z0 / Float64(Float64(z1 * pi) * z2)))); else tmp = atan(Float64(z0 * Float64(tan(Float64(0.5 * pi)) / z1))); end return tmp end
function tmp_2 = code(z2, z0, z1) tmp = 0.0; if (z2 <= -4500000.0) tmp = atan((((((pi + pi) - ((pi + pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))); elseif (z2 <= 11500000.0) tmp = atan((-0.5 * (z0 / ((z1 * pi) * z2)))); else tmp = atan((z0 * (tan((0.5 * pi)) / z1))); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := If[LessEqual[z2, -4500000.0], N[ArcTan[N[(N[(N[(N[(N[(Pi + Pi), $MachinePrecision] - N[(N[(Pi + Pi), $MachinePrecision] / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 / z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[(N[(-1.0 / N[(0.0 * z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], If[LessEqual[z2, 11500000.0], N[ArcTan[N[(-0.5 * N[(z0 / N[(N[(z1 * Pi), $MachinePrecision] * z2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(z0 * N[(N[Tan[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision] / z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
\mathbf{if}\;z2 \leq -4500000:\\
\;\;\;\;\tan^{-1} \left(\left(\left(\left(\pi + \pi\right) - \frac{\pi + \pi}{0}\right) \cdot \frac{z2}{z1}\right) \cdot z0 - \frac{-1}{0 \cdot z1} \cdot z0\right)\\
\mathbf{elif}\;z2 \leq 11500000:\\
\;\;\;\;\tan^{-1} \left(-0.5 \cdot \frac{z0}{\left(z1 \cdot \pi\right) \cdot z2}\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(z0 \cdot \frac{\tan \left(0.5 \cdot \pi\right)}{z1}\right)\\
\end{array}
if z2 < -4.5e6Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
Applied rewrites38.8%
if -4.5e6 < z2 < 1.15e7Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
Taylor expanded in z2 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6458.7%
Applied rewrites58.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6458.7%
Applied rewrites58.7%
if 1.15e7 < z2 Initial program 31.5%
Taylor expanded in z2 around 0
Applied rewrites43.0%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
lower-/.f64N/A
lower-*.f6443.0%
Applied rewrites43.0%
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f6443.0%
Applied rewrites43.0%
(FPCore (z2 z0 z1)
:precision binary64
(if (<= z2 -4500000.0)
(atan
(-
(* (* (- (+ PI PI) (/ (+ PI PI) 0.0)) (/ z2 z1)) z0)
(* (/ -1.0 (* 0.0 z1)) z0)))
(atan (* -0.5 (/ z0 (* (* z1 PI) z2))))))double code(double z2, double z0, double z1) {
double tmp;
if (z2 <= -4500000.0) {
tmp = atan((((((((double) M_PI) + ((double) M_PI)) - ((((double) M_PI) + ((double) M_PI)) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else {
tmp = atan((-0.5 * (z0 / ((z1 * ((double) M_PI)) * z2))));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double tmp;
if (z2 <= -4500000.0) {
tmp = Math.atan((((((Math.PI + Math.PI) - ((Math.PI + Math.PI) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0)));
} else {
tmp = Math.atan((-0.5 * (z0 / ((z1 * Math.PI) * z2))));
}
return tmp;
}
def code(z2, z0, z1): tmp = 0 if z2 <= -4500000.0: tmp = math.atan((((((math.pi + math.pi) - ((math.pi + math.pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))) else: tmp = math.atan((-0.5 * (z0 / ((z1 * math.pi) * z2)))) return tmp
function code(z2, z0, z1) tmp = 0.0 if (z2 <= -4500000.0) tmp = atan(Float64(Float64(Float64(Float64(Float64(pi + pi) - Float64(Float64(pi + pi) / 0.0)) * Float64(z2 / z1)) * z0) - Float64(Float64(-1.0 / Float64(0.0 * z1)) * z0))); else tmp = atan(Float64(-0.5 * Float64(z0 / Float64(Float64(z1 * pi) * z2)))); end return tmp end
function tmp_2 = code(z2, z0, z1) tmp = 0.0; if (z2 <= -4500000.0) tmp = atan((((((pi + pi) - ((pi + pi) / 0.0)) * (z2 / z1)) * z0) - ((-1.0 / (0.0 * z1)) * z0))); else tmp = atan((-0.5 * (z0 / ((z1 * pi) * z2)))); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := If[LessEqual[z2, -4500000.0], N[ArcTan[N[(N[(N[(N[(N[(Pi + Pi), $MachinePrecision] - N[(N[(Pi + Pi), $MachinePrecision] / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 / z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[(N[(-1.0 / N[(0.0 * z1), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcTan[N[(-0.5 * N[(z0 / N[(N[(z1 * Pi), $MachinePrecision] * z2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;z2 \leq -4500000:\\
\;\;\;\;\tan^{-1} \left(\left(\left(\left(\pi + \pi\right) - \frac{\pi + \pi}{0}\right) \cdot \frac{z2}{z1}\right) \cdot z0 - \frac{-1}{0 \cdot z1} \cdot z0\right)\\
\mathbf{else}:\\
\;\;\;\;\tan^{-1} \left(-0.5 \cdot \frac{z0}{\left(z1 \cdot \pi\right) \cdot z2}\right)\\
\end{array}
if z2 < -4.5e6Initial program 31.5%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites33.3%
Applied rewrites38.8%
if -4.5e6 < z2 Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
Taylor expanded in z2 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6458.7%
Applied rewrites58.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6458.7%
Applied rewrites58.7%
(FPCore (z2 z0 z1) :precision binary64 (atan (* -0.5 (/ z0 (* (* z1 PI) z2)))))
double code(double z2, double z0, double z1) {
return atan((-0.5 * (z0 / ((z1 * ((double) M_PI)) * z2))));
}
public static double code(double z2, double z0, double z1) {
return Math.atan((-0.5 * (z0 / ((z1 * Math.PI) * z2))));
}
def code(z2, z0, z1): return math.atan((-0.5 * (z0 / ((z1 * math.pi) * z2))))
function code(z2, z0, z1) return atan(Float64(-0.5 * Float64(z0 / Float64(Float64(z1 * pi) * z2)))) end
function tmp = code(z2, z0, z1) tmp = atan((-0.5 * (z0 / ((z1 * pi) * z2)))); end
code[z2_, z0_, z1_] := N[ArcTan[N[(-0.5 * N[(z0 / N[(N[(z1 * Pi), $MachinePrecision] * z2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\tan^{-1} \left(-0.5 \cdot \frac{z0}{\left(z1 \cdot \pi\right) \cdot z2}\right)
Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
Taylor expanded in z2 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6458.7%
Applied rewrites58.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6458.7%
Applied rewrites58.7%
(FPCore (z2 z0 z1) :precision binary64 (atan (* -0.5 (/ z0 (* (* z1 z2) PI)))))
double code(double z2, double z0, double z1) {
return atan((-0.5 * (z0 / ((z1 * z2) * ((double) M_PI)))));
}
public static double code(double z2, double z0, double z1) {
return Math.atan((-0.5 * (z0 / ((z1 * z2) * Math.PI))));
}
def code(z2, z0, z1): return math.atan((-0.5 * (z0 / ((z1 * z2) * math.pi))))
function code(z2, z0, z1) return atan(Float64(-0.5 * Float64(z0 / Float64(Float64(z1 * z2) * pi)))) end
function tmp = code(z2, z0, z1) tmp = atan((-0.5 * (z0 / ((z1 * z2) * pi)))); end
code[z2_, z0_, z1_] := N[ArcTan[N[(-0.5 * N[(z0 / N[(N[(z1 * z2), $MachinePrecision] * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\tan^{-1} \left(-0.5 \cdot \frac{z0}{\left(z1 \cdot z2\right) \cdot \pi}\right)
Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
Taylor expanded in z2 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6458.7%
Applied rewrites58.7%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6458.7%
Applied rewrites58.7%
(FPCore (z2 z0 z1) :precision binary64 (atan (* -0.5 (/ z0 (* z1 (* z2 PI))))))
double code(double z2, double z0, double z1) {
return atan((-0.5 * (z0 / (z1 * (z2 * ((double) M_PI))))));
}
public static double code(double z2, double z0, double z1) {
return Math.atan((-0.5 * (z0 / (z1 * (z2 * Math.PI)))));
}
def code(z2, z0, z1): return math.atan((-0.5 * (z0 / (z1 * (z2 * math.pi)))))
function code(z2, z0, z1) return atan(Float64(-0.5 * Float64(z0 / Float64(z1 * Float64(z2 * pi))))) end
function tmp = code(z2, z0, z1) tmp = atan((-0.5 * (z0 / (z1 * (z2 * pi))))); end
code[z2_, z0_, z1_] := N[ArcTan[N[(-0.5 * N[(z0 / N[(z1 * N[(z2 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\tan^{-1} \left(-0.5 \cdot \frac{z0}{z1 \cdot \left(z2 \cdot \pi\right)}\right)
Initial program 31.5%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
lower-/.f64N/A
Applied rewrites64.9%
Taylor expanded in z2 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6458.7%
Applied rewrites58.7%
herbie shell --seed 2025250
(FPCore (z2 z0 z1)
:name "(atan (* (tan (* (- (+ z2 z2) -1/2) PI)) (/ z0 z1)))"
:precision binary64
(atan (* (tan (* (- (+ z2 z2) -0.5) PI)) (/ z0 z1))))