
(FPCore (z2 z0 z1) :precision binary64 (cos (* (atan (* (tan (* (- (+ z2 z2) -0.5) PI)) (/ z0 z1))) 2.0)))
double code(double z2, double z0, double z1) {
return cos((atan((tan((((z2 + z2) - -0.5) * ((double) M_PI))) * (z0 / z1))) * 2.0));
}
public static double code(double z2, double z0, double z1) {
return Math.cos((Math.atan((Math.tan((((z2 + z2) - -0.5) * Math.PI)) * (z0 / z1))) * 2.0));
}
def code(z2, z0, z1): return math.cos((math.atan((math.tan((((z2 + z2) - -0.5) * math.pi)) * (z0 / z1))) * 2.0))
function code(z2, z0, z1) return cos(Float64(atan(Float64(tan(Float64(Float64(Float64(z2 + z2) - -0.5) * pi)) * Float64(z0 / z1))) * 2.0)) end
function tmp = code(z2, z0, z1) tmp = cos((atan((tan((((z2 + z2) - -0.5) * pi)) * (z0 / z1))) * 2.0)); end
code[z2_, z0_, z1_] := N[Cos[N[(N[ArcTan[N[(N[Tan[N[(N[(N[(z2 + z2), $MachinePrecision] - -0.5), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision] * N[(z0 / z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]
\cos \left(\tan^{-1} \left(\tan \left(\left(\left(z2 + z2\right) - -0.5\right) \cdot \pi\right) \cdot \frac{z0}{z1}\right) \cdot 2\right)
Herbie found 6 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z2 z0 z1) :precision binary64 (cos (* (atan (* (tan (* (- (+ z2 z2) -0.5) PI)) (/ z0 z1))) 2.0)))
double code(double z2, double z0, double z1) {
return cos((atan((tan((((z2 + z2) - -0.5) * ((double) M_PI))) * (z0 / z1))) * 2.0));
}
public static double code(double z2, double z0, double z1) {
return Math.cos((Math.atan((Math.tan((((z2 + z2) - -0.5) * Math.PI)) * (z0 / z1))) * 2.0));
}
def code(z2, z0, z1): return math.cos((math.atan((math.tan((((z2 + z2) - -0.5) * math.pi)) * (z0 / z1))) * 2.0))
function code(z2, z0, z1) return cos(Float64(atan(Float64(tan(Float64(Float64(Float64(z2 + z2) - -0.5) * pi)) * Float64(z0 / z1))) * 2.0)) end
function tmp = code(z2, z0, z1) tmp = cos((atan((tan((((z2 + z2) - -0.5) * pi)) * (z0 / z1))) * 2.0)); end
code[z2_, z0_, z1_] := N[Cos[N[(N[ArcTan[N[(N[Tan[N[(N[(N[(z2 + z2), $MachinePrecision] - -0.5), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision] * N[(z0 / z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]
\cos \left(\tan^{-1} \left(\tan \left(\left(\left(z2 + z2\right) - -0.5\right) \cdot \pi\right) \cdot \frac{z0}{z1}\right) \cdot 2\right)
(FPCore (z2 z0 z1)
:precision binary64
(let* ((t_0
(cos
(*
(atan
(/
(*
(- (* (- PI (/ PI 0.0)) (+ z2 z2)) (tan (* PI -0.5)))
z0)
z1))
2.0))))
(if (<= z2 -2.8e+21)
t_0
(if (<= z2 20000000.0)
(cos
(*
(atan
(/
(* (sin (+ (* (- PI) (+ z2 z2)) (* PI 0.5))) z0)
(* (- (sin (* PI (+ z2 z2)))) z1)))
2.0))
t_0))))double code(double z2, double z0, double z1) {
double t_0 = cos((atan((((((((double) M_PI) - (((double) M_PI) / 0.0)) * (z2 + z2)) - tan((((double) M_PI) * -0.5))) * z0) / z1)) * 2.0));
double tmp;
if (z2 <= -2.8e+21) {
tmp = t_0;
} else if (z2 <= 20000000.0) {
tmp = cos((atan(((sin(((-((double) M_PI) * (z2 + z2)) + (((double) M_PI) * 0.5))) * z0) / (-sin((((double) M_PI) * (z2 + z2))) * z1))) * 2.0));
} else {
tmp = t_0;
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double t_0 = Math.cos((Math.atan((((((Math.PI - (Math.PI / 0.0)) * (z2 + z2)) - Math.tan((Math.PI * -0.5))) * z0) / z1)) * 2.0));
double tmp;
if (z2 <= -2.8e+21) {
tmp = t_0;
} else if (z2 <= 20000000.0) {
tmp = Math.cos((Math.atan(((Math.sin(((-Math.PI * (z2 + z2)) + (Math.PI * 0.5))) * z0) / (-Math.sin((Math.PI * (z2 + z2))) * z1))) * 2.0));
} else {
tmp = t_0;
}
return tmp;
}
def code(z2, z0, z1): t_0 = math.cos((math.atan((((((math.pi - (math.pi / 0.0)) * (z2 + z2)) - math.tan((math.pi * -0.5))) * z0) / z1)) * 2.0)) tmp = 0 if z2 <= -2.8e+21: tmp = t_0 elif z2 <= 20000000.0: tmp = math.cos((math.atan(((math.sin(((-math.pi * (z2 + z2)) + (math.pi * 0.5))) * z0) / (-math.sin((math.pi * (z2 + z2))) * z1))) * 2.0)) else: tmp = t_0 return tmp
function code(z2, z0, z1) t_0 = cos(Float64(atan(Float64(Float64(Float64(Float64(Float64(pi - Float64(pi / 0.0)) * Float64(z2 + z2)) - tan(Float64(pi * -0.5))) * z0) / z1)) * 2.0)) tmp = 0.0 if (z2 <= -2.8e+21) tmp = t_0; elseif (z2 <= 20000000.0) tmp = cos(Float64(atan(Float64(Float64(sin(Float64(Float64(Float64(-pi) * Float64(z2 + z2)) + Float64(pi * 0.5))) * z0) / Float64(Float64(-sin(Float64(pi * Float64(z2 + z2)))) * z1))) * 2.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(z2, z0, z1) t_0 = cos((atan((((((pi - (pi / 0.0)) * (z2 + z2)) - tan((pi * -0.5))) * z0) / z1)) * 2.0)); tmp = 0.0; if (z2 <= -2.8e+21) tmp = t_0; elseif (z2 <= 20000000.0) tmp = cos((atan(((sin(((-pi * (z2 + z2)) + (pi * 0.5))) * z0) / (-sin((pi * (z2 + z2))) * z1))) * 2.0)); else tmp = t_0; end tmp_2 = tmp; end
code[z2_, z0_, z1_] := Block[{t$95$0 = N[Cos[N[(N[ArcTan[N[(N[(N[(N[(N[(Pi - N[(Pi / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 + z2), $MachinePrecision]), $MachinePrecision] - N[Tan[N[(Pi * -0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] / z1), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[z2, -2.8e+21], t$95$0, If[LessEqual[z2, 20000000.0], N[Cos[N[(N[ArcTan[N[(N[(N[Sin[N[(N[((-Pi) * N[(z2 + z2), $MachinePrecision]), $MachinePrecision] + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * z0), $MachinePrecision] / N[((-N[Sin[N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}
t_0 := \cos \left(\tan^{-1} \left(\frac{\left(\left(\pi - \frac{\pi}{0}\right) \cdot \left(z2 + z2\right) - \tan \left(\pi \cdot -0.5\right)\right) \cdot z0}{z1}\right) \cdot 2\right)\\
\mathbf{if}\;z2 \leq -2.8 \cdot 10^{+21}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z2 \leq 20000000:\\
\;\;\;\;\cos \left(\tan^{-1} \left(\frac{\sin \left(\left(-\pi\right) \cdot \left(z2 + z2\right) + \pi \cdot 0.5\right) \cdot z0}{\left(-\sin \left(\pi \cdot \left(z2 + z2\right)\right)\right) \cdot z1}\right) \cdot 2\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
if z2 < -2.8e21 or 2e7 < z2 Initial program 67.3%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites78.7%
Applied rewrites79.2%
Applied rewrites84.0%
Applied rewrites84.0%
if -2.8e21 < z2 < 2e7Initial program 67.3%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites76.5%
lift-cos.f64N/A
cos-neg-revN/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lower-+.f64N/A
lift-*.f64N/A
distribute-lft-neg-inN/A
lower-*.f64N/A
lower-neg.f64N/A
lift-PI.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6476.5%
Applied rewrites76.5%
(FPCore (z2 z0 z1)
:precision binary64
(let* ((t_0 (* PI (+ z2 z2)))
(t_1
(cos
(*
(atan
(/
(*
(- (* (- PI (/ PI 0.0)) (+ z2 z2)) (tan (* PI -0.5)))
z0)
z1))
2.0))))
(if (<= z2 -2.8e+21)
t_1
(if (<= z2 20000000.0)
(cos (* (atan (/ (* (cos t_0) z0) (* (- (sin t_0)) z1))) 2.0))
t_1))))double code(double z2, double z0, double z1) {
double t_0 = ((double) M_PI) * (z2 + z2);
double t_1 = cos((atan((((((((double) M_PI) - (((double) M_PI) / 0.0)) * (z2 + z2)) - tan((((double) M_PI) * -0.5))) * z0) / z1)) * 2.0));
double tmp;
if (z2 <= -2.8e+21) {
tmp = t_1;
} else if (z2 <= 20000000.0) {
tmp = cos((atan(((cos(t_0) * z0) / (-sin(t_0) * z1))) * 2.0));
} else {
tmp = t_1;
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double t_0 = Math.PI * (z2 + z2);
double t_1 = Math.cos((Math.atan((((((Math.PI - (Math.PI / 0.0)) * (z2 + z2)) - Math.tan((Math.PI * -0.5))) * z0) / z1)) * 2.0));
double tmp;
if (z2 <= -2.8e+21) {
tmp = t_1;
} else if (z2 <= 20000000.0) {
tmp = Math.cos((Math.atan(((Math.cos(t_0) * z0) / (-Math.sin(t_0) * z1))) * 2.0));
} else {
tmp = t_1;
}
return tmp;
}
def code(z2, z0, z1): t_0 = math.pi * (z2 + z2) t_1 = math.cos((math.atan((((((math.pi - (math.pi / 0.0)) * (z2 + z2)) - math.tan((math.pi * -0.5))) * z0) / z1)) * 2.0)) tmp = 0 if z2 <= -2.8e+21: tmp = t_1 elif z2 <= 20000000.0: tmp = math.cos((math.atan(((math.cos(t_0) * z0) / (-math.sin(t_0) * z1))) * 2.0)) else: tmp = t_1 return tmp
function code(z2, z0, z1) t_0 = Float64(pi * Float64(z2 + z2)) t_1 = cos(Float64(atan(Float64(Float64(Float64(Float64(Float64(pi - Float64(pi / 0.0)) * Float64(z2 + z2)) - tan(Float64(pi * -0.5))) * z0) / z1)) * 2.0)) tmp = 0.0 if (z2 <= -2.8e+21) tmp = t_1; elseif (z2 <= 20000000.0) tmp = cos(Float64(atan(Float64(Float64(cos(t_0) * z0) / Float64(Float64(-sin(t_0)) * z1))) * 2.0)); else tmp = t_1; end return tmp end
function tmp_2 = code(z2, z0, z1) t_0 = pi * (z2 + z2); t_1 = cos((atan((((((pi - (pi / 0.0)) * (z2 + z2)) - tan((pi * -0.5))) * z0) / z1)) * 2.0)); tmp = 0.0; if (z2 <= -2.8e+21) tmp = t_1; elseif (z2 <= 20000000.0) tmp = cos((atan(((cos(t_0) * z0) / (-sin(t_0) * z1))) * 2.0)); else tmp = t_1; end tmp_2 = tmp; end
code[z2_, z0_, z1_] := Block[{t$95$0 = N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(N[ArcTan[N[(N[(N[(N[(N[(Pi - N[(Pi / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 + z2), $MachinePrecision]), $MachinePrecision] - N[Tan[N[(Pi * -0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] / z1), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[z2, -2.8e+21], t$95$1, If[LessEqual[z2, 20000000.0], N[Cos[N[(N[ArcTan[N[(N[(N[Cos[t$95$0], $MachinePrecision] * z0), $MachinePrecision] / N[((-N[Sin[t$95$0], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision], t$95$1]]]]
\begin{array}{l}
t_0 := \pi \cdot \left(z2 + z2\right)\\
t_1 := \cos \left(\tan^{-1} \left(\frac{\left(\left(\pi - \frac{\pi}{0}\right) \cdot \left(z2 + z2\right) - \tan \left(\pi \cdot -0.5\right)\right) \cdot z0}{z1}\right) \cdot 2\right)\\
\mathbf{if}\;z2 \leq -2.8 \cdot 10^{+21}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z2 \leq 20000000:\\
\;\;\;\;\cos \left(\tan^{-1} \left(\frac{\cos t\_0 \cdot z0}{\left(-\sin t\_0\right) \cdot z1}\right) \cdot 2\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
if z2 < -2.8e21 or 2e7 < z2 Initial program 67.3%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites78.7%
Applied rewrites79.2%
Applied rewrites84.0%
Applied rewrites84.0%
if -2.8e21 < z2 < 2e7Initial program 67.3%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites76.5%
(FPCore (z2 z0 z1)
:precision binary64
(let* ((t_0
(cos
(*
(atan
(/
(*
(- (* (- PI (/ PI 0.0)) (+ z2 z2)) (tan (* PI -0.5)))
z0)
z1))
2.0))))
(if (<= z2 -2.8e+21)
t_0
(if (<= z2 20000000.0)
(cos (* (atan (/ z0 (* (- (sin (* PI (+ z2 z2)))) z1))) 2.0))
t_0))))double code(double z2, double z0, double z1) {
double t_0 = cos((atan((((((((double) M_PI) - (((double) M_PI) / 0.0)) * (z2 + z2)) - tan((((double) M_PI) * -0.5))) * z0) / z1)) * 2.0));
double tmp;
if (z2 <= -2.8e+21) {
tmp = t_0;
} else if (z2 <= 20000000.0) {
tmp = cos((atan((z0 / (-sin((((double) M_PI) * (z2 + z2))) * z1))) * 2.0));
} else {
tmp = t_0;
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double t_0 = Math.cos((Math.atan((((((Math.PI - (Math.PI / 0.0)) * (z2 + z2)) - Math.tan((Math.PI * -0.5))) * z0) / z1)) * 2.0));
double tmp;
if (z2 <= -2.8e+21) {
tmp = t_0;
} else if (z2 <= 20000000.0) {
tmp = Math.cos((Math.atan((z0 / (-Math.sin((Math.PI * (z2 + z2))) * z1))) * 2.0));
} else {
tmp = t_0;
}
return tmp;
}
def code(z2, z0, z1): t_0 = math.cos((math.atan((((((math.pi - (math.pi / 0.0)) * (z2 + z2)) - math.tan((math.pi * -0.5))) * z0) / z1)) * 2.0)) tmp = 0 if z2 <= -2.8e+21: tmp = t_0 elif z2 <= 20000000.0: tmp = math.cos((math.atan((z0 / (-math.sin((math.pi * (z2 + z2))) * z1))) * 2.0)) else: tmp = t_0 return tmp
function code(z2, z0, z1) t_0 = cos(Float64(atan(Float64(Float64(Float64(Float64(Float64(pi - Float64(pi / 0.0)) * Float64(z2 + z2)) - tan(Float64(pi * -0.5))) * z0) / z1)) * 2.0)) tmp = 0.0 if (z2 <= -2.8e+21) tmp = t_0; elseif (z2 <= 20000000.0) tmp = cos(Float64(atan(Float64(z0 / Float64(Float64(-sin(Float64(pi * Float64(z2 + z2)))) * z1))) * 2.0)); else tmp = t_0; end return tmp end
function tmp_2 = code(z2, z0, z1) t_0 = cos((atan((((((pi - (pi / 0.0)) * (z2 + z2)) - tan((pi * -0.5))) * z0) / z1)) * 2.0)); tmp = 0.0; if (z2 <= -2.8e+21) tmp = t_0; elseif (z2 <= 20000000.0) tmp = cos((atan((z0 / (-sin((pi * (z2 + z2))) * z1))) * 2.0)); else tmp = t_0; end tmp_2 = tmp; end
code[z2_, z0_, z1_] := Block[{t$95$0 = N[Cos[N[(N[ArcTan[N[(N[(N[(N[(N[(Pi - N[(Pi / 0.0), $MachinePrecision]), $MachinePrecision] * N[(z2 + z2), $MachinePrecision]), $MachinePrecision] - N[Tan[N[(Pi * -0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * z0), $MachinePrecision] / z1), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[z2, -2.8e+21], t$95$0, If[LessEqual[z2, 20000000.0], N[Cos[N[(N[ArcTan[N[(z0 / N[((-N[Sin[N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision], t$95$0]]]
\begin{array}{l}
t_0 := \cos \left(\tan^{-1} \left(\frac{\left(\left(\pi - \frac{\pi}{0}\right) \cdot \left(z2 + z2\right) - \tan \left(\pi \cdot -0.5\right)\right) \cdot z0}{z1}\right) \cdot 2\right)\\
\mathbf{if}\;z2 \leq -2.8 \cdot 10^{+21}:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;z2 \leq 20000000:\\
\;\;\;\;\cos \left(\tan^{-1} \left(\frac{z0}{\left(-\sin \left(\pi \cdot \left(z2 + z2\right)\right)\right) \cdot z1}\right) \cdot 2\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
if z2 < -2.8e21 or 2e7 < z2 Initial program 67.3%
Taylor expanded in z2 around 0
lower-+.f64N/A
Applied rewrites78.7%
Applied rewrites79.2%
Applied rewrites84.0%
Applied rewrites84.0%
if -2.8e21 < z2 < 2e7Initial program 67.3%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites76.5%
Taylor expanded in z2 around 0
Applied rewrites76.5%
(FPCore (z2 z0 z1) :precision binary64 (if (<= (tan (* (- (+ z2 z2) -0.5) PI)) 100.0) (cos (* (atan (* (tan (* 0.5 PI)) (/ z0 z1))) 2.0)) (cos (* (atan (* -0.5 (/ z0 (* z1 (* z2 PI))))) 2.0))))
double code(double z2, double z0, double z1) {
double tmp;
if (tan((((z2 + z2) - -0.5) * ((double) M_PI))) <= 100.0) {
tmp = cos((atan((tan((0.5 * ((double) M_PI))) * (z0 / z1))) * 2.0));
} else {
tmp = cos((atan((-0.5 * (z0 / (z1 * (z2 * ((double) M_PI)))))) * 2.0));
}
return tmp;
}
public static double code(double z2, double z0, double z1) {
double tmp;
if (Math.tan((((z2 + z2) - -0.5) * Math.PI)) <= 100.0) {
tmp = Math.cos((Math.atan((Math.tan((0.5 * Math.PI)) * (z0 / z1))) * 2.0));
} else {
tmp = Math.cos((Math.atan((-0.5 * (z0 / (z1 * (z2 * Math.PI))))) * 2.0));
}
return tmp;
}
def code(z2, z0, z1): tmp = 0 if math.tan((((z2 + z2) - -0.5) * math.pi)) <= 100.0: tmp = math.cos((math.atan((math.tan((0.5 * math.pi)) * (z0 / z1))) * 2.0)) else: tmp = math.cos((math.atan((-0.5 * (z0 / (z1 * (z2 * math.pi))))) * 2.0)) return tmp
function code(z2, z0, z1) tmp = 0.0 if (tan(Float64(Float64(Float64(z2 + z2) - -0.5) * pi)) <= 100.0) tmp = cos(Float64(atan(Float64(tan(Float64(0.5 * pi)) * Float64(z0 / z1))) * 2.0)); else tmp = cos(Float64(atan(Float64(-0.5 * Float64(z0 / Float64(z1 * Float64(z2 * pi))))) * 2.0)); end return tmp end
function tmp_2 = code(z2, z0, z1) tmp = 0.0; if (tan((((z2 + z2) - -0.5) * pi)) <= 100.0) tmp = cos((atan((tan((0.5 * pi)) * (z0 / z1))) * 2.0)); else tmp = cos((atan((-0.5 * (z0 / (z1 * (z2 * pi))))) * 2.0)); end tmp_2 = tmp; end
code[z2_, z0_, z1_] := If[LessEqual[N[Tan[N[(N[(N[(z2 + z2), $MachinePrecision] - -0.5), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision], 100.0], N[Cos[N[(N[ArcTan[N[(N[Tan[N[(0.5 * Pi), $MachinePrecision]], $MachinePrecision] * N[(z0 / z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision], N[Cos[N[(N[ArcTan[N[(-0.5 * N[(z0 / N[(z1 * N[(z2 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\tan \left(\left(\left(z2 + z2\right) - -0.5\right) \cdot \pi\right) \leq 100:\\
\;\;\;\;\cos \left(\tan^{-1} \left(\tan \left(0.5 \cdot \pi\right) \cdot \frac{z0}{z1}\right) \cdot 2\right)\\
\mathbf{else}:\\
\;\;\;\;\cos \left(\tan^{-1} \left(-0.5 \cdot \frac{z0}{z1 \cdot \left(z2 \cdot \pi\right)}\right) \cdot 2\right)\\
\end{array}
if (tan.f64 (*.f64 (-.f64 (+.f64 z2 z2) #s(literal -1/2 binary64)) (PI.f64))) < 100Initial program 67.3%
Taylor expanded in z2 around 0
Applied rewrites68.6%
if 100 < (tan.f64 (*.f64 (-.f64 (+.f64 z2 z2) #s(literal -1/2 binary64)) (PI.f64))) Initial program 67.3%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites76.5%
Taylor expanded in z2 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6466.2%
Applied rewrites66.2%
(FPCore (z2 z0 z1) :precision binary64 (cos (* (atan (/ z0 (* (- (sin (* PI (+ z2 z2)))) z1))) 2.0)))
double code(double z2, double z0, double z1) {
return cos((atan((z0 / (-sin((((double) M_PI) * (z2 + z2))) * z1))) * 2.0));
}
public static double code(double z2, double z0, double z1) {
return Math.cos((Math.atan((z0 / (-Math.sin((Math.PI * (z2 + z2))) * z1))) * 2.0));
}
def code(z2, z0, z1): return math.cos((math.atan((z0 / (-math.sin((math.pi * (z2 + z2))) * z1))) * 2.0))
function code(z2, z0, z1) return cos(Float64(atan(Float64(z0 / Float64(Float64(-sin(Float64(pi * Float64(z2 + z2)))) * z1))) * 2.0)) end
function tmp = code(z2, z0, z1) tmp = cos((atan((z0 / (-sin((pi * (z2 + z2))) * z1))) * 2.0)); end
code[z2_, z0_, z1_] := N[Cos[N[(N[ArcTan[N[(z0 / N[((-N[Sin[N[(Pi * N[(z2 + z2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) * z1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]
\cos \left(\tan^{-1} \left(\frac{z0}{\left(-\sin \left(\pi \cdot \left(z2 + z2\right)\right)\right) \cdot z1}\right) \cdot 2\right)
Initial program 67.3%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites76.5%
Taylor expanded in z2 around 0
Applied rewrites76.5%
(FPCore (z2 z0 z1) :precision binary64 (cos (* (atan (* -0.5 (/ z0 (* z1 (* z2 PI))))) 2.0)))
double code(double z2, double z0, double z1) {
return cos((atan((-0.5 * (z0 / (z1 * (z2 * ((double) M_PI)))))) * 2.0));
}
public static double code(double z2, double z0, double z1) {
return Math.cos((Math.atan((-0.5 * (z0 / (z1 * (z2 * Math.PI))))) * 2.0));
}
def code(z2, z0, z1): return math.cos((math.atan((-0.5 * (z0 / (z1 * (z2 * math.pi))))) * 2.0))
function code(z2, z0, z1) return cos(Float64(atan(Float64(-0.5 * Float64(z0 / Float64(z1 * Float64(z2 * pi))))) * 2.0)) end
function tmp = code(z2, z0, z1) tmp = cos((atan((-0.5 * (z0 / (z1 * (z2 * pi))))) * 2.0)); end
code[z2_, z0_, z1_] := N[Cos[N[(N[ArcTan[N[(-0.5 * N[(z0 / N[(z1 * N[(z2 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]
\cos \left(\tan^{-1} \left(-0.5 \cdot \frac{z0}{z1 \cdot \left(z2 \cdot \pi\right)}\right) \cdot 2\right)
Initial program 67.3%
lift-*.f64N/A
lift-tan.f64N/A
tan-quotN/A
lift-/.f64N/A
frac-timesN/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites76.5%
Taylor expanded in z2 around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6466.2%
Applied rewrites66.2%
herbie shell --seed 2025250
(FPCore (z2 z0 z1)
:name "(cos (* (atan (* (tan (* (- (+ z2 z2) -1/2) PI)) (/ z0 z1))) 2))"
:precision binary64
(cos (* (atan (* (tan (* (- (+ z2 z2) -0.5) PI)) (/ z0 z1))) 2.0)))