
(FPCore (z1 z0) :precision binary64 (/ (/ (+ (* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125) (* 0.125 (exp (- (/ z1 z0))))) (* z0 PI)) z1))
double code(double z1, double z0) {
return (((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1;
}
public static double code(double z1, double z0) {
return (((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1;
}
def code(z1, z0): return (((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1
function code(z1, z0) return Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) end
function tmp = code(z1, z0) tmp = (((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1; end
code[z1_, z0_] := N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision]
\frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1}
Herbie found 17 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (z1 z0) :precision binary64 (/ (/ (+ (* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125) (* 0.125 (exp (- (/ z1 z0))))) (* z0 PI)) z1))
double code(double z1, double z0) {
return (((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1;
}
public static double code(double z1, double z0) {
return (((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1;
}
def code(z1, z0): return (((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1
function code(z1, z0) return Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) end
function tmp = code(z1, z0) tmp = (((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1; end
code[z1_, z0_] := N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision]
\frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1}
(FPCore (z1 z0) :precision binary64 (* (/ 0.125 z0) (/ (+ (exp (/ (- z1) z0)) (exp (* -0.3333333333333333 (/ z1 z0)))) (* PI z1))))
double code(double z1, double z0) {
return (0.125 / z0) * ((exp((-z1 / z0)) + exp((-0.3333333333333333 * (z1 / z0)))) / (((double) M_PI) * z1));
}
public static double code(double z1, double z0) {
return (0.125 / z0) * ((Math.exp((-z1 / z0)) + Math.exp((-0.3333333333333333 * (z1 / z0)))) / (Math.PI * z1));
}
def code(z1, z0): return (0.125 / z0) * ((math.exp((-z1 / z0)) + math.exp((-0.3333333333333333 * (z1 / z0)))) / (math.pi * z1))
function code(z1, z0) return Float64(Float64(0.125 / z0) * Float64(Float64(exp(Float64(Float64(-z1) / z0)) + exp(Float64(-0.3333333333333333 * Float64(z1 / z0)))) / Float64(pi * z1))) end
function tmp = code(z1, z0) tmp = (0.125 / z0) * ((exp((-z1 / z0)) + exp((-0.3333333333333333 * (z1 / z0)))) / (pi * z1)); end
code[z1_, z0_] := N[(N[(0.125 / z0), $MachinePrecision] * N[(N[(N[Exp[N[((-z1) / z0), $MachinePrecision]], $MachinePrecision] + N[Exp[N[(-0.3333333333333333 * N[(z1 / z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(Pi * z1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\frac{0.125}{z0} \cdot \frac{e^{\frac{-z1}{z0}} + e^{-0.3333333333333333 \cdot \frac{z1}{z0}}}{\pi \cdot z1}
Initial program 99.7%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
distribute-rgt-outN/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
Applied rewrites99.6%
(FPCore (z1 z0)
:precision binary64
(let* ((t_0 (exp (* (/ z1 z0) -0.3333333333333333))))
(if (<=
(/
(/ (+ (* t_0 0.125) (* 0.125 (exp (- (/ z1 z0))))) (* z0 PI))
z1)
-2e+292)
(*
(/ 0.125 z0)
(/ (+ 1.0 (exp (* -0.3333333333333333 (/ z1 z0)))) (* PI z1)))
(* 0.125 (/ (+ (exp (/ (- z1) z0)) t_0) (* z0 (* z1 PI)))))))double code(double z1, double z0) {
double t_0 = exp(((z1 / z0) * -0.3333333333333333));
double tmp;
if (((((t_0 * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1) <= -2e+292) {
tmp = (0.125 / z0) * ((1.0 + exp((-0.3333333333333333 * (z1 / z0)))) / (((double) M_PI) * z1));
} else {
tmp = 0.125 * ((exp((-z1 / z0)) + t_0) / (z0 * (z1 * ((double) M_PI))));
}
return tmp;
}
public static double code(double z1, double z0) {
double t_0 = Math.exp(((z1 / z0) * -0.3333333333333333));
double tmp;
if (((((t_0 * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1) <= -2e+292) {
tmp = (0.125 / z0) * ((1.0 + Math.exp((-0.3333333333333333 * (z1 / z0)))) / (Math.PI * z1));
} else {
tmp = 0.125 * ((Math.exp((-z1 / z0)) + t_0) / (z0 * (z1 * Math.PI)));
}
return tmp;
}
def code(z1, z0): t_0 = math.exp(((z1 / z0) * -0.3333333333333333)) tmp = 0 if ((((t_0 * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1) <= -2e+292: tmp = (0.125 / z0) * ((1.0 + math.exp((-0.3333333333333333 * (z1 / z0)))) / (math.pi * z1)) else: tmp = 0.125 * ((math.exp((-z1 / z0)) + t_0) / (z0 * (z1 * math.pi))) return tmp
function code(z1, z0) t_0 = exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) tmp = 0.0 if (Float64(Float64(Float64(Float64(t_0 * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) <= -2e+292) tmp = Float64(Float64(0.125 / z0) * Float64(Float64(1.0 + exp(Float64(-0.3333333333333333 * Float64(z1 / z0)))) / Float64(pi * z1))); else tmp = Float64(0.125 * Float64(Float64(exp(Float64(Float64(-z1) / z0)) + t_0) / Float64(z0 * Float64(z1 * pi)))); end return tmp end
function tmp_2 = code(z1, z0) t_0 = exp(((z1 / z0) * -0.3333333333333333)); tmp = 0.0; if (((((t_0 * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1) <= -2e+292) tmp = (0.125 / z0) * ((1.0 + exp((-0.3333333333333333 * (z1 / z0)))) / (pi * z1)); else tmp = 0.125 * ((exp((-z1 / z0)) + t_0) / (z0 * (z1 * pi))); end tmp_2 = tmp; end
code[z1_, z0_] := Block[{t$95$0 = N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(N[(N[(N[(t$95$0 * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision], -2e+292], N[(N[(0.125 / z0), $MachinePrecision] * N[(N[(1.0 + N[Exp[N[(-0.3333333333333333 * N[(z1 / z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(Pi * z1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.125 * N[(N[(N[Exp[N[((-z1) / z0), $MachinePrecision]], $MachinePrecision] + t$95$0), $MachinePrecision] / N[(z0 * N[(z1 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
t_0 := e^{\frac{z1}{z0} \cdot -0.3333333333333333}\\
\mathbf{if}\;\frac{\frac{t\_0 \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1} \leq -2 \cdot 10^{+292}:\\
\;\;\;\;\frac{0.125}{z0} \cdot \frac{1 + e^{-0.3333333333333333 \cdot \frac{z1}{z0}}}{\pi \cdot z1}\\
\mathbf{else}:\\
\;\;\;\;0.125 \cdot \frac{e^{\frac{-z1}{z0}} + t\_0}{z0 \cdot \left(z1 \cdot \pi\right)}\\
\end{array}
if (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < -2e292Initial program 99.7%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
distribute-rgt-outN/A
lift-*.f64N/A
associate-*l*N/A
times-fracN/A
lower-*.f64N/A
Applied rewrites99.6%
Taylor expanded in z1 around 0
Applied rewrites78.2%
if -2e292 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) Initial program 99.7%
lift-/.f64N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-/r*N/A
associate-/l/N/A
lower-/.f64N/A
Applied rewrites99.4%
Taylor expanded in z1 around inf
lower-*.f64N/A
lower-/.f64N/A
lower-+.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6493.7%
Applied rewrites93.7%
lift-*.f64N/A
mul-1-negN/A
lift-/.f64N/A
distribute-neg-fracN/A
lower-/.f64N/A
lower-neg.f6493.7%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6493.7%
Applied rewrites93.7%
(FPCore (z1 z0)
:precision binary64
(let* ((t_0 (* 0.125 (exp (- (/ z1 z0)))))
(t_1
(/
(/
(+ (* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125) t_0)
(* z0 PI))
z1)))
(if (<= t_1 -2e-320)
(/ (/ (+ 0.125 t_0) (* z0 PI)) z1)
(if (<= t_1 0.0)
(/ 0.25 (log (exp (* (* PI z0) z1))))
(*
(-
(/ 0.25 (* PI z1))
(-
(/ 0.16666666666666666 (* PI z0))
(/ (* z1 0.06944444444444445) (* (* PI z0) z0))))
(/ 1.0 z0))))))double code(double z1, double z0) {
double t_0 = 0.125 * exp(-(z1 / z0));
double t_1 = (((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + t_0) / (z0 * ((double) M_PI))) / z1;
double tmp;
if (t_1 <= -2e-320) {
tmp = ((0.125 + t_0) / (z0 * ((double) M_PI))) / z1;
} else if (t_1 <= 0.0) {
tmp = 0.25 / log(exp(((((double) M_PI) * z0) * z1)));
} else {
tmp = ((0.25 / (((double) M_PI) * z1)) - ((0.16666666666666666 / (((double) M_PI) * z0)) - ((z1 * 0.06944444444444445) / ((((double) M_PI) * z0) * z0)))) * (1.0 / z0);
}
return tmp;
}
public static double code(double z1, double z0) {
double t_0 = 0.125 * Math.exp(-(z1 / z0));
double t_1 = (((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + t_0) / (z0 * Math.PI)) / z1;
double tmp;
if (t_1 <= -2e-320) {
tmp = ((0.125 + t_0) / (z0 * Math.PI)) / z1;
} else if (t_1 <= 0.0) {
tmp = 0.25 / Math.log(Math.exp(((Math.PI * z0) * z1)));
} else {
tmp = ((0.25 / (Math.PI * z1)) - ((0.16666666666666666 / (Math.PI * z0)) - ((z1 * 0.06944444444444445) / ((Math.PI * z0) * z0)))) * (1.0 / z0);
}
return tmp;
}
def code(z1, z0): t_0 = 0.125 * math.exp(-(z1 / z0)) t_1 = (((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + t_0) / (z0 * math.pi)) / z1 tmp = 0 if t_1 <= -2e-320: tmp = ((0.125 + t_0) / (z0 * math.pi)) / z1 elif t_1 <= 0.0: tmp = 0.25 / math.log(math.exp(((math.pi * z0) * z1))) else: tmp = ((0.25 / (math.pi * z1)) - ((0.16666666666666666 / (math.pi * z0)) - ((z1 * 0.06944444444444445) / ((math.pi * z0) * z0)))) * (1.0 / z0) return tmp
function code(z1, z0) t_0 = Float64(0.125 * exp(Float64(-Float64(z1 / z0)))) t_1 = Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + t_0) / Float64(z0 * pi)) / z1) tmp = 0.0 if (t_1 <= -2e-320) tmp = Float64(Float64(Float64(0.125 + t_0) / Float64(z0 * pi)) / z1); elseif (t_1 <= 0.0) tmp = Float64(0.25 / log(exp(Float64(Float64(pi * z0) * z1)))); else tmp = Float64(Float64(Float64(0.25 / Float64(pi * z1)) - Float64(Float64(0.16666666666666666 / Float64(pi * z0)) - Float64(Float64(z1 * 0.06944444444444445) / Float64(Float64(pi * z0) * z0)))) * Float64(1.0 / z0)); end return tmp end
function tmp_2 = code(z1, z0) t_0 = 0.125 * exp(-(z1 / z0)); t_1 = (((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + t_0) / (z0 * pi)) / z1; tmp = 0.0; if (t_1 <= -2e-320) tmp = ((0.125 + t_0) / (z0 * pi)) / z1; elseif (t_1 <= 0.0) tmp = 0.25 / log(exp(((pi * z0) * z1))); else tmp = ((0.25 / (pi * z1)) - ((0.16666666666666666 / (pi * z0)) - ((z1 * 0.06944444444444445) / ((pi * z0) * z0)))) * (1.0 / z0); end tmp_2 = tmp; end
code[z1_, z0_] := Block[{t$95$0 = N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + t$95$0), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision]}, If[LessEqual[t$95$1, -2e-320], N[(N[(N[(0.125 + t$95$0), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision], If[LessEqual[t$95$1, 0.0], N[(0.25 / N[Log[N[Exp[N[(N[(Pi * z0), $MachinePrecision] * z1), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[(N[(0.25 / N[(Pi * z1), $MachinePrecision]), $MachinePrecision] - N[(N[(0.16666666666666666 / N[(Pi * z0), $MachinePrecision]), $MachinePrecision] - N[(N[(z1 * 0.06944444444444445), $MachinePrecision] / N[(N[(Pi * z0), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(1.0 / z0), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := 0.125 \cdot e^{-\frac{z1}{z0}}\\
t_1 := \frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + t\_0}{z0 \cdot \pi}}{z1}\\
\mathbf{if}\;t\_1 \leq -2 \cdot 10^{-320}:\\
\;\;\;\;\frac{\frac{0.125 + t\_0}{z0 \cdot \pi}}{z1}\\
\mathbf{elif}\;t\_1 \leq 0:\\
\;\;\;\;\frac{0.25}{\log \left(e^{\left(\pi \cdot z0\right) \cdot z1}\right)}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{0.25}{\pi \cdot z1} - \left(\frac{0.16666666666666666}{\pi \cdot z0} - \frac{z1 \cdot 0.06944444444444445}{\left(\pi \cdot z0\right) \cdot z0}\right)\right) \cdot \frac{1}{z0}\\
\end{array}
if (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < -1.999977734365366e-320Initial program 99.7%
Taylor expanded in z1 around 0
Applied rewrites78.3%
if -1.999977734365366e-320 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < 0.0Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-PI.f64N/A
add-log-expN/A
log-pow-revN/A
lower-log.f64N/A
lift-PI.f64N/A
pow-expN/A
associate-*l*N/A
lift-*.f64N/A
lift-*.f64N/A
lower-exp.f6423.9%
Applied rewrites23.9%
if 0.0 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) Initial program 99.7%
Taylor expanded in z0 around -inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites67.2%
Applied rewrites67.8%
(FPCore (z1 z0) :precision binary64 (/ (/ (+ 0.125 (* 0.125 (exp (- (/ z1 z0))))) (* z0 PI)) z1))
double code(double z1, double z0) {
return ((0.125 + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1;
}
public static double code(double z1, double z0) {
return ((0.125 + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1;
}
def code(z1, z0): return ((0.125 + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1
function code(z1, z0) return Float64(Float64(Float64(0.125 + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) end
function tmp = code(z1, z0) tmp = ((0.125 + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1; end
code[z1_, z0_] := N[(N[(N[(0.125 + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision]
\frac{\frac{0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1}
Initial program 99.7%
Taylor expanded in z1 around 0
Applied rewrites78.3%
(FPCore (z1 z0) :precision binary64 (* 0.125 (/ (+ 1.0 (exp (* -0.3333333333333333 (/ z1 z0)))) (* z0 (* z1 PI)))))
double code(double z1, double z0) {
return 0.125 * ((1.0 + exp((-0.3333333333333333 * (z1 / z0)))) / (z0 * (z1 * ((double) M_PI))));
}
public static double code(double z1, double z0) {
return 0.125 * ((1.0 + Math.exp((-0.3333333333333333 * (z1 / z0)))) / (z0 * (z1 * Math.PI)));
}
def code(z1, z0): return 0.125 * ((1.0 + math.exp((-0.3333333333333333 * (z1 / z0)))) / (z0 * (z1 * math.pi)))
function code(z1, z0) return Float64(0.125 * Float64(Float64(1.0 + exp(Float64(-0.3333333333333333 * Float64(z1 / z0)))) / Float64(z0 * Float64(z1 * pi)))) end
function tmp = code(z1, z0) tmp = 0.125 * ((1.0 + exp((-0.3333333333333333 * (z1 / z0)))) / (z0 * (z1 * pi))); end
code[z1_, z0_] := N[(0.125 * N[(N[(1.0 + N[Exp[N[(-0.3333333333333333 * N[(z1 / z0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(z0 * N[(z1 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
0.125 \cdot \frac{1 + e^{-0.3333333333333333 \cdot \frac{z1}{z0}}}{z0 \cdot \left(z1 \cdot \pi\right)}
Initial program 99.7%
lift-/.f64N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-/r*N/A
associate-/l/N/A
lower-/.f64N/A
Applied rewrites99.4%
Taylor expanded in z1 around inf
lower-*.f64N/A
lower-/.f64N/A
lower-+.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6493.7%
Applied rewrites93.7%
Taylor expanded in z1 around 0
Applied rewrites75.1%
(FPCore (z1 z0)
:precision binary64
(if (<=
(/
(/
(+
(* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125)
(* 0.125 (exp (- (/ z1 z0)))))
(* z0 PI))
z1)
-4e-286)
(*
-1.0
(/
(/
(-
(*
(-
(/ 0.16666666666666666 PI)
(* 0.06944444444444445 (/ z1 (* PI z0))))
(* PI z1))
(* z0 0.25))
(* (* PI z0) z1))
z0))
(/ (/ 0.25 z0) (* PI z1))))double code(double z1, double z0) {
double tmp;
if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1) <= -4e-286) {
tmp = -1.0 * ((((((0.16666666666666666 / ((double) M_PI)) - (0.06944444444444445 * (z1 / (((double) M_PI) * z0)))) * (((double) M_PI) * z1)) - (z0 * 0.25)) / ((((double) M_PI) * z0) * z1)) / z0);
} else {
tmp = (0.25 / z0) / (((double) M_PI) * z1);
}
return tmp;
}
public static double code(double z1, double z0) {
double tmp;
if (((((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1) <= -4e-286) {
tmp = -1.0 * ((((((0.16666666666666666 / Math.PI) - (0.06944444444444445 * (z1 / (Math.PI * z0)))) * (Math.PI * z1)) - (z0 * 0.25)) / ((Math.PI * z0) * z1)) / z0);
} else {
tmp = (0.25 / z0) / (Math.PI * z1);
}
return tmp;
}
def code(z1, z0): tmp = 0 if ((((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1) <= -4e-286: tmp = -1.0 * ((((((0.16666666666666666 / math.pi) - (0.06944444444444445 * (z1 / (math.pi * z0)))) * (math.pi * z1)) - (z0 * 0.25)) / ((math.pi * z0) * z1)) / z0) else: tmp = (0.25 / z0) / (math.pi * z1) return tmp
function code(z1, z0) tmp = 0.0 if (Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) <= -4e-286) tmp = Float64(-1.0 * Float64(Float64(Float64(Float64(Float64(Float64(0.16666666666666666 / pi) - Float64(0.06944444444444445 * Float64(z1 / Float64(pi * z0)))) * Float64(pi * z1)) - Float64(z0 * 0.25)) / Float64(Float64(pi * z0) * z1)) / z0)); else tmp = Float64(Float64(0.25 / z0) / Float64(pi * z1)); end return tmp end
function tmp_2 = code(z1, z0) tmp = 0.0; if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1) <= -4e-286) tmp = -1.0 * ((((((0.16666666666666666 / pi) - (0.06944444444444445 * (z1 / (pi * z0)))) * (pi * z1)) - (z0 * 0.25)) / ((pi * z0) * z1)) / z0); else tmp = (0.25 / z0) / (pi * z1); end tmp_2 = tmp; end
code[z1_, z0_] := If[LessEqual[N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision], -4e-286], N[(-1.0 * N[(N[(N[(N[(N[(N[(0.16666666666666666 / Pi), $MachinePrecision] - N[(0.06944444444444445 * N[(z1 / N[(Pi * z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(Pi * z1), $MachinePrecision]), $MachinePrecision] - N[(z0 * 0.25), $MachinePrecision]), $MachinePrecision] / N[(N[(Pi * z0), $MachinePrecision] * z1), $MachinePrecision]), $MachinePrecision] / z0), $MachinePrecision]), $MachinePrecision], N[(N[(0.25 / z0), $MachinePrecision] / N[(Pi * z1), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1} \leq -4 \cdot 10^{-286}:\\
\;\;\;\;-1 \cdot \frac{\frac{\left(\frac{0.16666666666666666}{\pi} - 0.06944444444444445 \cdot \frac{z1}{\pi \cdot z0}\right) \cdot \left(\pi \cdot z1\right) - z0 \cdot 0.25}{\left(\pi \cdot z0\right) \cdot z1}}{z0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.25}{z0}}{\pi \cdot z1}\\
\end{array}
if (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < -4.0000000000000002e-286Initial program 99.7%
Taylor expanded in z0 around -inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites67.2%
Applied rewrites68.3%
if -4.0000000000000002e-286 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f6457.2%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6457.2%
Applied rewrites57.2%
(FPCore (z1 z0)
:precision binary64
(if (<=
(/
(/
(+
(* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125)
(* 0.125 (exp (- (/ z1 z0)))))
(* z0 PI))
z1)
-2e-279)
(/
(/
(-
(* 0.25 z0)
(*
(-
(/ 0.16666666666666666 PI)
(* (/ z1 (* PI z0)) 0.06944444444444445))
(* PI z1)))
(* PI z0))
(* z0 z1))
(/ (/ 0.25 z0) (* PI z1))))double code(double z1, double z0) {
double tmp;
if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1) <= -2e-279) {
tmp = (((0.25 * z0) - (((0.16666666666666666 / ((double) M_PI)) - ((z1 / (((double) M_PI) * z0)) * 0.06944444444444445)) * (((double) M_PI) * z1))) / (((double) M_PI) * z0)) / (z0 * z1);
} else {
tmp = (0.25 / z0) / (((double) M_PI) * z1);
}
return tmp;
}
public static double code(double z1, double z0) {
double tmp;
if (((((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1) <= -2e-279) {
tmp = (((0.25 * z0) - (((0.16666666666666666 / Math.PI) - ((z1 / (Math.PI * z0)) * 0.06944444444444445)) * (Math.PI * z1))) / (Math.PI * z0)) / (z0 * z1);
} else {
tmp = (0.25 / z0) / (Math.PI * z1);
}
return tmp;
}
def code(z1, z0): tmp = 0 if ((((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1) <= -2e-279: tmp = (((0.25 * z0) - (((0.16666666666666666 / math.pi) - ((z1 / (math.pi * z0)) * 0.06944444444444445)) * (math.pi * z1))) / (math.pi * z0)) / (z0 * z1) else: tmp = (0.25 / z0) / (math.pi * z1) return tmp
function code(z1, z0) tmp = 0.0 if (Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) <= -2e-279) tmp = Float64(Float64(Float64(Float64(0.25 * z0) - Float64(Float64(Float64(0.16666666666666666 / pi) - Float64(Float64(z1 / Float64(pi * z0)) * 0.06944444444444445)) * Float64(pi * z1))) / Float64(pi * z0)) / Float64(z0 * z1)); else tmp = Float64(Float64(0.25 / z0) / Float64(pi * z1)); end return tmp end
function tmp_2 = code(z1, z0) tmp = 0.0; if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1) <= -2e-279) tmp = (((0.25 * z0) - (((0.16666666666666666 / pi) - ((z1 / (pi * z0)) * 0.06944444444444445)) * (pi * z1))) / (pi * z0)) / (z0 * z1); else tmp = (0.25 / z0) / (pi * z1); end tmp_2 = tmp; end
code[z1_, z0_] := If[LessEqual[N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision], -2e-279], N[(N[(N[(N[(0.25 * z0), $MachinePrecision] - N[(N[(N[(0.16666666666666666 / Pi), $MachinePrecision] - N[(N[(z1 / N[(Pi * z0), $MachinePrecision]), $MachinePrecision] * 0.06944444444444445), $MachinePrecision]), $MachinePrecision] * N[(Pi * z1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(Pi * z0), $MachinePrecision]), $MachinePrecision] / N[(z0 * z1), $MachinePrecision]), $MachinePrecision], N[(N[(0.25 / z0), $MachinePrecision] / N[(Pi * z1), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1} \leq -2 \cdot 10^{-279}:\\
\;\;\;\;\frac{\frac{0.25 \cdot z0 - \left(\frac{0.16666666666666666}{\pi} - \frac{z1}{\pi \cdot z0} \cdot 0.06944444444444445\right) \cdot \left(\pi \cdot z1\right)}{\pi \cdot z0}}{z0 \cdot z1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.25}{z0}}{\pi \cdot z1}\\
\end{array}
if (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < -2.0000000000000001e-279Initial program 99.7%
Taylor expanded in z0 around -inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites67.2%
Applied rewrites56.9%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
associate-/r*N/A
*-commutativeN/A
lower-/.f64N/A
Applied rewrites68.5%
if -2.0000000000000001e-279 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f6457.2%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6457.2%
Applied rewrites57.2%
(FPCore (z1 z0)
:precision binary64
(if (<=
(/
(/
(+
(* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125)
(* 0.125 (exp (- (/ z1 z0)))))
(* z0 PI))
z1)
(- INFINITY))
(*
(/ 1.0 (* (* (* PI z0) z0) z1))
(-
(* 0.25 z0)
(*
(-
(/ 0.16666666666666666 PI)
(* (/ z1 (* PI z0)) 0.06944444444444445))
(* PI z1))))
(*
0.125
(/ (+ 2.0 (* -1.3333333333333333 (/ z1 z0))) (* z0 (* z1 PI))))))double code(double z1, double z0) {
double tmp;
if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1) <= -((double) INFINITY)) {
tmp = (1.0 / (((((double) M_PI) * z0) * z0) * z1)) * ((0.25 * z0) - (((0.16666666666666666 / ((double) M_PI)) - ((z1 / (((double) M_PI) * z0)) * 0.06944444444444445)) * (((double) M_PI) * z1)));
} else {
tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * ((double) M_PI))));
}
return tmp;
}
public static double code(double z1, double z0) {
double tmp;
if (((((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1) <= -Double.POSITIVE_INFINITY) {
tmp = (1.0 / (((Math.PI * z0) * z0) * z1)) * ((0.25 * z0) - (((0.16666666666666666 / Math.PI) - ((z1 / (Math.PI * z0)) * 0.06944444444444445)) * (Math.PI * z1)));
} else {
tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * Math.PI)));
}
return tmp;
}
def code(z1, z0): tmp = 0 if ((((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1) <= -math.inf: tmp = (1.0 / (((math.pi * z0) * z0) * z1)) * ((0.25 * z0) - (((0.16666666666666666 / math.pi) - ((z1 / (math.pi * z0)) * 0.06944444444444445)) * (math.pi * z1))) else: tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * math.pi))) return tmp
function code(z1, z0) tmp = 0.0 if (Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) <= Float64(-Inf)) tmp = Float64(Float64(1.0 / Float64(Float64(Float64(pi * z0) * z0) * z1)) * Float64(Float64(0.25 * z0) - Float64(Float64(Float64(0.16666666666666666 / pi) - Float64(Float64(z1 / Float64(pi * z0)) * 0.06944444444444445)) * Float64(pi * z1)))); else tmp = Float64(0.125 * Float64(Float64(2.0 + Float64(-1.3333333333333333 * Float64(z1 / z0))) / Float64(z0 * Float64(z1 * pi)))); end return tmp end
function tmp_2 = code(z1, z0) tmp = 0.0; if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1) <= -Inf) tmp = (1.0 / (((pi * z0) * z0) * z1)) * ((0.25 * z0) - (((0.16666666666666666 / pi) - ((z1 / (pi * z0)) * 0.06944444444444445)) * (pi * z1))); else tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * pi))); end tmp_2 = tmp; end
code[z1_, z0_] := If[LessEqual[N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision], (-Infinity)], N[(N[(1.0 / N[(N[(N[(Pi * z0), $MachinePrecision] * z0), $MachinePrecision] * z1), $MachinePrecision]), $MachinePrecision] * N[(N[(0.25 * z0), $MachinePrecision] - N[(N[(N[(0.16666666666666666 / Pi), $MachinePrecision] - N[(N[(z1 / N[(Pi * z0), $MachinePrecision]), $MachinePrecision] * 0.06944444444444445), $MachinePrecision]), $MachinePrecision] * N[(Pi * z1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.125 * N[(N[(2.0 + N[(-1.3333333333333333 * N[(z1 / z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * N[(z1 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1} \leq -\infty:\\
\;\;\;\;\frac{1}{\left(\left(\pi \cdot z0\right) \cdot z0\right) \cdot z1} \cdot \left(0.25 \cdot z0 - \left(\frac{0.16666666666666666}{\pi} - \frac{z1}{\pi \cdot z0} \cdot 0.06944444444444445\right) \cdot \left(\pi \cdot z1\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0.125 \cdot \frac{2 + -1.3333333333333333 \cdot \frac{z1}{z0}}{z0 \cdot \left(z1 \cdot \pi\right)}\\
\end{array}
if (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < -inf.0Initial program 99.7%
Taylor expanded in z0 around -inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites67.2%
Applied rewrites56.9%
lift-/.f64N/A
mult-flipN/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f6456.6%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-*.f64N/A
lower-*.f6450.8%
Applied rewrites50.8%
if -inf.0 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) Initial program 99.7%
lift-/.f64N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-/r*N/A
associate-/l/N/A
lower-/.f64N/A
Applied rewrites99.4%
Taylor expanded in z1 around inf
lower-*.f64N/A
lower-/.f64N/A
lower-+.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6493.7%
Applied rewrites93.7%
Taylor expanded in z1 around 0
lower-+.f64N/A
lower-*.f64N/A
lower-/.f6465.9%
Applied rewrites65.9%
(FPCore (z1 z0)
:precision binary64
(if (<=
(/
(/
(+
(* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125)
(* 0.125 (exp (- (/ z1 z0)))))
(* z0 PI))
z1)
-2e-279)
(/
(-
0.25
(*
(-
(/ 0.16666666666666666 (* PI z0))
(* (/ 0.06944444444444445 (* (* PI z0) z0)) z1))
(* PI z1)))
(* (* PI z0) z1))
(/ (/ 0.25 z0) (* PI z1))))double code(double z1, double z0) {
double tmp;
if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1) <= -2e-279) {
tmp = (0.25 - (((0.16666666666666666 / (((double) M_PI) * z0)) - ((0.06944444444444445 / ((((double) M_PI) * z0) * z0)) * z1)) * (((double) M_PI) * z1))) / ((((double) M_PI) * z0) * z1);
} else {
tmp = (0.25 / z0) / (((double) M_PI) * z1);
}
return tmp;
}
public static double code(double z1, double z0) {
double tmp;
if (((((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1) <= -2e-279) {
tmp = (0.25 - (((0.16666666666666666 / (Math.PI * z0)) - ((0.06944444444444445 / ((Math.PI * z0) * z0)) * z1)) * (Math.PI * z1))) / ((Math.PI * z0) * z1);
} else {
tmp = (0.25 / z0) / (Math.PI * z1);
}
return tmp;
}
def code(z1, z0): tmp = 0 if ((((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1) <= -2e-279: tmp = (0.25 - (((0.16666666666666666 / (math.pi * z0)) - ((0.06944444444444445 / ((math.pi * z0) * z0)) * z1)) * (math.pi * z1))) / ((math.pi * z0) * z1) else: tmp = (0.25 / z0) / (math.pi * z1) return tmp
function code(z1, z0) tmp = 0.0 if (Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) <= -2e-279) tmp = Float64(Float64(0.25 - Float64(Float64(Float64(0.16666666666666666 / Float64(pi * z0)) - Float64(Float64(0.06944444444444445 / Float64(Float64(pi * z0) * z0)) * z1)) * Float64(pi * z1))) / Float64(Float64(pi * z0) * z1)); else tmp = Float64(Float64(0.25 / z0) / Float64(pi * z1)); end return tmp end
function tmp_2 = code(z1, z0) tmp = 0.0; if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1) <= -2e-279) tmp = (0.25 - (((0.16666666666666666 / (pi * z0)) - ((0.06944444444444445 / ((pi * z0) * z0)) * z1)) * (pi * z1))) / ((pi * z0) * z1); else tmp = (0.25 / z0) / (pi * z1); end tmp_2 = tmp; end
code[z1_, z0_] := If[LessEqual[N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision], -2e-279], N[(N[(0.25 - N[(N[(N[(0.16666666666666666 / N[(Pi * z0), $MachinePrecision]), $MachinePrecision] - N[(N[(0.06944444444444445 / N[(N[(Pi * z0), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision] * z1), $MachinePrecision]), $MachinePrecision] * N[(Pi * z1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(Pi * z0), $MachinePrecision] * z1), $MachinePrecision]), $MachinePrecision], N[(N[(0.25 / z0), $MachinePrecision] / N[(Pi * z1), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1} \leq -2 \cdot 10^{-279}:\\
\;\;\;\;\frac{0.25 - \left(\frac{0.16666666666666666}{\pi \cdot z0} - \frac{0.06944444444444445}{\left(\pi \cdot z0\right) \cdot z0} \cdot z1\right) \cdot \left(\pi \cdot z1\right)}{\left(\pi \cdot z0\right) \cdot z1}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.25}{z0}}{\pi \cdot z1}\\
\end{array}
if (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < -2.0000000000000001e-279Initial program 99.7%
Taylor expanded in z0 around -inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites67.2%
Applied rewrites69.9%
lift-*.f64N/A
mul-1-negN/A
lift-/.f64N/A
distribute-neg-fracN/A
lower-/.f64N/A
Applied rewrites69.9%
if -2.0000000000000001e-279 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f6457.2%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6457.2%
Applied rewrites57.2%
(FPCore (z1 z0)
:precision binary64
(if (<=
(/
(/
(+
(* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125)
(* 0.125 (exp (- (/ z1 z0)))))
(* z0 PI))
z1)
(- INFINITY))
(/
(*
(-
(* 0.25 z0)
(*
z1
(+ 0.16666666666666666 (* -0.06944444444444445 (/ z1 z0)))))
1.0)
(* (* (* PI z0) z1) z0))
(*
0.125
(/ (+ 2.0 (* -1.3333333333333333 (/ z1 z0))) (* z0 (* z1 PI))))))double code(double z1, double z0) {
double tmp;
if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1) <= -((double) INFINITY)) {
tmp = (((0.25 * z0) - (z1 * (0.16666666666666666 + (-0.06944444444444445 * (z1 / z0))))) * 1.0) / (((((double) M_PI) * z0) * z1) * z0);
} else {
tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * ((double) M_PI))));
}
return tmp;
}
public static double code(double z1, double z0) {
double tmp;
if (((((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1) <= -Double.POSITIVE_INFINITY) {
tmp = (((0.25 * z0) - (z1 * (0.16666666666666666 + (-0.06944444444444445 * (z1 / z0))))) * 1.0) / (((Math.PI * z0) * z1) * z0);
} else {
tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * Math.PI)));
}
return tmp;
}
def code(z1, z0): tmp = 0 if ((((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1) <= -math.inf: tmp = (((0.25 * z0) - (z1 * (0.16666666666666666 + (-0.06944444444444445 * (z1 / z0))))) * 1.0) / (((math.pi * z0) * z1) * z0) else: tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * math.pi))) return tmp
function code(z1, z0) tmp = 0.0 if (Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) <= Float64(-Inf)) tmp = Float64(Float64(Float64(Float64(0.25 * z0) - Float64(z1 * Float64(0.16666666666666666 + Float64(-0.06944444444444445 * Float64(z1 / z0))))) * 1.0) / Float64(Float64(Float64(pi * z0) * z1) * z0)); else tmp = Float64(0.125 * Float64(Float64(2.0 + Float64(-1.3333333333333333 * Float64(z1 / z0))) / Float64(z0 * Float64(z1 * pi)))); end return tmp end
function tmp_2 = code(z1, z0) tmp = 0.0; if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1) <= -Inf) tmp = (((0.25 * z0) - (z1 * (0.16666666666666666 + (-0.06944444444444445 * (z1 / z0))))) * 1.0) / (((pi * z0) * z1) * z0); else tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * pi))); end tmp_2 = tmp; end
code[z1_, z0_] := If[LessEqual[N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision], (-Infinity)], N[(N[(N[(N[(0.25 * z0), $MachinePrecision] - N[(z1 * N[(0.16666666666666666 + N[(-0.06944444444444445 * N[(z1 / z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 1.0), $MachinePrecision] / N[(N[(N[(Pi * z0), $MachinePrecision] * z1), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision], N[(0.125 * N[(N[(2.0 + N[(-1.3333333333333333 * N[(z1 / z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * N[(z1 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1} \leq -\infty:\\
\;\;\;\;\frac{\left(0.25 \cdot z0 - z1 \cdot \left(0.16666666666666666 + -0.06944444444444445 \cdot \frac{z1}{z0}\right)\right) \cdot 1}{\left(\left(\pi \cdot z0\right) \cdot z1\right) \cdot z0}\\
\mathbf{else}:\\
\;\;\;\;0.125 \cdot \frac{2 + -1.3333333333333333 \cdot \frac{z1}{z0}}{z0 \cdot \left(z1 \cdot \pi\right)}\\
\end{array}
if (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < -inf.0Initial program 99.7%
Taylor expanded in z0 around -inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites67.2%
Applied rewrites56.9%
Taylor expanded in z1 around 0
lower-*.f64N/A
lower-+.f64N/A
lower-*.f64N/A
lower-/.f6456.9%
Applied rewrites56.9%
if -inf.0 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) Initial program 99.7%
lift-/.f64N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-/r*N/A
associate-/l/N/A
lower-/.f64N/A
Applied rewrites99.4%
Taylor expanded in z1 around inf
lower-*.f64N/A
lower-/.f64N/A
lower-+.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6493.7%
Applied rewrites93.7%
Taylor expanded in z1 around 0
lower-+.f64N/A
lower-*.f64N/A
lower-/.f6465.9%
Applied rewrites65.9%
(FPCore (z1 z0) :precision binary64 (* 0.125 (/ (+ 2.0 (* -1.3333333333333333 (/ z1 z0))) (* z0 (* z1 PI)))))
double code(double z1, double z0) {
return 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * ((double) M_PI))));
}
public static double code(double z1, double z0) {
return 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * Math.PI)));
}
def code(z1, z0): return 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * math.pi)))
function code(z1, z0) return Float64(0.125 * Float64(Float64(2.0 + Float64(-1.3333333333333333 * Float64(z1 / z0))) / Float64(z0 * Float64(z1 * pi)))) end
function tmp = code(z1, z0) tmp = 0.125 * ((2.0 + (-1.3333333333333333 * (z1 / z0))) / (z0 * (z1 * pi))); end
code[z1_, z0_] := N[(0.125 * N[(N[(2.0 + N[(-1.3333333333333333 * N[(z1 / z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * N[(z1 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
0.125 \cdot \frac{2 + -1.3333333333333333 \cdot \frac{z1}{z0}}{z0 \cdot \left(z1 \cdot \pi\right)}
Initial program 99.7%
lift-/.f64N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-/r*N/A
associate-/l/N/A
lower-/.f64N/A
Applied rewrites99.4%
Taylor expanded in z1 around inf
lower-*.f64N/A
lower-/.f64N/A
lower-+.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-exp.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6493.7%
Applied rewrites93.7%
Taylor expanded in z1 around 0
lower-+.f64N/A
lower-*.f64N/A
lower-/.f6465.9%
Applied rewrites65.9%
(FPCore (z1 z0) :precision binary64 (/ (+ 0.25 (* -0.16666666666666666 (/ z1 z0))) (* (* PI z0) z1)))
double code(double z1, double z0) {
return (0.25 + (-0.16666666666666666 * (z1 / z0))) / ((((double) M_PI) * z0) * z1);
}
public static double code(double z1, double z0) {
return (0.25 + (-0.16666666666666666 * (z1 / z0))) / ((Math.PI * z0) * z1);
}
def code(z1, z0): return (0.25 + (-0.16666666666666666 * (z1 / z0))) / ((math.pi * z0) * z1)
function code(z1, z0) return Float64(Float64(0.25 + Float64(-0.16666666666666666 * Float64(z1 / z0))) / Float64(Float64(pi * z0) * z1)) end
function tmp = code(z1, z0) tmp = (0.25 + (-0.16666666666666666 * (z1 / z0))) / ((pi * z0) * z1); end
code[z1_, z0_] := N[(N[(0.25 + N[(-0.16666666666666666 * N[(z1 / z0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(Pi * z0), $MachinePrecision] * z1), $MachinePrecision]), $MachinePrecision]
\frac{0.25 + -0.16666666666666666 \cdot \frac{z1}{z0}}{\left(\pi \cdot z0\right) \cdot z1}
Initial program 99.7%
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
lower-/.f64N/A
Applied rewrites93.7%
Taylor expanded in z1 around 0
lower-+.f64N/A
lower-*.f64N/A
lower-/.f6465.8%
Applied rewrites65.8%
(FPCore (z1 z0)
:precision binary64
(if (<=
(/
(/
(+
(* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125)
(* 0.125 (exp (- (/ z1 z0)))))
(* z0 PI))
z1)
(- INFINITY))
(/ (* (* 0.25 z0) 1.0) (* (* (* PI z0) z1) z0))
(/ (/ 0.25 z0) (* PI z1))))double code(double z1, double z0) {
double tmp;
if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * ((double) M_PI))) / z1) <= -((double) INFINITY)) {
tmp = ((0.25 * z0) * 1.0) / (((((double) M_PI) * z0) * z1) * z0);
} else {
tmp = (0.25 / z0) / (((double) M_PI) * z1);
}
return tmp;
}
public static double code(double z1, double z0) {
double tmp;
if (((((Math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * Math.exp(-(z1 / z0)))) / (z0 * Math.PI)) / z1) <= -Double.POSITIVE_INFINITY) {
tmp = ((0.25 * z0) * 1.0) / (((Math.PI * z0) * z1) * z0);
} else {
tmp = (0.25 / z0) / (Math.PI * z1);
}
return tmp;
}
def code(z1, z0): tmp = 0 if ((((math.exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * math.exp(-(z1 / z0)))) / (z0 * math.pi)) / z1) <= -math.inf: tmp = ((0.25 * z0) * 1.0) / (((math.pi * z0) * z1) * z0) else: tmp = (0.25 / z0) / (math.pi * z1) return tmp
function code(z1, z0) tmp = 0.0 if (Float64(Float64(Float64(Float64(exp(Float64(Float64(z1 / z0) * -0.3333333333333333)) * 0.125) + Float64(0.125 * exp(Float64(-Float64(z1 / z0))))) / Float64(z0 * pi)) / z1) <= Float64(-Inf)) tmp = Float64(Float64(Float64(0.25 * z0) * 1.0) / Float64(Float64(Float64(pi * z0) * z1) * z0)); else tmp = Float64(Float64(0.25 / z0) / Float64(pi * z1)); end return tmp end
function tmp_2 = code(z1, z0) tmp = 0.0; if (((((exp(((z1 / z0) * -0.3333333333333333)) * 0.125) + (0.125 * exp(-(z1 / z0)))) / (z0 * pi)) / z1) <= -Inf) tmp = ((0.25 * z0) * 1.0) / (((pi * z0) * z1) * z0); else tmp = (0.25 / z0) / (pi * z1); end tmp_2 = tmp; end
code[z1_, z0_] := If[LessEqual[N[(N[(N[(N[(N[Exp[N[(N[(z1 / z0), $MachinePrecision] * -0.3333333333333333), $MachinePrecision]], $MachinePrecision] * 0.125), $MachinePrecision] + N[(0.125 * N[Exp[(-N[(z1 / z0), $MachinePrecision])], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(z0 * Pi), $MachinePrecision]), $MachinePrecision] / z1), $MachinePrecision], (-Infinity)], N[(N[(N[(0.25 * z0), $MachinePrecision] * 1.0), $MachinePrecision] / N[(N[(N[(Pi * z0), $MachinePrecision] * z1), $MachinePrecision] * z0), $MachinePrecision]), $MachinePrecision], N[(N[(0.25 / z0), $MachinePrecision] / N[(Pi * z1), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\frac{\frac{e^{\frac{z1}{z0} \cdot -0.3333333333333333} \cdot 0.125 + 0.125 \cdot e^{-\frac{z1}{z0}}}{z0 \cdot \pi}}{z1} \leq -\infty:\\
\;\;\;\;\frac{\left(0.25 \cdot z0\right) \cdot 1}{\left(\left(\pi \cdot z0\right) \cdot z1\right) \cdot z0}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.25}{z0}}{\pi \cdot z1}\\
\end{array}
if (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) < -inf.0Initial program 99.7%
Taylor expanded in z0 around -inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites67.2%
Applied rewrites56.9%
Taylor expanded in z1 around 0
lower-*.f6450.6%
Applied rewrites50.6%
if -inf.0 < (/.f64 (/.f64 (+.f64 (*.f64 (exp.f64 (*.f64 (/.f64 z1 z0) #s(literal -3333333333333333/10000000000000000 binary64))) #s(literal 1/8 binary64)) (*.f64 #s(literal 1/8 binary64) (exp.f64 (neg.f64 (/.f64 z1 z0))))) (*.f64 z0 (PI.f64))) z1) Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f6457.2%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6457.2%
Applied rewrites57.2%
(FPCore (z1 z0) :precision binary64 (/ (/ (/ 0.25 z0) z1) PI))
double code(double z1, double z0) {
return ((0.25 / z0) / z1) / ((double) M_PI);
}
public static double code(double z1, double z0) {
return ((0.25 / z0) / z1) / Math.PI;
}
def code(z1, z0): return ((0.25 / z0) / z1) / math.pi
function code(z1, z0) return Float64(Float64(Float64(0.25 / z0) / z1) / pi) end
function tmp = code(z1, z0) tmp = ((0.25 / z0) / z1) / pi; end
code[z1_, z0_] := N[(N[(N[(0.25 / z0), $MachinePrecision] / z1), $MachinePrecision] / Pi), $MachinePrecision]
\frac{\frac{\frac{0.25}{z0}}{z1}}{\pi}
Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f64N/A
lower-/.f6457.1%
Applied rewrites57.1%
(FPCore (z1 z0) :precision binary64 (/ (/ 0.25 (* z1 z0)) PI))
double code(double z1, double z0) {
return (0.25 / (z1 * z0)) / ((double) M_PI);
}
public static double code(double z1, double z0) {
return (0.25 / (z1 * z0)) / Math.PI;
}
def code(z1, z0): return (0.25 / (z1 * z0)) / math.pi
function code(z1, z0) return Float64(Float64(0.25 / Float64(z1 * z0)) / pi) end
function tmp = code(z1, z0) tmp = (0.25 / (z1 * z0)) / pi; end
code[z1_, z0_] := N[(N[(0.25 / N[(z1 * z0), $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision]
\frac{\frac{0.25}{z1 \cdot z0}}{\pi}
Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6457.1%
Applied rewrites57.1%
(FPCore (z1 z0) :precision binary64 (* (/ 1.0 (* (* PI z0) z1)) 0.25))
double code(double z1, double z0) {
return (1.0 / ((((double) M_PI) * z0) * z1)) * 0.25;
}
public static double code(double z1, double z0) {
return (1.0 / ((Math.PI * z0) * z1)) * 0.25;
}
def code(z1, z0): return (1.0 / ((math.pi * z0) * z1)) * 0.25
function code(z1, z0) return Float64(Float64(1.0 / Float64(Float64(pi * z0) * z1)) * 0.25) end
function tmp = code(z1, z0) tmp = (1.0 / ((pi * z0) * z1)) * 0.25; end
code[z1_, z0_] := N[(N[(1.0 / N[(N[(Pi * z0), $MachinePrecision] * z1), $MachinePrecision]), $MachinePrecision] * 0.25), $MachinePrecision]
\frac{1}{\left(\pi \cdot z0\right) \cdot z1} \cdot 0.25
Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
lift-/.f64N/A
mult-flipN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lower-*.f64N/A
lower-/.f6457.0%
Applied rewrites57.0%
(FPCore (z1 z0) :precision binary64 (/ 0.25 (* z0 (* z1 PI))))
double code(double z1, double z0) {
return 0.25 / (z0 * (z1 * ((double) M_PI)));
}
public static double code(double z1, double z0) {
return 0.25 / (z0 * (z1 * Math.PI));
}
def code(z1, z0): return 0.25 / (z0 * (z1 * math.pi))
function code(z1, z0) return Float64(0.25 / Float64(z0 * Float64(z1 * pi))) end
function tmp = code(z1, z0) tmp = 0.25 / (z0 * (z1 * pi)); end
code[z1_, z0_] := N[(0.25 / N[(z0 * N[(z1 * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\frac{0.25}{z0 \cdot \left(z1 \cdot \pi\right)}
Initial program 99.7%
Taylor expanded in z1 around 0
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6457.1%
Applied rewrites57.1%
herbie shell --seed 2025250
(FPCore (z1 z0)
:name "(/ (/ (+ (* (exp (* (/ z1 z0) -3333333333333333/10000000000000000)) 1/8) (* 1/8 (exp (- (/ z1 z0))))) (* z0 PI)) z1)"
:precision binary64
(/ (/ (+ (* (exp (* (/ z1 z0) -0.3333333333333333)) 0.125) (* 0.125 (exp (- (/ z1 z0))))) (* z0 PI)) z1))