Average Error: 2.1 → 0.3
Time: 17.7s
Precision: 64
\[\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b\]
\[\begin{array}{l} \mathbf{if}\;a \le -44.4689510467186224 \lor \neg \left(a \le 5.91085096997945351 \cdot 10^{-37}\right):\\ \;\;\;\;\left(x + y \cdot z\right) + a \cdot \left(t + z \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(\left(\sqrt[3]{a \cdot z} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\\ \end{array}\]
\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b
\begin{array}{l}
\mathbf{if}\;a \le -44.4689510467186224 \lor \neg \left(a \le 5.91085096997945351 \cdot 10^{-37}\right):\\
\;\;\;\;\left(x + y \cdot z\right) + a \cdot \left(t + z \cdot b\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(\left(\sqrt[3]{a \cdot z} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r492211 = x;
        double r492212 = y;
        double r492213 = z;
        double r492214 = r492212 * r492213;
        double r492215 = r492211 + r492214;
        double r492216 = t;
        double r492217 = a;
        double r492218 = r492216 * r492217;
        double r492219 = r492215 + r492218;
        double r492220 = r492217 * r492213;
        double r492221 = b;
        double r492222 = r492220 * r492221;
        double r492223 = r492219 + r492222;
        return r492223;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r492224 = a;
        double r492225 = -44.46895104671862;
        bool r492226 = r492224 <= r492225;
        double r492227 = 5.9108509699794535e-37;
        bool r492228 = r492224 <= r492227;
        double r492229 = !r492228;
        bool r492230 = r492226 || r492229;
        double r492231 = x;
        double r492232 = y;
        double r492233 = z;
        double r492234 = r492232 * r492233;
        double r492235 = r492231 + r492234;
        double r492236 = t;
        double r492237 = b;
        double r492238 = r492233 * r492237;
        double r492239 = r492236 + r492238;
        double r492240 = r492224 * r492239;
        double r492241 = r492235 + r492240;
        double r492242 = r492236 * r492224;
        double r492243 = r492235 + r492242;
        double r492244 = r492224 * r492233;
        double r492245 = cbrt(r492244);
        double r492246 = cbrt(r492237);
        double r492247 = r492245 * r492246;
        double r492248 = r492244 * r492237;
        double r492249 = cbrt(r492248);
        double r492250 = r492247 * r492249;
        double r492251 = r492250 * r492249;
        double r492252 = r492243 + r492251;
        double r492253 = r492230 ? r492241 : r492252;
        return r492253;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original2.1
Target0.3
Herbie0.3
\[\begin{array}{l} \mathbf{if}\;z \lt -11820553527347888000:\\ \;\;\;\;z \cdot \left(b \cdot a + y\right) + \left(x + t \cdot a\right)\\ \mathbf{elif}\;z \lt 4.75897431883642871 \cdot 10^{-122}:\\ \;\;\;\;\left(b \cdot z + t\right) \cdot a + \left(z \cdot y + x\right)\\ \mathbf{else}:\\ \;\;\;\;z \cdot \left(b \cdot a + y\right) + \left(x + t \cdot a\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if a < -44.46895104671862 or 5.9108509699794535e-37 < a

    1. Initial program 4.6

      \[\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b\]
    2. Using strategy rm
    3. Applied associate-+l+4.6

      \[\leadsto \color{blue}{\left(x + y \cdot z\right) + \left(t \cdot a + \left(a \cdot z\right) \cdot b\right)}\]
    4. Simplified0.1

      \[\leadsto \left(x + y \cdot z\right) + \color{blue}{a \cdot \left(t + z \cdot b\right)}\]

    if -44.46895104671862 < a < 5.9108509699794535e-37

    1. Initial program 0.4

      \[\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(a \cdot z\right) \cdot b\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.5

      \[\leadsto \left(\left(x + y \cdot z\right) + t \cdot a\right) + \color{blue}{\left(\sqrt[3]{\left(a \cdot z\right) \cdot b} \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}}\]
    4. Using strategy rm
    5. Applied cbrt-prod0.5

      \[\leadsto \left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(\color{blue}{\left(\sqrt[3]{a \cdot z} \cdot \sqrt[3]{b}\right)} \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -44.4689510467186224 \lor \neg \left(a \le 5.91085096997945351 \cdot 10^{-37}\right):\\ \;\;\;\;\left(x + y \cdot z\right) + a \cdot \left(t + z \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(x + y \cdot z\right) + t \cdot a\right) + \left(\left(\sqrt[3]{a \cdot z} \cdot \sqrt[3]{b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\right) \cdot \sqrt[3]{\left(a \cdot z\right) \cdot b}\\ \end{array}\]

Reproduce

herbie shell --seed 2019199 
(FPCore (x y z t a b)
  :name "Graphics.Rasterific.CubicBezier:cachedBezierAt from Rasterific-0.6.1"

  :herbie-target
  (if (< z -1.1820553527347888e+19) (+ (* z (+ (* b a) y)) (+ x (* t a))) (if (< z 4.7589743188364287e-122) (+ (* (+ (* b z) t) a) (+ (* z y) x)) (+ (* z (+ (* b a) y)) (+ x (* t a)))))

  (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)))