
(FPCore (v w r) :precision binary64 (- (- (+ 3.0 (/ 2.0 (* r r))) (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v))) 4.5))
double code(double v, double w, double r) {
return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
real(8) function code(v, w, r)
real(8), intent (in) :: v
real(8), intent (in) :: w
real(8), intent (in) :: r
code = ((3.0d0 + (2.0d0 / (r * r))) - (((0.125d0 * (3.0d0 - (2.0d0 * v))) * (((w * w) * r) * r)) / (1.0d0 - v))) - 4.5d0
end function
public static double code(double v, double w, double r) {
return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
def code(v, w, r): return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5
function code(v, w, r) return Float64(Float64(Float64(3.0 + Float64(2.0 / Float64(r * r))) - Float64(Float64(Float64(0.125 * Float64(3.0 - Float64(2.0 * v))) * Float64(Float64(Float64(w * w) * r) * r)) / Float64(1.0 - v))) - 4.5) end
function tmp = code(v, w, r) tmp = ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5; end
code[v_, w_, r_] := N[(N[(N[(3.0 + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(0.125 * N[(3.0 - N[(2.0 * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(w * w), $MachinePrecision] * r), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision]
\begin{array}{l}
\\
\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 18 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (v w r) :precision binary64 (- (- (+ 3.0 (/ 2.0 (* r r))) (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v))) 4.5))
double code(double v, double w, double r) {
return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
real(8) function code(v, w, r)
real(8), intent (in) :: v
real(8), intent (in) :: w
real(8), intent (in) :: r
code = ((3.0d0 + (2.0d0 / (r * r))) - (((0.125d0 * (3.0d0 - (2.0d0 * v))) * (((w * w) * r) * r)) / (1.0d0 - v))) - 4.5d0
end function
public static double code(double v, double w, double r) {
return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
def code(v, w, r): return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5
function code(v, w, r) return Float64(Float64(Float64(3.0 + Float64(2.0 / Float64(r * r))) - Float64(Float64(Float64(0.125 * Float64(3.0 - Float64(2.0 * v))) * Float64(Float64(Float64(w * w) * r) * r)) / Float64(1.0 - v))) - 4.5) end
function tmp = code(v, w, r) tmp = ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5; end
code[v_, w_, r_] := N[(N[(N[(3.0 + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(0.125 * N[(3.0 - N[(2.0 * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(w * w), $MachinePrecision] * r), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision]
\begin{array}{l}
\\
\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5
\end{array}
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r))) (t_1 (+ t_0 -1.5)))
(if (<= v -8e-49)
(fma -0.25 (* r (* w (* r w))) t_1)
(if (<= v 1.5e+15)
(-
(+
(+ t_0 3.0)
(/ (* (* 0.125 (- 3.0 (* v 2.0))) (* (* r w) (* r w))) (+ v -1.0)))
4.5)
(fma (* -0.25 w) (* r (* r w)) t_1)))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = t_0 + -1.5;
double tmp;
if (v <= -8e-49) {
tmp = fma(-0.25, (r * (w * (r * w))), t_1);
} else if (v <= 1.5e+15) {
tmp = ((t_0 + 3.0) + (((0.125 * (3.0 - (v * 2.0))) * ((r * w) * (r * w))) / (v + -1.0))) - 4.5;
} else {
tmp = fma((-0.25 * w), (r * (r * w)), t_1);
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(t_0 + -1.5) tmp = 0.0 if (v <= -8e-49) tmp = fma(-0.25, Float64(r * Float64(w * Float64(r * w))), t_1); elseif (v <= 1.5e+15) tmp = Float64(Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(0.125 * Float64(3.0 - Float64(v * 2.0))) * Float64(Float64(r * w) * Float64(r * w))) / Float64(v + -1.0))) - 4.5); else tmp = fma(Float64(-0.25 * w), Float64(r * Float64(r * w)), t_1); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + -1.5), $MachinePrecision]}, If[LessEqual[v, -8e-49], N[(-0.25 * N[(r * N[(w * N[(r * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[v, 1.5e+15], N[(N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(0.125 * N[(3.0 - N[(v * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(r * w), $MachinePrecision] * N[(r * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(v + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], N[(N[(-0.25 * w), $MachinePrecision] * N[(r * N[(r * w), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := t\_0 + -1.5\\
\mathbf{if}\;v \leq -8 \cdot 10^{-49}:\\
\;\;\;\;\mathsf{fma}\left(-0.25, r \cdot \left(w \cdot \left(r \cdot w\right)\right), t\_1\right)\\
\mathbf{elif}\;v \leq 1.5 \cdot 10^{+15}:\\
\;\;\;\;\left(\left(t\_0 + 3\right) + \frac{\left(0.125 \cdot \left(3 - v \cdot 2\right)\right) \cdot \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right)}{v + -1}\right) - 4.5\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, r \cdot \left(r \cdot w\right), t\_1\right)\\
\end{array}
\end{array}
if v < -7.99999999999999949e-49Initial program 83.4%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified91.6%
+-commutativeN/A
associate-+l+N/A
associate-*l*N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6498.5
Applied egg-rr98.5%
if -7.99999999999999949e-49 < v < 1.5e15Initial program 88.7%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6499.8
Applied egg-rr99.8%
if 1.5e15 < v Initial program 74.3%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified87.9%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6496.5
Applied egg-rr96.5%
Final simplification98.7%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r)))
(t_1
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v))))
(t_2 (fma (* r w) (* -0.25 (* r w)) -1.5)))
(if (<= t_1 (- INFINITY))
t_2
(if (<= t_1 -4e+70)
(- (fma (* r (* w (* r w))) -0.375 3.0) 4.5)
(if (<= t_1 3.0) t_2 (+ t_0 -1.5))))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double t_2 = fma((r * w), (-0.25 * (r * w)), -1.5);
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = t_2;
} else if (t_1 <= -4e+70) {
tmp = fma((r * (w * (r * w))), -0.375, 3.0) - 4.5;
} else if (t_1 <= 3.0) {
tmp = t_2;
} else {
tmp = t_0 + -1.5;
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) t_2 = fma(Float64(r * w), Float64(-0.25 * Float64(r * w)), -1.5) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = t_2; elseif (t_1 <= -4e+70) tmp = Float64(fma(Float64(r * Float64(w * Float64(r * w))), -0.375, 3.0) - 4.5); elseif (t_1 <= 3.0) tmp = t_2; else tmp = Float64(t_0 + -1.5); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(r * w), $MachinePrecision] * N[(-0.25 * N[(r * w), $MachinePrecision]), $MachinePrecision] + -1.5), $MachinePrecision]}, If[LessEqual[t$95$1, (-Infinity)], t$95$2, If[LessEqual[t$95$1, -4e+70], N[(N[(N[(r * N[(w * N[(r * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * -0.375 + 3.0), $MachinePrecision] - 4.5), $MachinePrecision], If[LessEqual[t$95$1, 3.0], t$95$2, N[(t$95$0 + -1.5), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := \left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v}\\
t_2 := \mathsf{fma}\left(r \cdot w, -0.25 \cdot \left(r \cdot w\right), -1.5\right)\\
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq -4 \cdot 10^{+70}:\\
\;\;\;\;\mathsf{fma}\left(r \cdot \left(w \cdot \left(r \cdot w\right)\right), -0.375, 3\right) - 4.5\\
\mathbf{elif}\;t\_1 \leq 3:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -1.5\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -inf.0 or -4.00000000000000029e70 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < 3Initial program 80.8%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified84.4%
Taylor expanded in r around inf
sub-negN/A
distribute-lft-inN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6478.5
Simplified78.5%
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6494.5
Applied egg-rr94.5%
if -inf.0 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -4.00000000000000029e70Initial program 99.3%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6499.1
Applied egg-rr99.1%
Taylor expanded in v around 0
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6481.6
Simplified81.6%
Taylor expanded in r around inf
Simplified81.6%
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6482.1
Applied egg-rr82.1%
if 3 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 85.4%
Taylor expanded in w around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6499.9
Simplified99.9%
Final simplification96.0%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r)))
(t_1
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v))))
(t_2 (fma (* r w) (* -0.25 (* r w)) -1.5)))
(if (<= t_1 (- INFINITY))
t_2
(if (<= t_1 -4e+70)
(fma r (fma r (fma w (* w -0.375) 0.0) 0.0) -1.5)
(if (<= t_1 3.0) t_2 (+ t_0 -1.5))))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double t_2 = fma((r * w), (-0.25 * (r * w)), -1.5);
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = t_2;
} else if (t_1 <= -4e+70) {
tmp = fma(r, fma(r, fma(w, (w * -0.375), 0.0), 0.0), -1.5);
} else if (t_1 <= 3.0) {
tmp = t_2;
} else {
tmp = t_0 + -1.5;
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) t_2 = fma(Float64(r * w), Float64(-0.25 * Float64(r * w)), -1.5) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = t_2; elseif (t_1 <= -4e+70) tmp = fma(r, fma(r, fma(w, Float64(w * -0.375), 0.0), 0.0), -1.5); elseif (t_1 <= 3.0) tmp = t_2; else tmp = Float64(t_0 + -1.5); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(r * w), $MachinePrecision] * N[(-0.25 * N[(r * w), $MachinePrecision]), $MachinePrecision] + -1.5), $MachinePrecision]}, If[LessEqual[t$95$1, (-Infinity)], t$95$2, If[LessEqual[t$95$1, -4e+70], N[(r * N[(r * N[(w * N[(w * -0.375), $MachinePrecision] + 0.0), $MachinePrecision] + 0.0), $MachinePrecision] + -1.5), $MachinePrecision], If[LessEqual[t$95$1, 3.0], t$95$2, N[(t$95$0 + -1.5), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := \left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v}\\
t_2 := \mathsf{fma}\left(r \cdot w, -0.25 \cdot \left(r \cdot w\right), -1.5\right)\\
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq -4 \cdot 10^{+70}:\\
\;\;\;\;\mathsf{fma}\left(r, \mathsf{fma}\left(r, \mathsf{fma}\left(w, w \cdot -0.375, 0\right), 0\right), -1.5\right)\\
\mathbf{elif}\;t\_1 \leq 3:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -1.5\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -inf.0 or -4.00000000000000029e70 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < 3Initial program 80.8%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified84.4%
Taylor expanded in r around inf
sub-negN/A
distribute-lft-inN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6478.5
Simplified78.5%
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6494.5
Applied egg-rr94.5%
if -inf.0 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -4.00000000000000029e70Initial program 99.3%
Taylor expanded in v around 0
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-commutativeN/A
distribute-neg-inN/A
associate-*r*N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
distribute-lft-neg-inN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Simplified76.8%
Taylor expanded in r around inf
sub-negN/A
distribute-rgt-inN/A
unpow2N/A
associate-*r*N/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
Simplified81.7%
if 3 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 85.4%
Taylor expanded in w around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6499.9
Simplified99.9%
Final simplification95.9%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r)))
(t_1
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v))))
(t_2 (fma (* r w) (* -0.25 (* r w)) -1.5)))
(if (<= t_1 (- INFINITY))
t_2
(if (<= t_1 -4e+70)
(* r (* r (* (* w w) -0.375)))
(if (<= t_1 3.0) t_2 (+ t_0 -1.5))))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double t_2 = fma((r * w), (-0.25 * (r * w)), -1.5);
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = t_2;
} else if (t_1 <= -4e+70) {
tmp = r * (r * ((w * w) * -0.375));
} else if (t_1 <= 3.0) {
tmp = t_2;
} else {
tmp = t_0 + -1.5;
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) t_2 = fma(Float64(r * w), Float64(-0.25 * Float64(r * w)), -1.5) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = t_2; elseif (t_1 <= -4e+70) tmp = Float64(r * Float64(r * Float64(Float64(w * w) * -0.375))); elseif (t_1 <= 3.0) tmp = t_2; else tmp = Float64(t_0 + -1.5); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(r * w), $MachinePrecision] * N[(-0.25 * N[(r * w), $MachinePrecision]), $MachinePrecision] + -1.5), $MachinePrecision]}, If[LessEqual[t$95$1, (-Infinity)], t$95$2, If[LessEqual[t$95$1, -4e+70], N[(r * N[(r * N[(N[(w * w), $MachinePrecision] * -0.375), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 3.0], t$95$2, N[(t$95$0 + -1.5), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := \left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v}\\
t_2 := \mathsf{fma}\left(r \cdot w, -0.25 \cdot \left(r \cdot w\right), -1.5\right)\\
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq -4 \cdot 10^{+70}:\\
\;\;\;\;r \cdot \left(r \cdot \left(\left(w \cdot w\right) \cdot -0.375\right)\right)\\
\mathbf{elif}\;t\_1 \leq 3:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -1.5\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -inf.0 or -4.00000000000000029e70 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < 3Initial program 80.8%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified84.4%
Taylor expanded in r around inf
sub-negN/A
distribute-lft-inN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6478.5
Simplified78.5%
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6494.5
Applied egg-rr94.5%
if -inf.0 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -4.00000000000000029e70Initial program 99.3%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6499.1
Applied egg-rr99.1%
Taylor expanded in v around 0
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6481.6
Simplified81.6%
Taylor expanded in r around inf
Simplified81.6%
Taylor expanded in r around inf
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6481.5
Simplified81.5%
if 3 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 85.4%
Taylor expanded in w around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6499.9
Simplified99.9%
Final simplification95.9%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r)))
(t_1
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v))))
(t_2 (fma (* -0.25 w) (* r (* r w)) -1.5)))
(if (<= t_1 (- INFINITY))
t_2
(if (<= t_1 -4e+70)
(* r (* r (* (* w w) -0.375)))
(if (<= t_1 3.0) t_2 (+ t_0 -1.5))))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double t_2 = fma((-0.25 * w), (r * (r * w)), -1.5);
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = t_2;
} else if (t_1 <= -4e+70) {
tmp = r * (r * ((w * w) * -0.375));
} else if (t_1 <= 3.0) {
tmp = t_2;
} else {
tmp = t_0 + -1.5;
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) t_2 = fma(Float64(-0.25 * w), Float64(r * Float64(r * w)), -1.5) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = t_2; elseif (t_1 <= -4e+70) tmp = Float64(r * Float64(r * Float64(Float64(w * w) * -0.375))); elseif (t_1 <= 3.0) tmp = t_2; else tmp = Float64(t_0 + -1.5); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(-0.25 * w), $MachinePrecision] * N[(r * N[(r * w), $MachinePrecision]), $MachinePrecision] + -1.5), $MachinePrecision]}, If[LessEqual[t$95$1, (-Infinity)], t$95$2, If[LessEqual[t$95$1, -4e+70], N[(r * N[(r * N[(N[(w * w), $MachinePrecision] * -0.375), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 3.0], t$95$2, N[(t$95$0 + -1.5), $MachinePrecision]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := \left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v}\\
t_2 := \mathsf{fma}\left(-0.25 \cdot w, r \cdot \left(r \cdot w\right), -1.5\right)\\
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq -4 \cdot 10^{+70}:\\
\;\;\;\;r \cdot \left(r \cdot \left(\left(w \cdot w\right) \cdot -0.375\right)\right)\\
\mathbf{elif}\;t\_1 \leq 3:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -1.5\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -inf.0 or -4.00000000000000029e70 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < 3Initial program 80.8%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified84.4%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6495.1
Applied egg-rr95.1%
Taylor expanded in r around inf
Simplified91.6%
if -inf.0 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -4.00000000000000029e70Initial program 99.3%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6499.1
Applied egg-rr99.1%
Taylor expanded in v around 0
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6481.6
Simplified81.6%
Taylor expanded in r around inf
Simplified81.6%
Taylor expanded in r around inf
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6481.5
Simplified81.5%
if 3 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 85.4%
Taylor expanded in w around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6499.9
Simplified99.9%
Final simplification94.5%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r)))
(t_1
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v))))
(t_2 (* r (* r w))))
(if (<= t_1 (- INFINITY))
(fma (* -0.25 w) t_2 t_0)
(if (<= t_1 -4e+70)
(-
(+
3.0
(/ (* (* w (* r w)) (* r (fma 0.125 (* v -2.0) 0.375))) (+ v -1.0)))
4.5)
(fma (* -0.25 w) t_2 (+ t_0 -1.5))))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double t_2 = r * (r * w);
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = fma((-0.25 * w), t_2, t_0);
} else if (t_1 <= -4e+70) {
tmp = (3.0 + (((w * (r * w)) * (r * fma(0.125, (v * -2.0), 0.375))) / (v + -1.0))) - 4.5;
} else {
tmp = fma((-0.25 * w), t_2, (t_0 + -1.5));
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) t_2 = Float64(r * Float64(r * w)) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = fma(Float64(-0.25 * w), t_2, t_0); elseif (t_1 <= -4e+70) tmp = Float64(Float64(3.0 + Float64(Float64(Float64(w * Float64(r * w)) * Float64(r * fma(0.125, Float64(v * -2.0), 0.375))) / Float64(v + -1.0))) - 4.5); else tmp = fma(Float64(-0.25 * w), t_2, Float64(t_0 + -1.5)); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(r * N[(r * w), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, (-Infinity)], N[(N[(-0.25 * w), $MachinePrecision] * t$95$2 + t$95$0), $MachinePrecision], If[LessEqual[t$95$1, -4e+70], N[(N[(3.0 + N[(N[(N[(w * N[(r * w), $MachinePrecision]), $MachinePrecision] * N[(r * N[(0.125 * N[(v * -2.0), $MachinePrecision] + 0.375), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(v + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], N[(N[(-0.25 * w), $MachinePrecision] * t$95$2 + N[(t$95$0 + -1.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := \left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v}\\
t_2 := r \cdot \left(r \cdot w\right)\\
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, t\_2, t\_0\right)\\
\mathbf{elif}\;t\_1 \leq -4 \cdot 10^{+70}:\\
\;\;\;\;\left(3 + \frac{\left(w \cdot \left(r \cdot w\right)\right) \cdot \left(r \cdot \mathsf{fma}\left(0.125, v \cdot -2, 0.375\right)\right)}{v + -1}\right) - 4.5\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, t\_2, t\_0 + -1.5\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -inf.0Initial program 75.6%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified94.0%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6495.1
Applied egg-rr95.1%
Taylor expanded in r around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6495.1
Simplified95.1%
if -inf.0 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -4.00000000000000029e70Initial program 99.3%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6499.1
Applied egg-rr99.1%
associate-*l*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
*-commutativeN/A
+-commutativeN/A
distribute-lft-inN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
metadata-evalN/A
*-lowering-*.f64N/A
*-lowering-*.f6499.5
Applied egg-rr99.5%
Taylor expanded in r around inf
Simplified99.5%
if -4.00000000000000029e70 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 87.3%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified90.2%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6498.6
Applied egg-rr98.6%
Final simplification97.5%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r)))
(t_1
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v))))
(t_2 (* r (* r w))))
(if (<= t_1 (- INFINITY))
(fma (* -0.25 w) t_2 t_0)
(if (<= t_1 -5e+54)
(fma (* r (/ (* (* w w) (* -0.125 (fma v -2.0 3.0))) (- 1.0 v))) r -1.5)
(fma (* -0.25 w) t_2 (+ t_0 -1.5))))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double t_2 = r * (r * w);
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = fma((-0.25 * w), t_2, t_0);
} else if (t_1 <= -5e+54) {
tmp = fma((r * (((w * w) * (-0.125 * fma(v, -2.0, 3.0))) / (1.0 - v))), r, -1.5);
} else {
tmp = fma((-0.25 * w), t_2, (t_0 + -1.5));
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) t_2 = Float64(r * Float64(r * w)) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = fma(Float64(-0.25 * w), t_2, t_0); elseif (t_1 <= -5e+54) tmp = fma(Float64(r * Float64(Float64(Float64(w * w) * Float64(-0.125 * fma(v, -2.0, 3.0))) / Float64(1.0 - v))), r, -1.5); else tmp = fma(Float64(-0.25 * w), t_2, Float64(t_0 + -1.5)); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(r * N[(r * w), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, (-Infinity)], N[(N[(-0.25 * w), $MachinePrecision] * t$95$2 + t$95$0), $MachinePrecision], If[LessEqual[t$95$1, -5e+54], N[(N[(r * N[(N[(N[(w * w), $MachinePrecision] * N[(-0.125 * N[(v * -2.0 + 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * r + -1.5), $MachinePrecision], N[(N[(-0.25 * w), $MachinePrecision] * t$95$2 + N[(t$95$0 + -1.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := \left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v}\\
t_2 := r \cdot \left(r \cdot w\right)\\
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, t\_2, t\_0\right)\\
\mathbf{elif}\;t\_1 \leq -5 \cdot 10^{+54}:\\
\;\;\;\;\mathsf{fma}\left(r \cdot \frac{\left(w \cdot w\right) \cdot \left(-0.125 \cdot \mathsf{fma}\left(v, -2, 3\right)\right)}{1 - v}, r, -1.5\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, t\_2, t\_0 + -1.5\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -inf.0Initial program 75.6%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified94.0%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6495.1
Applied egg-rr95.1%
Taylor expanded in r around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6495.1
Simplified95.1%
if -inf.0 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -5.00000000000000005e54Initial program 99.3%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
distribute-neg-inN/A
distribute-lft-inN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Simplified94.5%
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
accelerator-lowering-fma.f64N/A
--lowering--.f6499.3
Applied egg-rr99.3%
if -5.00000000000000005e54 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 87.2%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified90.2%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6498.6
Applied egg-rr98.6%
Final simplification97.4%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r)))
(t_1
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v))))
(t_2 (* r (* r w))))
(if (<= t_1 (- INFINITY))
(fma (* -0.25 w) t_2 t_0)
(if (<= t_1 -4e+70)
(- (fma (* r (* w (* r w))) -0.375 3.0) 4.5)
(fma (* -0.25 w) t_2 (+ t_0 -1.5))))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double t_2 = r * (r * w);
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = fma((-0.25 * w), t_2, t_0);
} else if (t_1 <= -4e+70) {
tmp = fma((r * (w * (r * w))), -0.375, 3.0) - 4.5;
} else {
tmp = fma((-0.25 * w), t_2, (t_0 + -1.5));
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) t_2 = Float64(r * Float64(r * w)) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = fma(Float64(-0.25 * w), t_2, t_0); elseif (t_1 <= -4e+70) tmp = Float64(fma(Float64(r * Float64(w * Float64(r * w))), -0.375, 3.0) - 4.5); else tmp = fma(Float64(-0.25 * w), t_2, Float64(t_0 + -1.5)); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(r * N[(r * w), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, (-Infinity)], N[(N[(-0.25 * w), $MachinePrecision] * t$95$2 + t$95$0), $MachinePrecision], If[LessEqual[t$95$1, -4e+70], N[(N[(N[(r * N[(w * N[(r * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * -0.375 + 3.0), $MachinePrecision] - 4.5), $MachinePrecision], N[(N[(-0.25 * w), $MachinePrecision] * t$95$2 + N[(t$95$0 + -1.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := \left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v}\\
t_2 := r \cdot \left(r \cdot w\right)\\
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, t\_2, t\_0\right)\\
\mathbf{elif}\;t\_1 \leq -4 \cdot 10^{+70}:\\
\;\;\;\;\mathsf{fma}\left(r \cdot \left(w \cdot \left(r \cdot w\right)\right), -0.375, 3\right) - 4.5\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, t\_2, t\_0 + -1.5\right)\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -inf.0Initial program 75.6%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified94.0%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6495.1
Applied egg-rr95.1%
Taylor expanded in r around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6495.1
Simplified95.1%
if -inf.0 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -4.00000000000000029e70Initial program 99.3%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6499.1
Applied egg-rr99.1%
Taylor expanded in v around 0
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6481.6
Simplified81.6%
Taylor expanded in r around inf
Simplified81.6%
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6482.1
Applied egg-rr82.1%
if -4.00000000000000029e70 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 87.3%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified90.2%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6498.6
Applied egg-rr98.6%
Final simplification96.2%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r)))
(t_1
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v)))))
(if (<= t_1 (- INFINITY))
(* (* r r) (* -0.25 (* w w)))
(if (<= t_1 -5.0) (* r (* r (* (* w w) -0.375))) (+ t_0 -1.5)))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = (r * r) * (-0.25 * (w * w));
} else if (t_1 <= -5.0) {
tmp = r * (r * ((w * w) * -0.375));
} else {
tmp = t_0 + -1.5;
}
return tmp;
}
public static double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v));
double tmp;
if (t_1 <= -Double.POSITIVE_INFINITY) {
tmp = (r * r) * (-0.25 * (w * w));
} else if (t_1 <= -5.0) {
tmp = r * (r * ((w * w) * -0.375));
} else {
tmp = t_0 + -1.5;
}
return tmp;
}
def code(v, w, r): t_0 = 2.0 / (r * r) t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v)) tmp = 0 if t_1 <= -math.inf: tmp = (r * r) * (-0.25 * (w * w)) elif t_1 <= -5.0: tmp = r * (r * ((w * w) * -0.375)) else: tmp = t_0 + -1.5 return tmp
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = Float64(Float64(r * r) * Float64(-0.25 * Float64(w * w))); elseif (t_1 <= -5.0) tmp = Float64(r * Float64(r * Float64(Float64(w * w) * -0.375))); else tmp = Float64(t_0 + -1.5); end return tmp end
function tmp_2 = code(v, w, r) t_0 = 2.0 / (r * r); t_1 = (t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v)); tmp = 0.0; if (t_1 <= -Inf) tmp = (r * r) * (-0.25 * (w * w)); elseif (t_1 <= -5.0) tmp = r * (r * ((w * w) * -0.375)); else tmp = t_0 + -1.5; end tmp_2 = tmp; end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, (-Infinity)], N[(N[(r * r), $MachinePrecision] * N[(-0.25 * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, -5.0], N[(r * N[(r * N[(N[(w * w), $MachinePrecision] * -0.375), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + -1.5), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := \left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v}\\
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;\left(r \cdot r\right) \cdot \left(-0.25 \cdot \left(w \cdot w\right)\right)\\
\mathbf{elif}\;t\_1 \leq -5:\\
\;\;\;\;r \cdot \left(r \cdot \left(\left(w \cdot w\right) \cdot -0.375\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -1.5\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -inf.0Initial program 75.6%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified94.0%
Taylor expanded in r around inf
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6486.1
Simplified86.1%
if -inf.0 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -5Initial program 99.2%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6499.1
Applied egg-rr99.1%
Taylor expanded in v around 0
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6470.4
Simplified70.4%
Taylor expanded in r around inf
Simplified70.4%
Taylor expanded in r around inf
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6470.3
Simplified70.3%
if -5 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 87.0%
Taylor expanded in w around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6498.0
Simplified98.0%
Final simplification91.5%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r))))
(if (<=
(+
(+ t_0 3.0)
(/ (* (* r (* r (* w w))) (* 0.125 (- (* v 2.0) 3.0))) (- 1.0 v)))
-5.0)
(* r (* r (* (* w w) -0.375)))
(+ t_0 -1.5))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double tmp;
if (((t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v))) <= -5.0) {
tmp = r * (r * ((w * w) * -0.375));
} else {
tmp = t_0 + -1.5;
}
return tmp;
}
real(8) function code(v, w, r)
real(8), intent (in) :: v
real(8), intent (in) :: w
real(8), intent (in) :: r
real(8) :: t_0
real(8) :: tmp
t_0 = 2.0d0 / (r * r)
if (((t_0 + 3.0d0) + (((r * (r * (w * w))) * (0.125d0 * ((v * 2.0d0) - 3.0d0))) / (1.0d0 - v))) <= (-5.0d0)) then
tmp = r * (r * ((w * w) * (-0.375d0)))
else
tmp = t_0 + (-1.5d0)
end if
code = tmp
end function
public static double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double tmp;
if (((t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v))) <= -5.0) {
tmp = r * (r * ((w * w) * -0.375));
} else {
tmp = t_0 + -1.5;
}
return tmp;
}
def code(v, w, r): t_0 = 2.0 / (r * r) tmp = 0 if ((t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v))) <= -5.0: tmp = r * (r * ((w * w) * -0.375)) else: tmp = t_0 + -1.5 return tmp
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) tmp = 0.0 if (Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(r * Float64(r * Float64(w * w))) * Float64(0.125 * Float64(Float64(v * 2.0) - 3.0))) / Float64(1.0 - v))) <= -5.0) tmp = Float64(r * Float64(r * Float64(Float64(w * w) * -0.375))); else tmp = Float64(t_0 + -1.5); end return tmp end
function tmp_2 = code(v, w, r) t_0 = 2.0 / (r * r); tmp = 0.0; if (((t_0 + 3.0) + (((r * (r * (w * w))) * (0.125 * ((v * 2.0) - 3.0))) / (1.0 - v))) <= -5.0) tmp = r * (r * ((w * w) * -0.375)); else tmp = t_0 + -1.5; end tmp_2 = tmp; end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(r * N[(r * N[(w * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.125 * N[(N[(v * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], -5.0], N[(r * N[(r * N[(N[(w * w), $MachinePrecision] * -0.375), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 + -1.5), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
\mathbf{if}\;\left(t\_0 + 3\right) + \frac{\left(r \cdot \left(r \cdot \left(w \cdot w\right)\right)\right) \cdot \left(0.125 \cdot \left(v \cdot 2 - 3\right)\right)}{1 - v} \leq -5:\\
\;\;\;\;r \cdot \left(r \cdot \left(\left(w \cdot w\right) \cdot -0.375\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0 + -1.5\\
\end{array}
\end{array}
if (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) < -5Initial program 80.3%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6485.3
Applied egg-rr85.3%
Taylor expanded in v around 0
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6476.1
Simplified76.1%
Taylor expanded in r around inf
Simplified76.1%
Taylor expanded in r around inf
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6476.1
Simplified76.1%
if -5 < (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) Initial program 87.0%
Taylor expanded in w around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6498.0
Simplified98.0%
Final simplification88.6%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r))) (t_1 (+ t_0 -1.5)))
(if (<= v -8e-49)
(fma -0.25 (* r (* w (* r w))) t_1)
(if (<= v 1.9e-60)
(- (+ (+ t_0 3.0) (/ (* (* (* r w) (* r w)) 0.375) (+ v -1.0))) 4.5)
(fma (* -0.25 w) (* r (* r w)) t_1)))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double t_1 = t_0 + -1.5;
double tmp;
if (v <= -8e-49) {
tmp = fma(-0.25, (r * (w * (r * w))), t_1);
} else if (v <= 1.9e-60) {
tmp = ((t_0 + 3.0) + ((((r * w) * (r * w)) * 0.375) / (v + -1.0))) - 4.5;
} else {
tmp = fma((-0.25 * w), (r * (r * w)), t_1);
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) t_1 = Float64(t_0 + -1.5) tmp = 0.0 if (v <= -8e-49) tmp = fma(-0.25, Float64(r * Float64(w * Float64(r * w))), t_1); elseif (v <= 1.9e-60) tmp = Float64(Float64(Float64(t_0 + 3.0) + Float64(Float64(Float64(Float64(r * w) * Float64(r * w)) * 0.375) / Float64(v + -1.0))) - 4.5); else tmp = fma(Float64(-0.25 * w), Float64(r * Float64(r * w)), t_1); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 + -1.5), $MachinePrecision]}, If[LessEqual[v, -8e-49], N[(-0.25 * N[(r * N[(w * N[(r * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision], If[LessEqual[v, 1.9e-60], N[(N[(N[(t$95$0 + 3.0), $MachinePrecision] + N[(N[(N[(N[(r * w), $MachinePrecision] * N[(r * w), $MachinePrecision]), $MachinePrecision] * 0.375), $MachinePrecision] / N[(v + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], N[(N[(-0.25 * w), $MachinePrecision] * N[(r * N[(r * w), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := t\_0 + -1.5\\
\mathbf{if}\;v \leq -8 \cdot 10^{-49}:\\
\;\;\;\;\mathsf{fma}\left(-0.25, r \cdot \left(w \cdot \left(r \cdot w\right)\right), t\_1\right)\\
\mathbf{elif}\;v \leq 1.9 \cdot 10^{-60}:\\
\;\;\;\;\left(\left(t\_0 + 3\right) + \frac{\left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) \cdot 0.375}{v + -1}\right) - 4.5\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, r \cdot \left(r \cdot w\right), t\_1\right)\\
\end{array}
\end{array}
if v < -7.99999999999999949e-49Initial program 83.4%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified91.6%
+-commutativeN/A
associate-+l+N/A
associate-*l*N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6498.5
Applied egg-rr98.5%
if -7.99999999999999949e-49 < v < 1.89999999999999997e-60Initial program 88.9%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6499.8
Applied egg-rr99.8%
Taylor expanded in v around 0
Simplified99.8%
if 1.89999999999999997e-60 < v Initial program 77.2%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified87.6%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6497.0
Applied egg-rr97.0%
Final simplification98.7%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (+ (/ 2.0 (* r r)) -1.5)))
(if (<= v -2.45e+70)
(fma -0.25 (* r (* w (* r w))) t_0)
(if (<= v 1.85e-60)
(fma (* w (* w (* r r))) -0.375 t_0)
(fma (* -0.25 w) (* r (* r w)) t_0)))))
double code(double v, double w, double r) {
double t_0 = (2.0 / (r * r)) + -1.5;
double tmp;
if (v <= -2.45e+70) {
tmp = fma(-0.25, (r * (w * (r * w))), t_0);
} else if (v <= 1.85e-60) {
tmp = fma((w * (w * (r * r))), -0.375, t_0);
} else {
tmp = fma((-0.25 * w), (r * (r * w)), t_0);
}
return tmp;
}
function code(v, w, r) t_0 = Float64(Float64(2.0 / Float64(r * r)) + -1.5) tmp = 0.0 if (v <= -2.45e+70) tmp = fma(-0.25, Float64(r * Float64(w * Float64(r * w))), t_0); elseif (v <= 1.85e-60) tmp = fma(Float64(w * Float64(w * Float64(r * r))), -0.375, t_0); else tmp = fma(Float64(-0.25 * w), Float64(r * Float64(r * w)), t_0); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision] + -1.5), $MachinePrecision]}, If[LessEqual[v, -2.45e+70], N[(-0.25 * N[(r * N[(w * N[(r * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision], If[LessEqual[v, 1.85e-60], N[(N[(w * N[(w * N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * -0.375 + t$95$0), $MachinePrecision], N[(N[(-0.25 * w), $MachinePrecision] * N[(r * N[(r * w), $MachinePrecision]), $MachinePrecision] + t$95$0), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r} + -1.5\\
\mathbf{if}\;v \leq -2.45 \cdot 10^{+70}:\\
\;\;\;\;\mathsf{fma}\left(-0.25, r \cdot \left(w \cdot \left(r \cdot w\right)\right), t\_0\right)\\
\mathbf{elif}\;v \leq 1.85 \cdot 10^{-60}:\\
\;\;\;\;\mathsf{fma}\left(w \cdot \left(w \cdot \left(r \cdot r\right)\right), -0.375, t\_0\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, r \cdot \left(r \cdot w\right), t\_0\right)\\
\end{array}
\end{array}
if v < -2.45000000000000014e70Initial program 80.8%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified88.2%
+-commutativeN/A
associate-+l+N/A
associate-*l*N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6498.0
Applied egg-rr98.0%
if -2.45000000000000014e70 < v < 1.85000000000000012e-60Initial program 89.0%
Taylor expanded in v around 0
sub-negN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
+-commutativeN/A
distribute-neg-inN/A
associate-*r*N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
distribute-lft-neg-inN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Simplified86.1%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
*-commutativeN/A
+-commutativeN/A
accelerator-lowering-fma.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6497.0
Applied egg-rr97.0%
if 1.85000000000000012e-60 < v Initial program 77.2%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified87.6%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6497.0
Applied egg-rr97.0%
Final simplification97.2%
(FPCore (v w r)
:precision binary64
(let* ((t_0 (/ 2.0 (* r r))))
(if (<= r 2e+126)
(+ -1.5 (fma (* w (* -0.25 (* r r))) w t_0))
(fma -0.25 (* r (* w (* r w))) (+ t_0 -1.5)))))
double code(double v, double w, double r) {
double t_0 = 2.0 / (r * r);
double tmp;
if (r <= 2e+126) {
tmp = -1.5 + fma((w * (-0.25 * (r * r))), w, t_0);
} else {
tmp = fma(-0.25, (r * (w * (r * w))), (t_0 + -1.5));
}
return tmp;
}
function code(v, w, r) t_0 = Float64(2.0 / Float64(r * r)) tmp = 0.0 if (r <= 2e+126) tmp = Float64(-1.5 + fma(Float64(w * Float64(-0.25 * Float64(r * r))), w, t_0)); else tmp = fma(-0.25, Float64(r * Float64(w * Float64(r * w))), Float64(t_0 + -1.5)); end return tmp end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[r, 2e+126], N[(-1.5 + N[(N[(w * N[(-0.25 * N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * w + t$95$0), $MachinePrecision]), $MachinePrecision], N[(-0.25 * N[(r * N[(w * N[(r * w), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$0 + -1.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
\mathbf{if}\;r \leq 2 \cdot 10^{+126}:\\
\;\;\;\;-1.5 + \mathsf{fma}\left(w \cdot \left(-0.25 \cdot \left(r \cdot r\right)\right), w, t\_0\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-0.25, r \cdot \left(w \cdot \left(r \cdot w\right)\right), t\_0 + -1.5\right)\\
\end{array}
\end{array}
if r < 1.99999999999999985e126Initial program 83.8%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified90.1%
if 1.99999999999999985e126 < r Initial program 87.6%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified63.1%
+-commutativeN/A
associate-+l+N/A
associate-*l*N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6493.0
Applied egg-rr93.0%
Final simplification90.4%
(FPCore (v w r) :precision binary64 (if (<= r 5e+117) (+ -1.5 (fma (* w (* -0.25 (* r r))) w (/ 2.0 (* r r)))) (fma (* r w) (* -0.25 (* r w)) -1.5)))
double code(double v, double w, double r) {
double tmp;
if (r <= 5e+117) {
tmp = -1.5 + fma((w * (-0.25 * (r * r))), w, (2.0 / (r * r)));
} else {
tmp = fma((r * w), (-0.25 * (r * w)), -1.5);
}
return tmp;
}
function code(v, w, r) tmp = 0.0 if (r <= 5e+117) tmp = Float64(-1.5 + fma(Float64(w * Float64(-0.25 * Float64(r * r))), w, Float64(2.0 / Float64(r * r)))); else tmp = fma(Float64(r * w), Float64(-0.25 * Float64(r * w)), -1.5); end return tmp end
code[v_, w_, r_] := If[LessEqual[r, 5e+117], N[(-1.5 + N[(N[(w * N[(-0.25 * N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * w + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(r * w), $MachinePrecision] * N[(-0.25 * N[(r * w), $MachinePrecision]), $MachinePrecision] + -1.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;r \leq 5 \cdot 10^{+117}:\\
\;\;\;\;-1.5 + \mathsf{fma}\left(w \cdot \left(-0.25 \cdot \left(r \cdot r\right)\right), w, \frac{2}{r \cdot r}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(r \cdot w, -0.25 \cdot \left(r \cdot w\right), -1.5\right)\\
\end{array}
\end{array}
if r < 4.99999999999999983e117Initial program 83.6%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified90.0%
if 4.99999999999999983e117 < r Initial program 89.0%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified67.4%
Taylor expanded in r around inf
sub-negN/A
distribute-lft-inN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6466.7
Simplified66.7%
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6493.7
Applied egg-rr93.7%
Final simplification90.4%
(FPCore (v w r) :precision binary64 (if (<= r 0.75) (fma (* -0.25 w) (* r (* r w)) (/ 2.0 (* r r))) (fma (* r w) (* -0.25 (* r w)) -1.5)))
double code(double v, double w, double r) {
double tmp;
if (r <= 0.75) {
tmp = fma((-0.25 * w), (r * (r * w)), (2.0 / (r * r)));
} else {
tmp = fma((r * w), (-0.25 * (r * w)), -1.5);
}
return tmp;
}
function code(v, w, r) tmp = 0.0 if (r <= 0.75) tmp = fma(Float64(-0.25 * w), Float64(r * Float64(r * w)), Float64(2.0 / Float64(r * r))); else tmp = fma(Float64(r * w), Float64(-0.25 * Float64(r * w)), -1.5); end return tmp end
code[v_, w_, r_] := If[LessEqual[r, 0.75], N[(N[(-0.25 * w), $MachinePrecision] * N[(r * N[(r * w), $MachinePrecision]), $MachinePrecision] + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(r * w), $MachinePrecision] * N[(-0.25 * N[(r * w), $MachinePrecision]), $MachinePrecision] + -1.5), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;r \leq 0.75:\\
\;\;\;\;\mathsf{fma}\left(-0.25 \cdot w, r \cdot \left(r \cdot w\right), \frac{2}{r \cdot r}\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(r \cdot w, -0.25 \cdot \left(r \cdot w\right), -1.5\right)\\
\end{array}
\end{array}
if r < 0.75Initial program 82.5%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified89.1%
+-commutativeN/A
associate-+l+N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6493.0
Applied egg-rr93.0%
Taylor expanded in r around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6484.6
Simplified84.6%
if 0.75 < r Initial program 89.2%
Taylor expanded in v around inf
sub-negN/A
+-commutativeN/A
distribute-neg-inN/A
metadata-evalN/A
distribute-lft-neg-inN/A
metadata-evalN/A
associate-+l+N/A
+-lowering-+.f64N/A
associate-*r*N/A
unpow2N/A
associate-*r*N/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified83.4%
Taylor expanded in r around inf
sub-negN/A
distribute-lft-inN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6482.4
Simplified82.4%
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6493.8
Applied egg-rr93.8%
Final simplification86.8%
(FPCore (v w r) :precision binary64 (if (<= r 7e-7) (/ 2.0 (* r r)) -1.5))
double code(double v, double w, double r) {
double tmp;
if (r <= 7e-7) {
tmp = 2.0 / (r * r);
} else {
tmp = -1.5;
}
return tmp;
}
real(8) function code(v, w, r)
real(8), intent (in) :: v
real(8), intent (in) :: w
real(8), intent (in) :: r
real(8) :: tmp
if (r <= 7d-7) then
tmp = 2.0d0 / (r * r)
else
tmp = -1.5d0
end if
code = tmp
end function
public static double code(double v, double w, double r) {
double tmp;
if (r <= 7e-7) {
tmp = 2.0 / (r * r);
} else {
tmp = -1.5;
}
return tmp;
}
def code(v, w, r): tmp = 0 if r <= 7e-7: tmp = 2.0 / (r * r) else: tmp = -1.5 return tmp
function code(v, w, r) tmp = 0.0 if (r <= 7e-7) tmp = Float64(2.0 / Float64(r * r)); else tmp = -1.5; end return tmp end
function tmp_2 = code(v, w, r) tmp = 0.0; if (r <= 7e-7) tmp = 2.0 / (r * r); else tmp = -1.5; end tmp_2 = tmp; end
code[v_, w_, r_] := If[LessEqual[r, 7e-7], N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision], -1.5]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;r \leq 7 \cdot 10^{-7}:\\
\;\;\;\;\frac{2}{r \cdot r}\\
\mathbf{else}:\\
\;\;\;\;-1.5\\
\end{array}
\end{array}
if r < 6.99999999999999968e-7Initial program 82.4%
Taylor expanded in r around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6458.5
Simplified58.5%
if 6.99999999999999968e-7 < r Initial program 89.5%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
distribute-neg-inN/A
distribute-lft-inN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Simplified82.2%
Taylor expanded in r around 0
Simplified30.9%
(FPCore (v w r) :precision binary64 (+ (/ 2.0 (* r r)) -1.5))
double code(double v, double w, double r) {
return (2.0 / (r * r)) + -1.5;
}
real(8) function code(v, w, r)
real(8), intent (in) :: v
real(8), intent (in) :: w
real(8), intent (in) :: r
code = (2.0d0 / (r * r)) + (-1.5d0)
end function
public static double code(double v, double w, double r) {
return (2.0 / (r * r)) + -1.5;
}
def code(v, w, r): return (2.0 / (r * r)) + -1.5
function code(v, w, r) return Float64(Float64(2.0 / Float64(r * r)) + -1.5) end
function tmp = code(v, w, r) tmp = (2.0 / (r * r)) + -1.5; end
code[v_, w_, r_] := N[(N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision] + -1.5), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{r \cdot r} + -1.5
\end{array}
Initial program 84.1%
Taylor expanded in w around 0
sub-negN/A
metadata-evalN/A
+-commutativeN/A
+-lowering-+.f64N/A
associate-*r/N/A
metadata-evalN/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6458.7
Simplified58.7%
Final simplification58.7%
(FPCore (v w r) :precision binary64 -1.5)
double code(double v, double w, double r) {
return -1.5;
}
real(8) function code(v, w, r)
real(8), intent (in) :: v
real(8), intent (in) :: w
real(8), intent (in) :: r
code = -1.5d0
end function
public static double code(double v, double w, double r) {
return -1.5;
}
def code(v, w, r): return -1.5
function code(v, w, r) return -1.5 end
function tmp = code(v, w, r) tmp = -1.5; end
code[v_, w_, r_] := -1.5
\begin{array}{l}
\\
-1.5
\end{array}
Initial program 84.1%
Taylor expanded in r around inf
mul-1-negN/A
distribute-rgt-neg-inN/A
distribute-neg-inN/A
distribute-lft-inN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
associate-*l*N/A
lft-mult-inverseN/A
metadata-evalN/A
metadata-evalN/A
accelerator-lowering-fma.f64N/A
Simplified44.1%
Taylor expanded in r around 0
Simplified15.3%
herbie shell --seed 2024194
(FPCore (v w r)
:name "Rosa's TurbineBenchmark"
:precision binary64
(- (- (+ 3.0 (/ 2.0 (* r r))) (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v))) 4.5))