Average Error: 18.1 → 0.1
Time: 27.4s
Precision: 64
\[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
\[\begin{array}{l} \mathbf{if}\;y \le -232833485.99249470233917236328125 \lor \neg \left(y \le 164424263.12843167781829833984375\right):\\ \;\;\;\;1 - \log \left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)} \cdot \left(\left(1 + y\right) + \left(-\left(1 + y\right)\right)\right) + \mathsf{fma}\left(1, \frac{x}{{y}^{2}}, \frac{x}{y} - \frac{1}{y}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1 - \log \left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)} \cdot \left(\left(1 + y\right) + \left(-\left(1 + y\right)\right)\right) + \mathsf{fma}\left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)}, -\left(1 + y\right), {\left(\sqrt[3]{1}\right)}^{3}\right)\right)\\ \end{array}\]
1 - \log \left(1 - \frac{x - y}{1 - y}\right)
\begin{array}{l}
\mathbf{if}\;y \le -232833485.99249470233917236328125 \lor \neg \left(y \le 164424263.12843167781829833984375\right):\\
\;\;\;\;1 - \log \left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)} \cdot \left(\left(1 + y\right) + \left(-\left(1 + y\right)\right)\right) + \mathsf{fma}\left(1, \frac{x}{{y}^{2}}, \frac{x}{y} - \frac{1}{y}\right)\right)\\

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

\end{array}
double f(double x, double y) {
        double r283141 = 1.0;
        double r283142 = x;
        double r283143 = y;
        double r283144 = r283142 - r283143;
        double r283145 = r283141 - r283143;
        double r283146 = r283144 / r283145;
        double r283147 = r283141 - r283146;
        double r283148 = log(r283147);
        double r283149 = r283141 - r283148;
        return r283149;
}

double f(double x, double y) {
        double r283150 = y;
        double r283151 = -232833485.9924947;
        bool r283152 = r283150 <= r283151;
        double r283153 = 164424263.12843168;
        bool r283154 = r283150 <= r283153;
        double r283155 = !r283154;
        bool r283156 = r283152 || r283155;
        double r283157 = 1.0;
        double r283158 = x;
        double r283159 = r283158 - r283150;
        double r283160 = -r283150;
        double r283161 = r283157 * r283157;
        double r283162 = fma(r283150, r283160, r283161);
        double r283163 = r283159 / r283162;
        double r283164 = r283157 + r283150;
        double r283165 = -r283164;
        double r283166 = r283164 + r283165;
        double r283167 = r283163 * r283166;
        double r283168 = 2.0;
        double r283169 = pow(r283150, r283168);
        double r283170 = r283158 / r283169;
        double r283171 = r283158 / r283150;
        double r283172 = r283157 / r283150;
        double r283173 = r283171 - r283172;
        double r283174 = fma(r283157, r283170, r283173);
        double r283175 = r283167 + r283174;
        double r283176 = log(r283175);
        double r283177 = r283157 - r283176;
        double r283178 = cbrt(r283157);
        double r283179 = 3.0;
        double r283180 = pow(r283178, r283179);
        double r283181 = fma(r283163, r283165, r283180);
        double r283182 = r283167 + r283181;
        double r283183 = log(r283182);
        double r283184 = r283157 - r283183;
        double r283185 = r283156 ? r283177 : r283184;
        return r283185;
}

Error

Bits error versus x

Bits error versus y

Target

