Average Error: 3.7 → 3.7
Time: 10.8s
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\]
\[x \cdot 2 - \left(\left(\left(y \cdot 9\right) \cdot z\right) \cdot t - 27 \cdot \left(a \cdot b\right)\right)\]
\left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot 27\right) \cdot b
x \cdot 2 - \left(\left(\left(y \cdot 9\right) \cdot z\right) \cdot t - 27 \cdot \left(a \cdot b\right)\right)
double f(double x, double y, double z, double t, double a, double b) {
        double r448798 = x;
        double r448799 = 2.0;
        double r448800 = r448798 * r448799;
        double r448801 = y;
        double r448802 = 9.0;
        double r448803 = r448801 * r448802;
        double r448804 = z;
        double r448805 = r448803 * r448804;
        double r448806 = t;
        double r448807 = r448805 * r448806;
        double r448808 = r448800 - r448807;
        double r448809 = a;
        double r448810 = 27.0;
        double r448811 = r448809 * r448810;
        double r448812 = b;
        double r448813 = r448811 * r448812;
        double r448814 = r448808 + r448813;
        return r448814;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r448815 = x;
        double r448816 = 2.0;
        double r448817 = r448815 * r448816;
        double r448818 = y;
        double r448819 = 9.0;
        double r448820 = r448818 * r448819;
        double r448821 = z;
        double r448822 = r448820 * r448821;
        double r448823 = t;
        double r448824 = r448822 * r448823;
        double r448825 = 27.0;
        double r448826 = a;
        double r448827 = b;
        double r448828 = r448826 * r448827;
        double r448829 = r448825 * r448828;
        double r448830 = r448824 - r448829;
        double r448831 = r448817 - r448830;
        return r448831;
}

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.7
Target2.7
Herbie3.7
\[\begin{array}{l} \mathbf{if}\;y \lt 7.590524218811188954625810696587370427881 \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) < -6.081241351277884e+164 or 2.2735591035025706e+158 < (* (* y 9.0) z)

    1. Initial program 20.9

      \[\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.9

      \[\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\]
    4. Using strategy rm
    5. Applied associate-*l*1.5

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

    if -6.081241351277884e+164 < (* (* y 9.0) z) < 2.2735591035025706e+158

    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 pow10.4

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

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(a \cdot \color{blue}{{27}^{1}}\right) \cdot {b}^{1}\]
    5. Applied pow10.4

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \left(\color{blue}{{a}^{1}} \cdot {27}^{1}\right) \cdot {b}^{1}\]
    6. Applied pow-prod-down0.4

      \[\leadsto \left(x \cdot 2 - \left(\left(y \cdot 9\right) \cdot z\right) \cdot t\right) + \color{blue}{{\left(a \cdot 27\right)}^{1}} \cdot {b}^{1}\]
    7. Applied pow-prod-down0.4

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

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

    \[\leadsto x \cdot 2 - \left(\left(\left(y \cdot 9\right) \cdot z\right) \cdot t - 27 \cdot \left(a \cdot b\right)\right)\]

Reproduce

herbie shell --seed 2019294 
(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)))