?

Average Error: 13.5 → 0.1
Time: 15.4s
Precision: binary64
Cost: 27264

?

\[wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}} \]
\[\frac{\mathsf{fma}\left(2, wj \cdot wj, \frac{wj}{\frac{e^{wj}}{x}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}{\left(wj + 1\right) \cdot \left(2 + wj\right)} \]
(FPCore (wj x)
 :precision binary64
 (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))))
(FPCore (wj x)
 :precision binary64
 (/
  (fma
   2.0
   (* wj wj)
   (+ (/ wj (/ (exp wj) x)) (+ (pow wj 3.0) (* 2.0 (/ x (exp wj))))))
  (* (+ wj 1.0) (+ 2.0 wj))))
double code(double wj, double x) {
	return wj - (((wj * exp(wj)) - x) / (exp(wj) + (wj * exp(wj))));
}
double code(double wj, double x) {
	return fma(2.0, (wj * wj), ((wj / (exp(wj) / x)) + (pow(wj, 3.0) + (2.0 * (x / exp(wj)))))) / ((wj + 1.0) * (2.0 + wj));
}
function code(wj, x)
	return Float64(wj - Float64(Float64(Float64(wj * exp(wj)) - x) / Float64(exp(wj) + Float64(wj * exp(wj)))))
end
function code(wj, x)
	return Float64(fma(2.0, Float64(wj * wj), Float64(Float64(wj / Float64(exp(wj) / x)) + Float64((wj ^ 3.0) + Float64(2.0 * Float64(x / exp(wj)))))) / Float64(Float64(wj + 1.0) * Float64(2.0 + wj)))
