Average Error: 13.7 → 0.6
Time: 9.6s
Precision: binary64
Cost: 34689
\[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\]
\[\begin{array}{l} \mathbf{if}\;wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}} \leq 7.052044694287076 \cdot 10^{-15}:\\ \;\;\;\;x + \left(\left(wj \cdot wj\right) \cdot \left(1 + x \cdot 2.5\right) - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;wj + \left(wj - 1\right) \cdot \left(\frac{1}{wj + 1} \cdot \frac{\frac{x}{e^{wj}} - wj}{wj - 1}\right)\\ \end{array}\]
wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}
\begin{array}{l}
\mathbf{if}\;wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}} \leq 7.052044694287076 \cdot 10^{-15}:\\
\;\;\;\;x + \left(\left(wj \cdot wj\right) \cdot \left(1 + x \cdot 2.5\right) - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;wj + \left(wj - 1\right) \cdot \left(\frac{1}{wj + 1} \cdot \frac{\frac{x}{e^{wj}} - wj}{wj - 1}\right)\\

\end{array}
(FPCore (wj x)
 :precision binary64
 (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))))
(FPCore (wj x)
 :precision binary64
 (if (<=
      (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj)))))
      7.052044694287076e-15)
   (+
    x
    (-
     (* (* wj wj) (+ 1.0 (* x 2.5)))
     (+ (pow wj 3.0) (* x (+ (+ wj wj) (* (pow wj 3.0) 2.6666666666666665))))))
   (+
    wj
    (*
     (- wj 1.0)
     (* (/ 1.0 (+ wj 1.0)) (/ (- (/ x (exp wj)) wj) (- wj 1.0)))))))
double code(double wj, double x) {
	return wj - (((wj * exp(wj)) - x) / (exp(wj) + (wj * exp(wj))));
}
double code(double wj, double x) {
	double tmp;
	if ((wj - (((wj * exp(wj)) - x) / (exp(wj) + (wj * exp(wj))))) <= 7.052044694287076e-15) {
		tmp = x + (((wj * wj) * (1.0 + (x * 2.5))) - (pow(wj, 3.0) + (x * ((wj + wj) + (pow(wj, 3.0) * 2.6666666666666665)))));
	} else {
		tmp = wj + ((wj - 1.0) * ((1.0 / (wj + 1.0)) * (((x / exp(wj)) - wj) / (wj - 1.0))));
	}
	return tmp;
}

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

Alternatives

