Average Error: 1.7 → 1.8
Time: 13.4s
Precision: 64
\[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
\[\begin{array}{l} \mathbf{if}\;x \le 7.728357076454139829024825303349643945694:\\ \;\;\;\;\left|\left(\frac{4}{y} - \frac{z \cdot x}{y}\right) + \frac{x}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\mathsf{fma}\left(\frac{\sqrt{4}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{\sqrt{4}}{\sqrt[3]{y}}, -z \cdot \frac{x}{y}\right) + \frac{x}{y}\right|\\ \end{array}\]
\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|
\begin{array}{l}
\mathbf{if}\;x \le 7.728357076454139829024825303349643945694:\\
\;\;\;\;\left|\left(\frac{4}{y} - \frac{z \cdot x}{y}\right) + \frac{x}{y}\right|\\

\mathbf{else}:\\
\;\;\;\;\left|\mathsf{fma}\left(\frac{\sqrt{4}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{\sqrt{4}}{\sqrt[3]{y}}, -z \cdot \frac{x}{y}\right) + \frac{x}{y}\right|\\

\end{array}
double f(double x, double y, double z) {
        double r26915 = x;
        double r26916 = 4.0;
        double r26917 = r26915 + r26916;
        double r26918 = y;
        double r26919 = r26917 / r26918;
        double r26920 = r26915 / r26918;
        double r26921 = z;
        double r26922 = r26920 * r26921;
        double r26923 = r26919 - r26922;
        double r26924 = fabs(r26923);
        return r26924;
}

double f(double x, double y, double z) {
        double r26925 = x;
        double r26926 = 7.72835707645414;
        bool r26927 = r26925 <= r26926;
        double r26928 = 4.0;
        double r26929 = y;
        double r26930 = r26928 / r26929;
        double r26931 = z;
        double r26932 = r26931 * r26925;
        double r26933 = r26932 / r26929;
        double r26934 = r26930 - r26933;
        double r26935 = r26925 / r26929;
        double r26936 = r26934 + r26935;
        double r26937 = fabs(r26936);
        double r26938 = sqrt(r26928);
        double r26939 = cbrt(r26929);
        double r26940 = r26939 * r26939;
        double r26941 = r26938 / r26940;
        double r26942 = r26938 / r26939;
        double r26943 = r26931 * r26935;
        double r26944 = -r26943;
        double r26945 = fma(r26941, r26942, r26944);
        double r26946 = r26945 + r26935;
        double r26947 = fabs(r26946);
        double r26948 = r26927 ? r26937 : r26947;
        return r26948;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Derivation

  1. Split input into 2 regimes
  2. if x < 7.72835707645414

    1. Initial program 2.1

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Taylor expanded around 0 2.2

      \[\leadsto \left|\color{blue}{\left(\frac{x}{y} + 4 \cdot \frac{1}{y}\right) - \frac{x \cdot z}{y}}\right|\]
    3. Simplified2.1

      \[\leadsto \left|\color{blue}{\frac{x}{y} + \left(\frac{4}{y} - z \cdot \frac{x}{y}\right)}\right|\]
    4. Using strategy rm
    5. Applied associate-*r/2.2

      \[\leadsto \left|\frac{x}{y} + \left(\frac{4}{y} - \color{blue}{\frac{z \cdot x}{y}}\right)\right|\]
    6. Simplified2.2

      \[\leadsto \left|\frac{x}{y} + \left(\frac{4}{y} - \frac{\color{blue}{x \cdot z}}{y}\right)\right|\]

    if 7.72835707645414 < x

    1. Initial program 0.1

      \[\left|\frac{x + 4}{y} - \frac{x}{y} \cdot z\right|\]
    2. Taylor expanded around 0 8.5

      \[\leadsto \left|\color{blue}{\left(\frac{x}{y} + 4 \cdot \frac{1}{y}\right) - \frac{x \cdot z}{y}}\right|\]
    3. Simplified0.1

      \[\leadsto \left|\color{blue}{\frac{x}{y} + \left(\frac{4}{y} - z \cdot \frac{x}{y}\right)}\right|\]
    4. Using strategy rm
    5. Applied add-cube-cbrt0.1

      \[\leadsto \left|\frac{x}{y} + \left(\frac{4}{\color{blue}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}}} - z \cdot \frac{x}{y}\right)\right|\]
    6. Applied add-sqr-sqrt0.1

      \[\leadsto \left|\frac{x}{y} + \left(\frac{\color{blue}{\sqrt{4} \cdot \sqrt{4}}}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}} - z \cdot \frac{x}{y}\right)\right|\]
    7. Applied times-frac0.1

      \[\leadsto \left|\frac{x}{y} + \left(\color{blue}{\frac{\sqrt{4}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{\sqrt{4}}{\sqrt[3]{y}}} - z \cdot \frac{x}{y}\right)\right|\]
    8. Applied fma-neg0.1

      \[\leadsto \left|\frac{x}{y} + \color{blue}{\mathsf{fma}\left(\frac{\sqrt{4}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{\sqrt{4}}{\sqrt[3]{y}}, -z \cdot \frac{x}{y}\right)}\right|\]
    9. Simplified0.1

      \[\leadsto \left|\frac{x}{y} + \mathsf{fma}\left(\frac{\sqrt{4}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{\sqrt{4}}{\sqrt[3]{y}}, \color{blue}{\frac{x}{y} \cdot \left(-z\right)}\right)\right|\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 7.728357076454139829024825303349643945694:\\ \;\;\;\;\left|\left(\frac{4}{y} - \frac{z \cdot x}{y}\right) + \frac{x}{y}\right|\\ \mathbf{else}:\\ \;\;\;\;\left|\mathsf{fma}\left(\frac{\sqrt{4}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}, \frac{\sqrt{4}}{\sqrt[3]{y}}, -z \cdot \frac{x}{y}\right) + \frac{x}{y}\right|\\ \end{array}\]

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (x y z)
  :name "fabs fraction 1"
  (fabs (- (/ (+ x 4.0) y) (* (/ x y) z))))