end
code[wj_, x_] := N[(wj - N[(N[(N[(wj * N[Exp[wj], $MachinePrecision]), $MachinePrecision] - x), $MachinePrecision] / N[(N[Exp[wj], $MachinePrecision] + N[(wj * N[Exp[wj], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[wj_, x_] := N[(N[(2.0 * N[(wj * wj), $MachinePrecision] + N[(N[(wj / N[(N[Exp[wj], $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] + N[(N[Power[wj, 3.0], $MachinePrecision] + N[(2.0 * N[(x / N[Exp[wj], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(wj + 1.0), $MachinePrecision] * N[(2.0 + wj), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}
\frac{\mathsf{fma}\left(2, wj \cdot wj, \frac{wj}{\frac{e^{wj}}{x}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}{\left(wj + 1\right) \cdot \left(2 + wj\right)}

Error?

Target

Original13.5
Target12.9
Herbie0.1
\[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. Simplified12.9

    \[\leadsto \color{blue}{wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \]
    Proof

    [Start]13.5

    \[ wj - \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}} \]

    sub-neg [=>]13.5

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

    neg-mul-1 [=>]13.5

    \[ wj + \color{blue}{-1 \cdot \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}} \]

    *-commutative [=>]13.5

    \[ wj + \color{blue}{\frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}} \cdot -1} \]

    *-commutative [<=]13.5

    \[ wj + \color{blue}{-1 \cdot \frac{wj \cdot e^{wj} - x}{e^{wj} + wj \cdot e^{wj}}} \]

    neg-mul-1 [<=]13.5

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

    neg-sub0 [=>]13.5

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

    div-sub [=>]13.5

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

    associate--r- [=>]13.5

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

    +-commutative [=>]13.5

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

    sub0-neg [=>]13.5

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

    sub-neg [<=]13.5

    \[ wj + \color{blue}{\left(\frac{x}{e^{wj} + wj \cdot e^{wj}} - \frac{wj \cdot e^{wj}}{e^{wj} + wj \cdot e^{wj}}\right)} \]
  3. Applied egg-rr27.8

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

    \[\leadsto \color{blue}{\left(\left(wj + 1\right) - 1\right) + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \]
    Proof

    [Start]27.8

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

    associate--r- [=>]14.7

    \[ \color{blue}{\left(\left(wj + 1\right) - 1\right) + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}} \]
  5. Applied egg-rr13.0

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

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

    [Start]13.0

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

    +-commutative [=>]13.0

    \[ \frac{\color{blue}{\left(wj + 2\right) \cdot \left(\frac{x}{e^{wj}} - wj\right) + \left(\left(wj + 2\right) \cdot wj\right) \cdot \left(wj + 1\right)}}{\left(wj + 2\right) \cdot \left(wj + 1\right)} \]

    *-commutative [<=]13.0

    \[ \frac{\color{blue}{\left(\frac{x}{e^{wj}} - wj\right) \cdot \left(wj + 2\right)} + \left(\left(wj + 2\right) \cdot wj\right) \cdot \left(wj + 1\right)}{\left(wj + 2\right) \cdot \left(wj + 1\right)} \]

    fma-def [=>]13.0

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

    *-commutative [<=]13.0

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

    *-commutative [=>]13.0

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

    *-commutative [<=]13.0

    \[ \frac{\mathsf{fma}\left(\frac{x}{e^{wj}} - wj, wj + 2, \left(wj + 1\right) \cdot \left(wj \cdot \left(wj + 2\right)\right)\right)}{\color{blue}{\left(wj + 1\right) \cdot \left(wj + 2\right)}} \]
  7. Taylor expanded in wj around inf 0.1

    \[\leadsto \frac{\color{blue}{2 \cdot {wj}^{2} + \left(\frac{wj \cdot x}{e^{wj}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}}{\left(wj + 1\right) \cdot \left(wj + 2\right)} \]
  8. Simplified0.1

    \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(2, wj \cdot wj, \frac{wj}{\frac{e^{wj}}{x}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}}{\left(wj + 1\right) \cdot \left(wj + 2\right)} \]
    Proof

    [Start]0.1

    \[ \frac{2 \cdot {wj}^{2} + \left(\frac{wj \cdot x}{e^{wj}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}{\left(wj + 1\right) \cdot \left(wj + 2\right)} \]

    unpow2 [=>]0.1

    \[ \frac{2 \cdot \color{blue}{\left(wj \cdot wj\right)} + \left(\frac{wj \cdot x}{e^{wj}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}{\left(wj + 1\right) \cdot \left(wj + 2\right)} \]

    fma-def [=>]0.1

    \[ \frac{\color{blue}{\mathsf{fma}\left(2, wj \cdot wj, \frac{wj \cdot x}{e^{wj}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}}{\left(wj + 1\right) \cdot \left(wj + 2\right)} \]

    associate-/l* [=>]0.1

    \[ \frac{\mathsf{fma}\left(2, wj \cdot wj, \color{blue}{\frac{wj}{\frac{e^{wj}}{x}}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}{\left(wj + 1\right) \cdot \left(wj + 2\right)} \]
  9. Final simplification0.1

    \[\leadsto \frac{\mathsf{fma}\left(2, wj \cdot wj, \frac{wj}{\frac{e^{wj}}{x}} + \left({wj}^{3} + 2 \cdot \frac{x}{e^{wj}}\right)\right)}{\left(wj + 1\right) \cdot \left(2 + wj\right)} \]

Alternatives

Alternative 1
Error0.7
Cost15684
\[\begin{array}{l} \mathbf{if}\;wj \leq 5.7 \cdot 10^{-9}:\\ \;\;\;\;{wj}^{3} \cdot \left(x \cdot -0.6666666666666666 + \left(x \cdot 3 - \left(1 + -2 \cdot \left(x \cdot -4 + x \cdot 1.5\right)\right)\right)\right) + \left(\left(1 + \left(x \cdot 4 + x \cdot -1.5\right)\right) \cdot {wj}^{2} + \left(x + -2 \cdot \left(wj \cdot x\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;wj + \frac{1}{wj + 1} \cdot \left(\frac{x}{e^{wj}} - wj\right)\\ \end{array} \]
Alternative 2
Error1.0
Cost13380
\[\begin{array}{l} \mathbf{if}\;wj \leq 5.7 \cdot 10^{-9}:\\ \;\;\;\;\mathsf{fma}\left(wj, wj, \mathsf{fma}\left(-2, wj \cdot x, x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;wj + \frac{1}{wj + 1} \cdot \left(\frac{x}{e^{wj}} - wj\right)\\ \end{array} \]
Alternative 3
Error1.0
Cost7364
\[\begin{array}{l} \mathbf{if}\;wj \leq 5.7 \cdot 10^{-9}:\\ \;\;\;\;wj \cdot wj + \left(x + -2 \cdot \left(wj \cdot x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;wj + \frac{1}{wj + 1} \cdot \left(\frac{x}{e^{wj}} - wj\right)\\ \end{array} \]
Alternative 4
Error1.0
Cost7236
\[\begin{array}{l} \mathbf{if}\;wj \leq 5 \cdot 10^{-9}:\\ \;\;\;\;wj \cdot wj + \left(x + -2 \cdot \left(wj \cdot x\right)\right)\\ \mathbf{else}:\\ \;\;\;\;wj + \frac{\frac{x}{e^{wj}} - wj}{wj + 1}\\ \end{array} \]
Alternative 5
Error2.1
Cost704
\[wj \cdot wj + \left(x + -2 \cdot \left(wj \cdot x\right)\right) \]
Alternative 6
Error2.5
Cost320
\[wj \cdot wj + x \]
Alternative 7
Error61.3
Cost64
\[wj \]
Alternative 8
Error9.8
Cost64
\[x \]

Error

Reproduce?

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