



Bits error versus wj




Bits error versus x
| Original | 13.2 |
|---|---|
| Target | 12.7 |
| Herbie | 2.1 |
Initial program 13.2
Simplified13.2
Taylor expanded around 0 2.0
Simplified2.1
Final simplification2.1
herbie shell --seed 2019022 +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: 17.7s)Debug log
| 151.0ms | 270× | body | 10240 | exit |
| 16.0ms | 205× | body | 80 | valid |
| 7.0ms | 19× | body | 640 | valid |
| 5.0ms | 21× | body | 320 | valid |
| 2.0ms | 15× | body | 160 | valid |
| 157.0ms | (- wj (/ (- (* wj (exp wj)) x) (+ (exp wj) (* wj (exp wj))))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 13.4b
Found 4 expressions with local error:
| 4.4b | (+ (/ (fma (- wj) (exp wj) x) (fma (exp wj) wj (exp wj))) wj) |
| 0.5b | (/ (fma (- wj) (exp wj) x) (fma (exp wj) wj (exp wj))) |
| 0.0b | (fma (exp wj) wj (exp wj)) |
| 0.0b | (fma (- wj) (exp wj) x) |
| 19× | add-cube-cbrt |
| 19× | *-un-lft-identity |
| 19× | add-sqr-sqrt |
| 18× | times-frac |
| 13× | fma-def |
| 6× | add-exp-log |
| 6× | add-cbrt-cube |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | pow1 |
| 4× | expm1-log1p-u |
| 3× | associate-/l* |
| 3× | associate-/r* |
| 2× | div-inv |
| 2× | fma-udef |
| 1× | flip-+ |
| 1× | div-exp |
| 1× | flip3-+ |
| 1× | frac-2neg |
| 1× | clear-num |
| 1× | +-commutative |
| 1× | cbrt-undiv |
| 13.0ms | (+ (/ (fma (- wj) (exp wj) x) (fma (exp wj) wj (exp wj))) wj) |
| 4.0ms | (/ (fma (- wj) (exp wj) x) (fma (exp wj) wj (exp wj))) |
| 0.0ms | (fma (exp wj) wj (exp wj)) |
| 0.0ms | (fma (- wj) (exp wj) x) |
| 48.0ms | (+ (/ (fma (- wj) (exp wj) x) (fma (exp wj) wj (exp wj))) wj) |
| 47.0ms | (/ (fma (- wj) (exp wj) x) (fma (exp wj) wj (exp wj))) |
| 28.0ms | (fma (exp wj) wj (exp wj)) |
| 26.0ms | (fma (- wj) (exp wj) x) |
| 388.0ms | (* (cbrt (/ (fma (- wj) (exp wj) x) (fma (exp wj) wj (exp wj)))) (cbrt (/ (fma (- wj) (exp wj) x) (fma (exp wj) wj (exp wj))))) |
| 206.0ms | (/ (* (* (fma (- wj) (exp wj) x) (fma (- wj) (exp wj) x)) (fma (- wj) (exp wj) x)) (* (* (fma (exp wj) wj (exp wj)) (fma (exp wj) wj (exp wj))) (fma (exp wj) wj (exp wj)))) |
| 124.0ms | (- (+ (pow wj 2) x) (* 2 (* x wj))) |
| 59.0ms | (/ (* (cbrt (fma (- wj) (exp wj) x)) (cbrt (fma (- wj) (exp wj) x))) (* (cbrt (fma (exp wj) wj (exp wj))) (cbrt (fma (exp wj) wj (exp wj))))) |
| 54.0ms | (- (/ x (* (exp wj) wj)) (+ (/ x (* (exp wj) (pow wj 2))) 1)) |
5 alts after pruning (5 fresh and 0 done)
Merged error: 0.5b
Found 0 expressions with local error:
5 alts after pruning (4 fresh and 1 done)
Merged error: 0.5b
Found 4 expressions with local error:
| 6.6b | (+ (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x))) wj) |
| 0.5b | (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x)) |
| 0.2b | (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x))) |
| 0.0b | (fma (exp wj) wj (exp wj)) |
| 20× | add-cube-cbrt |
| 20× | *-un-lft-identity |
| 20× | add-sqr-sqrt |
| 18× | times-frac |
| 16× | associate-/r* |
| 9× | add-exp-log |
| 6× | add-cbrt-cube |
| 5× | fma-def |
| 5× | pow1 |
| 4× | add-log-exp |
| 4× | div-inv |
| 4× | log1p-expm1-u |
| 4× | expm1-log1p-u |
| 3× | associate-/l* |
| 2× | associate-/r/ |
| 2× | div-exp |
| 2× | frac-2neg |
| 2× | clear-num |
| 2× | rec-exp |
| 1× | inv-pow |
| 1× | pow-flip |
| 1× | fma-udef |
| 1× | flip-+ |
| 1× | flip3-+ |
| 1× | +-commutative |
| 1× | cbrt-undiv |
| 3.0ms | (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x)) |
| 3.0ms | (+ (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x))) wj) |
| 2.0ms | (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x))) |
| 0.0ms | (fma (exp wj) wj (exp wj)) |
| 111.0ms | (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x)) |
| 56.0ms | (+ (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x))) wj) |
| 42.0ms | (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x))) |
| 30.0ms | (fma (exp wj) wj (exp wj)) |
| 274.0ms | (/ (* (* (fma (exp wj) wj (exp wj)) (fma (exp wj) wj (exp wj))) (fma (exp wj) wj (exp wj))) (* (* (fma (- wj) (exp wj) x) (fma (- wj) (exp wj) x)) (fma (- wj) (exp wj) x))) |
| 121.0ms | (- (+ (pow wj 2) x) (* 2 (* x wj))) |
| 119.0ms | (* (cbrt (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x)))) (cbrt (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x))))) |
| 115.0ms | (sqrt (/ 1 (/ (fma (exp wj) wj (exp wj)) (fma (- wj) (exp wj) x)))) |
| 60.0ms | (/ (* (cbrt (fma (exp wj) wj (exp wj))) (cbrt (fma (exp wj) wj (exp wj)))) (* (cbrt (fma (- wj) (exp wj) x)) (cbrt (fma (- wj) (exp wj) x)))) |
5 alts after pruning (3 fresh and 2 done)
Merged error: 0.5b
Found 4 expressions with local error:
| 13.0b | (fma (/ (* (cbrt (fma (- wj) (exp wj) x)) (cbrt (fma (- wj) (exp wj) x))) (sqrt (fma (exp wj) wj (exp wj)))) (/ (cbrt (fma (- wj) (exp wj) x)) (sqrt (fma (exp wj) wj (exp wj)))) wj) |
| 0.8b | (cbrt (fma (- wj) (exp wj) x)) |
| 0.8b | (cbrt (fma (- wj) (exp wj) x)) |
| 0.8b | (cbrt (fma (- wj) (exp wj) x)) |
| 9× | cbrt-prod |
| 7× | add-cube-cbrt |
| 7× | *-un-lft-identity |
| 7× | add-sqr-sqrt |
| 4× | add-log-exp |
| 4× | log1p-expm1-u |
| 4× | add-exp-log |
| 4× | add-cbrt-cube |
| 4× | pow1 |
| 4× | expm1-log1p-u |
| 3× | pow1/3 |
| 1× | fma-udef |
| 1.0ms | (cbrt (fma (- wj) (exp wj) x)) |
| 1.0ms | (cbrt (fma (- wj) (exp wj) x)) |
| 1.0ms | (cbrt (fma (- wj) (exp wj) x)) |
| 0.0ms | (fma (/ (* (cbrt (fma (- wj) (exp wj) x)) (cbrt (fma (- wj) (exp wj) x))) (sqrt (fma (exp wj) wj (exp wj)))) (/ (cbrt (fma (- wj) (exp wj) x)) (sqrt (fma (exp wj) wj (exp wj)))) wj) |
| 362.0ms | (fma (/ (* (cbrt (fma (- wj) (exp wj) x)) (cbrt (fma (- wj) (exp wj) x))) (sqrt (fma (exp wj) wj (exp wj)))) (/ (cbrt (fma (- wj) (exp wj) x)) (sqrt (fma (exp wj) wj (exp wj)))) wj) |
| 264.0ms | (cbrt (fma (- wj) (exp wj) x)) |
| 244.0ms | (cbrt (fma (- wj) (exp wj) x)) |
| 239.0ms | (cbrt (fma (- wj) (exp wj) x)) |
| 164.0ms | (exp (* -1/3 (- (log (/ -1 wj)) wj))) |
| 156.0ms | (exp (* -1/3 (- (log (/ -1 wj)) wj))) |
| 137.0ms | (exp (* -1/3 (- (log (/ -1 wj)) wj))) |
| 83.0ms | (- (+ (pow wj 2) x) (* 2 (* x wj))) |
| 78.0ms | (exp (* 1/3 (- (log (- (exp wj))) (log (/ 1 wj))))) |
6 alts after pruning (3 fresh and 3 done)
Merged error: 0.5b
0% (1.6b remaining)
Error of 2.1b against oracle of 0.4b and baseline of 2.1b
| 7.0s | 7607× | body | 10240 | exit |
| 641.0ms | 6359× | body | 80 | valid |
| 287.0ms | 444× | body | 640 | valid |
| 255.0ms | 772× | body | 320 | valid |
| 99.0ms | 513× | body | 160 | valid |