Average Error: 13.7 → 1.1
Time: 22.3s
Precision: 64
\[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\]
\[\frac{x}{e^{wj} + e^{wj} \cdot wj} + \left(wj \cdot wj + \left(\left(wj \cdot wj\right) \cdot \left(wj \cdot wj\right) - wj \cdot \left(wj \cdot wj\right)\right)\right)\]
wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}
\frac{x}{e^{wj} + e^{wj} \cdot wj} + \left(wj \cdot wj + \left(\left(wj \cdot wj\right) \cdot \left(wj \cdot wj\right) - wj \cdot \left(wj \cdot wj\right)\right)\right)
double f(double wj, double x) {
        double r4054011 = wj;
        double r4054012 = exp(r4054011);
        double r4054013 = r4054011 * r4054012;
        double r4054014 = x;
        double r4054015 = r4054013 - r4054014;
        double r4054016 = r4054012 + r4054013;
        double r4054017 = r4054015 / r4054016;
        double r4054018 = r4054011 - r4054017;
        return r4054018;
}

double f(double wj, double x) {
        double r4054019 = x;
        double r4054020 = wj;
        double r4054021 = exp(r4054020);
        double r4054022 = r4054021 * r4054020;
        double r4054023 = r4054021 + r4054022;
        double r4054024 = r4054019 / r4054023;
        double r4054025 = r4054020 * r4054020;
        double r4054026 = r4054025 * r4054025;
        double r4054027 = r4054020 * r4054025;
        double r4054028 = r4054026 - r4054027;
        double r4054029 = r4054025 + r4054028;
        double r4054030 = r4054024 + r4054029;
        return r4054030;
}

Error

Bits error versus wj

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Initial program 13.7

    \[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\]
  2. Using strategy rm
  3. Applied div-sub13.7

    \[\leadsto wj - \color{blue}{\left(\frac{wj \cdot e^{wj}}{e^{wj} + wj \cdot e^{wj}} - \frac{x}{e^{wj} + wj \cdot e^{wj}}\right)}\]
  4. Applied associate--r-7.7

    \[\leadsto \color{blue}{\left(wj - \frac{wj \cdot e^{wj}}{e^{wj} + wj \cdot e^{wj}}\right) + \frac{x}{e^{wj} + wj \cdot e^{wj}}}\]
  5. Taylor expanded around 0 1.1

    \[\leadsto \color{blue}{\left(\left({wj}^{2} + {wj}^{4}\right) - {wj}^{3}\right)} + \frac{x}{e^{wj} + wj \cdot e^{wj}}\]
  6. Simplified1.1

    \[\leadsto \color{blue}{\left(\left(\left(wj \cdot wj\right) \cdot \left(wj \cdot wj\right) - wj \cdot \left(wj \cdot wj\right)\right) + wj \cdot wj\right)} + \frac{x}{e^{wj} + wj \cdot e^{wj}}\]
  7. Final simplification1.1

    \[\leadsto \frac{x}{e^{wj} + e^{wj} \cdot wj} + \left(wj \cdot wj + \left(\left(wj \cdot wj\right) \cdot \left(wj \cdot wj\right) - wj \cdot \left(wj \cdot wj\right)\right)\right)\]

Reproduce

herbie shell --seed 2019152 
(FPCore (wj x)
  :name "Jmat.Real.lambertw, newton loop step"

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

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