
(FPCore (z0) :precision binary64 (cos (* (+ z0 z0) PI)))
double code(double z0) {
return cos(((z0 + z0) * ((double) M_PI)));
}
public static double code(double z0) {
return Math.cos(((z0 + z0) * Math.PI));
}
def code(z0): return math.cos(((z0 + z0) * math.pi))
function code(z0) return cos(Float64(Float64(z0 + z0) * pi)) end
function tmp = code(z0) tmp = cos(((z0 + z0) * pi)); end
code[z0_] := N[Cos[N[(N[(z0 + z0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]
\cos \left(\left(z0 + z0\right) \cdot \pi\right)
Herbie found 11 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z0) :precision binary64 (cos (* (+ z0 z0) PI)))
double code(double z0) {
return cos(((z0 + z0) * ((double) M_PI)));
}
public static double code(double z0) {
return Math.cos(((z0 + z0) * Math.PI));
}
def code(z0): return math.cos(((z0 + z0) * math.pi))
function code(z0) return cos(Float64(Float64(z0 + z0) * pi)) end
function tmp = code(z0) tmp = cos(((z0 + z0) * pi)); end
code[z0_] := N[Cos[N[(N[(z0 + z0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]
\cos \left(\left(z0 + z0\right) \cdot \pi\right)
(FPCore (z0) :precision binary64 (let* ((t_0 (* PI (fabs z0)))) (+ (pow (cos t_0) 2) (* (sin t_0) (sin (+ t_0 PI))))))
double code(double z0) {
double t_0 = ((double) M_PI) * fabs(z0);
return pow(cos(t_0), 2.0) + (sin(t_0) * sin((t_0 + ((double) M_PI))));
}
public static double code(double z0) {
double t_0 = Math.PI * Math.abs(z0);
return Math.pow(Math.cos(t_0), 2.0) + (Math.sin(t_0) * Math.sin((t_0 + Math.PI)));
}
def code(z0): t_0 = math.pi * math.fabs(z0) return math.pow(math.cos(t_0), 2.0) + (math.sin(t_0) * math.sin((t_0 + math.pi)))
function code(z0) t_0 = Float64(pi * abs(z0)) return Float64((cos(t_0) ^ 2.0) + Float64(sin(t_0) * sin(Float64(t_0 + pi)))) end
function tmp = code(z0) t_0 = pi * abs(z0); tmp = (cos(t_0) ^ 2.0) + (sin(t_0) * sin((t_0 + pi))); end
code[z0_] := Block[{t$95$0 = N[(Pi * N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, N[(N[Power[N[Cos[t$95$0], $MachinePrecision], 2], $MachinePrecision] + N[(N[Sin[t$95$0], $MachinePrecision] * N[Sin[N[(t$95$0 + Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
t_0 := \pi \cdot \left|z0\right|\\
{\cos t\_0}^{2} + \sin t\_0 \cdot \sin \left(t\_0 + \pi\right)
\end{array}
Initial program 56.9%
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-lft-inN/A
fp-cancel-sign-sub-invN/A
*-commutativeN/A
cos-diffN/A
lower-+.f64N/A
Applied rewrites56.9%
lift-sin.f64N/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-lft-neg-outN/A
lift-*.f64N/A
sin-neg-revN/A
sin-+PI-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lower-+.f6498.5%
Applied rewrites98.5%
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-lft-neg-outN/A
lift-*.f64N/A
cos-neg-revN/A
lift-cos.f64N/A
pow2N/A
lower-pow.f6498.5%
Applied rewrites98.5%
(FPCore (z0)
:precision binary64
(let* ((t_0 (* PI (fabs z0))) (t_1 (* (+ PI PI) (fabs z0))))
(/
(+
(* (+ 1/2 (* 1/2 (cos t_1))) 2)
(- (cos (- (- t_0 PI) t_0)) (cos (+ t_1 PI))))
2)))double code(double z0) {
double t_0 = ((double) M_PI) * fabs(z0);
double t_1 = (((double) M_PI) + ((double) M_PI)) * fabs(z0);
return (((0.5 + (0.5 * cos(t_1))) * 2.0) + (cos(((t_0 - ((double) M_PI)) - t_0)) - cos((t_1 + ((double) M_PI))))) / 2.0;
}
public static double code(double z0) {
double t_0 = Math.PI * Math.abs(z0);
double t_1 = (Math.PI + Math.PI) * Math.abs(z0);
return (((0.5 + (0.5 * Math.cos(t_1))) * 2.0) + (Math.cos(((t_0 - Math.PI) - t_0)) - Math.cos((t_1 + Math.PI)))) / 2.0;
}
def code(z0): t_0 = math.pi * math.fabs(z0) t_1 = (math.pi + math.pi) * math.fabs(z0) return (((0.5 + (0.5 * math.cos(t_1))) * 2.0) + (math.cos(((t_0 - math.pi) - t_0)) - math.cos((t_1 + math.pi)))) / 2.0
function code(z0) t_0 = Float64(pi * abs(z0)) t_1 = Float64(Float64(pi + pi) * abs(z0)) return Float64(Float64(Float64(Float64(0.5 + Float64(0.5 * cos(t_1))) * 2.0) + Float64(cos(Float64(Float64(t_0 - pi) - t_0)) - cos(Float64(t_1 + pi)))) / 2.0) end
function tmp = code(z0) t_0 = pi * abs(z0); t_1 = (pi + pi) * abs(z0); tmp = (((0.5 + (0.5 * cos(t_1))) * 2.0) + (cos(((t_0 - pi) - t_0)) - cos((t_1 + pi)))) / 2.0; end
code[z0_] := Block[{t$95$0 = N[(Pi * N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(Pi + Pi), $MachinePrecision] * N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(N[(1/2 + N[(1/2 * N[Cos[t$95$1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2), $MachinePrecision] + N[(N[Cos[N[(N[(t$95$0 - Pi), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] - N[Cos[N[(t$95$1 + Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2), $MachinePrecision]]]
\begin{array}{l}
t_0 := \pi \cdot \left|z0\right|\\
t_1 := \left(\pi + \pi\right) \cdot \left|z0\right|\\
\frac{\left(\frac{1}{2} + \frac{1}{2} \cdot \cos t\_1\right) \cdot 2 + \left(\cos \left(\left(t\_0 - \pi\right) - t\_0\right) - \cos \left(t\_1 + \pi\right)\right)}{2}
\end{array}
Initial program 56.9%
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-lft-inN/A
fp-cancel-sign-sub-invN/A
*-commutativeN/A
cos-diffN/A
lower-+.f64N/A
Applied rewrites56.9%
lift-sin.f64N/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-lft-neg-outN/A
lift-*.f64N/A
sin-neg-revN/A
sin-+PI-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lower-+.f6498.5%
Applied rewrites98.5%
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-lft-neg-outN/A
lift-*.f64N/A
cos-neg-revN/A
lift-cos.f64N/A
pow2N/A
lower-pow.f6498.5%
Applied rewrites98.5%
Applied rewrites98.6%
(FPCore (z0) :precision binary64 (let* ((t_0 (* PI (fabs z0))) (t_1 (+ t_0 PI))) (+ (/ (- (cos (- t_1 t_0)) (cos (+ t_1 t_0))) 2) (+ 1/2 (* 1/2 (cos (* PI (+ (fabs z0) (fabs z0)))))))))
double code(double z0) {
double t_0 = ((double) M_PI) * fabs(z0);
double t_1 = t_0 + ((double) M_PI);
return ((cos((t_1 - t_0)) - cos((t_1 + t_0))) / 2.0) + (0.5 + (0.5 * cos((((double) M_PI) * (fabs(z0) + fabs(z0))))));
}
public static double code(double z0) {
double t_0 = Math.PI * Math.abs(z0);
double t_1 = t_0 + Math.PI;
return ((Math.cos((t_1 - t_0)) - Math.cos((t_1 + t_0))) / 2.0) + (0.5 + (0.5 * Math.cos((Math.PI * (Math.abs(z0) + Math.abs(z0))))));
}
def code(z0): t_0 = math.pi * math.fabs(z0) t_1 = t_0 + math.pi return ((math.cos((t_1 - t_0)) - math.cos((t_1 + t_0))) / 2.0) + (0.5 + (0.5 * math.cos((math.pi * (math.fabs(z0) + math.fabs(z0))))))
function code(z0) t_0 = Float64(pi * abs(z0)) t_1 = Float64(t_0 + pi) return Float64(Float64(Float64(cos(Float64(t_1 - t_0)) - cos(Float64(t_1 + t_0))) / 2.0) + Float64(0.5 + Float64(0.5 * cos(Float64(pi * Float64(abs(z0) + abs(z0))))))) end
function tmp = code(z0) t_0 = pi * abs(z0); t_1 = t_0 + pi; tmp = ((cos((t_1 - t_0)) - cos((t_1 + t_0))) / 2.0) + (0.5 + (0.5 * cos((pi * (abs(z0) + abs(z0)))))); end
code[z0_] := Block[{t$95$0 = N[(Pi * N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + Pi), $MachinePrecision]}, N[(N[(N[(N[Cos[N[(t$95$1 - t$95$0), $MachinePrecision]], $MachinePrecision] - N[Cos[N[(t$95$1 + t$95$0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / 2), $MachinePrecision] + N[(1/2 + N[(1/2 * N[Cos[N[(Pi * N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
t_0 := \pi \cdot \left|z0\right|\\
t_1 := t\_0 + \pi\\
\frac{\cos \left(t\_1 - t\_0\right) - \cos \left(t\_1 + t\_0\right)}{2} + \left(\frac{1}{2} + \frac{1}{2} \cdot \cos \left(\pi \cdot \left(\left|z0\right| + \left|z0\right|\right)\right)\right)
\end{array}
Initial program 56.9%
lift-cos.f64N/A
sin-+PI/2-revN/A
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-rgt-inN/A
associate-+l+N/A
sin-sumN/A
sin-+PI/2-revN/A
lower-+.f64N/A
Applied rewrites59.0%
lift-*.f64N/A
*-commutativeN/A
Applied rewrites98.6%
(FPCore (z0) :precision binary64 (let* ((t_0 (* PI (fabs z0)))) (+ (+ 1/2 (* 1/2 (cos (* (+ PI PI) (fabs z0))))) (* (sin t_0) (sin (+ t_0 PI))))))
double code(double z0) {
double t_0 = ((double) M_PI) * fabs(z0);
return (0.5 + (0.5 * cos(((((double) M_PI) + ((double) M_PI)) * fabs(z0))))) + (sin(t_0) * sin((t_0 + ((double) M_PI))));
}
public static double code(double z0) {
double t_0 = Math.PI * Math.abs(z0);
return (0.5 + (0.5 * Math.cos(((Math.PI + Math.PI) * Math.abs(z0))))) + (Math.sin(t_0) * Math.sin((t_0 + Math.PI)));
}
def code(z0): t_0 = math.pi * math.fabs(z0) return (0.5 + (0.5 * math.cos(((math.pi + math.pi) * math.fabs(z0))))) + (math.sin(t_0) * math.sin((t_0 + math.pi)))
function code(z0) t_0 = Float64(pi * abs(z0)) return Float64(Float64(0.5 + Float64(0.5 * cos(Float64(Float64(pi + pi) * abs(z0))))) + Float64(sin(t_0) * sin(Float64(t_0 + pi)))) end
function tmp = code(z0) t_0 = pi * abs(z0); tmp = (0.5 + (0.5 * cos(((pi + pi) * abs(z0))))) + (sin(t_0) * sin((t_0 + pi))); end
code[z0_] := Block[{t$95$0 = N[(Pi * N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, N[(N[(1/2 + N[(1/2 * N[Cos[N[(N[(Pi + Pi), $MachinePrecision] * N[Abs[z0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Sin[t$95$0], $MachinePrecision] * N[Sin[N[(t$95$0 + Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
t_0 := \pi \cdot \left|z0\right|\\
\left(\frac{1}{2} + \frac{1}{2} \cdot \cos \left(\left(\pi + \pi\right) \cdot \left|z0\right|\right)\right) + \sin t\_0 \cdot \sin \left(t\_0 + \pi\right)
\end{array}
Initial program 56.9%
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-lft-inN/A
fp-cancel-sign-sub-invN/A
*-commutativeN/A
cos-diffN/A
lower-+.f64N/A
Applied rewrites56.9%
lift-sin.f64N/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-lft-neg-outN/A
lift-*.f64N/A
sin-neg-revN/A
sin-+PI-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lower-+.f6498.5%
Applied rewrites98.5%
Applied rewrites98.6%
(FPCore (z0)
:precision binary64
(let* ((t_0 (* PI (+ (fabs z0) (fabs z0))))
(t_1 (* PI (fabs z0)))
(t_2 (* (* PI PI) (fabs z0)))
(t_3
(+
(* (sin t_1) (cos (* PI (- (fabs z0) -1/2))))
(+ 1/2 (* 1/2 (cos t_0)))))
(t_4 (* (* t_1 (fabs z0)) PI)))
(if (<=
(fabs z0)
53999999999999998142254366619909478518300619818547181722574336008055160832)
t_3
(if (<=
(fabs z0)
1400000000000000092200127673790131818671141844599020033696032063961720193169100099114440065407460048896)
(cos
(/
(304-z0z1z2z3z4
t_0
(* (* (fabs z0) (fabs z0)) PI)
(+ PI PI)
t_2
(fabs z0))
(+ (/ (- (* 0 0) (* t_4 t_4)) (* (- (fabs z0)) t_2)) 0)))
t_3))))\begin{array}{l}
t_0 := \pi \cdot \left(\left|z0\right| + \left|z0\right|\right)\\
t_1 := \pi \cdot \left|z0\right|\\
t_2 := \left(\pi \cdot \pi\right) \cdot \left|z0\right|\\
t_3 := \sin t\_1 \cdot \cos \left(\pi \cdot \left(\left|z0\right| - \frac{-1}{2}\right)\right) + \left(\frac{1}{2} + \frac{1}{2} \cdot \cos t\_0\right)\\
t_4 := \left(t\_1 \cdot \left|z0\right|\right) \cdot \pi\\
\mathbf{if}\;\left|z0\right| \leq 53999999999999998142254366619909478518300619818547181722574336008055160832:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;\left|z0\right| \leq 1400000000000000092200127673790131818671141844599020033696032063961720193169100099114440065407460048896:\\
\;\;\;\;\cos \left(\frac{\mathsf{304\_z0z1z2z3z4}\left(t\_0, \left(\left(\left|z0\right| \cdot \left|z0\right|\right) \cdot \pi\right), \left(\pi + \pi\right), t\_2, \left(\left|z0\right|\right)\right)}{\frac{0 \cdot 0 - t\_4 \cdot t\_4}{\left(-\left|z0\right|\right) \cdot t\_2} + 0}\right)\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
if z0 < 5.3999999999999998e73 or 1.4000000000000001e102 < z0 Initial program 56.9%
lift-cos.f64N/A
sin-+PI/2-revN/A
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-rgt-inN/A
associate-+l+N/A
sin-sumN/A
sin-+PI/2-revN/A
lower-+.f64N/A
Applied rewrites59.0%
lift-+.f64N/A
lift-*.f64N/A
fp-cancel-sign-sub-invN/A
lift-*.f64N/A
*-commutativeN/A
distribute-rgt-out--N/A
lower-*.f64N/A
lower--.f64N/A
metadata-eval59.0%
Applied rewrites59.0%
if 5.3999999999999998e73 < z0 < 1.4000000000000001e102Initial program 56.9%
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-rgt-inN/A
flip3-+N/A
lower-unsound-/.f64N/A
lower-unsound-+.f64N/A
lower-unsound-pow.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-unsound-pow.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-unsound-+.f64N/A
Applied rewrites29.7%
lift-+.f64N/A
count-2N/A
lift-pow.f64N/A
cube-multN/A
lift-*.f64N/A
associate-*r*N/A
count-2N/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-inN/A
lift-+.f64N/A
lift-*.f64N/A
+-rgt-identityN/A
+-inversesN/A
lift--.f64N/A
lift--.f64N/A
Applied rewrites29.6%
lift--.f64N/A
+-inverses29.6%
Applied rewrites29.6%
Applied rewrites20.5%
(FPCore (z0)
:precision binary64
(let* ((t_0 (+ (fabs z0) (fabs z0)))
(t_1 (* (* PI PI) (fabs z0)))
(t_2 (* (* (* PI (fabs z0)) (fabs z0)) PI)))
(if (<=
(fabs z0)
120000000000000003914723800577605532769170469312866435853625461833728)
(cos (/ 1 (/ 1 (* (+ PI PI) (fabs z0)))))
(if (<=
(fabs z0)
1400000000000000092200127673790131818671141844599020033696032063961720193169100099114440065407460048896)
(cos
(/
(304-z0z1z2z3z4
(* PI t_0)
(* (* (fabs z0) (fabs z0)) PI)
(+ PI PI)
t_1
(fabs z0))
(+ (/ (- (* 0 0) (* t_2 t_2)) (* (- (fabs z0)) t_1)) 0)))
(sin (* (* (- t_0 -1/2) (pow PI 2/3)) (cbrt PI)))))))\begin{array}{l}
t_0 := \left|z0\right| + \left|z0\right|\\
t_1 := \left(\pi \cdot \pi\right) \cdot \left|z0\right|\\
t_2 := \left(\left(\pi \cdot \left|z0\right|\right) \cdot \left|z0\right|\right) \cdot \pi\\
\mathbf{if}\;\left|z0\right| \leq 120000000000000003914723800577605532769170469312866435853625461833728:\\
\;\;\;\;\cos \left(\frac{1}{\frac{1}{\left(\pi + \pi\right) \cdot \left|z0\right|}}\right)\\
\mathbf{elif}\;\left|z0\right| \leq 1400000000000000092200127673790131818671141844599020033696032063961720193169100099114440065407460048896:\\
\;\;\;\;\cos \left(\frac{\mathsf{304\_z0z1z2z3z4}\left(\left(\pi \cdot t\_0\right), \left(\left(\left|z0\right| \cdot \left|z0\right|\right) \cdot \pi\right), \left(\pi + \pi\right), t\_1, \left(\left|z0\right|\right)\right)}{\frac{0 \cdot 0 - t\_2 \cdot t\_2}{\left(-\left|z0\right|\right) \cdot t\_1} + 0}\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(\left(\left(t\_0 - \frac{-1}{2}\right) \cdot {\pi}^{\frac{2}{3}}\right) \cdot \sqrt[3]{\pi}\right)\\
\end{array}
if z0 < 1.2e68Initial program 56.9%
lift-*.f64N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-PI.f64N/A
pow1/3N/A
lift-PI.f64N/A
pow1/3N/A
pow-prod-upN/A
lower-pow.f64N/A
metadata-evalN/A
lift-PI.f64N/A
lower-cbrt.f6456.8%
Applied rewrites56.8%
Applied rewrites29.7%
Applied rewrites56.9%
if 1.2e68 < z0 < 1.4000000000000001e102Initial program 56.9%
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-rgt-inN/A
flip3-+N/A
lower-unsound-/.f64N/A
lower-unsound-+.f64N/A
lower-unsound-pow.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-unsound-pow.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-unsound-+.f64N/A
Applied rewrites29.7%
lift-+.f64N/A
count-2N/A
lift-pow.f64N/A
cube-multN/A
lift-*.f64N/A
associate-*r*N/A
count-2N/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-inN/A
lift-+.f64N/A
lift-*.f64N/A
+-rgt-identityN/A
+-inversesN/A
lift--.f64N/A
lift--.f64N/A
Applied rewrites29.6%
lift--.f64N/A
+-inverses29.6%
Applied rewrites29.6%
Applied rewrites20.5%
if 1.4000000000000001e102 < z0 Initial program 56.9%
lift-cos.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
+-commutativeN/A
lift-PI.f64N/A
mult-flipN/A
lift-*.f64N/A
*-commutativeN/A
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f64N/A
metadata-eval56.9%
Applied rewrites56.9%
lift-*.f64N/A
*-commutativeN/A
rem-3cbrt-lftN/A
lift-PI.f64N/A
lift-PI.f64N/A
lift-PI.f64N/A
lift-cbrt.f64N/A
lift-PI.f64N/A
lift-cbrt.f64N/A
lift-cbrt.f64N/A
Applied rewrites56.8%
(FPCore (z0)
:precision binary64
(let* ((t_0 (cos (/ 1 (/ 1 (* (+ PI PI) (fabs z0))))))
(t_1 (* (* PI PI) (fabs z0)))
(t_2 (* (* (* PI (fabs z0)) (fabs z0)) PI)))
(if (<=
(fabs z0)
120000000000000003914723800577605532769170469312866435853625461833728)
t_0
(if (<=
(fabs z0)
1400000000000000092200127673790131818671141844599020033696032063961720193169100099114440065407460048896)
(cos
(/
(304-z0z1z2z3z4
(* PI (+ (fabs z0) (fabs z0)))
(* (* (fabs z0) (fabs z0)) PI)
(+ PI PI)
t_1
(fabs z0))
(+ (/ (- (* 0 0) (* t_2 t_2)) (* (- (fabs z0)) t_1)) 0)))
t_0))))\begin{array}{l}
t_0 := \cos \left(\frac{1}{\frac{1}{\left(\pi + \pi\right) \cdot \left|z0\right|}}\right)\\
t_1 := \left(\pi \cdot \pi\right) \cdot \left|z0\right|\\
t_2 := \left(\left(\pi \cdot \left|z0\right|\right) \cdot \left|z0\right|\right) \cdot \pi\\
\mathbf{if}\;\left|z0\right| \leq 120000000000000003914723800577605532769170469312866435853625461833728:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;\left|z0\right| \leq 1400000000000000092200127673790131818671141844599020033696032063961720193169100099114440065407460048896:\\
\;\;\;\;\cos \left(\frac{\mathsf{304\_z0z1z2z3z4}\left(\left(\pi \cdot \left(\left|z0\right| + \left|z0\right|\right)\right), \left(\left(\left|z0\right| \cdot \left|z0\right|\right) \cdot \pi\right), \left(\pi + \pi\right), t\_1, \left(\left|z0\right|\right)\right)}{\frac{0 \cdot 0 - t\_2 \cdot t\_2}{\left(-\left|z0\right|\right) \cdot t\_1} + 0}\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
if z0 < 1.2e68 or 1.4000000000000001e102 < z0 Initial program 56.9%
lift-*.f64N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-PI.f64N/A
pow1/3N/A
lift-PI.f64N/A
pow1/3N/A
pow-prod-upN/A
lower-pow.f64N/A
metadata-evalN/A
lift-PI.f64N/A
lower-cbrt.f6456.8%
Applied rewrites56.8%
Applied rewrites29.7%
Applied rewrites56.9%
if 1.2e68 < z0 < 1.4000000000000001e102Initial program 56.9%
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-rgt-inN/A
flip3-+N/A
lower-unsound-/.f64N/A
lower-unsound-+.f64N/A
lower-unsound-pow.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-unsound-pow.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-unsound-+.f64N/A
Applied rewrites29.7%
lift-+.f64N/A
count-2N/A
lift-pow.f64N/A
cube-multN/A
lift-*.f64N/A
associate-*r*N/A
count-2N/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-inN/A
lift-+.f64N/A
lift-*.f64N/A
+-rgt-identityN/A
+-inversesN/A
lift--.f64N/A
lift--.f64N/A
Applied rewrites29.6%
lift--.f64N/A
+-inverses29.6%
Applied rewrites29.6%
Applied rewrites20.5%
(FPCore (z0)
:precision binary64
(let* ((t_0 (cos (/ 1 (/ 1 (* (+ PI PI) (fabs z0))))))
(t_1 (* (* (* PI (fabs z0)) (fabs z0)) PI)))
(if (<= (fabs z0) 999999999999999939709166371603178586112)
t_0
(if (<=
(fabs z0)
1400000000000000092200127673790131818671141844599020033696032063961720193169100099114440065407460048896)
(cos
(/
(304-z0z1z2z3z4
(* PI (+ (fabs z0) (fabs z0)))
(* (* (fabs z0) (fabs z0)) PI)
(+ PI PI)
(* (* PI PI) (fabs z0))
(fabs z0))
(+ (/ (- (* t_1 t_1) (* 0 0)) t_1) 0)))
t_0))))\begin{array}{l}
t_0 := \cos \left(\frac{1}{\frac{1}{\left(\pi + \pi\right) \cdot \left|z0\right|}}\right)\\
t_1 := \left(\left(\pi \cdot \left|z0\right|\right) \cdot \left|z0\right|\right) \cdot \pi\\
\mathbf{if}\;\left|z0\right| \leq 999999999999999939709166371603178586112:\\
\;\;\;\;t\_0\\
\mathbf{elif}\;\left|z0\right| \leq 1400000000000000092200127673790131818671141844599020033696032063961720193169100099114440065407460048896:\\
\;\;\;\;\cos \left(\frac{\mathsf{304\_z0z1z2z3z4}\left(\left(\pi \cdot \left(\left|z0\right| + \left|z0\right|\right)\right), \left(\left(\left|z0\right| \cdot \left|z0\right|\right) \cdot \pi\right), \left(\pi + \pi\right), \left(\left(\pi \cdot \pi\right) \cdot \left|z0\right|\right), \left(\left|z0\right|\right)\right)}{\frac{t\_1 \cdot t\_1 - 0 \cdot 0}{t\_1} + 0}\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
if z0 < 9.9999999999999994e38 or 1.4000000000000001e102 < z0 Initial program 56.9%
lift-*.f64N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-PI.f64N/A
pow1/3N/A
lift-PI.f64N/A
pow1/3N/A
pow-prod-upN/A
lower-pow.f64N/A
metadata-evalN/A
lift-PI.f64N/A
lower-cbrt.f6456.8%
Applied rewrites56.8%
Applied rewrites29.7%
Applied rewrites56.9%
if 9.9999999999999994e38 < z0 < 1.4000000000000001e102Initial program 56.9%
lift-*.f64N/A
*-commutativeN/A
lift-+.f64N/A
distribute-rgt-inN/A
flip3-+N/A
lower-unsound-/.f64N/A
lower-unsound-+.f64N/A
lower-unsound-pow.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-unsound-pow.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-unsound-+.f64N/A
Applied rewrites29.7%
lift-+.f64N/A
count-2N/A
lift-pow.f64N/A
cube-multN/A
lift-*.f64N/A
associate-*r*N/A
count-2N/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-inN/A
lift-+.f64N/A
lift-*.f64N/A
+-rgt-identityN/A
+-inversesN/A
lift--.f64N/A
lift--.f64N/A
Applied rewrites29.6%
lift--.f64N/A
+-inverses29.6%
Applied rewrites29.6%
Applied rewrites20.5%
(FPCore (z0)
:precision binary64
(let* ((t_0 (+ (fabs z0) (fabs z0))) (t_1 (cos (* t_0 PI))))
(if (<= t_1 3602879701896397/36028797018963968)
(sin (* (- 1/2 t_0) PI))
t_1)))double code(double z0) {
double t_0 = fabs(z0) + fabs(z0);
double t_1 = cos((t_0 * ((double) M_PI)));
double tmp;
if (t_1 <= 0.1) {
tmp = sin(((0.5 - t_0) * ((double) M_PI)));
} else {
tmp = t_1;
}
return tmp;
}
public static double code(double z0) {
double t_0 = Math.abs(z0) + Math.abs(z0);
double t_1 = Math.cos((t_0 * Math.PI));
double tmp;
if (t_1 <= 0.1) {
tmp = Math.sin(((0.5 - t_0) * Math.PI));
} else {
tmp = t_1;
}
return tmp;
}
def code(z0): t_0 = math.fabs(z0) + math.fabs(z0) t_1 = math.cos((t_0 * math.pi)) tmp = 0 if t_1 <= 0.1: tmp = math.sin(((0.5 - t_0) * math.pi)) else: tmp = t_1 return tmp
function code(z0) t_0 = Float64(abs(z0) + abs(z0)) t_1 = cos(Float64(t_0 * pi)) tmp = 0.0 if (t_1 <= 0.1) tmp = sin(Float64(Float64(0.5 - t_0) * pi)); else tmp = t_1; end return tmp end
function tmp_2 = code(z0) t_0 = abs(z0) + abs(z0); t_1 = cos((t_0 * pi)); tmp = 0.0; if (t_1 <= 0.1) tmp = sin(((0.5 - t_0) * pi)); else tmp = t_1; end tmp_2 = tmp; end
code[z0_] := Block[{t$95$0 = N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(t$95$0 * Pi), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[t$95$1, 3602879701896397/36028797018963968], N[Sin[N[(N[(1/2 - t$95$0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision], t$95$1]]]
\begin{array}{l}
t_0 := \left|z0\right| + \left|z0\right|\\
t_1 := \cos \left(t\_0 \cdot \pi\right)\\
\mathbf{if}\;t\_1 \leq \frac{3602879701896397}{36028797018963968}:\\
\;\;\;\;\sin \left(\left(\frac{1}{2} - t\_0\right) \cdot \pi\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
if (cos.f64 (*.f64 (+.f64 z0 z0) (PI.f64))) < 0.10000000000000001Initial program 56.9%
lift-cos.f64N/A
cos-neg-revN/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
lift-PI.f64N/A
mult-flipN/A
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f64N/A
lift-+.f64N/A
count-2N/A
distribute-lft-neg-inN/A
lower-*.f64N/A
metadata-evalN/A
metadata-eval56.9%
Applied rewrites56.9%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6456.9%
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
fp-cancel-sign-sub-invN/A
metadata-evalN/A
count-2N/A
lift-+.f64N/A
lower--.f6456.9%
Applied rewrites56.9%
if 0.10000000000000001 < (cos.f64 (*.f64 (+.f64 z0 z0) (PI.f64))) Initial program 56.9%
(FPCore (z0)
:precision binary64
(let* ((t_0 (+ (fabs z0) (fabs z0))) (t_1 (cos (* t_0 PI))))
(if (<= t_1 -5764607523034235/288230376151711744)
(sin (* PI (+ 1/2 t_0)))
t_1)))double code(double z0) {
double t_0 = fabs(z0) + fabs(z0);
double t_1 = cos((t_0 * ((double) M_PI)));
double tmp;
if (t_1 <= -0.02) {
tmp = sin((((double) M_PI) * (0.5 + t_0)));
} else {
tmp = t_1;
}
return tmp;
}
public static double code(double z0) {
double t_0 = Math.abs(z0) + Math.abs(z0);
double t_1 = Math.cos((t_0 * Math.PI));
double tmp;
if (t_1 <= -0.02) {
tmp = Math.sin((Math.PI * (0.5 + t_0)));
} else {
tmp = t_1;
}
return tmp;
}
def code(z0): t_0 = math.fabs(z0) + math.fabs(z0) t_1 = math.cos((t_0 * math.pi)) tmp = 0 if t_1 <= -0.02: tmp = math.sin((math.pi * (0.5 + t_0))) else: tmp = t_1 return tmp
function code(z0) t_0 = Float64(abs(z0) + abs(z0)) t_1 = cos(Float64(t_0 * pi)) tmp = 0.0 if (t_1 <= -0.02) tmp = sin(Float64(pi * Float64(0.5 + t_0))); else tmp = t_1; end return tmp end
function tmp_2 = code(z0) t_0 = abs(z0) + abs(z0); t_1 = cos((t_0 * pi)); tmp = 0.0; if (t_1 <= -0.02) tmp = sin((pi * (0.5 + t_0))); else tmp = t_1; end tmp_2 = tmp; end
code[z0_] := Block[{t$95$0 = N[(N[Abs[z0], $MachinePrecision] + N[Abs[z0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(t$95$0 * Pi), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[t$95$1, -5764607523034235/288230376151711744], N[Sin[N[(Pi * N[(1/2 + t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], t$95$1]]]
\begin{array}{l}
t_0 := \left|z0\right| + \left|z0\right|\\
t_1 := \cos \left(t\_0 \cdot \pi\right)\\
\mathbf{if}\;t\_1 \leq \frac{-5764607523034235}{288230376151711744}:\\
\;\;\;\;\sin \left(\pi \cdot \left(\frac{1}{2} + t\_0\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
if (cos.f64 (*.f64 (+.f64 z0 z0) (PI.f64))) < -0.02Initial program 56.9%
lift-cos.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
+-commutativeN/A
lift-PI.f64N/A
mult-flipN/A
lift-*.f64N/A
*-commutativeN/A
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f64N/A
metadata-eval56.9%
Applied rewrites56.9%
if -0.02 < (cos.f64 (*.f64 (+.f64 z0 z0) (PI.f64))) Initial program 56.9%
herbie shell --seed 2025277 -o generate:taylor -o generate:evaluate
(FPCore (z0)
:name "(cos (* (+ z0 z0) PI))"
:precision binary64
(cos (* (+ z0 z0) PI)))