



Bits error versus wj




Bits error versus x
| Original | 13.6 |
|---|---|
| Target | 12.9 |
| Herbie | 0.6 |
if (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))) < 2.5232382752585948e-17Initial program 17.8
Taylor expanded around 0 0.6
Simplified0.6
if 2.5232382752585948e-17 < (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))) Initial program 2.8
rmApplied distribute-rgt1-in2.8
Applied *-un-lft-identity2.8
Applied times-frac2.8
Simplified0.6
Final simplification0.6
herbie shell --seed 2018365 +o rules:numerics
(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))))))
Time bar (total: 12.4s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 14.0b
Found 4 expressions with local error:
| 5.5b | (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))) |
| 0.5b | (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj)))) |
| 0.0b | (* wj (exp wj)) |
| 0.0b | (* wj (exp wj)) |
4 calls. Slowest were:
| 9.0ms | (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj)))) |
| 1.0ms | (* wj (exp wj)) |
| 1.0ms | (* wj (exp wj)) |
4 calls. Slowest were:
| 60.0ms | (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj)))) |
| 51.0ms | (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))) |
| 28.0ms | (* wj (exp wj)) |
| 27.0ms | (* wj (exp wj)) |
63 calls. Slowest were:
| 676.0ms | (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj)))) |
| 393.0ms | (+ (* (exp wj) (exp wj)) (- (* (* wj (exp wj)) (* wj (exp wj))) (* (exp wj) (* wj (exp wj))))) |
| 321.0ms | (/ (* wj (exp wj)) (+ (exp wj) (* wj (exp wj)))) |
5 alts after pruning (5 fresh and 0 done)
Merged error: 0.6b
Found 1 expressions with local error:
| 0.2b | (fma wj (fma x -2 wj) x) |
1 calls. Slowest were:
| 0.0ms | (fma wj (fma x -2 wj) x) |
1 calls. Slowest were:
| 16.0ms | (fma wj (fma x -2 wj) x) |
3 calls. Slowest were:
| 122.0ms | (- (+ (pow wj 2) x) (* 2 (* x wj))) |
| 97.0ms | (- (+ x (pow wj 2)) (* 2 (* x wj))) |
| 75.0ms | (- (+ x (pow wj 2)) (* 2 (* x wj))) |
7 alts after pruning (6 fresh and 1 done)
Merged error: 0.6b
Found 4 expressions with local error:
| 0.6b | (cbrt (fma wj (fma x -2 wj) x)) |
| 0.6b | (cbrt (fma wj (fma x -2 wj) x)) |
| 0.6b | (cbrt (fma wj (fma x -2 wj) x)) |
| 0.5b | (* (cbrt (fma wj (fma x -2 wj) x)) (cbrt (fma wj (fma x -2 wj) x))) |
4 calls. Slowest were:
| 10.0ms | (* (cbrt (fma wj (fma x -2 wj) x)) (cbrt (fma wj (fma x -2 wj) x))) |
| 2.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
| 1.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
4 calls. Slowest were:
| 184.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
| 164.0ms | (* (cbrt (fma wj (fma x -2 wj) x)) (cbrt (fma wj (fma x -2 wj) x))) |
| 158.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
| 127.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
41 calls. Slowest were:
| 264.0ms | (- (pow x 2/3) (+ (* 4/9 (* (pow (pow x 2) 1/3) (pow wj 2))) (* 4/3 (* (pow (pow x 2) 1/3) wj)))) |
| 263.0ms | (- (pow x 1/3) (+ (* 4/9 (* (pow x 1/3) (pow wj 2))) (* 2/3 (* (pow x 1/3) wj)))) |
| 255.0ms | (- (pow x 1/3) (+ (* 4/9 (* (pow x 1/3) (pow wj 2))) (* 2/3 (* (pow x 1/3) wj)))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 0.6b
Found 4 expressions with local error:
| 0.6b | (cbrt (fma wj (fma x -2 wj) x)) |
| 0.6b | (cbrt (fma wj (fma x -2 wj) x)) |
| 0.6b | (cbrt (fma wj (fma x -2 wj) x)) |
| 0.6b | (cbrt (fma wj (fma x -2 wj) x)) |
4 calls. Slowest were:
| 1.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
| 1.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
| 1.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
4 calls. Slowest were:
| 165.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
| 162.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
| 138.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
| 127.0ms | (cbrt (fma wj (fma x -2 wj) x)) |
24 calls. Slowest were:
| 307.0ms | (- (pow x 1/3) (+ (* 4/9 (* (pow x 1/3) (pow wj 2))) (* 2/3 (* (pow x 1/3) wj)))) |
| 268.0ms | (- (pow x 1/3) (+ (* 4/9 (* (pow x 1/3) (pow wj 2))) (* 2/3 (* (pow x 1/3) wj)))) |
| 253.0ms | (- (pow x 1/3) (+ (* 4/9 (* (pow x 1/3) (pow wj 2))) (* 2/3 (* (pow x 1/3) wj)))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 0.6b
80.2% (0.3b remaining)
Error of 0.6b against oracle of 0.3b and baseline of 2.0b