
(FPCore (a b c) :precision binary64 (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))
double code(double a, double b, double c) {
return (-b + sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
code = (-b + sqrt(((b * b) - ((4.0d0 * a) * c)))) / (2.0d0 * a)
end function
public static double code(double a, double b, double c) {
return (-b + Math.sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
}
def code(a, b, c): return (-b + math.sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a)
function code(a, b, c) return Float64(Float64(Float64(-b) + sqrt(Float64(Float64(b * b) - Float64(Float64(4.0 * a) * c)))) / Float64(2.0 * a)) end
function tmp = code(a, b, c) tmp = (-b + sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a); end
code[a_, b_, c_] := N[(N[((-b) + N[Sqrt[N[(N[(b * b), $MachinePrecision] - N[(N[(4.0 * a), $MachinePrecision] * c), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(2.0 * a), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 9 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a b c) :precision binary64 (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))
double code(double a, double b, double c) {
return (-b + sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
code = (-b + sqrt(((b * b) - ((4.0d0 * a) * c)))) / (2.0d0 * a)
end function
public static double code(double a, double b, double c) {
return (-b + Math.sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a);
}
def code(a, b, c): return (-b + math.sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a)
function code(a, b, c) return Float64(Float64(Float64(-b) + sqrt(Float64(Float64(b * b) - Float64(Float64(4.0 * a) * c)))) / Float64(2.0 * a)) end
function tmp = code(a, b, c) tmp = (-b + sqrt(((b * b) - ((4.0 * a) * c)))) / (2.0 * a); end
code[a_, b_, c_] := N[(N[((-b) + N[Sqrt[N[(N[(b * b), $MachinePrecision] - N[(N[(4.0 * a), $MachinePrecision] * c), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(2.0 * a), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}
\end{array}
(FPCore (a b c)
:precision binary64
(if (<= b -1.6e+124)
(/ (- 0.0 b) a)
(if (<= b 8e-93)
(/ (- (sqrt (+ (* b b) (* a (* c -4.0)))) b) (* a 2.0))
(/ (/ 0.5 (+ (/ a (* b b)) (/ -1.0 c))) (* b 0.5)))))
double code(double a, double b, double c) {
double tmp;
if (b <= -1.6e+124) {
tmp = (0.0 - b) / a;
} else if (b <= 8e-93) {
tmp = (sqrt(((b * b) + (a * (c * -4.0)))) - b) / (a * 2.0);
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
real(8) :: tmp
if (b <= (-1.6d+124)) then
tmp = (0.0d0 - b) / a
else if (b <= 8d-93) then
tmp = (sqrt(((b * b) + (a * (c * (-4.0d0))))) - b) / (a * 2.0d0)
else
tmp = (0.5d0 / ((a / (b * b)) + ((-1.0d0) / c))) / (b * 0.5d0)
end if
code = tmp
end function
public static double code(double a, double b, double c) {
double tmp;
if (b <= -1.6e+124) {
tmp = (0.0 - b) / a;
} else if (b <= 8e-93) {
tmp = (Math.sqrt(((b * b) + (a * (c * -4.0)))) - b) / (a * 2.0);
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
def code(a, b, c): tmp = 0 if b <= -1.6e+124: tmp = (0.0 - b) / a elif b <= 8e-93: tmp = (math.sqrt(((b * b) + (a * (c * -4.0)))) - b) / (a * 2.0) else: tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5) return tmp
function code(a, b, c) tmp = 0.0 if (b <= -1.6e+124) tmp = Float64(Float64(0.0 - b) / a); elseif (b <= 8e-93) tmp = Float64(Float64(sqrt(Float64(Float64(b * b) + Float64(a * Float64(c * -4.0)))) - b) / Float64(a * 2.0)); else tmp = Float64(Float64(0.5 / Float64(Float64(a / Float64(b * b)) + Float64(-1.0 / c))) / Float64(b * 0.5)); end return tmp end
function tmp_2 = code(a, b, c) tmp = 0.0; if (b <= -1.6e+124) tmp = (0.0 - b) / a; elseif (b <= 8e-93) tmp = (sqrt(((b * b) + (a * (c * -4.0)))) - b) / (a * 2.0); else tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5); end tmp_2 = tmp; end
code[a_, b_, c_] := If[LessEqual[b, -1.6e+124], N[(N[(0.0 - b), $MachinePrecision] / a), $MachinePrecision], If[LessEqual[b, 8e-93], N[(N[(N[Sqrt[N[(N[(b * b), $MachinePrecision] + N[(a * N[(c * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - b), $MachinePrecision] / N[(a * 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 / N[(N[(a / N[(b * b), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / c), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -1.6 \cdot 10^{+124}:\\
\;\;\;\;\frac{0 - b}{a}\\
\mathbf{elif}\;b \leq 8 \cdot 10^{-93}:\\
\;\;\;\;\frac{\sqrt{b \cdot b + a \cdot \left(c \cdot -4\right)} - b}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.5}{\frac{a}{b \cdot b} + \frac{-1}{c}}}{b \cdot 0.5}\\
\end{array}
\end{array}
if b < -1.59999999999999996e124Initial program 44.4%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified44.4%
Taylor expanded in b around -inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6496.3%
Simplified96.3%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6496.3%
Applied egg-rr96.3%
if -1.59999999999999996e124 < b < 7.9999999999999992e-93Initial program 85.0%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified85.0%
if 7.9999999999999992e-93 < b Initial program 17.8%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified17.8%
associate-/r*N/A
clear-numN/A
associate-/l/N/A
associate-/r*N/A
metadata-evalN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6417.8%
Applied egg-rr17.8%
Taylor expanded in b around inf
distribute-lft-out--N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f6481.8%
Simplified81.8%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6482.6%
Applied egg-rr82.6%
Final simplification86.3%
(FPCore (a b c)
:precision binary64
(if (<= b -5.7e+118)
(/ (- 0.0 b) a)
(if (<= b 8.5e-93)
(/ 0.5 (/ a (- (sqrt (+ (* b b) (* a (* c -4.0)))) b)))
(/ (/ 0.5 (+ (/ a (* b b)) (/ -1.0 c))) (* b 0.5)))))
double code(double a, double b, double c) {
double tmp;
if (b <= -5.7e+118) {
tmp = (0.0 - b) / a;
} else if (b <= 8.5e-93) {
tmp = 0.5 / (a / (sqrt(((b * b) + (a * (c * -4.0)))) - b));
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
real(8) :: tmp
if (b <= (-5.7d+118)) then
tmp = (0.0d0 - b) / a
else if (b <= 8.5d-93) then
tmp = 0.5d0 / (a / (sqrt(((b * b) + (a * (c * (-4.0d0))))) - b))
else
tmp = (0.5d0 / ((a / (b * b)) + ((-1.0d0) / c))) / (b * 0.5d0)
end if
code = tmp
end function
public static double code(double a, double b, double c) {
double tmp;
if (b <= -5.7e+118) {
tmp = (0.0 - b) / a;
} else if (b <= 8.5e-93) {
tmp = 0.5 / (a / (Math.sqrt(((b * b) + (a * (c * -4.0)))) - b));
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
def code(a, b, c): tmp = 0 if b <= -5.7e+118: tmp = (0.0 - b) / a elif b <= 8.5e-93: tmp = 0.5 / (a / (math.sqrt(((b * b) + (a * (c * -4.0)))) - b)) else: tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5) return tmp
function code(a, b, c) tmp = 0.0 if (b <= -5.7e+118) tmp = Float64(Float64(0.0 - b) / a); elseif (b <= 8.5e-93) tmp = Float64(0.5 / Float64(a / Float64(sqrt(Float64(Float64(b * b) + Float64(a * Float64(c * -4.0)))) - b))); else tmp = Float64(Float64(0.5 / Float64(Float64(a / Float64(b * b)) + Float64(-1.0 / c))) / Float64(b * 0.5)); end return tmp end
function tmp_2 = code(a, b, c) tmp = 0.0; if (b <= -5.7e+118) tmp = (0.0 - b) / a; elseif (b <= 8.5e-93) tmp = 0.5 / (a / (sqrt(((b * b) + (a * (c * -4.0)))) - b)); else tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5); end tmp_2 = tmp; end
code[a_, b_, c_] := If[LessEqual[b, -5.7e+118], N[(N[(0.0 - b), $MachinePrecision] / a), $MachinePrecision], If[LessEqual[b, 8.5e-93], N[(0.5 / N[(a / N[(N[Sqrt[N[(N[(b * b), $MachinePrecision] + N[(a * N[(c * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 / N[(N[(a / N[(b * b), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / c), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -5.7 \cdot 10^{+118}:\\
\;\;\;\;\frac{0 - b}{a}\\
\mathbf{elif}\;b \leq 8.5 \cdot 10^{-93}:\\
\;\;\;\;\frac{0.5}{\frac{a}{\sqrt{b \cdot b + a \cdot \left(c \cdot -4\right)} - b}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.5}{\frac{a}{b \cdot b} + \frac{-1}{c}}}{b \cdot 0.5}\\
\end{array}
\end{array}
if b < -5.70000000000000002e118Initial program 46.5%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified46.5%
Taylor expanded in b around -inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6496.4%
Simplified96.4%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6496.4%
Applied egg-rr96.4%
if -5.70000000000000002e118 < b < 8.5000000000000007e-93Initial program 84.7%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified84.7%
associate-/r*N/A
clear-numN/A
associate-/l/N/A
associate-/r*N/A
metadata-evalN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6484.5%
Applied egg-rr84.5%
if 8.5000000000000007e-93 < b Initial program 17.8%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified17.8%
associate-/r*N/A
clear-numN/A
associate-/l/N/A
associate-/r*N/A
metadata-evalN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6417.8%
Applied egg-rr17.8%
Taylor expanded in b around inf
distribute-lft-out--N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f6481.8%
Simplified81.8%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6482.6%
Applied egg-rr82.6%
Final simplification86.3%
(FPCore (a b c)
:precision binary64
(if (<= b -5.4e+118)
(/ (- 0.0 b) a)
(if (<= b 4.8e-93)
(* (- (sqrt (+ (* b b) (* a (* c -4.0)))) b) (/ 0.5 a))
(/ (/ 0.5 (+ (/ a (* b b)) (/ -1.0 c))) (* b 0.5)))))
double code(double a, double b, double c) {
double tmp;
if (b <= -5.4e+118) {
tmp = (0.0 - b) / a;
} else if (b <= 4.8e-93) {
tmp = (sqrt(((b * b) + (a * (c * -4.0)))) - b) * (0.5 / a);
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
real(8) :: tmp
if (b <= (-5.4d+118)) then
tmp = (0.0d0 - b) / a
else if (b <= 4.8d-93) then
tmp = (sqrt(((b * b) + (a * (c * (-4.0d0))))) - b) * (0.5d0 / a)
else
tmp = (0.5d0 / ((a / (b * b)) + ((-1.0d0) / c))) / (b * 0.5d0)
end if
code = tmp
end function
public static double code(double a, double b, double c) {
double tmp;
if (b <= -5.4e+118) {
tmp = (0.0 - b) / a;
} else if (b <= 4.8e-93) {
tmp = (Math.sqrt(((b * b) + (a * (c * -4.0)))) - b) * (0.5 / a);
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
def code(a, b, c): tmp = 0 if b <= -5.4e+118: tmp = (0.0 - b) / a elif b <= 4.8e-93: tmp = (math.sqrt(((b * b) + (a * (c * -4.0)))) - b) * (0.5 / a) else: tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5) return tmp
function code(a, b, c) tmp = 0.0 if (b <= -5.4e+118) tmp = Float64(Float64(0.0 - b) / a); elseif (b <= 4.8e-93) tmp = Float64(Float64(sqrt(Float64(Float64(b * b) + Float64(a * Float64(c * -4.0)))) - b) * Float64(0.5 / a)); else tmp = Float64(Float64(0.5 / Float64(Float64(a / Float64(b * b)) + Float64(-1.0 / c))) / Float64(b * 0.5)); end return tmp end
function tmp_2 = code(a, b, c) tmp = 0.0; if (b <= -5.4e+118) tmp = (0.0 - b) / a; elseif (b <= 4.8e-93) tmp = (sqrt(((b * b) + (a * (c * -4.0)))) - b) * (0.5 / a); else tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5); end tmp_2 = tmp; end
code[a_, b_, c_] := If[LessEqual[b, -5.4e+118], N[(N[(0.0 - b), $MachinePrecision] / a), $MachinePrecision], If[LessEqual[b, 4.8e-93], N[(N[(N[Sqrt[N[(N[(b * b), $MachinePrecision] + N[(a * N[(c * -4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - b), $MachinePrecision] * N[(0.5 / a), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 / N[(N[(a / N[(b * b), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / c), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -5.4 \cdot 10^{+118}:\\
\;\;\;\;\frac{0 - b}{a}\\
\mathbf{elif}\;b \leq 4.8 \cdot 10^{-93}:\\
\;\;\;\;\left(\sqrt{b \cdot b + a \cdot \left(c \cdot -4\right)} - b\right) \cdot \frac{0.5}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.5}{\frac{a}{b \cdot b} + \frac{-1}{c}}}{b \cdot 0.5}\\
\end{array}
\end{array}
if b < -5.4e118Initial program 46.5%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified46.5%
Taylor expanded in b around -inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6496.4%
Simplified96.4%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6496.4%
Applied egg-rr96.4%
if -5.4e118 < b < 4.8000000000000002e-93Initial program 84.7%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified84.7%
clear-numN/A
associate-/r/N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-/r*N/A
metadata-evalN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6484.4%
Applied egg-rr84.4%
if 4.8000000000000002e-93 < b Initial program 17.8%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified17.8%
associate-/r*N/A
clear-numN/A
associate-/l/N/A
associate-/r*N/A
metadata-evalN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6417.8%
Applied egg-rr17.8%
Taylor expanded in b around inf
distribute-lft-out--N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f6481.8%
Simplified81.8%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6482.6%
Applied egg-rr82.6%
Final simplification86.2%
(FPCore (a b c)
:precision binary64
(if (<= b -5.5e-86)
(/ (- 0.0 b) a)
(if (<= b 8.5e-93)
(/ (- (sqrt (* c (* a -4.0))) b) (* a 2.0))
(/ (/ 0.5 (+ (/ a (* b b)) (/ -1.0 c))) (* b 0.5)))))
double code(double a, double b, double c) {
double tmp;
if (b <= -5.5e-86) {
tmp = (0.0 - b) / a;
} else if (b <= 8.5e-93) {
tmp = (sqrt((c * (a * -4.0))) - b) / (a * 2.0);
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
real(8) :: tmp
if (b <= (-5.5d-86)) then
tmp = (0.0d0 - b) / a
else if (b <= 8.5d-93) then
tmp = (sqrt((c * (a * (-4.0d0)))) - b) / (a * 2.0d0)
else
tmp = (0.5d0 / ((a / (b * b)) + ((-1.0d0) / c))) / (b * 0.5d0)
end if
code = tmp
end function
public static double code(double a, double b, double c) {
double tmp;
if (b <= -5.5e-86) {
tmp = (0.0 - b) / a;
} else if (b <= 8.5e-93) {
tmp = (Math.sqrt((c * (a * -4.0))) - b) / (a * 2.0);
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
def code(a, b, c): tmp = 0 if b <= -5.5e-86: tmp = (0.0 - b) / a elif b <= 8.5e-93: tmp = (math.sqrt((c * (a * -4.0))) - b) / (a * 2.0) else: tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5) return tmp
function code(a, b, c) tmp = 0.0 if (b <= -5.5e-86) tmp = Float64(Float64(0.0 - b) / a); elseif (b <= 8.5e-93) tmp = Float64(Float64(sqrt(Float64(c * Float64(a * -4.0))) - b) / Float64(a * 2.0)); else tmp = Float64(Float64(0.5 / Float64(Float64(a / Float64(b * b)) + Float64(-1.0 / c))) / Float64(b * 0.5)); end return tmp end
function tmp_2 = code(a, b, c) tmp = 0.0; if (b <= -5.5e-86) tmp = (0.0 - b) / a; elseif (b <= 8.5e-93) tmp = (sqrt((c * (a * -4.0))) - b) / (a * 2.0); else tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5); end tmp_2 = tmp; end
code[a_, b_, c_] := If[LessEqual[b, -5.5e-86], N[(N[(0.0 - b), $MachinePrecision] / a), $MachinePrecision], If[LessEqual[b, 8.5e-93], N[(N[(N[Sqrt[N[(c * N[(a * -4.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - b), $MachinePrecision] / N[(a * 2.0), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 / N[(N[(a / N[(b * b), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / c), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -5.5 \cdot 10^{-86}:\\
\;\;\;\;\frac{0 - b}{a}\\
\mathbf{elif}\;b \leq 8.5 \cdot 10^{-93}:\\
\;\;\;\;\frac{\sqrt{c \cdot \left(a \cdot -4\right)} - b}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.5}{\frac{a}{b \cdot b} + \frac{-1}{c}}}{b \cdot 0.5}\\
\end{array}
\end{array}
if b < -5.5e-86Initial program 66.2%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified66.2%
Taylor expanded in b around -inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6486.5%
Simplified86.5%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6486.5%
Applied egg-rr86.5%
if -5.5e-86 < b < 8.5000000000000007e-93Initial program 80.5%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified80.5%
Taylor expanded in b around 0
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6477.6%
Simplified77.6%
if 8.5000000000000007e-93 < b Initial program 17.8%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified17.8%
associate-/r*N/A
clear-numN/A
associate-/l/N/A
associate-/r*N/A
metadata-evalN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6417.8%
Applied egg-rr17.8%
Taylor expanded in b around inf
distribute-lft-out--N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f6481.8%
Simplified81.8%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6482.6%
Applied egg-rr82.6%
Final simplification82.6%
(FPCore (a b c)
:precision binary64
(if (<= b -1.4e-85)
(/ (- 0.0 b) a)
(if (<= b 8.5e-93)
(* (/ 0.5 a) (- (sqrt (* a (* c -4.0))) b))
(/ (/ 0.5 (+ (/ a (* b b)) (/ -1.0 c))) (* b 0.5)))))
double code(double a, double b, double c) {
double tmp;
if (b <= -1.4e-85) {
tmp = (0.0 - b) / a;
} else if (b <= 8.5e-93) {
tmp = (0.5 / a) * (sqrt((a * (c * -4.0))) - b);
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
real(8) :: tmp
if (b <= (-1.4d-85)) then
tmp = (0.0d0 - b) / a
else if (b <= 8.5d-93) then
tmp = (0.5d0 / a) * (sqrt((a * (c * (-4.0d0)))) - b)
else
tmp = (0.5d0 / ((a / (b * b)) + ((-1.0d0) / c))) / (b * 0.5d0)
end if
code = tmp
end function
public static double code(double a, double b, double c) {
double tmp;
if (b <= -1.4e-85) {
tmp = (0.0 - b) / a;
} else if (b <= 8.5e-93) {
tmp = (0.5 / a) * (Math.sqrt((a * (c * -4.0))) - b);
} else {
tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5);
}
return tmp;
}
def code(a, b, c): tmp = 0 if b <= -1.4e-85: tmp = (0.0 - b) / a elif b <= 8.5e-93: tmp = (0.5 / a) * (math.sqrt((a * (c * -4.0))) - b) else: tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5) return tmp
function code(a, b, c) tmp = 0.0 if (b <= -1.4e-85) tmp = Float64(Float64(0.0 - b) / a); elseif (b <= 8.5e-93) tmp = Float64(Float64(0.5 / a) * Float64(sqrt(Float64(a * Float64(c * -4.0))) - b)); else tmp = Float64(Float64(0.5 / Float64(Float64(a / Float64(b * b)) + Float64(-1.0 / c))) / Float64(b * 0.5)); end return tmp end
function tmp_2 = code(a, b, c) tmp = 0.0; if (b <= -1.4e-85) tmp = (0.0 - b) / a; elseif (b <= 8.5e-93) tmp = (0.5 / a) * (sqrt((a * (c * -4.0))) - b); else tmp = (0.5 / ((a / (b * b)) + (-1.0 / c))) / (b * 0.5); end tmp_2 = tmp; end
code[a_, b_, c_] := If[LessEqual[b, -1.4e-85], N[(N[(0.0 - b), $MachinePrecision] / a), $MachinePrecision], If[LessEqual[b, 8.5e-93], N[(N[(0.5 / a), $MachinePrecision] * N[(N[Sqrt[N[(a * N[(c * -4.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - b), $MachinePrecision]), $MachinePrecision], N[(N[(0.5 / N[(N[(a / N[(b * b), $MachinePrecision]), $MachinePrecision] + N[(-1.0 / c), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * 0.5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -1.4 \cdot 10^{-85}:\\
\;\;\;\;\frac{0 - b}{a}\\
\mathbf{elif}\;b \leq 8.5 \cdot 10^{-93}:\\
\;\;\;\;\frac{0.5}{a} \cdot \left(\sqrt{a \cdot \left(c \cdot -4\right)} - b\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{0.5}{\frac{a}{b \cdot b} + \frac{-1}{c}}}{b \cdot 0.5}\\
\end{array}
\end{array}
if b < -1.40000000000000008e-85Initial program 66.2%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified66.2%
Taylor expanded in b around -inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6486.5%
Simplified86.5%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6486.5%
Applied egg-rr86.5%
if -1.40000000000000008e-85 < b < 8.5000000000000007e-93Initial program 80.5%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified80.5%
Taylor expanded in b around 0
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6477.6%
Simplified77.6%
div-invN/A
*-commutativeN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
associate-/r*N/A
metadata-evalN/A
metadata-evalN/A
/-lowering-/.f64N/A
--lowering--.f64N/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
sqrt-lowering-sqrt.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6477.3%
Applied egg-rr77.3%
if 8.5000000000000007e-93 < b Initial program 17.8%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified17.8%
associate-/r*N/A
clear-numN/A
associate-/l/N/A
associate-/r*N/A
metadata-evalN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6417.8%
Applied egg-rr17.8%
Taylor expanded in b around inf
distribute-lft-out--N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f6481.8%
Simplified81.8%
*-commutativeN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
sub-negN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6482.6%
Applied egg-rr82.6%
Final simplification82.5%
(FPCore (a b c) :precision binary64 (if (<= b 7e-303) (/ (- 0.0 b) a) (- 0.0 (/ c b))))
double code(double a, double b, double c) {
double tmp;
if (b <= 7e-303) {
tmp = (0.0 - b) / a;
} else {
tmp = 0.0 - (c / b);
}
return tmp;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
real(8) :: tmp
if (b <= 7d-303) then
tmp = (0.0d0 - b) / a
else
tmp = 0.0d0 - (c / b)
end if
code = tmp
end function
public static double code(double a, double b, double c) {
double tmp;
if (b <= 7e-303) {
tmp = (0.0 - b) / a;
} else {
tmp = 0.0 - (c / b);
}
return tmp;
}
def code(a, b, c): tmp = 0 if b <= 7e-303: tmp = (0.0 - b) / a else: tmp = 0.0 - (c / b) return tmp
function code(a, b, c) tmp = 0.0 if (b <= 7e-303) tmp = Float64(Float64(0.0 - b) / a); else tmp = Float64(0.0 - Float64(c / b)); end return tmp end
function tmp_2 = code(a, b, c) tmp = 0.0; if (b <= 7e-303) tmp = (0.0 - b) / a; else tmp = 0.0 - (c / b); end tmp_2 = tmp; end
code[a_, b_, c_] := If[LessEqual[b, 7e-303], N[(N[(0.0 - b), $MachinePrecision] / a), $MachinePrecision], N[(0.0 - N[(c / b), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 7 \cdot 10^{-303}:\\
\;\;\;\;\frac{0 - b}{a}\\
\mathbf{else}:\\
\;\;\;\;0 - \frac{c}{b}\\
\end{array}
\end{array}
if b < 7e-303Initial program 72.0%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified72.0%
Taylor expanded in b around -inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6465.2%
Simplified65.2%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6465.2%
Applied egg-rr65.2%
if 7e-303 < b Initial program 33.0%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified33.0%
Taylor expanded in b around inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6464.8%
Simplified64.8%
Final simplification65.0%
(FPCore (a b c) :precision binary64 (if (<= b -2e-310) (/ (- 0.0 b) a) (* c (/ -1.0 b))))
double code(double a, double b, double c) {
double tmp;
if (b <= -2e-310) {
tmp = (0.0 - b) / a;
} else {
tmp = c * (-1.0 / b);
}
return tmp;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
real(8) :: tmp
if (b <= (-2d-310)) then
tmp = (0.0d0 - b) / a
else
tmp = c * ((-1.0d0) / b)
end if
code = tmp
end function
public static double code(double a, double b, double c) {
double tmp;
if (b <= -2e-310) {
tmp = (0.0 - b) / a;
} else {
tmp = c * (-1.0 / b);
}
return tmp;
}
def code(a, b, c): tmp = 0 if b <= -2e-310: tmp = (0.0 - b) / a else: tmp = c * (-1.0 / b) return tmp
function code(a, b, c) tmp = 0.0 if (b <= -2e-310) tmp = Float64(Float64(0.0 - b) / a); else tmp = Float64(c * Float64(-1.0 / b)); end return tmp end
function tmp_2 = code(a, b, c) tmp = 0.0; if (b <= -2e-310) tmp = (0.0 - b) / a; else tmp = c * (-1.0 / b); end tmp_2 = tmp; end
code[a_, b_, c_] := If[LessEqual[b, -2e-310], N[(N[(0.0 - b), $MachinePrecision] / a), $MachinePrecision], N[(c * N[(-1.0 / b), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq -2 \cdot 10^{-310}:\\
\;\;\;\;\frac{0 - b}{a}\\
\mathbf{else}:\\
\;\;\;\;c \cdot \frac{-1}{b}\\
\end{array}
\end{array}
if b < -1.999999999999994e-310Initial program 72.0%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified72.0%
Taylor expanded in b around -inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6465.2%
Simplified65.2%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6465.2%
Applied egg-rr65.2%
if -1.999999999999994e-310 < b Initial program 33.0%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified33.0%
Taylor expanded in c around 0
sub-negN/A
associate-*r/N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
*-lowering-*.f64N/A
+-commutativeN/A
+-lowering-+.f64N/A
distribute-neg-fracN/A
metadata-evalN/A
/-lowering-/.f64N/A
associate-*r/N/A
associate-*l/N/A
associate-*r*N/A
/-lowering-/.f64N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
cube-multN/A
Simplified58.1%
Taylor expanded in b around inf
/-lowering-/.f6464.6%
Simplified64.6%
Final simplification64.9%
(FPCore (a b c) :precision binary64 (/ (- 0.0 b) a))
double code(double a, double b, double c) {
return (0.0 - b) / a;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
code = (0.0d0 - b) / a
end function
public static double code(double a, double b, double c) {
return (0.0 - b) / a;
}
def code(a, b, c): return (0.0 - b) / a
function code(a, b, c) return Float64(Float64(0.0 - b) / a) end
function tmp = code(a, b, c) tmp = (0.0 - b) / a; end
code[a_, b_, c_] := N[(N[(0.0 - b), $MachinePrecision] / a), $MachinePrecision]
\begin{array}{l}
\\
\frac{0 - b}{a}
\end{array}
Initial program 52.6%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified52.6%
Taylor expanded in b around -inf
mul-1-negN/A
neg-sub0N/A
--lowering--.f64N/A
/-lowering-/.f6434.2%
Simplified34.2%
sub0-negN/A
neg-lowering-neg.f64N/A
/-lowering-/.f6434.2%
Applied egg-rr34.2%
Final simplification34.2%
(FPCore (a b c) :precision binary64 (/ b a))
double code(double a, double b, double c) {
return b / a;
}
real(8) function code(a, b, c)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
code = b / a
end function
public static double code(double a, double b, double c) {
return b / a;
}
def code(a, b, c): return b / a
function code(a, b, c) return Float64(b / a) end
function tmp = code(a, b, c) tmp = b / a; end
code[a_, b_, c_] := N[(b / a), $MachinePrecision]
\begin{array}{l}
\\
\frac{b}{a}
\end{array}
Initial program 52.6%
/-lowering-/.f64N/A
+-commutativeN/A
unsub-negN/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
sub-negN/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
distribute-rgt-neg-inN/A
*-lowering-*.f64N/A
metadata-evalN/A
*-commutativeN/A
Simplified52.6%
associate-/r*N/A
clear-numN/A
associate-/l/N/A
associate-/r*N/A
metadata-evalN/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
--lowering--.f64N/A
sqrt-lowering-sqrt.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6452.5%
Applied egg-rr52.5%
Taylor expanded in b around inf
distribute-lft-out--N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f6432.7%
Simplified32.7%
Taylor expanded in b around 0
/-lowering-/.f642.6%
Simplified2.6%
herbie shell --seed 2024138
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))