
(FPCore (z1 z2 z0) :precision binary64 (- -1.0 (cos (* -2.0 (atan (* (/ z1 z2) (tan (* PI (- (+ z0 z0) -0.5)))))))))
double code(double z1, double z2, double z0) {
return -1.0 - cos((-2.0 * atan(((z1 / z2) * tan((((double) M_PI) * ((z0 + z0) - -0.5)))))));
}
public static double code(double z1, double z2, double z0) {
return -1.0 - Math.cos((-2.0 * Math.atan(((z1 / z2) * Math.tan((Math.PI * ((z0 + z0) - -0.5)))))));
}
def code(z1, z2, z0): return -1.0 - math.cos((-2.0 * math.atan(((z1 / z2) * math.tan((math.pi * ((z0 + z0) - -0.5)))))))
function code(z1, z2, z0) return Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(Float64(z1 / z2) * tan(Float64(pi * Float64(Float64(z0 + z0) - -0.5)))))))) end
function tmp = code(z1, z2, z0) tmp = -1.0 - cos((-2.0 * atan(((z1 / z2) * tan((pi * ((z0 + z0) - -0.5))))))); end
code[z1_, z2_, z0_] := N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(N[(z1 / z2), $MachinePrecision] * N[Tan[N[(Pi * N[(N[(z0 + z0), $MachinePrecision] - -0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
-1 - \cos \left(-2 \cdot \tan^{-1} \left(\frac{z1}{z2} \cdot \tan \left(\pi \cdot \left(\left(z0 + z0\right) - -0.5\right)\right)\right)\right)
Herbie found 5 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z1 z2 z0) :precision binary64 (- -1.0 (cos (* -2.0 (atan (* (/ z1 z2) (tan (* PI (- (+ z0 z0) -0.5)))))))))
double code(double z1, double z2, double z0) {
return -1.0 - cos((-2.0 * atan(((z1 / z2) * tan((((double) M_PI) * ((z0 + z0) - -0.5)))))));
}
public static double code(double z1, double z2, double z0) {
return -1.0 - Math.cos((-2.0 * Math.atan(((z1 / z2) * Math.tan((Math.PI * ((z0 + z0) - -0.5)))))));
}
def code(z1, z2, z0): return -1.0 - math.cos((-2.0 * math.atan(((z1 / z2) * math.tan((math.pi * ((z0 + z0) - -0.5)))))))
function code(z1, z2, z0) return Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(Float64(z1 / z2) * tan(Float64(pi * Float64(Float64(z0 + z0) - -0.5)))))))) end
function tmp = code(z1, z2, z0) tmp = -1.0 - cos((-2.0 * atan(((z1 / z2) * tan((pi * ((z0 + z0) - -0.5))))))); end
code[z1_, z2_, z0_] := N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(N[(z1 / z2), $MachinePrecision] * N[Tan[N[(Pi * N[(N[(z0 + z0), $MachinePrecision] - -0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
-1 - \cos \left(-2 \cdot \tan^{-1} \left(\frac{z1}{z2} \cdot \tan \left(\pi \cdot \left(\left(z0 + z0\right) - -0.5\right)\right)\right)\right)
(FPCore (z1 z2 z0)
:precision binary64
(let* ((t_0 (* (+ z0 z0) PI))
(t_1
(-
-1.0
(cos
(*
-2.0
(atan
(/
(*
(-
(*
(*
2.0
(+
PI
(/
(* (- 0.5 (* 0.5 (cos (* 2.0 (* 0.5 PI))))) PI)
(+ 0.5 (* 0.5 (cos (* 2.0 (* PI -0.5))))))))
z0)
(tan (* PI -0.5)))
z1)
z2)))))))
(if (<= z0 -110000000.0)
t_1
(if (<= z0 50.0)
(-
-1.0
(cos
(* -2.0 (atan (/ (* (cos t_0) z1) (* (- (sin t_0)) z2))))))
t_1))))double code(double z1, double z2, double z0) {
double t_0 = (z0 + z0) * ((double) M_PI);
double t_1 = -1.0 - cos((-2.0 * atan((((((2.0 * (((double) M_PI) + (((0.5 - (0.5 * cos((2.0 * (0.5 * ((double) M_PI)))))) * ((double) M_PI)) / (0.5 + (0.5 * cos((2.0 * (((double) M_PI) * -0.5)))))))) * z0) - tan((((double) M_PI) * -0.5))) * z1) / z2))));
double tmp;
if (z0 <= -110000000.0) {
tmp = t_1;
} else if (z0 <= 50.0) {
tmp = -1.0 - cos((-2.0 * atan(((cos(t_0) * z1) / (-sin(t_0) * z2)))));
} else {
tmp = t_1;
}
return tmp;
}
public static double code(double z1, double z2, double z0) {
double t_0 = (z0 + z0) * Math.PI;
double t_1 = -1.0 - Math.cos((-2.0 * Math.atan((((((2.0 * (Math.PI + (((0.5 - (0.5 * Math.cos((2.0 * (0.5 * Math.PI))))) * Math.PI) / (0.5 + (0.5 * Math.cos((2.0 * (Math.PI * -0.5)))))))) * z0) - Math.tan((Math.PI * -0.5))) * z1) / z2))));
double tmp;
if (z0 <= -110000000.0) {
tmp = t_1;
} else if (z0 <= 50.0) {
tmp = -1.0 - Math.cos((-2.0 * Math.atan(((Math.cos(t_0) * z1) / (-Math.sin(t_0) * z2)))));
} else {
tmp = t_1;
}
return tmp;
}
def code(z1, z2, z0): t_0 = (z0 + z0) * math.pi t_1 = -1.0 - math.cos((-2.0 * math.atan((((((2.0 * (math.pi + (((0.5 - (0.5 * math.cos((2.0 * (0.5 * math.pi))))) * math.pi) / (0.5 + (0.5 * math.cos((2.0 * (math.pi * -0.5)))))))) * z0) - math.tan((math.pi * -0.5))) * z1) / z2)))) tmp = 0 if z0 <= -110000000.0: tmp = t_1 elif z0 <= 50.0: tmp = -1.0 - math.cos((-2.0 * math.atan(((math.cos(t_0) * z1) / (-math.sin(t_0) * z2))))) else: tmp = t_1 return tmp
function code(z1, z2, z0) t_0 = Float64(Float64(z0 + z0) * pi) t_1 = Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(Float64(Float64(Float64(Float64(2.0 * Float64(pi + Float64(Float64(Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * Float64(0.5 * pi))))) * pi) / Float64(0.5 + Float64(0.5 * cos(Float64(2.0 * Float64(pi * -0.5)))))))) * z0) - tan(Float64(pi * -0.5))) * z1) / z2))))) tmp = 0.0 if (z0 <= -110000000.0) tmp = t_1; elseif (z0 <= 50.0) tmp = Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(Float64(cos(t_0) * z1) / Float64(Float64(-sin(t_0)) * z2)))))); else tmp = t_1; end return tmp end
function tmp_2 = code(z1, z2, z0) t_0 = (z0 + z0) * pi; t_1 = -1.0 - cos((-2.0 * atan((((((2.0 * (pi + (((0.5 - (0.5 * cos((2.0 * (0.5 * pi))))) * pi) / (0.5 + (0.5 * cos((2.0 * (pi * -0.5)))))))) * z0) - tan((pi * -0.5))) * z1) / z2)))); tmp = 0.0; if (z0 <= -110000000.0) tmp = t_1; elseif (z0 <= 50.0) tmp = -1.0 - cos((-2.0 * atan(((cos(t_0) * z1) / (-sin(t_0) * z2))))); else tmp = t_1; end tmp_2 = tmp; end
code[z1_, z2_, z0_] := Block[{t$95$0 = N[(N[(z0 + z0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$1 = N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(N[(N[(N[(N[(2.0 * N[(Pi + N[(N[(N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(0.5 * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision] / N[(0.5 + N[(0.5 * N[Cos[N[(2.0 * N[(Pi * -0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] - N[Tan[N[(Pi * -0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * z1), $MachinePrecision] / z2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z0, -110000000.0], t$95$1, If[LessEqual[z0, 50.0], N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(N[(N[Cos[t$95$0], $MachinePrecision] * z1), $MachinePrecision] / N[((-N[Sin[t$95$0], $MachinePrecision]) * z2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
t_0 := \left(z0 + z0\right) \cdot \pi\\
t_1 := -1 - \cos \left(-2 \cdot \tan^{-1} \left(\frac{\left(\left(2 \cdot \left(\pi + \frac{\left(0.5 - 0.5 \cdot \cos \left(2 \cdot \left(0.5 \cdot \pi\right)\right)\right) \cdot \pi}{0.5 + 0.5 \cdot \cos \left(2 \cdot \left(\pi \cdot -0.5\right)\right)}\right)\right) \cdot z0 - \tan \left(\pi \cdot -0.5\right)\right) \cdot z1}{z2}\right)\right)\\
\mathbf{if}\;z0 \leq -110000000:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z0 \leq 50:\\
\;\;\;\;-1 - \cos \left(-2 \cdot \tan^{-1} \left(\frac{\cos t\_0 \cdot z1}{\left(-\sin t\_0\right) \cdot z2}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
if z0 < -1.1e8 or 50 < z0 Initial program 63.4%
Taylor expanded in z0 around 0
Applied rewrites79.9%
Applied rewrites84.0%
Taylor expanded in z0 around 0
Applied rewrites75.8%
Applied rewrites73.6%
if -1.1e8 < z0 < 50Initial program 63.4%
lift-*.f64N/A
lift-/.f64N/A
lift-tan.f64N/A
tan-quotN/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites66.0%
(FPCore (z1 z2 z0)
:precision binary64
(-
-1.0
(cos
(*
-2.0
(atan
(/
(* (+ 1.0 (* -2.0 (* (pow z0 2.0) (pow PI 2.0)))) z1)
(* (- (sin (* (+ z0 z0) PI))) z2)))))))double code(double z1, double z2, double z0) {
return -1.0 - cos((-2.0 * atan((((1.0 + (-2.0 * (pow(z0, 2.0) * pow(((double) M_PI), 2.0)))) * z1) / (-sin(((z0 + z0) * ((double) M_PI))) * z2)))));
}
public static double code(double z1, double z2, double z0) {
return -1.0 - Math.cos((-2.0 * Math.atan((((1.0 + (-2.0 * (Math.pow(z0, 2.0) * Math.pow(Math.PI, 2.0)))) * z1) / (-Math.sin(((z0 + z0) * Math.PI)) * z2)))));
}
def code(z1, z2, z0): return -1.0 - math.cos((-2.0 * math.atan((((1.0 + (-2.0 * (math.pow(z0, 2.0) * math.pow(math.pi, 2.0)))) * z1) / (-math.sin(((z0 + z0) * math.pi)) * z2)))))
function code(z1, z2, z0) return Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(Float64(Float64(1.0 + Float64(-2.0 * Float64((z0 ^ 2.0) * (pi ^ 2.0)))) * z1) / Float64(Float64(-sin(Float64(Float64(z0 + z0) * pi))) * z2)))))) end
function tmp = code(z1, z2, z0) tmp = -1.0 - cos((-2.0 * atan((((1.0 + (-2.0 * ((z0 ^ 2.0) * (pi ^ 2.0)))) * z1) / (-sin(((z0 + z0) * pi)) * z2))))); end
code[z1_, z2_, z0_] := N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(N[(N[(1.0 + N[(-2.0 * N[(N[Power[z0, 2.0], $MachinePrecision] * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * z1), $MachinePrecision] / N[((-N[Sin[N[(N[(z0 + z0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]) * z2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
-1 - \cos \left(-2 \cdot \tan^{-1} \left(\frac{\left(1 + -2 \cdot \left({z0}^{2} \cdot {\pi}^{2}\right)\right) \cdot z1}{\left(-\sin \left(\left(z0 + z0\right) \cdot \pi\right)\right) \cdot z2}\right)\right)
Initial program 63.4%
lift-*.f64N/A
lift-/.f64N/A
lift-tan.f64N/A
tan-quotN/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites66.0%
Taylor expanded in z0 around 0
lower-+.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-PI.f6483.3%
Applied rewrites83.3%
(FPCore (z1 z2 z0)
:precision binary64
(let* ((t_0 (/ (fabs z1) (fabs z2)))
(t_1 (/ (* (fabs z1) PI) (fabs z2))))
(if (<= t_0 140000000.0)
(-
-1.0
(cos
(*
-2.0
(atan
(/
(+
(*
-1.0
(*
(pow z0 2.0)
(- (* -1.0 t_1) (* -0.3333333333333333 t_1))))
(* -0.5 (/ (fabs z1) (* (fabs z2) PI))))
z0)))))
(-
-1.0
(cos (* -2.0 (atan (* t_0 (tan (* PI (- (+ z0 z0) -0.5)))))))))))double code(double z1, double z2, double z0) {
double t_0 = fabs(z1) / fabs(z2);
double t_1 = (fabs(z1) * ((double) M_PI)) / fabs(z2);
double tmp;
if (t_0 <= 140000000.0) {
tmp = -1.0 - cos((-2.0 * atan((((-1.0 * (pow(z0, 2.0) * ((-1.0 * t_1) - (-0.3333333333333333 * t_1)))) + (-0.5 * (fabs(z1) / (fabs(z2) * ((double) M_PI))))) / z0))));
} else {
tmp = -1.0 - cos((-2.0 * atan((t_0 * tan((((double) M_PI) * ((z0 + z0) - -0.5)))))));
}
return tmp;
}
public static double code(double z1, double z2, double z0) {
double t_0 = Math.abs(z1) / Math.abs(z2);
double t_1 = (Math.abs(z1) * Math.PI) / Math.abs(z2);
double tmp;
if (t_0 <= 140000000.0) {
tmp = -1.0 - Math.cos((-2.0 * Math.atan((((-1.0 * (Math.pow(z0, 2.0) * ((-1.0 * t_1) - (-0.3333333333333333 * t_1)))) + (-0.5 * (Math.abs(z1) / (Math.abs(z2) * Math.PI)))) / z0))));
} else {
tmp = -1.0 - Math.cos((-2.0 * Math.atan((t_0 * Math.tan((Math.PI * ((z0 + z0) - -0.5)))))));
}
return tmp;
}
def code(z1, z2, z0): t_0 = math.fabs(z1) / math.fabs(z2) t_1 = (math.fabs(z1) * math.pi) / math.fabs(z2) tmp = 0 if t_0 <= 140000000.0: tmp = -1.0 - math.cos((-2.0 * math.atan((((-1.0 * (math.pow(z0, 2.0) * ((-1.0 * t_1) - (-0.3333333333333333 * t_1)))) + (-0.5 * (math.fabs(z1) / (math.fabs(z2) * math.pi)))) / z0)))) else: tmp = -1.0 - math.cos((-2.0 * math.atan((t_0 * math.tan((math.pi * ((z0 + z0) - -0.5))))))) return tmp
function code(z1, z2, z0) t_0 = Float64(abs(z1) / abs(z2)) t_1 = Float64(Float64(abs(z1) * pi) / abs(z2)) tmp = 0.0 if (t_0 <= 140000000.0) tmp = Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(Float64(Float64(-1.0 * Float64((z0 ^ 2.0) * Float64(Float64(-1.0 * t_1) - Float64(-0.3333333333333333 * t_1)))) + Float64(-0.5 * Float64(abs(z1) / Float64(abs(z2) * pi)))) / z0))))); else tmp = Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(t_0 * tan(Float64(pi * Float64(Float64(z0 + z0) - -0.5)))))))); end return tmp end
function tmp_2 = code(z1, z2, z0) t_0 = abs(z1) / abs(z2); t_1 = (abs(z1) * pi) / abs(z2); tmp = 0.0; if (t_0 <= 140000000.0) tmp = -1.0 - cos((-2.0 * atan((((-1.0 * ((z0 ^ 2.0) * ((-1.0 * t_1) - (-0.3333333333333333 * t_1)))) + (-0.5 * (abs(z1) / (abs(z2) * pi)))) / z0)))); else tmp = -1.0 - cos((-2.0 * atan((t_0 * tan((pi * ((z0 + z0) - -0.5))))))); end tmp_2 = tmp; end
code[z1_, z2_, z0_] := Block[{t$95$0 = N[(N[Abs[z1], $MachinePrecision] / N[Abs[z2], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[Abs[z1], $MachinePrecision] * Pi), $MachinePrecision] / N[Abs[z2], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, 140000000.0], N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(N[(N[(-1.0 * N[(N[Power[z0, 2.0], $MachinePrecision] * N[(N[(-1.0 * t$95$1), $MachinePrecision] - N[(-0.3333333333333333 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-0.5 * N[(N[Abs[z1], $MachinePrecision] / N[(N[Abs[z2], $MachinePrecision] * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / z0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(t$95$0 * N[Tan[N[(Pi * N[(N[(z0 + z0), $MachinePrecision] - -0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
t_0 := \frac{\left|z1\right|}{\left|z2\right|}\\
t_1 := \frac{\left|z1\right| \cdot \pi}{\left|z2\right|}\\
\mathbf{if}\;t\_0 \leq 140000000:\\
\;\;\;\;-1 - \cos \left(-2 \cdot \tan^{-1} \left(\frac{-1 \cdot \left({z0}^{2} \cdot \left(-1 \cdot t\_1 - -0.3333333333333333 \cdot t\_1\right)\right) + -0.5 \cdot \frac{\left|z1\right|}{\left|z2\right| \cdot \pi}}{z0}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;-1 - \cos \left(-2 \cdot \tan^{-1} \left(t\_0 \cdot \tan \left(\pi \cdot \left(\left(z0 + z0\right) - -0.5\right)\right)\right)\right)\\
\end{array}
if (/.f64 z1 z2) < 1.4e8Initial program 63.4%
lift-*.f64N/A
lift-/.f64N/A
lift-tan.f64N/A
tan-quotN/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites66.0%
Taylor expanded in z0 around 0
lower-/.f64N/A
Applied rewrites65.1%
if 1.4e8 < (/.f64 z1 z2) Initial program 63.4%
(FPCore (z1 z2 z0)
:precision binary64
(if (<=
(cos
(* -2.0 (atan (* (/ z1 z2) (tan (* PI (- (+ z0 z0) -0.5)))))))
-0.9999999999999994)
(- -1.0 (cos (* -2.0 (atan (* (/ z1 z2) (tan (* PI 0.5)))))))
(- -1.0 (cos (* -2.0 (atan (* -0.5 (/ z1 (* z0 (* z2 PI))))))))))double code(double z1, double z2, double z0) {
double tmp;
if (cos((-2.0 * atan(((z1 / z2) * tan((((double) M_PI) * ((z0 + z0) - -0.5))))))) <= -0.9999999999999994) {
tmp = -1.0 - cos((-2.0 * atan(((z1 / z2) * tan((((double) M_PI) * 0.5))))));
} else {
tmp = -1.0 - cos((-2.0 * atan((-0.5 * (z1 / (z0 * (z2 * ((double) M_PI))))))));
}
return tmp;
}
public static double code(double z1, double z2, double z0) {
double tmp;
if (Math.cos((-2.0 * Math.atan(((z1 / z2) * Math.tan((Math.PI * ((z0 + z0) - -0.5))))))) <= -0.9999999999999994) {
tmp = -1.0 - Math.cos((-2.0 * Math.atan(((z1 / z2) * Math.tan((Math.PI * 0.5))))));
} else {
tmp = -1.0 - Math.cos((-2.0 * Math.atan((-0.5 * (z1 / (z0 * (z2 * Math.PI)))))));
}
return tmp;
}
def code(z1, z2, z0): tmp = 0 if math.cos((-2.0 * math.atan(((z1 / z2) * math.tan((math.pi * ((z0 + z0) - -0.5))))))) <= -0.9999999999999994: tmp = -1.0 - math.cos((-2.0 * math.atan(((z1 / z2) * math.tan((math.pi * 0.5)))))) else: tmp = -1.0 - math.cos((-2.0 * math.atan((-0.5 * (z1 / (z0 * (z2 * math.pi))))))) return tmp
function code(z1, z2, z0) tmp = 0.0 if (cos(Float64(-2.0 * atan(Float64(Float64(z1 / z2) * tan(Float64(pi * Float64(Float64(z0 + z0) - -0.5))))))) <= -0.9999999999999994) tmp = Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(Float64(z1 / z2) * tan(Float64(pi * 0.5))))))); else tmp = Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(-0.5 * Float64(z1 / Float64(z0 * Float64(z2 * pi)))))))); end return tmp end
function tmp_2 = code(z1, z2, z0) tmp = 0.0; if (cos((-2.0 * atan(((z1 / z2) * tan((pi * ((z0 + z0) - -0.5))))))) <= -0.9999999999999994) tmp = -1.0 - cos((-2.0 * atan(((z1 / z2) * tan((pi * 0.5)))))); else tmp = -1.0 - cos((-2.0 * atan((-0.5 * (z1 / (z0 * (z2 * pi))))))); end tmp_2 = tmp; end
code[z1_, z2_, z0_] := If[LessEqual[N[Cos[N[(-2.0 * N[ArcTan[N[(N[(z1 / z2), $MachinePrecision] * N[Tan[N[(Pi * N[(N[(z0 + z0), $MachinePrecision] - -0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], -0.9999999999999994], N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(N[(z1 / z2), $MachinePrecision] * N[Tan[N[(Pi * 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(-0.5 * N[(z1 / N[(z0 * N[(z2 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\cos \left(-2 \cdot \tan^{-1} \left(\frac{z1}{z2} \cdot \tan \left(\pi \cdot \left(\left(z0 + z0\right) - -0.5\right)\right)\right)\right) \leq -0.9999999999999994:\\
\;\;\;\;-1 - \cos \left(-2 \cdot \tan^{-1} \left(\frac{z1}{z2} \cdot \tan \left(\pi \cdot 0.5\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;-1 - \cos \left(-2 \cdot \tan^{-1} \left(-0.5 \cdot \frac{z1}{z0 \cdot \left(z2 \cdot \pi\right)}\right)\right)\\
\end{array}
if (cos.f64 (*.f64 #s(literal -2 binary64) (atan.f64 (*.f64 (/.f64 z1 z2) (tan.f64 (*.f64 (PI.f64) (-.f64 (+.f64 z0 z0) #s(literal -1/2 binary64)))))))) < -0.99999999999999944Initial program 63.4%
Taylor expanded in z0 around 0
Applied rewrites64.5%
if -0.99999999999999944 < (cos.f64 (*.f64 #s(literal -2 binary64) (atan.f64 (*.f64 (/.f64 z1 z2) (tan.f64 (*.f64 (PI.f64) (-.f64 (+.f64 z0 z0) #s(literal -1/2 binary64)))))))) Initial program 63.4%
lift-*.f64N/A
lift-/.f64N/A
lift-tan.f64N/A
tan-quotN/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites66.0%
Taylor expanded in z0 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6456.1%
Applied rewrites56.1%
(FPCore (z1 z2 z0) :precision binary64 (- -1.0 (cos (* -2.0 (atan (* -0.5 (/ z1 (* z0 (* z2 PI)))))))))
double code(double z1, double z2, double z0) {
return -1.0 - cos((-2.0 * atan((-0.5 * (z1 / (z0 * (z2 * ((double) M_PI))))))));
}
public static double code(double z1, double z2, double z0) {
return -1.0 - Math.cos((-2.0 * Math.atan((-0.5 * (z1 / (z0 * (z2 * Math.PI)))))));
}
def code(z1, z2, z0): return -1.0 - math.cos((-2.0 * math.atan((-0.5 * (z1 / (z0 * (z2 * math.pi)))))))
function code(z1, z2, z0) return Float64(-1.0 - cos(Float64(-2.0 * atan(Float64(-0.5 * Float64(z1 / Float64(z0 * Float64(z2 * pi)))))))) end
function tmp = code(z1, z2, z0) tmp = -1.0 - cos((-2.0 * atan((-0.5 * (z1 / (z0 * (z2 * pi))))))); end
code[z1_, z2_, z0_] := N[(-1.0 - N[Cos[N[(-2.0 * N[ArcTan[N[(-0.5 * N[(z1 / N[(z0 * N[(z2 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
-1 - \cos \left(-2 \cdot \tan^{-1} \left(-0.5 \cdot \frac{z1}{z0 \cdot \left(z2 \cdot \pi\right)}\right)\right)
Initial program 63.4%
lift-*.f64N/A
lift-/.f64N/A
lift-tan.f64N/A
tan-quotN/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites66.0%
Taylor expanded in z0 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6456.1%
Applied rewrites56.1%
herbie shell --seed 2025250
(FPCore (z1 z2 z0)
:name "(- -1 (cos (* -2 (atan (* (/ z1 z2) (tan (* PI (- (+ z0 z0) -1/2))))))))"
:precision binary64
(- -1.0 (cos (* -2.0 (atan (* (/ z1 z2) (tan (* PI (- (+ z0 z0) -0.5)))))))))