Average Error: 5.5 → 1.6
Time: 28.8s
Precision: 64
\[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
\[\begin{array}{l} \mathbf{if}\;x \le -2.056417521339258901908501882338352385918 \cdot 10^{-78} \lor \neg \left(x \le 8052446072453817947468355421429087338496\right):\\ \;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(27 \cdot k\right) \cdot j\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot t\right) \cdot z - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \end{array}\]
\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k
\begin{array}{l}
\mathbf{if}\;x \le -2.056417521339258901908501882338352385918 \cdot 10^{-78} \lor \neg \left(x \le 8052446072453817947468355421429087338496\right):\\
\;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(27 \cdot k\right) \cdot j\\

\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot t\right) \cdot z - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r478772 = x;
        double r478773 = 18.0;
        double r478774 = r478772 * r478773;
        double r478775 = y;
        double r478776 = r478774 * r478775;
        double r478777 = z;
        double r478778 = r478776 * r478777;
        double r478779 = t;
        double r478780 = r478778 * r478779;
        double r478781 = a;
        double r478782 = 4.0;
        double r478783 = r478781 * r478782;
        double r478784 = r478783 * r478779;
        double r478785 = r478780 - r478784;
        double r478786 = b;
        double r478787 = c;
        double r478788 = r478786 * r478787;
        double r478789 = r478785 + r478788;
        double r478790 = r478772 * r478782;
        double r478791 = i;
        double r478792 = r478790 * r478791;
        double r478793 = r478789 - r478792;
        double r478794 = j;
        double r478795 = 27.0;
        double r478796 = r478794 * r478795;
        double r478797 = k;
        double r478798 = r478796 * r478797;
        double r478799 = r478793 - r478798;
        return r478799;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r478800 = x;
        double r478801 = -2.056417521339259e-78;
        bool r478802 = r478800 <= r478801;
        double r478803 = 8.052446072453818e+39;
        bool r478804 = r478800 <= r478803;
        double r478805 = !r478804;
        bool r478806 = r478802 || r478805;
        double r478807 = 18.0;
        double r478808 = r478800 * r478807;
        double r478809 = y;
        double r478810 = t;
        double r478811 = z;
        double r478812 = r478810 * r478811;
        double r478813 = r478809 * r478812;
        double r478814 = r478808 * r478813;
        double r478815 = a;
        double r478816 = 4.0;
        double r478817 = r478815 * r478816;
        double r478818 = r478817 * r478810;
        double r478819 = r478814 - r478818;
        double r478820 = b;
        double r478821 = c;
        double r478822 = r478820 * r478821;
        double r478823 = r478819 + r478822;
        double r478824 = r478800 * r478816;
        double r478825 = i;
        double r478826 = r478824 * r478825;
        double r478827 = r478823 - r478826;
        double r478828 = 27.0;
        double r478829 = k;
        double r478830 = r478828 * r478829;
        double r478831 = j;
        double r478832 = r478830 * r478831;
        double r478833 = r478827 - r478832;
        double r478834 = r478808 * r478809;
        double r478835 = r478834 * r478810;
        double r478836 = r478835 * r478811;
        double r478837 = r478836 - r478818;
        double r478838 = r478837 + r478822;
        double r478839 = r478838 - r478826;
        double r478840 = r478831 * r478828;
        double r478841 = r478840 * r478829;
        double r478842 = r478839 - r478841;
        double r478843 = r478806 ? r478833 : r478842;
        return r478843;
}

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

Bits error versus c

Bits error versus i

Bits error versus j

Bits error versus k

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original5.5
Target1.6
Herbie1.6
\[\begin{array}{l} \mathbf{if}\;t \lt -1.62108153975413982700795070153457058168 \cdot 10^{-69}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \mathbf{elif}\;t \lt 165.6802794380522243500308832153677940369:\\ \;\;\;\;\left(\left(18 \cdot y\right) \cdot \left(x \cdot \left(z \cdot t\right)\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) + \left(c \cdot b - 27 \cdot \left(k \cdot j\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(18 \cdot t\right) \cdot \left(\left(x \cdot y\right) \cdot z\right) - \left(a \cdot t + i \cdot x\right) \cdot 4\right) - \left(\left(k \cdot j\right) \cdot 27 - c \cdot b\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -2.056417521339259e-78 or 8.052446072453818e+39 < x

    1. Initial program 10.8

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Using strategy rm
    3. Applied associate-*l*8.3

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    4. Simplified8.3

      \[\leadsto \left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \color{blue}{\left(t \cdot z\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    5. Using strategy rm
    6. Applied associate-*l*2.0

      \[\leadsto \left(\left(\left(\color{blue}{\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    7. Using strategy rm
    8. Applied pow12.0

      \[\leadsto \left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot \color{blue}{{k}^{1}}\]
    9. Applied pow12.0

      \[\leadsto \left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot \color{blue}{{27}^{1}}\right) \cdot {k}^{1}\]
    10. Applied pow12.0

      \[\leadsto \left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(\color{blue}{{j}^{1}} \cdot {27}^{1}\right) \cdot {k}^{1}\]
    11. Applied pow-prod-down2.0

      \[\leadsto \left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \color{blue}{{\left(j \cdot 27\right)}^{1}} \cdot {k}^{1}\]
    12. Applied pow-prod-down2.0

      \[\leadsto \left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \color{blue}{{\left(\left(j \cdot 27\right) \cdot k\right)}^{1}}\]
    13. Simplified1.9

      \[\leadsto \left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - {\color{blue}{\left(27 \cdot \left(k \cdot j\right)\right)}}^{1}\]
    14. Using strategy rm
    15. Applied associate-*r*2.0

      \[\leadsto \left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - {\color{blue}{\left(\left(27 \cdot k\right) \cdot j\right)}}^{1}\]

    if -2.056417521339259e-78 < x < 8.052446072453818e+39

    1. Initial program 1.8

      \[\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z\right) \cdot t - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    2. Using strategy rm
    3. Applied associate-*l*4.4

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(x \cdot 18\right) \cdot y\right) \cdot \left(z \cdot t\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    4. Simplified4.4

      \[\leadsto \left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot \color{blue}{\left(t \cdot z\right)} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
    5. Using strategy rm
    6. Applied associate-*r*1.3

      \[\leadsto \left(\left(\left(\color{blue}{\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot t\right) \cdot z} - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -2.056417521339258901908501882338352385918 \cdot 10^{-78} \lor \neg \left(x \le 8052446072453817947468355421429087338496\right):\\ \;\;\;\;\left(\left(\left(\left(x \cdot 18\right) \cdot \left(y \cdot \left(t \cdot z\right)\right) - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(27 \cdot k\right) \cdot j\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\left(\left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot t\right) \cdot z - \left(a \cdot 4\right) \cdot t\right) + b \cdot c\right) - \left(x \cdot 4\right) \cdot i\right) - \left(j \cdot 27\right) \cdot k\\ \end{array}\]

Reproduce

herbie shell --seed 2019322 
(FPCore (x y z t a b c i j k)
  :name "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, E"
  :precision binary64

  :herbie-target
  (if (< t -1.6210815397541398e-69) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b))) (if (< t 165.68027943805222) (+ (- (* (* 18 y) (* x (* z t))) (* (+ (* a t) (* i x)) 4)) (- (* c b) (* 27 (* k j)))) (- (- (* (* 18 t) (* (* x y) z)) (* (+ (* a t) (* i x)) 4)) (- (* (* k j) 27) (* c b)))))

  (- (- (+ (- (* (* (* (* x 18) y) z) t) (* (* a 4) t)) (* b c)) (* (* x 4) i)) (* (* j 27) k)))