
(FPCore (z0) :precision binary64 (sin (* PI z0)))
double code(double z0) {
return sin((((double) M_PI) * z0));
}
public static double code(double z0) {
return Math.sin((Math.PI * z0));
}
def code(z0): return math.sin((math.pi * z0))
function code(z0) return sin(Float64(pi * z0)) end
function tmp = code(z0) tmp = sin((pi * z0)); end
code[z0_] := N[Sin[N[(Pi * z0), $MachinePrecision]], $MachinePrecision]
\sin \left(\pi \cdot z0\right)
Herbie found 2 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z0) :precision binary64 (sin (* PI z0)))
double code(double z0) {
return sin((((double) M_PI) * z0));
}
public static double code(double z0) {
return Math.sin((Math.PI * z0));
}
def code(z0): return math.sin((math.pi * z0))
function code(z0) return sin(Float64(pi * z0)) end
function tmp = code(z0) tmp = sin((pi * z0)); end
code[z0_] := N[Sin[N[(Pi * z0), $MachinePrecision]], $MachinePrecision]
\sin \left(\pi \cdot z0\right)
(FPCore (z0) :precision binary64 (sin (* (* (pow PI 2/3) z0) (pow (pow PI 1/9) 3))))
double code(double z0) {
return sin(((pow(((double) M_PI), 0.6666666666666666) * z0) * pow(pow(((double) M_PI), 0.1111111111111111), 3.0)));
}
public static double code(double z0) {
return Math.sin(((Math.pow(Math.PI, 0.6666666666666666) * z0) * Math.pow(Math.pow(Math.PI, 0.1111111111111111), 3.0)));
}
def code(z0): return math.sin(((math.pow(math.pi, 0.6666666666666666) * z0) * math.pow(math.pow(math.pi, 0.1111111111111111), 3.0)))
function code(z0) return sin(Float64(Float64((pi ^ 0.6666666666666666) * z0) * ((pi ^ 0.1111111111111111) ^ 3.0))) end
function tmp = code(z0) tmp = sin((((pi ^ 0.6666666666666666) * z0) * ((pi ^ 0.1111111111111111) ^ 3.0))); end
code[z0_] := N[Sin[N[(N[(N[Power[Pi, 2/3], $MachinePrecision] * z0), $MachinePrecision] * N[Power[N[Power[Pi, 1/9], $MachinePrecision], 3], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
\sin \left(\left({\pi}^{\frac{2}{3}} \cdot z0\right) \cdot {\left({\pi}^{\frac{1}{9}}\right)}^{3}\right)
Initial program 52.9%
lift-*.f64N/A
*-commutativeN/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.f6452.3%
Applied rewrites52.3%
rem-cube-cbrtN/A
lift-cbrt.f64N/A
pow1/3N/A
cbrt-powN/A
metadata-evalN/A
lift-pow.f64N/A
lower-pow.f6452.9%
Applied rewrites52.9%
herbie shell --seed 2025277 -o generate:taylor -o generate:evaluate
(FPCore (z0)
:name "(sin (* PI z0))"
:precision binary64
(sin (* PI z0)))