Average Error: 7.7 → 4.3
Time: 10.9s
Precision: 64
\[\frac{x \cdot y - z \cdot t}{a}\]
\[\begin{array}{l} \mathbf{if}\;x \cdot y \le -1.01414647933800124 \cdot 10^{166}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right) + \mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{1}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right)\\ \mathbf{elif}\;x \cdot y \le -3.21143 \cdot 10^{-322}:\\ \;\;\;\;\frac{x \cdot y}{a} - \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \frac{t}{\frac{a}{\sqrt[3]{z}}}\\ \mathbf{elif}\;x \cdot y \le 8.1013163874093183 \cdot 10^{-125}:\\ \;\;\;\;\frac{x}{\frac{a}{y}} - \frac{t \cdot z}{a}\\ \mathbf{elif}\;x \cdot y \le 2.31552892253560307 \cdot 10^{114}:\\ \;\;\;\;1 \cdot \left(\frac{x \cdot y}{a} - \frac{t}{\frac{a}{z}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right) + \mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{1}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right)\\ \end{array}\]
\frac{x \cdot y - z \cdot t}{a}
\begin{array}{l}
\mathbf{if}\;x \cdot y \le -1.01414647933800124 \cdot 10^{166}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right) + \mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{1}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right)\\

\mathbf{elif}\;x \cdot y \le -3.21143 \cdot 10^{-322}:\\
\;\;\;\;\frac{x \cdot y}{a} - \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \frac{t}{\frac{a}{\sqrt[3]{z}}}\\

\mathbf{elif}\;x \cdot y \le 8.1013163874093183 \cdot 10^{-125}:\\
\;\;\;\;\frac{x}{\frac{a}{y}} - \frac{t \cdot z}{a}\\

\mathbf{elif}\;x \cdot y \le 2.31552892253560307 \cdot 10^{114}:\\
\;\;\;\;1 \cdot \left(\frac{x \cdot y}{a} - \frac{t}{\frac{a}{z}}\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right) + \mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{1}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right)\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r904532 = x;
        double r904533 = y;
        double r904534 = r904532 * r904533;
        double r904535 = z;
        double r904536 = t;
        double r904537 = r904535 * r904536;
        double r904538 = r904534 - r904537;
        double r904539 = a;
        double r904540 = r904538 / r904539;
        return r904540;
}

