| Alternative 1 | |
|---|---|
| Error | 0.8 |
| Cost | 2249 |
(FPCore (x y z t a) :precision binary64 (/ (- (* x y) (* (* z 9.0) t)) (* a 2.0)))
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (+ (* x y) (* t (* z -9.0)))))
(if (<= t_1 -5e+268)
(+ (* -4.5 (/ z (/ a t))) (/ (* y (/ x a)) 2.0))
(if (<= t_1 2e+176)
(+ (* -4.5 (/ (* z t) a)) (* 0.5 (/ (* x y) a)))
(fma -4.5 (/ t (/ a z)) (* 0.5 (/ y (/ a x))))))))double code(double x, double y, double z, double t, double a) {
return ((x * y) - ((z * 9.0) * t)) / (a * 2.0);
}
double code(double x, double y, double z, double t, double a) {
double t_1 = (x * y) + (t * (z * -9.0));
double tmp;
if (t_1 <= -5e+268) {
tmp = (-4.5 * (z / (a / t))) + ((y * (x / a)) / 2.0);
} else if (t_1 <= 2e+176) {
tmp = (-4.5 * ((z * t) / a)) + (0.5 * ((x * y) / a));
} else {
tmp = fma(-4.5, (t / (a / z)), (0.5 * (y / (a / x))));
}
return tmp;
}
function code(x, y, z, t, a) return Float64(Float64(Float64(x * y) - Float64(Float64(z * 9.0) * t)) / Float64(a * 2.0)) end
function code(x, y, z, t, a) t_1 = Float64(Float64(x * y) + Float64(t * Float64(z * -9.0))) tmp = 0.0 if (t_1 <= -5e+268) tmp = Float64(Float64(-4.5 * Float64(z / Float64(a / t))) + Float64(Float64(y * Float64(x / a)) / 2.0)); elseif (t_1 <= 2e+176) tmp = Float64(Float64(-4.5 * Float64(Float64(z * t) / a)) + Float64(0.5 * Float64(Float64(x * y) / a))); else tmp = fma(-4.5, Float64(t / Float64(a / z)), Float64(0.5 * Float64(y / Float64(a / x)))); end return tmp end
code[x_, y_, z_, t_, a_] := N[(N[(N[(x * y), $MachinePrecision] - N[(N[(z * 9.0), $MachinePrecision] * t), $MachinePrecision]), $MachinePrecision] / N[(a * 2.0), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(x * y), $MachinePrecision] + N[(t * N[(z * -9.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -5e+268], N[(N[(-4.5 * N[(z / N[(a / t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(y * N[(x / a), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 2e+176], N[(N[(-4.5 * N[(N[(z * t), $MachinePrecision] / a), $MachinePrecision]), $MachinePrecision] + N[(0.5 * N[(N[(x * y), $MachinePrecision] / a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(-4.5 * N[(t / N[(a / z), $MachinePrecision]), $MachinePrecision] + N[(0.5 * N[(y / N[(a / x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}
\begin{array}{l}
t_1 := x \cdot y + t \cdot \left(z \cdot -9\right)\\
\mathbf{if}\;t_1 \leq -5 \cdot 10^{+268}:\\
\;\;\;\;-4.5 \cdot \frac{z}{\frac{a}{t}} + \frac{y \cdot \frac{x}{a}}{2}\\
\mathbf{elif}\;t_1 \leq 2 \cdot 10^{+176}:\\
\;\;\;\;-4.5 \cdot \frac{z \cdot t}{a} + 0.5 \cdot \frac{x \cdot y}{a}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-4.5, \frac{t}{\frac{a}{z}}, 0.5 \cdot \frac{y}{\frac{a}{x}}\right)\\
\end{array}
| Original | 7.9 |
|---|---|
| Target | 5.7 |
| Herbie | 1.0 |
if (-.f64 (*.f64 x y) (*.f64 (*.f64 z 9) t)) < -5.0000000000000002e268Initial program 45.8
Simplified45.2
[Start]45.8 | \[ \frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}
\] |
|---|---|
sub-neg [=>]45.8 | \[ \frac{\color{blue}{x \cdot y + \left(-\left(z \cdot 9\right) \cdot t\right)}}{a \cdot 2}
\] |
remove-double-neg [<=]45.8 | \[ \frac{\color{blue}{\left(-\left(-x \cdot y\right)\right)} + \left(-\left(z \cdot 9\right) \cdot t\right)}{a \cdot 2}
\] |
distribute-neg-in [<=]45.8 | \[ \frac{\color{blue}{-\left(\left(-x \cdot y\right) + \left(z \cdot 9\right) \cdot t\right)}}{a \cdot 2}
\] |
+-commutative [<=]45.8 | \[ \frac{-\color{blue}{\left(\left(z \cdot 9\right) \cdot t + \left(-x \cdot y\right)\right)}}{a \cdot 2}
\] |
sub-neg [<=]45.8 | \[ \frac{-\color{blue}{\left(\left(z \cdot 9\right) \cdot t - x \cdot y\right)}}{a \cdot 2}
\] |
neg-mul-1 [=>]45.8 | \[ \frac{\color{blue}{-1 \cdot \left(\left(z \cdot 9\right) \cdot t - x \cdot y\right)}}{a \cdot 2}
\] |
associate-/l* [=>]45.8 | \[ \color{blue}{\frac{-1}{\frac{a \cdot 2}{\left(z \cdot 9\right) \cdot t - x \cdot y}}}
\] |
associate-/r/ [=>]45.8 | \[ \color{blue}{\frac{-1}{a \cdot 2} \cdot \left(\left(z \cdot 9\right) \cdot t - x \cdot y\right)}
\] |
sub-neg [=>]45.8 | \[ \frac{-1}{a \cdot 2} \cdot \color{blue}{\left(\left(z \cdot 9\right) \cdot t + \left(-x \cdot y\right)\right)}
\] |
+-commutative [=>]45.8 | \[ \frac{-1}{a \cdot 2} \cdot \color{blue}{\left(\left(-x \cdot y\right) + \left(z \cdot 9\right) \cdot t\right)}
\] |
neg-sub0 [=>]45.8 | \[ \frac{-1}{a \cdot 2} \cdot \left(\color{blue}{\left(0 - x \cdot y\right)} + \left(z \cdot 9\right) \cdot t\right)
\] |
associate-+l- [=>]45.8 | \[ \frac{-1}{a \cdot 2} \cdot \color{blue}{\left(0 - \left(x \cdot y - \left(z \cdot 9\right) \cdot t\right)\right)}
\] |
sub0-neg [=>]45.8 | \[ \frac{-1}{a \cdot 2} \cdot \color{blue}{\left(-\left(x \cdot y - \left(z \cdot 9\right) \cdot t\right)\right)}
\] |
distribute-rgt-neg-out [=>]45.8 | \[ \color{blue}{-\frac{-1}{a \cdot 2} \cdot \left(x \cdot y - \left(z \cdot 9\right) \cdot t\right)}
\] |
distribute-lft-neg-in [=>]45.8 | \[ \color{blue}{\left(-\frac{-1}{a \cdot 2}\right) \cdot \left(x \cdot y - \left(z \cdot 9\right) \cdot t\right)}
\] |
Applied egg-rr45.2
Applied egg-rr24.1
Taylor expanded in a around 0 23.8
Simplified0.4
[Start]23.8 | \[ -4.5 \cdot \frac{t \cdot z}{a} + \frac{\frac{x}{\frac{a}{y}}}{2}
\] |
|---|---|
*-commutative [<=]23.8 | \[ -4.5 \cdot \frac{\color{blue}{z \cdot t}}{a} + \frac{\frac{x}{\frac{a}{y}}}{2}
\] |
associate-/l* [=>]0.4 | \[ -4.5 \cdot \color{blue}{\frac{z}{\frac{a}{t}}} + \frac{\frac{x}{\frac{a}{y}}}{2}
\] |
Applied egg-rr0.4
if -5.0000000000000002e268 < (-.f64 (*.f64 x y) (*.f64 (*.f64 z 9) t)) < 2e176Initial program 0.8
Simplified0.9
[Start]0.8 | \[ \frac{x \cdot y - \left(z \cdot 9\right) \cdot t}{a \cdot 2}
\] |
|---|---|
sub-neg [=>]0.8 | \[ \frac{\color{blue}{x \cdot y + \left(-\left(z \cdot 9\right) \cdot t\right)}}{a \cdot 2}
\] |
remove-double-neg [<=]0.8 | \[ \frac{\color{blue}{\left(-\left(-x \cdot y\right)\right)} + \left(-\left(z \cdot 9\right) \cdot t\right)}{a \cdot 2}
\] |
distribute-neg-in [<=]0.8 | \[ \frac{\color{blue}{-\left(\left(-x \cdot y\right) + \left(z \cdot 9\right) \cdot t\right)}}{a \cdot 2}
\] |
+-commutative [<=]0.8 | \[ \frac{-\color{blue}{\left(\left(z \cdot 9\right) \cdot t + \left(-x \cdot y\right)\right)}}{a \cdot 2}
\] |
sub-neg [<=]0.8 | \[ \frac{-\color{blue}{\left(\left(z \cdot 9\right) \cdot t - x \cdot y\right)}}{a \cdot 2}
\] |
neg-mul-1 [=>]0.8 | \[ \frac{\color{blue}{-1 \cdot \left(\left(z \cdot 9\right) \cdot t - x \cdot y\right)}}{a \cdot 2}
\] |
associate-/l* [=>]1.1 | \[ \color{blue}{\frac{-1}{\frac{a \cdot 2}{\left(z \cdot 9\right) \cdot t - x \cdot y}}}
\] |
associate-/r/ [=>]0.9 | \[ \color{blue}{\frac{-1}{a \cdot 2} \cdot \left(\left(z \cdot 9\right) \cdot t - x \cdot y\right)}
\] |
sub-neg [=>]0.9 | \[ \frac{-1}{a \cdot 2} \cdot \color{blue}{\left(\left(z \cdot 9\right) \cdot t + \left(-x \cdot y\right)\right)}
\] |
+-commutative [=>]0.9 | \[ \frac{-1}{a \cdot 2} \cdot \color{blue}{\left(\left(-x \cdot y\right) + \left(z \cdot 9\right) \cdot t\right)}
\] |
neg-sub0 [=>]0.9 | \[ \frac{-1}{a \cdot 2} \cdot \left(\color{blue}{\left(0 - x \cdot y\right)} + \left(z \cdot 9\right) \cdot t\right)
\] |
associate-+l- [=>]0.9 | \[ \frac{-1}{a \cdot 2} \cdot \color{blue}{\left(0 - \left(x \cdot y - \left(z \cdot 9\right) \cdot t\right)\right)}
\] |
sub0-neg [=>]0.9 | \[ \frac{-1}{a \cdot 2} \cdot \color{blue}{\left(-\left(x \cdot y - \left(z \cdot 9\right) \cdot t\right)\right)}
\] |
distribute-rgt-neg-out [=>]0.9 | \[ \color{blue}{-\frac{-1}{a \cdot 2} \cdot \left(x \cdot y - \left(z \cdot 9\right) \cdot t\right)}
\] |
distribute-lft-neg-in [=>]0.9 | \[ \color{blue}{\left(-\frac{-1}{a \cdot 2}\right) \cdot \left(x \cdot y - \left(z \cdot 9\right) \cdot t\right)}
\] |
Taylor expanded in x around 0 0.8
if 2e176 < (-.f64 (*.f64 x y) (*.f64 (*.f64 z 9) t)) Initial program 25.0
Taylor expanded in x around 0 24.9
Simplified2.1
[Start]24.9 | \[ -4.5 \cdot \frac{t \cdot z}{a} + 0.5 \cdot \frac{y \cdot x}{a}
\] |
|---|---|
fma-def [=>]24.9 | \[ \color{blue}{\mathsf{fma}\left(-4.5, \frac{t \cdot z}{a}, 0.5 \cdot \frac{y \cdot x}{a}\right)}
\] |
associate-/l* [=>]14.9 | \[ \mathsf{fma}\left(-4.5, \color{blue}{\frac{t}{\frac{a}{z}}}, 0.5 \cdot \frac{y \cdot x}{a}\right)
\] |
associate-/l* [=>]2.1 | \[ \mathsf{fma}\left(-4.5, \frac{t}{\frac{a}{z}}, 0.5 \cdot \color{blue}{\frac{y}{\frac{a}{x}}}\right)
\] |
Final simplification1.0
| Alternative 1 | |
|---|---|
| Error | 0.8 |
| Cost | 2249 |
| Alternative 2 | |
|---|---|
| Error | 1.2 |
| Cost | 2248 |
| Alternative 3 | |
|---|---|
| Error | 0.8 |
| Cost | 2248 |
| Alternative 4 | |
|---|---|
| Error | 4.6 |
| Cost | 2120 |
| Alternative 5 | |
|---|---|
| Error | 25.1 |
| Cost | 1504 |
| Alternative 6 | |
|---|---|
| Error | 24.9 |
| Cost | 1241 |
| Alternative 7 | |
|---|---|
| Error | 8.4 |
| Cost | 964 |
| Alternative 8 | |
|---|---|
| Error | 23.6 |
| Cost | 713 |
| Alternative 9 | |
|---|---|
| Error | 23.3 |
| Cost | 712 |
| Alternative 10 | |
|---|---|
| Error | 23.4 |
| Cost | 712 |
| Alternative 11 | |
|---|---|
| Error | 23.4 |
| Cost | 712 |
| Alternative 12 | |
|---|---|
| Error | 33.0 |
| Cost | 448 |
| Alternative 13 | |
|---|---|
| Error | 33.2 |
| Cost | 448 |
herbie shell --seed 2023066
(FPCore (x y z t a)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, I"
:precision binary64
:herbie-target
(if (< a -2.090464557976709e+86) (- (* 0.5 (/ (* y x) a)) (* 4.5 (/ t (/ a z)))) (if (< a 2.144030707833976e+99) (/ (- (* x y) (* z (* 9.0 t))) (* a 2.0)) (- (* (/ y a) (* x 0.5)) (* (/ t a) (* z 4.5)))))
(/ (- (* x y) (* (* z 9.0) t)) (* a 2.0)))