Average Error: 13.5 → 1.2
Time: 20.2s
Precision: 64
\[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{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) + \frac{x}{\frac{e^{wj + \left(wj + wj\right)} \cdot \left(wj \cdot \left(wj \cdot wj\right) + 1\right)}{\left(\left(e^{wj} \cdot wj\right) \cdot \left(e^{wj} \cdot wj\right) - e^{wj} \cdot \left(e^{wj} \cdot wj\right)\right) + e^{wj} \cdot e^{wj}}}\]
wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{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) + \frac{x}{\frac{e^{wj + \left(wj + wj\right)} \cdot \left(wj \cdot \left(wj \cdot wj\right) + 1\right)}{\left(\left(e^{wj} \cdot wj\right) \cdot \left(e^{wj} \cdot wj\right) - e^{wj} \cdot \left(e^{wj} \cdot wj\right)\right) + e^{wj} \cdot e^{wj}}}
double f(double wj, double x) {
        double r5705618 = wj;
        double r5705619 = exp(r5705618);
        double r5705620 = r5705618 * r5705619;
        double r5705621 = x;
        double r5705622 = r5705620 - r5705621;
        double r5705623 = r5705619 + r5705620;
        double r5705624 = r5705622 / r5705623;
        double r5705625 = r5705618 - r5705624;
        return r5705625;
}

double f(double wj, double x) {
        double r5705626 = wj;
        double r5705627 = r5705626 * r5705626;
        double r5705628 = r5705627 * r5705627;
        double r5705629 = r5705626 * r5705627;
        double r5705630 = r5705628 - r5705629;
        double r5705631 = r5705627 + r5705630;
        double r5705632 = x;
        double r5705633 = r5705626 + r5705626;
        double r5705634 = r5705626 + r5705633;
        double r5705635 = exp(r5705634);
        double r5705636 = 1.0;
        double r5705637 = r5705629 + r5705636;
        double r5705638 = r5705635 * r5705637;
        double r5705639 = exp(r5705626);
        double r5705640 = r5705639 * r5705626;
        double r5705641 = r5705640 * r5705640;
        double r5705642 = r5705639 * r5705640;
        double r5705643 = r5705641 - r5705642;
        double r5705644 = r5705639 * r5705639;
        double r5705645 = r5705643 + r5705644;
        double r5705646 = r5705638 / r5705645;
        double r5705647 = r5705632 / r5705646;
        double r5705648 = r5705631 + r5705647;
        return r5705648;
}

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.5
Target12.9
Herbie1.2
\[wj - \left(\frac{wj}{wj + 1} - \frac{x}{e^{wj} + wj \cdot e^{wj}}\right)\]

Derivation

  1. Initial program 13.5

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

    \[\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.5

    \[\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. Using strategy rm
  8. Applied flip3-+1.2

    \[\leadsto \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}{\color{blue}{\frac{{\left(e^{wj}\right)}^{3} + {\left(wj \cdot e^{wj}\right)}^{3}}{e^{wj} \cdot e^{wj} + \left(\left(wj \cdot e^{wj}\right) \cdot \left(wj \cdot e^{wj}\right) - e^{wj} \cdot \left(wj \cdot e^{wj}\right)\right)}}}\]
  9. Simplified1.2

    \[\leadsto \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}{\frac{\color{blue}{\left(wj \cdot \left(wj \cdot wj\right) + 1\right) \cdot e^{\left(wj + wj\right) + wj}}}{e^{wj} \cdot e^{wj} + \left(\left(wj \cdot e^{wj}\right) \cdot \left(wj \cdot e^{wj}\right) - e^{wj} \cdot \left(wj \cdot e^{wj}\right)\right)}}\]
  10. Final simplification1.2

    \[\leadsto \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) + \frac{x}{\frac{e^{wj + \left(wj + wj\right)} \cdot \left(wj \cdot \left(wj \cdot wj\right) + 1\right)}{\left(\left(e^{wj} \cdot wj\right) \cdot \left(e^{wj} \cdot wj\right) - e^{wj} \cdot \left(e^{wj} \cdot wj\right)\right) + e^{wj} \cdot e^{wj}}}\]

Reproduce

herbie shell --seed 2019155 
(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))))))