Average Error: 5.5 → 5.0
Time: 12.9s
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}\;t \le -7.924535231213678250824947916484516272463 \cdot 10^{-47} \lor \neg \left(t \le 2.350638188745770674030561433856451073657 \cdot 10^{-124}\right):\\ \;\;\;\;t \cdot \left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right) - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\right)\\ \mathbf{else}:\\ \;\;\;\;t \cdot \left(0 - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\right)\\ \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}\;t \le -7.924535231213678250824947916484516272463 \cdot 10^{-47} \lor \neg \left(t \le 2.350638188745770674030561433856451073657 \cdot 10^{-124}\right):\\
\;\;\;\;t \cdot \left(18 \cdot \left(x \cdot \left(z \cdot y\right)\right) - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + \left(j \cdot 27\right) \cdot k\right)\right)\\

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

\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 r535224 = x;
        double r535225 = 18.0;
        double r535226 = r535224 * r535225;
        double r535227 = y;
        double r535228 = r535226 * r535227;
        double r535229 = z;
        double r535230 = r535228 * r535229;
        double r535231 = t;
        double r535232 = r535230 * r535231;
        double r535233 = a;
        double r535234 = 4.0;
        double r535235 = r535233 * r535234;
        double r535236 = r535235 * r535231;
        double r535237 = r535232 - r535236;
        double r535238 = b;
        double r535239 = c;
        double r535240 = r535238 * r535239;
        double r535241 = r535237 + r535240;
        double r535242 = r535224 * r535234;
        double r535243 = i;
        double r535244 = r535242 * r535243;
        double r535245 = r535241 - r535244;
        double r535246 = j;
        double r535247 = 27.0;
        double r535248 = r535246 * r535247;
        double r535249 = k;
        double r535250 = r535248 * r535249;
        double r535251 = r535245 - r535250;
        return r535251;
}

double f(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r535252 = t;
        double r535253 = -7.924535231213678e-47;
        bool r535254 = r535252 <= r535253;
        double r535255 = 2.3506381887457707e-124;
        bool r535256 = r535252 <= r535255;
        double r535257 = !r535256;
        bool r535258 = r535254 || r535257;
        double r535259 = 18.0;
        double r535260 = x;
        double r535261 = z;
        double r535262 = y;
        double r535263 = r535261 * r535262;
        double r535264 = r535260 * r535263;
        double r535265 = r535259 * r535264;
        double r535266 = a;
        double r535267 = 4.0;
        double r535268 = r535266 * r535267;
        double r535269 = r535265 - r535268;
        double r535270 = r535252 * r535269;
        double r535271 = b;
        double r535272 = c;
        double r535273 = r535271 * r535272;
        double r535274 = r535260 * r535267;
        double r535275 = i;
        double r535276 = r535274 * r535275;
        double r535277 = j;
        double r535278 = 27.0;
        double r535279 = r535277 * r535278;
        double r535280 = k;
        double r535281 = r535279 * r535280;
        double r535282 = r535276 + r535281;
        double r535283 = r535273 - r535282;
        double r535284 = r535270 + r535283;
        double r535285 = 0.0;
        double r535286 = r535285 - r535268;
        double r535287 = r535252 * r535286;
        double r535288 = r535278 * r535280;
        double r535289 = r535277 * r535288;
        double r535290 = r535276 + r535289;
        double r535291 = r535273 - r535290;
        double r535292 = r535287 + r535291;
        double r535293 = r535258 ? r535284 : r535292;
        return r535293;
}

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.7
Herbie5.0
\[\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 3 regimes
  2. if t < -7.924535231213678e-47

    1. Initial program 2.4

      \[\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. Simplified2.4

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

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

    if -7.924535231213678e-47 < t < 2.3506381887457707e-124

    1. Initial program 8.4

      \[\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. Simplified8.4

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

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

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

    if 2.3506381887457707e-124 < t

    1. Initial program 3.1

      \[\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. Simplified3.1

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

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

      \[\leadsto \color{blue}{\left(\sqrt{t} \cdot \sqrt{t}\right)} \cdot \left(\left(\left(x \cdot 18\right) \cdot y\right) \cdot z - a \cdot 4\right) + \left(b \cdot c - \left(\left(x \cdot 4\right) \cdot i + j \cdot \left(27 \cdot k\right)\right)\right)\]
    7. Applied associate-*l*3.2

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

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

Reproduce

herbie shell --seed 1978988140 
(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.680279438052224) (+ (- (* (* 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)))