Alternative 1
Error51.2
Cost59200
\[wj + \frac{\sqrt{\frac{x}{e^{wj}}} + \sqrt{wj}}{\sqrt[3]{wj + 1} \cdot \sqrt[3]{wj + 1}} \cdot \frac{\sqrt{\frac{x}{e^{wj}}} - \sqrt{wj}}{\sqrt[3]{wj + 1}}\]
Alternative 2
Error51.2
Cost52544
\[wj + \frac{\sqrt{\frac{x}{e^{wj}}} + \sqrt{wj}}{\sqrt{wj + 1}} \cdot \frac{\sqrt{\frac{x}{e^{wj}}} - \sqrt{wj}}{\sqrt{wj + 1}}\]
Alternative 3
Error18.2
Cost42688
\[x + \frac{\left(1 + x \cdot 2.5\right) \cdot \left(\left(1 + x \cdot 2.5\right) \cdot {wj}^{4}\right) - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right) \cdot \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)}{x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right) + \left(wj \cdot wj\right) \cdot \left(wj + \left(1 + x \cdot 2.5\right)\right)}\]
Alternative 4
Error14.1
Cost40640
\[\sqrt[3]{wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \cdot \left(\sqrt[3]{wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \cdot \sqrt[3]{wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}}\right)\]
Alternative 5
Error14.2
Cost40384
\[wj + \sqrt[3]{\frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \cdot \left(\sqrt[3]{\frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \cdot \sqrt[3]{\frac{\frac{x}{e^{wj}} - wj}{wj + 1}}\right)\]
Alternative 6
Error14.2
Cost39872
\[wj + \frac{\sqrt[3]{\frac{x}{e^{wj}} - wj} \cdot \sqrt[3]{\frac{x}{e^{wj}} - wj}}{\frac{wj + 1}{\sqrt[3]{\frac{x}{e^{wj}} - wj}}}\]
Alternative 7
Error14.2
Cost39872
\[wj + \left(\sqrt[3]{\frac{x}{e^{wj}} - wj} \cdot \sqrt[3]{\frac{x}{e^{wj}} - wj}\right) \cdot \frac{\sqrt[3]{\frac{x}{e^{wj}} - wj}}{wj + 1}\]
Alternative 8
Error51.1
Cost39488
\[wj + \left(\sqrt{\frac{x}{e^{wj}}} + \sqrt{wj}\right) \cdot \frac{\sqrt{\frac{x}{e^{wj}}} - \sqrt{wj}}{wj + 1}\]
Alternative 9
Error42.5
Cost34496
\[\frac{{wj}^{3} + {\left(\frac{\frac{x}{e^{wj}} - wj}{wj + 1}\right)}^{3}}{wj \cdot wj + \left(\frac{x}{e^{wj}} - wj\right) \cdot \frac{\frac{\frac{x}{e^{wj}} - wj}{wj + 1} - wj}{wj + 1}}\]
Alternative 10
Error42.5
Cost33728
\[wj + \frac{{\left(\frac{x}{e^{wj}}\right)}^{3} - {wj}^{3}}{\left(wj + 1\right) \cdot \left(wj \cdot wj + \frac{x}{e^{wj}} \cdot \left(wj + \frac{x}{e^{wj}}\right)\right)}\]
Alternative 11
Error11.0
Cost27200
\[x + \left(e^{\log \left(\left(wj \cdot wj\right) \cdot \left(1 + x \cdot 2.5\right)\right)} - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)\right)\]
Alternative 12
Error38.1
Cost27072
\[\sqrt{wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \cdot \sqrt{wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}}\]
Alternative 13
Error39.7
Cost26944
\[wj + \sqrt{\frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \cdot \sqrt{\frac{\frac{x}{e^{wj}} - wj}{wj + 1}}\]
Alternative 14
Error39.6
Cost26688
\[wj + \sqrt{\frac{x}{e^{wj}} - wj} \cdot \frac{\sqrt{\frac{x}{e^{wj}} - wj}}{wj + 1}\]
Alternative 15
Error14.1
Cost26560
\[wj + \frac{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \frac{\sqrt[3]{x}}{e^{wj}} - wj}{wj + 1}\]
Alternative 16
Error33.4
Cost21440
\[\frac{wj \cdot wj - \frac{\frac{x}{e^{wj}} - wj}{wj + 1} \cdot \frac{\frac{x}{e^{wj}} - wj}{wj + 1}}{wj - \frac{\frac{x}{e^{wj}} - wj}{wj + 1}}\]
Alternative 17
Error22.3
Cost20736
\[x + e^{\log \left(\left(wj \cdot wj\right) \cdot \left(\left(1 + x \cdot 2.5\right) - wj\right) - x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)}\]
Alternative 18
Error33.5
Cost20672
\[wj + \frac{\frac{x}{e^{wj}} \cdot \frac{x}{e^{wj}} - wj \cdot wj}{\left(wj + 1\right) \cdot \left(wj + \frac{x}{e^{wj}}\right)}\]
Alternative 19
Error13.7
Cost20032
\[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\]
Alternative 20
Error42.1
Cost19968
\[wj + \sqrt[3]{{\left(\frac{\frac{x}{e^{wj}} - wj}{wj + 1}\right)}^{3}}\]
Alternative 21
Error40.0
Cost19904
\[e^{\log \left(wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}\right)}\]
Alternative 22
Error59.9
Cost19904
\[wj + \log \left(e^{\frac{\frac{x}{e^{wj}} - wj}{wj + 1}}\right)\]
Alternative 23
Error41.7
Cost19904
\[wj + e^{\log \left(\frac{\frac{x}{e^{wj}} - wj}{wj + 1}\right)}\]
Alternative 24
Error1.8
Cost14400
\[x + \left(\left(wj \cdot wj\right) \cdot \left(1 + x \cdot 2.5\right) - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)\right)\]
Alternative 25
Error13.1
Cost14080
\[wj + \frac{\frac{x}{e^{wj}} - wj}{1 + {wj}^{3}} \cdot \left(wj \cdot wj + \left(1 - wj\right)\right)\]
Alternative 26
Error1.8
Cost8192
\[x + \left(\left(wj \cdot wj\right) \cdot \left(1 + x \cdot 2.5\right) - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + \left(wj \cdot wj\right) \cdot \left(wj \cdot 2.6666666666666665\right)\right)\right)\right)\]
Alternative 27
Error1.8
Cost7936
\[x + \left(\left(wj \cdot wj\right) \cdot \left(\left(1 + x \cdot 2.5\right) - wj\right) - x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)\]
Alternative 28
Error13.1
Cost7744
\[wj + \left(wj - 1\right) \cdot \left(\frac{1}{wj + 1} \cdot \frac{\frac{x}{e^{wj}} - wj}{wj - 1}\right)\]
Alternative 29
Error13.2
Cost7616
\[wj + \frac{1}{\frac{wj \cdot wj - 1}{\frac{x}{e^{wj}} - wj}} \cdot \left(wj - 1\right)\]
Alternative 30
Error13.1
Cost7488
\[wj + \left(wj - 1\right) \cdot \frac{\frac{x}{e^{wj}} - wj}{wj \cdot wj - 1}\]
Alternative 31
Error13.2
Cost7232
\[wj + \frac{1}{\frac{wj + 1}{\frac{x}{e^{wj}} - wj}}\]
Alternative 32
Error13.1
Cost7168
\[wj + \frac{x \cdot e^{-wj} - wj}{wj + 1}\]
Alternative 33
Error13.1
Cost7104
\[wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}\]
Alternative 34
Error2.3
Cost6912
\[x + \left(wj \cdot wj - {wj}^{3}\right)\]
Alternative 35
Error8.6
Cost6848
\[\frac{\frac{x}{e^{wj}}}{wj + 1}\]
Alternative 36
Error8.6
Cost6848
\[\frac{x}{e^{wj} \cdot \left(wj + 1\right)}\]
Alternative 37
Error2.0
Cost1088
\[x + \left(\left(wj \cdot wj\right) \cdot \left(1 + x \cdot 2.5\right) - 2 \cdot \left(wj \cdot x\right)\right)\]
Alternative 38
Error60.1
Cost448
\[wj - \frac{wj}{wj + 1}\]
Alternative 39
Error9.3
Cost448
\[x - 2 \cdot \left(wj \cdot x\right)\]
Alternative 40
Error61.3
Cost192
\[wj - 1\]
Alternative 41
Error9.7
Cost64
\[x\]
Alternative 42
Error61.5
Cost64
\[1\]
Alternative 43
Error61.7
Cost64
\[0\]
Alternative 44
Error61.8
Cost64
\[-1\]

