Average Error: 13.7 → 0.9
Time: 18.9s
Precision: 64
\[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\]
\[\begin{array}{l} \mathbf{if}\;wj \le 9.871262487081795119024488249000887085671 \cdot 10^{-9}:\\ \;\;\;\;\mathsf{fma}\left(wj, wj, x\right) - 2 \cdot \left(x \cdot wj\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{wj} \cdot \sqrt[3]{wj}, \sqrt[3]{wj}, \frac{wj - \frac{x}{e^{wj}}}{{wj}^{3} + 1} \cdot \left(-\mathsf{fma}\left(wj, wj, 1 - wj\right)\right)\right) + \left(\mathsf{fma}\left(wj, wj, 1 - wj\right) + \left(-\mathsf{fma}\left(wj, wj, 1 - wj\right)\right)\right) \cdot \frac{wj - \frac{x}{e^{wj}}}{{wj}^{3} + 1}\\ \end{array}\]
wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}
\begin{array}{l}
\mathbf{if}\;wj \le 9.871262487081795119024488249000887085671 \cdot 10^{-9}:\\
\;\;\;\;\mathsf{fma}\left(wj, wj, x\right) - 2 \cdot \left(x \cdot wj\right)\\

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

\end{array}
double f(double wj, double x) {
        double r213374 = wj;
        double r213375 = exp(r213374);
        double r213376 = r213374 * r213375;
        double r213377 = x;
        double r213378 = r213376 - r213377;
        double r213379 = r213375 + r213376;
        double r213380 = r213378 / r213379;
        double r213381 = r213374 - r213380;
        return r213381;
}

double f(double wj, double x) {
        double r213382 = wj;
        double r213383 = 9.871262487081795e-09;
        bool r213384 = r213382 <= r213383;
        double r213385 = x;
        double r213386 = fma(r213382, r213382, r213385);
        double r213387 = 2.0;
        double r213388 = r213385 * r213382;
        double r213389 = r213387 * r213388;
        double r213390 = r213386 - r213389;
        double r213391 = cbrt(r213382);
        double r213392 = r213391 * r213391;
        double r213393 = exp(r213382);
        double r213394 = r213385 / r213393;
        double r213395 = r213382 - r213394;
        double r213396 = 3.0;
        double r213397 = pow(r213382, r213396);
        double r213398 = 1.0;
        double r213399 = r213397 + r213398;
        double r213400 = r213395 / r213399;
        double r213401 = r213398 - r213382;
        double r213402 = fma(r213382, r213382, r213401);
        double r213403 = -r213402;
        double r213404 = r213400 * r213403;
        double r213405 = fma(r213392, r213391, r213404);
        double r213406 = r213402 + r213403;
        double r213407 = r213406 * r213400;
        double r213408 = r213405 + r213407;
        double r213409 = r213384 ? r213390 : r213408;
        return r213409;
}

Error

Bits error versus wj

Bits error versus x

Target

Original13.7
Target13.1
Herbie0.9
\[wj - \left(\frac{wj}{wj + 1} - \frac{x}{e^{wj} + wj \cdot e^{wj}}\right)\]

Derivation

  1. Split input into 2 regimes
  2. if wj < 9.871262487081795e-09

    1. Initial program 13.4

      \[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\]
    2. Simplified13.3

      \[\leadsto \color{blue}{wj - \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{wj + 1}}\]
    3. Taylor expanded around 0 0.8

      \[\leadsto \color{blue}{\left({wj}^{2} + x\right) - 2 \cdot \left(x \cdot wj\right)}\]
    4. Simplified0.8

      \[\leadsto \color{blue}{\mathsf{fma}\left(wj, wj, x\right) - 2 \cdot \left(x \cdot wj\right)}\]

    if 9.871262487081795e-09 < wj

    1. Initial program 24.7

      \[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\]
    2. Simplified2.9

      \[\leadsto \color{blue}{wj - \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{wj + 1}}\]
    3. Using strategy rm
    4. Applied flip3-+3.0

      \[\leadsto wj - \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{\color{blue}{\frac{{wj}^{3} + {1}^{3}}{wj \cdot wj + \left(1 \cdot 1 - wj \cdot 1\right)}}}\]
    5. Applied associate-/r/2.9

      \[\leadsto wj - \color{blue}{\frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{{wj}^{3} + {1}^{3}} \cdot \left(wj \cdot wj + \left(1 \cdot 1 - wj \cdot 1\right)\right)}\]
    6. Applied add-cube-cbrt3.9

      \[\leadsto \color{blue}{\left(\sqrt[3]{wj} \cdot \sqrt[3]{wj}\right) \cdot \sqrt[3]{wj}} - \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{{wj}^{3} + {1}^{3}} \cdot \left(wj \cdot wj + \left(1 \cdot 1 - wj \cdot 1\right)\right)\]
    7. Applied prod-diff4.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt[3]{wj} \cdot \sqrt[3]{wj}, \sqrt[3]{wj}, -\left(wj \cdot wj + \left(1 \cdot 1 - wj \cdot 1\right)\right) \cdot \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{{wj}^{3} + {1}^{3}}\right) + \mathsf{fma}\left(-\left(wj \cdot wj + \left(1 \cdot 1 - wj \cdot 1\right)\right), \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{{wj}^{3} + {1}^{3}}, \left(wj \cdot wj + \left(1 \cdot 1 - wj \cdot 1\right)\right) \cdot \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{{wj}^{3} + {1}^{3}}\right)}\]
    8. Simplified4.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt[3]{wj} \cdot \sqrt[3]{wj}, \sqrt[3]{wj}, \frac{wj - \frac{x}{e^{wj}}}{{wj}^{3} + 1} \cdot \left(-\mathsf{fma}\left(wj, wj, 1 - wj\right)\right)\right)} + \mathsf{fma}\left(-\left(wj \cdot wj + \left(1 \cdot 1 - wj \cdot 1\right)\right), \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{{wj}^{3} + {1}^{3}}, \left(wj \cdot wj + \left(1 \cdot 1 - wj \cdot 1\right)\right) \cdot \frac{\frac{wj}{1} - \frac{x}{e^{wj}}}{{wj}^{3} + {1}^{3}}\right)\]
    9. Simplified4.0

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;wj \le 9.871262487081795119024488249000887085671 \cdot 10^{-9}:\\ \;\;\;\;\mathsf{fma}\left(wj, wj, x\right) - 2 \cdot \left(x \cdot wj\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\sqrt[3]{wj} \cdot \sqrt[3]{wj}, \sqrt[3]{wj}, \frac{wj - \frac{x}{e^{wj}}}{{wj}^{3} + 1} \cdot \left(-\mathsf{fma}\left(wj, wj, 1 - wj\right)\right)\right) + \left(\mathsf{fma}\left(wj, wj, 1 - wj\right) + \left(-\mathsf{fma}\left(wj, wj, 1 - wj\right)\right)\right) \cdot \frac{wj - \frac{x}{e^{wj}}}{{wj}^{3} + 1}\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 +o rules:numerics
(FPCore (wj x)
  :name "Jmat.Real.lambertw, newton loop step"

  :herbie-target
  (- wj (- (/ wj (+ wj 1.0)) (/ x (+ (exp wj) (* wj (exp wj))))))

  (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))))