double f(double x, double y, double z, double t, double a) {
        double r904541 = x;
        double r904542 = y;
        double r904543 = r904541 * r904542;
        double r904544 = -1.0141464793380012e+166;
        bool r904545 = r904543 <= r904544;
        double r904546 = 1.0;
        double r904547 = r904541 / r904546;
        double r904548 = a;
        double r904549 = r904542 / r904548;
        double r904550 = t;
        double r904551 = r904550 / r904548;
        double r904552 = sqrt(r904546);
        double r904553 = z;
        double r904554 = r904552 / r904553;
        double r904555 = r904551 / r904554;
        double r904556 = r904552 / r904546;
        double r904557 = r904546 / r904556;
        double r904558 = r904555 * r904557;
        double r904559 = -r904558;
        double r904560 = fma(r904547, r904549, r904559);
        double r904561 = -r904555;
        double r904562 = fma(r904561, r904557, r904558);
        double r904563 = r904560 + r904562;
        double r904564 = -3.2114266979681e-322;
        bool r904565 = r904543 <= r904564;
        double r904566 = r904543 / r904548;
        double r904567 = cbrt(r904553);
        double r904568 = r904567 * r904567;
        double r904569 = r904548 / r904567;
        double r904570 = r904550 / r904569;
        double r904571 = r904568 * r904570;
        double r904572 = r904566 - r904571;
        double r904573 = 8.101316387409318e-125;
        bool r904574 = r904543 <= r904573;
        double r904575 = r904548 / r904542;
        double r904576 = r904541 / r904575;
        double r904577 = r904550 * r904553;
        double r904578 = r904577 / r904548;
        double r904579 = r904576 - r904578;
        double r904580 = 2.315528922535603e+114;
        bool r904581 = r904543 <= r904580;
        double r904582 = r904548 / r904553;
        double r904583 = r904550 / r904582;
        double r904584 = r904566 - r904583;
        double r904585 = r904546 * r904584;
        double r904586 = r904581 ? r904585 : r904563;
        double r904587 = r904574 ? r904579 : r904586;
        double r904588 = r904565 ? r904572 : r904587;
        double r904589 = r904545 ? r904563 : r904588;
        return r904589;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original7.7
Target6.2
Herbie4.3
\[\begin{array}{l} \mathbf{if}\;z \lt -2.46868496869954822 \cdot 10^{170}:\\ \;\;\;\;\frac{y}{a} \cdot x - \frac{t}{a} \cdot z\\ \mathbf{elif}\;z \lt 6.30983112197837121 \cdot 10^{-71}:\\ \;\;\;\;\frac{x \cdot y - z \cdot t}{a}\\ \mathbf{else}:\\ \;\;\;\;\frac{y}{a} \cdot x - \frac{t}{a} \cdot z\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if (* x y) < -1.0141464793380012e+166 or 2.315528922535603e+114 < (* x y)

    1. Initial program 21.8

      \[\frac{x \cdot y - z \cdot t}{a}\]
    2. Using strategy rm
    3. Applied div-sub21.8

      \[\leadsto \color{blue}{\frac{x \cdot y}{a} - \frac{z \cdot t}{a}}\]
    4. Simplified21.8

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{t \cdot z}{a}}\]
    5. Using strategy rm
    6. Applied associate-/l*18.7

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{t}{\frac{a}{z}}}\]
    7. Using strategy rm
    8. Applied div-inv18.7

      \[\leadsto \frac{x \cdot y}{a} - \frac{t}{\color{blue}{a \cdot \frac{1}{z}}}\]
    9. Applied associate-/r*19.1

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{\frac{t}{a}}{\frac{1}{z}}}\]
    10. Using strategy rm
    11. Applied *-un-lft-identity19.1

      \[\leadsto \frac{x \cdot y}{a} - \frac{\frac{t}{a}}{\frac{1}{\color{blue}{1 \cdot z}}}\]
    12. Applied add-sqr-sqrt19.1

      \[\leadsto \frac{x \cdot y}{a} - \frac{\frac{t}{a}}{\frac{\color{blue}{\sqrt{1} \cdot \sqrt{1}}}{1 \cdot z}}\]
    13. Applied times-frac19.1

      \[\leadsto \frac{x \cdot y}{a} - \frac{\frac{t}{a}}{\color{blue}{\frac{\sqrt{1}}{1} \cdot \frac{\sqrt{1}}{z}}}\]
    14. Applied *-un-lft-identity19.1

      \[\leadsto \frac{x \cdot y}{a} - \frac{\frac{t}{\color{blue}{1 \cdot a}}}{\frac{\sqrt{1}}{1} \cdot \frac{\sqrt{1}}{z}}\]
    15. Applied *-un-lft-identity19.1

      \[\leadsto \frac{x \cdot y}{a} - \frac{\frac{\color{blue}{1 \cdot t}}{1 \cdot a}}{\frac{\sqrt{1}}{1} \cdot \frac{\sqrt{1}}{z}}\]
    16. Applied times-frac19.1

      \[\leadsto \frac{x \cdot y}{a} - \frac{\color{blue}{\frac{1}{1} \cdot \frac{t}{a}}}{\frac{\sqrt{1}}{1} \cdot \frac{\sqrt{1}}{z}}\]
    17. Applied times-frac19.1

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{\frac{1}{1}}{\frac{\sqrt{1}}{1}} \cdot \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}}\]
    18. Applied *-un-lft-identity19.1

      \[\leadsto \frac{x \cdot y}{\color{blue}{1 \cdot a}} - \frac{\frac{1}{1}}{\frac{\sqrt{1}}{1}} \cdot \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}\]
    19. Applied times-frac3.2

      \[\leadsto \color{blue}{\frac{x}{1} \cdot \frac{y}{a}} - \frac{\frac{1}{1}}{\frac{\sqrt{1}}{1}} \cdot \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}\]
    20. Applied prod-diff3.2

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{\frac{1}{1}}{\frac{\sqrt{1}}{1}}\right) + \mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{\frac{1}{1}}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{\frac{1}{1}}{\frac{\sqrt{1}}{1}}\right)}\]
    21. Simplified3.2

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right)} + \mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{\frac{1}{1}}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{\frac{1}{1}}{\frac{\sqrt{1}}{1}}\right)\]
    22. Simplified3.2

      \[\leadsto \mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right) + \color{blue}{\mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{1}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right)}\]

    if -1.0141464793380012e+166 < (* x y) < -3.2114266979681e-322

    1. Initial program 4.0

      \[\frac{x \cdot y - z \cdot t}{a}\]
    2. Using strategy rm
    3. Applied div-sub4.0

      \[\leadsto \color{blue}{\frac{x \cdot y}{a} - \frac{z \cdot t}{a}}\]
    4. Simplified4.0

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{t \cdot z}{a}}\]
    5. Using strategy rm
    6. Applied associate-/l*5.1

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{t}{\frac{a}{z}}}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt5.6

      \[\leadsto \frac{x \cdot y}{a} - \frac{t}{\frac{a}{\color{blue}{\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{z}}}}\]
    9. Applied *-un-lft-identity5.6

      \[\leadsto \frac{x \cdot y}{a} - \frac{t}{\frac{\color{blue}{1 \cdot a}}{\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt[3]{z}}}\]
    10. Applied times-frac5.6

      \[\leadsto \frac{x \cdot y}{a} - \frac{t}{\color{blue}{\frac{1}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \frac{a}{\sqrt[3]{z}}}}\]
    11. Applied *-un-lft-identity5.6

      \[\leadsto \frac{x \cdot y}{a} - \frac{\color{blue}{1 \cdot t}}{\frac{1}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \frac{a}{\sqrt[3]{z}}}\]
    12. Applied times-frac4.4

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{1}{\frac{1}{\sqrt[3]{z} \cdot \sqrt[3]{z}}} \cdot \frac{t}{\frac{a}{\sqrt[3]{z}}}}\]
    13. Simplified4.4

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)} \cdot \frac{t}{\frac{a}{\sqrt[3]{z}}}\]

    if -3.2114266979681e-322 < (* x y) < 8.101316387409318e-125

    1. Initial program 4.7

      \[\frac{x \cdot y - z \cdot t}{a}\]
    2. Using strategy rm
    3. Applied div-sub4.7

      \[\leadsto \color{blue}{\frac{x \cdot y}{a} - \frac{z \cdot t}{a}}\]
    4. Simplified4.7

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{t \cdot z}{a}}\]
    5. Using strategy rm
    6. Applied associate-/l*4.8

      \[\leadsto \color{blue}{\frac{x}{\frac{a}{y}}} - \frac{t \cdot z}{a}\]

    if 8.101316387409318e-125 < (* x y) < 2.315528922535603e+114

    1. Initial program 3.5

      \[\frac{x \cdot y - z \cdot t}{a}\]
    2. Using strategy rm
    3. Applied div-sub3.5

      \[\leadsto \color{blue}{\frac{x \cdot y}{a} - \frac{z \cdot t}{a}}\]
    4. Simplified3.5

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{t \cdot z}{a}}\]
    5. Using strategy rm
    6. Applied associate-/l*4.8

      \[\leadsto \frac{x \cdot y}{a} - \color{blue}{\frac{t}{\frac{a}{z}}}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity4.8

      \[\leadsto \color{blue}{1 \cdot \left(\frac{x \cdot y}{a} - \frac{t}{\frac{a}{z}}\right)}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification4.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \cdot y \le -1.01414647933800124 \cdot 10^{166}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right) + \mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{1}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right)\\ \mathbf{elif}\;x \cdot y \le -3.21143 \cdot 10^{-322}:\\ \;\;\;\;\frac{x \cdot y}{a} - \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \frac{t}{\frac{a}{\sqrt[3]{z}}}\\ \mathbf{elif}\;x \cdot y \le 8.1013163874093183 \cdot 10^{-125}:\\ \;\;\;\;\frac{x}{\frac{a}{y}} - \frac{t \cdot z}{a}\\ \mathbf{elif}\;x \cdot y \le 2.31552892253560307 \cdot 10^{114}:\\ \;\;\;\;1 \cdot \left(\frac{x \cdot y}{a} - \frac{t}{\frac{a}{z}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{x}{1}, \frac{y}{a}, -\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right) + \mathsf{fma}\left(-\frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}}, \frac{1}{\frac{\sqrt{1}}{1}}, \frac{\frac{t}{a}}{\frac{\sqrt{1}}{z}} \cdot \frac{1}{\frac{\sqrt{1}}{1}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020036 +o rules:numerics
(FPCore (x y z t a)
  :name "Data.Colour.Matrix:inverse from colour-2.3.3, B"
  :precision binary64

  :herbie-target
  (if (< z -2.468684968699548e+170) (- (* (/ y a) x) (* (/ t a) z)) (if (< z 6.309831121978371e-71) (/ (- (* x y) (* z t)) a) (- (* (/ y a) x) (* (/ t a) z))))

  (/ (- (* x y) (* z t)) a))