Original18.1
Target0.1
Herbie0.1
\[\begin{array}{l} \mathbf{if}\;y \lt -81284752.6194724142551422119140625:\\ \;\;\;\;1 - \log \left(\frac{x}{y \cdot y} - \left(\frac{1}{y} - \frac{x}{y}\right)\right)\\ \mathbf{elif}\;y \lt 30094271212461763678175232:\\ \;\;\;\;\log \left(\frac{e^{1}}{1 - \frac{x - y}{1 - y}}\right)\\ \mathbf{else}:\\ \;\;\;\;1 - \log \left(\frac{x}{y \cdot y} - \left(\frac{1}{y} - \frac{x}{y}\right)\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if y < -232833485.9924947 or 164424263.12843168 < y

    1. Initial program 46.5

      \[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
    2. Using strategy rm
    3. Applied flip--47.0

      \[\leadsto 1 - \log \left(1 - \frac{x - y}{\color{blue}{\frac{1 \cdot 1 - y \cdot y}{1 + y}}}\right)\]
    4. Applied associate-/r/46.5

      \[\leadsto 1 - \log \left(1 - \color{blue}{\frac{x - y}{1 \cdot 1 - y \cdot y} \cdot \left(1 + y\right)}\right)\]
    5. Applied add-cube-cbrt46.5

      \[\leadsto 1 - \log \left(\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}} - \frac{x - y}{1 \cdot 1 - y \cdot y} \cdot \left(1 + y\right)\right)\]
    6. Applied prod-diff45.7

      \[\leadsto 1 - \log \color{blue}{\left(\mathsf{fma}\left(\sqrt[3]{1} \cdot \sqrt[3]{1}, \sqrt[3]{1}, -\left(1 + y\right) \cdot \frac{x - y}{1 \cdot 1 - y \cdot y}\right) + \mathsf{fma}\left(-\left(1 + y\right), \frac{x - y}{1 \cdot 1 - y \cdot y}, \left(1 + y\right) \cdot \frac{x - y}{1 \cdot 1 - y \cdot y}\right)\right)}\]
    7. Simplified45.7

      \[\leadsto 1 - \log \left(\color{blue}{\mathsf{fma}\left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)}, -\left(1 + y\right), {\left(\sqrt[3]{1}\right)}^{3}\right)} + \mathsf{fma}\left(-\left(1 + y\right), \frac{x - y}{1 \cdot 1 - y \cdot y}, \left(1 + y\right) \cdot \frac{x - y}{1 \cdot 1 - y \cdot y}\right)\right)\]
    8. Simplified45.7

      \[\leadsto 1 - \log \left(\mathsf{fma}\left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)}, -\left(1 + y\right), {\left(\sqrt[3]{1}\right)}^{3}\right) + \color{blue}{\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)} \cdot \left(\left(-\left(1 + y\right)\right) + \left(1 + y\right)\right)}\right)\]
    9. Taylor expanded around inf 0.1

      \[\leadsto 1 - \log \left(\color{blue}{\left(\left(\frac{x}{y} + 1 \cdot \frac{x}{{y}^{2}}\right) - 1 \cdot \frac{1}{y}\right)} + \frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)} \cdot \left(\left(-\left(1 + y\right)\right) + \left(1 + y\right)\right)\right)\]
    10. Simplified0.1

      \[\leadsto 1 - \log \left(\color{blue}{\mathsf{fma}\left(1, \frac{x}{{y}^{2}}, \frac{x}{y} - \frac{1}{y}\right)} + \frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)} \cdot \left(\left(-\left(1 + y\right)\right) + \left(1 + y\right)\right)\right)\]

    if -232833485.9924947 < y < 164424263.12843168

    1. Initial program 0.1

      \[1 - \log \left(1 - \frac{x - y}{1 - y}\right)\]
    2. Using strategy rm
    3. Applied flip--0.1

      \[\leadsto 1 - \log \left(1 - \frac{x - y}{\color{blue}{\frac{1 \cdot 1 - y \cdot y}{1 + y}}}\right)\]
    4. Applied associate-/r/0.1

      \[\leadsto 1 - \log \left(1 - \color{blue}{\frac{x - y}{1 \cdot 1 - y \cdot y} \cdot \left(1 + y\right)}\right)\]
    5. Applied add-cube-cbrt0.1

      \[\leadsto 1 - \log \left(\color{blue}{\left(\sqrt[3]{1} \cdot \sqrt[3]{1}\right) \cdot \sqrt[3]{1}} - \frac{x - y}{1 \cdot 1 - y \cdot y} \cdot \left(1 + y\right)\right)\]
    6. Applied prod-diff0.1

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

      \[\leadsto 1 - \log \left(\color{blue}{\mathsf{fma}\left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)}, -\left(1 + y\right), {\left(\sqrt[3]{1}\right)}^{3}\right)} + \mathsf{fma}\left(-\left(1 + y\right), \frac{x - y}{1 \cdot 1 - y \cdot y}, \left(1 + y\right) \cdot \frac{x - y}{1 \cdot 1 - y \cdot y}\right)\right)\]
    8. Simplified0.1

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -232833485.99249470233917236328125 \lor \neg \left(y \le 164424263.12843167781829833984375\right):\\ \;\;\;\;1 - \log \left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)} \cdot \left(\left(1 + y\right) + \left(-\left(1 + y\right)\right)\right) + \mathsf{fma}\left(1, \frac{x}{{y}^{2}}, \frac{x}{y} - \frac{1}{y}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;1 - \log \left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)} \cdot \left(\left(1 + y\right) + \left(-\left(1 + y\right)\right)\right) + \mathsf{fma}\left(\frac{x - y}{\mathsf{fma}\left(y, -y, 1 \cdot 1\right)}, -\left(1 + y\right), {\left(\sqrt[3]{1}\right)}^{3}\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019196 +o rules:numerics
(FPCore (x y)
  :name "Numeric.SpecFunctions:invIncompleteGamma from math-functions-0.1.5.2, B"

  :herbie-target
  (if (< y -81284752.61947241) (- 1.0 (log (- (/ x (* y y)) (- (/ 1.0 y) (/ x y))))) (if (< y 3.0094271212461764e+25) (log (/ (exp 1.0) (- 1.0 (/ (- x y) (- 1.0 y))))) (- 1.0 (log (- (/ x (* y y)) (- (/ 1.0 y) (/ x y)))))))

  (- 1.0 (log (- 1.0 (/ (- x y) (- 1.0 y))))))