
(FPCore (z0) :precision binary64 (- PI (* (* PI (* z0 0.16666666666666666)) (* (* PI PI) z0))))
double code(double z0) {
return ((double) M_PI) - ((((double) M_PI) * (z0 * 0.16666666666666666)) * ((((double) M_PI) * ((double) M_PI)) * z0));
}
public static double code(double z0) {
return Math.PI - ((Math.PI * (z0 * 0.16666666666666666)) * ((Math.PI * Math.PI) * z0));
}
def code(z0): return math.pi - ((math.pi * (z0 * 0.16666666666666666)) * ((math.pi * math.pi) * z0))
function code(z0) return Float64(pi - Float64(Float64(pi * Float64(z0 * 0.16666666666666666)) * Float64(Float64(pi * pi) * z0))) end
function tmp = code(z0) tmp = pi - ((pi * (z0 * 0.16666666666666666)) * ((pi * pi) * z0)); end
code[z0_] := N[(Pi - N[(N[(Pi * N[(z0 * 0.16666666666666666), $MachinePrecision]), $MachinePrecision] * N[(N[(Pi * Pi), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\pi - \left(\pi \cdot \left(z0 \cdot 0.16666666666666666\right)\right) \cdot \left(\left(\pi \cdot \pi\right) \cdot z0\right)
Herbie found 3 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z0) :precision binary64 (- PI (* (* PI (* z0 0.16666666666666666)) (* (* PI PI) z0))))
double code(double z0) {
return ((double) M_PI) - ((((double) M_PI) * (z0 * 0.16666666666666666)) * ((((double) M_PI) * ((double) M_PI)) * z0));
}
public static double code(double z0) {
return Math.PI - ((Math.PI * (z0 * 0.16666666666666666)) * ((Math.PI * Math.PI) * z0));
}
def code(z0): return math.pi - ((math.pi * (z0 * 0.16666666666666666)) * ((math.pi * math.pi) * z0))
function code(z0) return Float64(pi - Float64(Float64(pi * Float64(z0 * 0.16666666666666666)) * Float64(Float64(pi * pi) * z0))) end
function tmp = code(z0) tmp = pi - ((pi * (z0 * 0.16666666666666666)) * ((pi * pi) * z0)); end
code[z0_] := N[(Pi - N[(N[(Pi * N[(z0 * 0.16666666666666666), $MachinePrecision]), $MachinePrecision] * N[(N[(Pi * Pi), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\pi - \left(\pi \cdot \left(z0 \cdot 0.16666666666666666\right)\right) \cdot \left(\left(\pi \cdot \pi\right) \cdot z0\right)
(FPCore (z0) :precision binary64 (- PI (* (* (* 31.00627668029982 z0) z0) 0.16666666666666666)))
double code(double z0) {
return ((double) M_PI) - (((31.00627668029982 * z0) * z0) * 0.16666666666666666);
}
public static double code(double z0) {
return Math.PI - (((31.00627668029982 * z0) * z0) * 0.16666666666666666);
}
def code(z0): return math.pi - (((31.00627668029982 * z0) * z0) * 0.16666666666666666)
function code(z0) return Float64(pi - Float64(Float64(Float64(31.00627668029982 * z0) * z0) * 0.16666666666666666)) end
function tmp = code(z0) tmp = pi - (((31.00627668029982 * z0) * z0) * 0.16666666666666666); end
code[z0_] := N[(Pi - N[(N[(N[(31.00627668029982 * z0), $MachinePrecision] * z0), $MachinePrecision] * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]
\pi - \left(\left(31.00627668029982 \cdot z0\right) \cdot z0\right) \cdot 0.16666666666666666
Initial program 99.7%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites99.6%
Evaluated real constant99.8%
(FPCore (z0) :precision binary64 (- PI (* 5.16771278004997 (* z0 z0))))
double code(double z0) {
return ((double) M_PI) - (5.16771278004997 * (z0 * z0));
}
public static double code(double z0) {
return Math.PI - (5.16771278004997 * (z0 * z0));
}
def code(z0): return math.pi - (5.16771278004997 * (z0 * z0))
function code(z0) return Float64(pi - Float64(5.16771278004997 * Float64(z0 * z0))) end
function tmp = code(z0) tmp = pi - (5.16771278004997 * (z0 * z0)); end
code[z0_] := N[(Pi - N[(5.16771278004997 * N[(z0 * z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\pi - 5.16771278004997 \cdot \left(z0 \cdot z0\right)
Initial program 99.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
sqr-neg-revN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites99.7%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift-*.f64N/A
lift-neg.f64N/A
distribute-rgt-neg-outN/A
lift-*.f64N/A
distribute-rgt-neg-outN/A
Applied rewrites99.8%
Evaluated real constant99.8%
(FPCore (z0) :precision binary64 PI)
double code(double z0) {
return (double) M_PI;
}
public static double code(double z0) {
return Math.PI;
}
def code(z0): return math.pi
function code(z0) return pi end
function tmp = code(z0) tmp = pi; end
code[z0_] := Pi
\pi
Initial program 99.7%
Taylor expanded in z0 around 0
lower-PI.f6450.6%
Applied rewrites50.6%
herbie shell --seed 2025250
(FPCore (z0)
:name "(- PI (* (* PI (* z0 8333333333333333/50000000000000000)) (* (* PI PI) z0)))"
:precision binary64
(- PI (* (* PI (* z0 0.16666666666666666)) (* (* PI PI) z0))))