| Alternative 1 | |
|---|---|
| Accuracy | 69.3% |
| Cost | 49424 |

(FPCore (a b_2 c) :precision binary64 (/ (+ (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))
(FPCore (a b_2 c)
:precision binary64
(let* ((t_0 (/ (- (sqrt (- (* b_2 b_2) (* a c))) b_2) a)))
(if (<= t_0 (- INFINITY))
(/ (* b_2 -2.0) a)
(if (<= t_0 -2e-253)
t_0
(if (<= t_0 0.0)
(* -0.5 (/ c b_2))
(if (<= t_0 2e+234)
t_0
(+
(* -2.0 (/ b_2 a))
(+
(pow
(* (pow (* (* a (* c c)) (pow b_2 -3.0)) 3.0) 0.001953125)
0.3333333333333333)
(* (/ c b_2) 0.5)))))))))double code(double a, double b_2, double c) {
return (-b_2 + sqrt(((b_2 * b_2) - (a * c)))) / a;
}
double code(double a, double b_2, double c) {
double t_0 = (sqrt(((b_2 * b_2) - (a * c))) - b_2) / a;
double tmp;
if (t_0 <= -((double) INFINITY)) {
tmp = (b_2 * -2.0) / a;
} else if (t_0 <= -2e-253) {
tmp = t_0;
} else if (t_0 <= 0.0) {
tmp = -0.5 * (c / b_2);
} else if (t_0 <= 2e+234) {
tmp = t_0;
} else {
tmp = (-2.0 * (b_2 / a)) + (pow((pow(((a * (c * c)) * pow(b_2, -3.0)), 3.0) * 0.001953125), 0.3333333333333333) + ((c / b_2) * 0.5));
}
return tmp;
}
public static double code(double a, double b_2, double c) {
return (-b_2 + Math.sqrt(((b_2 * b_2) - (a * c)))) / a;
}
public static double code(double a, double b_2, double c) {
double t_0 = (Math.sqrt(((b_2 * b_2) - (a * c))) - b_2) / a;
double tmp;
if (t_0 <= -Double.POSITIVE_INFINITY) {
tmp = (b_2 * -2.0) / a;
} else if (t_0 <= -2e-253) {
tmp = t_0;
} else if (t_0 <= 0.0) {
tmp = -0.5 * (c / b_2);
} else if (t_0 <= 2e+234) {
tmp = t_0;
} else {
tmp = (-2.0 * (b_2 / a)) + (Math.pow((Math.pow(((a * (c * c)) * Math.pow(b_2, -3.0)), 3.0) * 0.001953125), 0.3333333333333333) + ((c / b_2) * 0.5));
}
return tmp;
}
def code(a, b_2, c): return (-b_2 + math.sqrt(((b_2 * b_2) - (a * c)))) / a
def code(a, b_2, c): t_0 = (math.sqrt(((b_2 * b_2) - (a * c))) - b_2) / a tmp = 0 if t_0 <= -math.inf: tmp = (b_2 * -2.0) / a elif t_0 <= -2e-253: tmp = t_0 elif t_0 <= 0.0: tmp = -0.5 * (c / b_2) elif t_0 <= 2e+234: tmp = t_0 else: tmp = (-2.0 * (b_2 / a)) + (math.pow((math.pow(((a * (c * c)) * math.pow(b_2, -3.0)), 3.0) * 0.001953125), 0.3333333333333333) + ((c / b_2) * 0.5)) return tmp
function code(a, b_2, c) return Float64(Float64(Float64(-b_2) + sqrt(Float64(Float64(b_2 * b_2) - Float64(a * c)))) / a) end
function code(a, b_2, c) t_0 = Float64(Float64(sqrt(Float64(Float64(b_2 * b_2) - Float64(a * c))) - b_2) / a) tmp = 0.0 if (t_0 <= Float64(-Inf)) tmp = Float64(Float64(b_2 * -2.0) / a); elseif (t_0 <= -2e-253) tmp = t_0; elseif (t_0 <= 0.0) tmp = Float64(-0.5 * Float64(c / b_2)); elseif (t_0 <= 2e+234) tmp = t_0; else tmp = Float64(Float64(-2.0 * Float64(b_2 / a)) + Float64((Float64((Float64(Float64(a * Float64(c * c)) * (b_2 ^ -3.0)) ^ 3.0) * 0.001953125) ^ 0.3333333333333333) + Float64(Float64(c / b_2) * 0.5))); end return tmp end
function tmp = code(a, b_2, c) tmp = (-b_2 + sqrt(((b_2 * b_2) - (a * c)))) / a; end
function tmp_2 = code(a, b_2, c) t_0 = (sqrt(((b_2 * b_2) - (a * c))) - b_2) / a; tmp = 0.0; if (t_0 <= -Inf) tmp = (b_2 * -2.0) / a; elseif (t_0 <= -2e-253) tmp = t_0; elseif (t_0 <= 0.0) tmp = -0.5 * (c / b_2); elseif (t_0 <= 2e+234) tmp = t_0; else tmp = (-2.0 * (b_2 / a)) + ((((((a * (c * c)) * (b_2 ^ -3.0)) ^ 3.0) * 0.001953125) ^ 0.3333333333333333) + ((c / b_2) * 0.5)); end tmp_2 = tmp; end
code[a_, b$95$2_, c_] := N[(N[((-b$95$2) + N[Sqrt[N[(N[(b$95$2 * b$95$2), $MachinePrecision] - N[(a * c), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision]
code[a_, b$95$2_, c_] := Block[{t$95$0 = N[(N[(N[Sqrt[N[(N[(b$95$2 * b$95$2), $MachinePrecision] - N[(a * c), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - b$95$2), $MachinePrecision] / a), $MachinePrecision]}, If[LessEqual[t$95$0, (-Infinity)], N[(N[(b$95$2 * -2.0), $MachinePrecision] / a), $MachinePrecision], If[LessEqual[t$95$0, -2e-253], t$95$0, If[LessEqual[t$95$0, 0.0], N[(-0.5 * N[(c / b$95$2), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 2e+234], t$95$0, N[(N[(-2.0 * N[(b$95$2 / a), $MachinePrecision]), $MachinePrecision] + N[(N[Power[N[(N[Power[N[(N[(a * N[(c * c), $MachinePrecision]), $MachinePrecision] * N[Power[b$95$2, -3.0], $MachinePrecision]), $MachinePrecision], 3.0], $MachinePrecision] * 0.001953125), $MachinePrecision], 0.3333333333333333], $MachinePrecision] + N[(N[(c / b$95$2), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}
\begin{array}{l}
t_0 := \frac{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}{a}\\
\mathbf{if}\;t_0 \leq -\infty:\\
\;\;\;\;\frac{b_2 \cdot -2}{a}\\
\mathbf{elif}\;t_0 \leq -2 \cdot 10^{-253}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;t_0 \leq 0:\\
\;\;\;\;-0.5 \cdot \frac{c}{b_2}\\
\mathbf{elif}\;t_0 \leq 2 \cdot 10^{+234}:\\
\;\;\;\;t_0\\
\mathbf{else}:\\
\;\;\;\;-2 \cdot \frac{b_2}{a} + \left({\left({\left(\left(a \cdot \left(c \cdot c\right)\right) \cdot {b_2}^{-3}\right)}^{3} \cdot 0.001953125\right)}^{0.3333333333333333} + \frac{c}{b_2} \cdot 0.5\right)\\
\end{array}
Herbie found 19 alternatives:
| Alternative | Accuracy | Speedup |
|---|
Results
if (/.f64 (+.f64 (neg.f64 b_2) (sqrt.f64 (-.f64 (*.f64 b_2 b_2) (*.f64 a c)))) a) < -inf.0Initial program 25.6%
Simplified25.6%
[Start]25.6% | \[ \frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}
\] |
|---|---|
+-commutative [=>]25.6% | \[ \frac{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} + \left(-b_2\right)}}{a}
\] |
unsub-neg [=>]25.6% | \[ \frac{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}
\] |
Taylor expanded in b_2 around -inf 62.3%
Simplified62.3%
[Start]62.3% | \[ \frac{-2 \cdot b_2}{a}
\] |
|---|---|
*-commutative [=>]62.3% | \[ \frac{\color{blue}{b_2 \cdot -2}}{a}
\] |
if -inf.0 < (/.f64 (+.f64 (neg.f64 b_2) (sqrt.f64 (-.f64 (*.f64 b_2 b_2) (*.f64 a c)))) a) < -2.0000000000000001e-253 or 0.0 < (/.f64 (+.f64 (neg.f64 b_2) (sqrt.f64 (-.f64 (*.f64 b_2 b_2) (*.f64 a c)))) a) < 2.00000000000000004e234Initial program 87.1%
Simplified87.1%
[Start]87.1% | \[ \frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}
\] |
|---|---|
+-commutative [=>]87.1% | \[ \frac{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} + \left(-b_2\right)}}{a}
\] |
unsub-neg [=>]87.1% | \[ \frac{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}
\] |
if -2.0000000000000001e-253 < (/.f64 (+.f64 (neg.f64 b_2) (sqrt.f64 (-.f64 (*.f64 b_2 b_2) (*.f64 a c)))) a) < 0.0Initial program 17.3%
Simplified17.3%
[Start]17.3% | \[ \frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}
\] |
|---|---|
+-commutative [=>]17.3% | \[ \frac{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} + \left(-b_2\right)}}{a}
\] |
unsub-neg [=>]17.3% | \[ \frac{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}
\] |
Taylor expanded in b_2 around inf 100.0%
if 2.00000000000000004e234 < (/.f64 (+.f64 (neg.f64 b_2) (sqrt.f64 (-.f64 (*.f64 b_2 b_2) (*.f64 a c)))) a) Initial program 9.4%
Simplified9.4%
[Start]9.4% | \[ \frac{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}
\] |
|---|---|
+-commutative [=>]9.4% | \[ \frac{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} + \left(-b_2\right)}}{a}
\] |
unsub-neg [=>]9.4% | \[ \frac{\color{blue}{\sqrt{b_2 \cdot b_2 - a \cdot c} - b_2}}{a}
\] |
Taylor expanded in b_2 around -inf 34.6%
Applied egg-rr54.7%
[Start]34.6% | \[ -2 \cdot \frac{b_2}{a} + \left(0.125 \cdot \frac{{c}^{2} \cdot a}{{b_2}^{3}} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
|---|---|
add-cbrt-cube [=>]34.6% | \[ -2 \cdot \frac{b_2}{a} + \left(\color{blue}{\sqrt[3]{\left(\left(0.125 \cdot \frac{{c}^{2} \cdot a}{{b_2}^{3}}\right) \cdot \left(0.125 \cdot \frac{{c}^{2} \cdot a}{{b_2}^{3}}\right)\right) \cdot \left(0.125 \cdot \frac{{c}^{2} \cdot a}{{b_2}^{3}}\right)}} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
pow1/3 [=>]53.7% | \[ -2 \cdot \frac{b_2}{a} + \left(\color{blue}{{\left(\left(\left(0.125 \cdot \frac{{c}^{2} \cdot a}{{b_2}^{3}}\right) \cdot \left(0.125 \cdot \frac{{c}^{2} \cdot a}{{b_2}^{3}}\right)\right) \cdot \left(0.125 \cdot \frac{{c}^{2} \cdot a}{{b_2}^{3}}\right)\right)}^{0.3333333333333333}} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
pow3 [=>]53.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\color{blue}{\left({\left(0.125 \cdot \frac{{c}^{2} \cdot a}{{b_2}^{3}}\right)}^{3}\right)}}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
*-commutative [=>]53.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\left({\color{blue}{\left(\frac{{c}^{2} \cdot a}{{b_2}^{3}} \cdot 0.125\right)}}^{3}\right)}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
unpow-prod-down [=>]53.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\color{blue}{\left({\left(\frac{{c}^{2} \cdot a}{{b_2}^{3}}\right)}^{3} \cdot {0.125}^{3}\right)}}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
div-inv [=>]53.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\left({\color{blue}{\left(\left({c}^{2} \cdot a\right) \cdot \frac{1}{{b_2}^{3}}\right)}}^{3} \cdot {0.125}^{3}\right)}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
*-commutative [=>]53.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\left({\left(\color{blue}{\left(a \cdot {c}^{2}\right)} \cdot \frac{1}{{b_2}^{3}}\right)}^{3} \cdot {0.125}^{3}\right)}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
unpow2 [=>]53.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\left({\left(\left(a \cdot \color{blue}{\left(c \cdot c\right)}\right) \cdot \frac{1}{{b_2}^{3}}\right)}^{3} \cdot {0.125}^{3}\right)}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
pow-flip [=>]54.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\left({\left(\left(a \cdot \left(c \cdot c\right)\right) \cdot \color{blue}{{b_2}^{\left(-3\right)}}\right)}^{3} \cdot {0.125}^{3}\right)}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
metadata-eval [=>]54.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\left({\left(\left(a \cdot \left(c \cdot c\right)\right) \cdot {b_2}^{\color{blue}{-3}}\right)}^{3} \cdot {0.125}^{3}\right)}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
metadata-eval [=>]54.7% | \[ -2 \cdot \frac{b_2}{a} + \left({\left({\left(\left(a \cdot \left(c \cdot c\right)\right) \cdot {b_2}^{-3}\right)}^{3} \cdot \color{blue}{0.001953125}\right)}^{0.3333333333333333} + 0.5 \cdot \frac{c}{b_2}\right)
\] |
Final simplification73.0%
| Alternative 1 | |
|---|---|
| Accuracy | 69.3% |
| Cost | 49424 |
| Alternative 2 | |
|---|---|
| Accuracy | 65.5% |
| Cost | 20232 |
| Alternative 3 | |
|---|---|
| Accuracy | 64.7% |
| Cost | 14224 |
| Alternative 4 | |
|---|---|
| Accuracy | 64.5% |
| Cost | 13968 |
| Alternative 5 | |
|---|---|
| Accuracy | 61.5% |
| Cost | 8336 |
| Alternative 6 | |
|---|---|
| Accuracy | 61.1% |
| Cost | 8336 |
| Alternative 7 | |
|---|---|
| Accuracy | 57.6% |
| Cost | 7704 |
| Alternative 8 | |
|---|---|
| Accuracy | 56.3% |
| Cost | 7700 |
| Alternative 9 | |
|---|---|
| Accuracy | 56.3% |
| Cost | 7700 |
| Alternative 10 | |
|---|---|
| Accuracy | 61.7% |
| Cost | 7688 |
| Alternative 11 | |
|---|---|
| Accuracy | 61.3% |
| Cost | 7436 |
| Alternative 12 | |
|---|---|
| Accuracy | 56.4% |
| Cost | 1100 |
| Alternative 13 | |
|---|---|
| Accuracy | 55.5% |
| Cost | 964 |
| Alternative 14 | |
|---|---|
| Accuracy | 54.6% |
| Cost | 840 |
| Alternative 15 | |
|---|---|
| Accuracy | 55.5% |
| Cost | 840 |
| Alternative 16 | |
|---|---|
| Accuracy | 38.4% |
| Cost | 452 |
| Alternative 17 | |
|---|---|
| Accuracy | 53.4% |
| Cost | 452 |
| Alternative 18 | |
|---|---|
| Accuracy | 18.4% |
| Cost | 388 |
| Alternative 19 | |
|---|---|
| Accuracy | 9.2% |
| Cost | 192 |
herbie shell --seed 2023255
(FPCore (a b_2 c)
:name "quad2p (problem 3.2.1, positive)"
:precision binary64
(/ (+ (- b_2) (sqrt (- (* b_2 b_2) (* a c)))) a))