
(FPCore (z0) :precision binary64 (- PI (* (* (* z0 z0) PI) (* (* PI PI) 0.16666666666666666))))
double code(double z0) {
return ((double) M_PI) - (((z0 * z0) * ((double) M_PI)) * ((((double) M_PI) * ((double) M_PI)) * 0.16666666666666666));
}
public static double code(double z0) {
return Math.PI - (((z0 * z0) * Math.PI) * ((Math.PI * Math.PI) * 0.16666666666666666));
}
def code(z0): return math.pi - (((z0 * z0) * math.pi) * ((math.pi * math.pi) * 0.16666666666666666))
function code(z0) return Float64(pi - Float64(Float64(Float64(z0 * z0) * pi) * Float64(Float64(pi * pi) * 0.16666666666666666))) end
function tmp = code(z0) tmp = pi - (((z0 * z0) * pi) * ((pi * pi) * 0.16666666666666666)); end
code[z0_] := N[(Pi - N[(N[(N[(z0 * z0), $MachinePrecision] * Pi), $MachinePrecision] * N[(N[(Pi * Pi), $MachinePrecision] * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\pi - \left(\left(z0 \cdot z0\right) \cdot \pi\right) \cdot \left(\left(\pi \cdot \pi\right) \cdot 0.16666666666666666\right)
Herbie found 2 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z0) :precision binary64 (- PI (* (* (* z0 z0) PI) (* (* PI PI) 0.16666666666666666))))
double code(double z0) {
return ((double) M_PI) - (((z0 * z0) * ((double) M_PI)) * ((((double) M_PI) * ((double) M_PI)) * 0.16666666666666666));
}
public static double code(double z0) {
return Math.PI - (((z0 * z0) * Math.PI) * ((Math.PI * Math.PI) * 0.16666666666666666));
}
def code(z0): return math.pi - (((z0 * z0) * math.pi) * ((math.pi * math.pi) * 0.16666666666666666))
function code(z0) return Float64(pi - Float64(Float64(Float64(z0 * z0) * pi) * Float64(Float64(pi * pi) * 0.16666666666666666))) end
function tmp = code(z0) tmp = pi - (((z0 * z0) * pi) * ((pi * pi) * 0.16666666666666666)); end
code[z0_] := N[(Pi - N[(N[(N[(z0 * z0), $MachinePrecision] * Pi), $MachinePrecision] * N[(N[(Pi * Pi), $MachinePrecision] * 0.16666666666666666), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\pi - \left(\left(z0 \cdot z0\right) \cdot \pi\right) \cdot \left(\left(\pi \cdot \pi\right) \cdot 0.16666666666666666\right)
(FPCore (z0) :precision binary64 (* (- (* (* z0 z0) PI) 1.909859317102744) -1.6449340668482264))
double code(double z0) {
return (((z0 * z0) * ((double) M_PI)) - 1.909859317102744) * -1.6449340668482264;
}
public static double code(double z0) {
return (((z0 * z0) * Math.PI) - 1.909859317102744) * -1.6449340668482264;
}
def code(z0): return (((z0 * z0) * math.pi) - 1.909859317102744) * -1.6449340668482264
function code(z0) return Float64(Float64(Float64(Float64(z0 * z0) * pi) - 1.909859317102744) * -1.6449340668482264) end
function tmp = code(z0) tmp = (((z0 * z0) * pi) - 1.909859317102744) * -1.6449340668482264; end
code[z0_] := N[(N[(N[(N[(z0 * z0), $MachinePrecision] * Pi), $MachinePrecision] - 1.909859317102744), $MachinePrecision] * -1.6449340668482264), $MachinePrecision]
\left(\left(z0 \cdot z0\right) \cdot \pi - 1.909859317102744\right) \cdot -1.6449340668482264
Initial program 99.6%
Evaluated real constant99.9%
lift--.f64N/A
lift-*.f64N/A
fp-cancel-sub-sign-invN/A
+-commutativeN/A
sum-to-multN/A
lower-unsound-*.f64N/A
lower-unsound-+.f64N/A
lower-unsound-/.f64N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
distribute-lft-neg-inN/A
lower-*.f64N/A
metadata-evalN/A
*-commutativeN/A
distribute-rgt-neg-inN/A
distribute-lft-neg-inN/A
lower-*.f64N/A
Applied rewrites74.8%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
Applied rewrites99.9%
Evaluated real constant99.9%
(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.6%
Taylor expanded in z0 around 0
lower-PI.f6450.6%
Applied rewrites50.6%
herbie shell --seed 2025250
(FPCore (z0)
:name "(- PI (* (* (* z0 z0) PI) (* (* PI PI) 8333333333333333/50000000000000000)))"
:precision binary64
(- PI (* (* (* z0 z0) PI) (* (* PI PI) 0.16666666666666666))))