
(FPCore (z0) :precision binary64 (cos (* 1/180 (* z0 PI))))
double code(double z0) {
return cos((0.005555555555555556 * (z0 * ((double) M_PI))));
}
public static double code(double z0) {
return Math.cos((0.005555555555555556 * (z0 * Math.PI)));
}
def code(z0): return math.cos((0.005555555555555556 * (z0 * math.pi)))
function code(z0) return cos(Float64(0.005555555555555556 * Float64(z0 * pi))) end
function tmp = code(z0) tmp = cos((0.005555555555555556 * (z0 * pi))); end
code[z0_] := N[Cos[N[(1/180 * N[(z0 * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\cos \left(\frac{1}{180} \cdot \left(z0 \cdot \pi\right)\right)
Herbie found 2 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z0) :precision binary64 (cos (* 1/180 (* z0 PI))))
double code(double z0) {
return cos((0.005555555555555556 * (z0 * ((double) M_PI))));
}
public static double code(double z0) {
return Math.cos((0.005555555555555556 * (z0 * Math.PI)));
}
def code(z0): return math.cos((0.005555555555555556 * (z0 * math.pi)))
function code(z0) return cos(Float64(0.005555555555555556 * Float64(z0 * pi))) end
function tmp = code(z0) tmp = cos((0.005555555555555556 * (z0 * pi))); end
code[z0_] := N[Cos[N[(1/180 * N[(z0 * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\cos \left(\frac{1}{180} \cdot \left(z0 \cdot \pi\right)\right)
(FPCore (z0) :precision binary64 (sin (- (* (* (* (pow PI 2/3) (fabs z0)) 1/180) (- (cbrt PI))) (* PI -1/2))))
double code(double z0) {
return sin(((((pow(((double) M_PI), 0.6666666666666666) * fabs(z0)) * 0.005555555555555556) * -cbrt(((double) M_PI))) - (((double) M_PI) * -0.5)));
}
public static double code(double z0) {
return Math.sin(((((Math.pow(Math.PI, 0.6666666666666666) * Math.abs(z0)) * 0.005555555555555556) * -Math.cbrt(Math.PI)) - (Math.PI * -0.5)));
}
function code(z0) return sin(Float64(Float64(Float64(Float64((pi ^ 0.6666666666666666) * abs(z0)) * 0.005555555555555556) * Float64(-cbrt(pi))) - Float64(pi * -0.5))) end
code[z0_] := N[Sin[N[(N[(N[(N[(N[Power[Pi, 2/3], $MachinePrecision] * N[Abs[z0], $MachinePrecision]), $MachinePrecision] * 1/180), $MachinePrecision] * (-N[Power[Pi, 1/3], $MachinePrecision])), $MachinePrecision] - N[(Pi * -1/2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\sin \left(\left(\left({\pi}^{\frac{2}{3}} \cdot \left|z0\right|\right) \cdot \frac{1}{180}\right) \cdot \left(-\sqrt[3]{\pi}\right) - \pi \cdot \frac{-1}{2}\right)
Initial program 56.9%
lift-cos.f64N/A
cos-neg-revN/A
sin-+PI/2-revN/A
lower-sin.f64N/A
add-flipN/A
lower--.f64N/A
lift-*.f64N/A
distribute-lft-neg-inN/A
lower-*.f64N/A
metadata-evalN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-PI.f64N/A
mult-flipN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
metadata-evalN/A
lower-*.f64N/A
metadata-evalN/A
metadata-eval57.0%
Applied rewrites57.0%
lift-*.f64N/A
lift-*.f64N/A
metadata-evalN/A
*-commutativeN/A
unpow1N/A
metadata-evalN/A
pow-prod-upN/A
lift-pow.f64N/A
pow1/3N/A
lift-cbrt.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
distribute-lft-neg-inN/A
associate-*l*N/A
lift-*.f64N/A
distribute-rgt-neg-inN/A
lower-*.f64N/A
Applied rewrites57.0%
herbie shell --seed 2025277 -o generate:taylor -o generate:evaluate
(FPCore (z0)
:name "(cos (* 1/180 (* z0 PI)))"
:precision binary64
(cos (* 1/180 (* z0 PI))))