Error

Derivation

  1. Split input into 2 regimes
  2. if (-.f64 wj (/.f64 (-.f64 (*.f64 wj (exp.f64 wj)) x) (+.f64 (exp.f64 wj) (*.f64 wj (exp.f64 wj))))) < 7.052044694e-15

    1. Initial program 17.9

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

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

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

      \[\leadsto \color{blue}{x + \left(\left(2.5 \cdot x + 1\right) \cdot \left(wj \cdot wj\right) - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)\right)}\]
    5. Simplified0.7

      \[\leadsto \color{blue}{x + \left(\left(wj \cdot wj\right) \cdot \left(1 + x \cdot 2.5\right) - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)\right)}\]

    if 7.052044694e-15 < (-.f64 wj (/.f64 (-.f64 (*.f64 wj (exp.f64 wj)) x) (+.f64 (exp.f64 wj) (*.f64 wj (exp.f64 wj)))))

    1. Initial program 2.5

      \[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}\]
    2. Simplified0.4

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

      \[\leadsto wj + \frac{\frac{x}{e^{wj}} - wj}{\color{blue}{\frac{wj \cdot wj - 1 \cdot 1}{wj - 1}}}\]
    5. Applied associate-/r/_binary64_30140.4

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

      \[\leadsto wj + \color{blue}{\frac{\frac{x}{e^{wj}} - wj}{wj \cdot wj - 1}} \cdot \left(wj - 1\right)\]
    7. Using strategy rm
    8. Applied difference-of-sqr-1_binary64_30380.4

      \[\leadsto wj + \frac{\frac{x}{e^{wj}} - wj}{\color{blue}{\left(wj + 1\right) \cdot \left(wj - 1\right)}} \cdot \left(wj - 1\right)\]
    9. Applied *-un-lft-identity_binary64_30680.4

      \[\leadsto wj + \frac{\color{blue}{1 \cdot \left(\frac{x}{e^{wj}} - wj\right)}}{\left(wj + 1\right) \cdot \left(wj - 1\right)} \cdot \left(wj - 1\right)\]
    10. Applied times-frac_binary64_30740.4

      \[\leadsto wj + \color{blue}{\left(\frac{1}{wj + 1} \cdot \frac{\frac{x}{e^{wj}} - wj}{wj - 1}\right)} \cdot \left(wj - 1\right)\]
    11. Simplified0.4

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}} \leq 7.052044694287076 \cdot 10^{-15}:\\ \;\;\;\;x + \left(\left(wj \cdot wj\right) \cdot \left(1 + x \cdot 2.5\right) - \left({wj}^{3} + x \cdot \left(\left(wj + wj\right) + {wj}^{3} \cdot 2.6666666666666665\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;wj + \left(wj - 1\right) \cdot \left(\frac{1}{wj + 1} \cdot \frac{\frac{x}{e^{wj}} - wj}{wj - 1}\right)\\ \end{array}\]

Reproduce

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

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

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