Average Error: 7.7 → 4.3
Time: 10.5s
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 r923858 = x;
        double r923859 = y;
        double r923860 = r923858 * r923859;
        double r923861 = z;
        double r923862 = t;
        double r923863 = r923861 * r923862;
        double r923864 = r923860 - r923863;
        double r923865 = a;
        double r923866 = r923864 / r923865;
        return r923866;
}

double f(double x, double y, double z, double t, double a) {
        double r923867 = x;
        double r923868 = y;
        double r923869 = r923867 * r923868;
        double r923870 = -1.0141464793380012e+166;
        bool r923871 = r923869 <= r923870;
        double r923872 = 1.0;
        double r923873 = r923867 / r923872;
        double r923874 = a;
        double r923875 = r923868 / r923874;
        double r923876 = t;
        double r923877 = r923876 / r923874;
        double r923878 = sqrt(r923872);
        double r923879 = z;
        double r923880 = r923878 / r923879;
        double r923881 = r923877 / r923880;
        double r923882 = r923878 / r923872;
        double r923883 = r923872 / r923882;
        double r923884 = r923881 * r923883;
        double r923885 = -r923884;
        double r923886 = fma(r923873, r923875, r923885);
        double r923887 = -r923881;
        double r923888 = fma(r923887, r923883, r923884);
        double r923889 = r923886 + r923888;
        double r923890 = -3.2114266979681e-322;
        bool r923891 = r923869 <= r923890;
        double r923892 = r923869 / r923874;
        double r923893 = cbrt(r923879);
        double r923894 = r923893 * r923893;
        double r923895 = r923874 / r923893;
        double r923896 = r923876 / r923895;
        double r923897 = r923894 * r923896;
        double r923898 = r923892 - r923897;
        double r923899 = 8.101316387409318e-125;
        bool r923900 = r923869 <= r923899;
        double r923901 = r923874 / r923868;
        double r923902 = r923867 / r923901;
        double r923903 = r923876 * r923879;
        double r923904 = r923903 / r923874;
        double r923905 = r923902 - r923904;
        double r923906 = 2.315528922535603e+114;
        bool r923907 = r923869 <= r923906;
        double r923908 = r923874 / r923879;
        double r923909 = r923876 / r923908;
        double r923910 = r923892 - r923909;
        double r923911 = r923872 * r923910;
        double r923912 = r923907 ? r923911 : r923889;
        double r923913 = r923900 ? r923905 : r923912;
        double r923914 = r923891 ? r923898 : r923913;
        double r923915 = r923871 ? r923889 : r923914;
        return r923915;
}

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))