Average Error: 3.5 → 0.5
Time: 4.2s
Precision: 64
\[\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b\]
\[\begin{array}{l} \mathbf{if}\;\left(y \cdot 9\right) \cdot z \le -1.98996444836475591 \cdot 10^{240} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 7.881184043757349 \cdot 10^{221}\right):\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\ \end{array}\]
\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
\begin{array}{l}
\mathbf{if}\;\left(y \cdot 9\right) \cdot z \le -1.98996444836475591 \cdot 10^{240} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 7.881184043757349 \cdot 10^{221}\right):\\
\;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\

\mathbf{else}:\\
\;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r943170 = x;
        double r943171 = 2.0;
        double r943172 = r943170 * r943171;
        double r943173 = y;
        double r943174 = 9.0;
        double r943175 = r943173 * r943174;
        double r943176 = z;
        double r943177 = r943175 * r943176;
        double r943178 = t;
        double r943179 = r943177 * r943178;
        double r943180 = r943172 - r943179;
        double r943181 = a;
        double r943182 = 27.0;
        double r943183 = r943181 * r943182;
        double r943184 = b;
        double r943185 = r943183 * r943184;
        double r943186 = r943180 + r943185;
        return r943186;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r943187 = y;
        double r943188 = 9.0;
        double r943189 = r943187 * r943188;
        double r943190 = z;
        double r943191 = r943189 * r943190;
        double r943192 = -1.989964448364756e+240;
        bool r943193 = r943191 <= r943192;
        double r943194 = 7.881184043757349e+221;
        bool r943195 = r943191 <= r943194;
        double r943196 = !r943195;
        bool r943197 = r943193 || r943196;
        double r943198 = x;
        double r943199 = 2.0;
        double r943200 = r943198 * r943199;
        double r943201 = t;
        double r943202 = r943190 * r943201;
        double r943203 = r943189 * r943202;
        double r943204 = r943200 - r943203;
        double r943205 = a;
        double r943206 = 27.0;
        double r943207 = r943205 * r943206;
        double r943208 = b;
        double r943209 = r943207 * r943208;
        double r943210 = r943204 + r943209;
        double r943211 = r943191 * r943201;
        double r943212 = r943200 - r943211;
        double r943213 = r943206 * r943208;
        double r943214 = r943205 * r943213;
        double r943215 = r943212 + r943214;
        double r943216 = r943197 ? r943210 : r943215;
        return r943216;
}

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

Original3.5
Target2.5
Herbie0.5
\[\begin{array}{l} \mathbf{if}\;y \lt 7.590524218811189 \cdot 10^{-161}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - 9 \cdot \left(y \cdot \left(t \cdot z\right)\right)\right) + \left(a \cdot 27\right) \cdot b\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if (* (* y 9.0) z) < -1.989964448364756e+240 or 7.881184043757349e+221 < (* (* y 9.0) z)

    1. Initial program 32.1

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

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

    if -1.989964448364756e+240 < (* (* y 9.0) z) < 7.881184043757349e+221

    1. Initial program 0.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(y \cdot 9\right) \cdot z \le -1.98996444836475591 \cdot 10^{240} \lor \neg \left(\left(y \cdot 9\right) \cdot z \le 7.881184043757349 \cdot 10^{221}\right):\\ \;\;\;\;\left(x \cdot 2 - \left(y \cdot 9\right) \cdot \left(z \cdot t\right)\right) + \left(a \cdot 27\right) \cdot b\\ \mathbf{else}:\\ \;\;\;\;\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + a \cdot \left(27 \cdot b\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020056 
(FPCore (x y z t a b)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, A"
  :precision binary64

  :herbie-target
  (if (< y 7.590524218811189e-161) (+ (- (* x 2) (* (* (* y 9) z) t)) (* a (* 27 b))) (+ (- (* x 2) (* 9 (* y (* t z)))) (* (* a 27) b)))

  (+ (- (* x 2) (* (* (* y 9) z) t)) (* (* a 27) b)))