



Bits error versus x




Bits error versus y
Results
| Original | 0.5 |
|---|---|
| Target | 0.1 |
| Herbie | 0.4 |
Initial program 0.5
Initial simplification0.4
Final simplification0.4
herbie shell --seed 2018362 +o rules:numerics
(FPCore (x y)
:name "Logistic regression 2"
:herbie-target
(if (<= x 0) (- (log (+ 1 (exp x))) (* x y)) (- (log (+ 1 (exp (- x)))) (* (- x) (- 1 y))))
(- (log (+ 1 (exp x))) (* x y)))
Time bar (total: 8.4s)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 0.5b
Found 2 expressions with local error:
| 0.5b | (log1p (exp x)) |
| 0.0b | (- (log1p (exp x)) (* y x)) |
2 calls. Slowest were:
| 3.0ms | (- (log1p (exp x)) (* y x)) |
| 0.0ms | (log1p (exp x)) |
2 calls. Slowest were:
| 57.0ms | (log1p (exp x)) |
| 46.0ms | (- (log1p (exp x)) (* y x)) |
17 calls. Slowest were:
| 55.0ms | (+ (log 2) (+ (* 1/2 x) (* 1/8 (pow x 2)))) |
| 35.0ms | (+ (log 2) (+ (* 1/2 x) (* 1/8 (pow x 2)))) |
| 16.0ms | (fma (sqrt (log1p (exp x))) (sqrt (log1p (exp x))) (- (* x y))) |
3 alts after pruning (2 fresh and 1 done)
Merged error: 0.2b
Found 2 expressions with local error:
| 0.0b | (- (fma x (fma 1/8 x 1/2) (log 2)) (* y x)) |
| 0.0b | (fma x (fma 1/8 x 1/2) (log 2)) |
2 calls. Slowest were:
| 4.0ms | (- (fma x (fma 1/8 x 1/2) (log 2)) (* y x)) |
| 0.0ms | (fma x (fma 1/8 x 1/2) (log 2)) |
2 calls. Slowest were:
| 34.0ms | (- (fma x (fma 1/8 x 1/2) (log 2)) (* y x)) |
| 17.0ms | (fma x (fma 1/8 x 1/2) (log 2)) |
16 calls. Slowest were:
| 197.0ms | (- (+ (* 1/2 x) (* 1/8 (pow x 2))) (* x y)) |
| 191.0ms | (- (+ (* 1/2 x) (* 1/8 (pow x 2))) (* x y)) |
| 113.0ms | (/ (exp (fma x (fma 1/8 x 1/2) (log 2))) (exp (* y x))) |
3 alts after pruning (2 fresh and 1 done)
Merged error: 0.2b
Found 2 expressions with local error:
| 49.6b | (fma (- x) y (* x y)) |
| 0.0b | (fma x (- (fma 1/8 x 1/2) y) (log 2)) |
2 calls. Slowest were:
| 0.0ms | (fma (- x) y (* x y)) |
| 0.0ms | (fma x (- (fma 1/8 x 1/2) y) (log 2)) |
2 calls. Slowest were:
| 37.0ms | (fma x (- (fma 1/8 x 1/2) y) (log 2)) |
| 15.0ms | (fma (- x) y (* x y)) |
6 calls. Slowest were:
| 189.0ms | (- (+ (* 1/2 x) (* 1/8 (pow x 2))) (* x y)) |
| 149.0ms | (- (+ (* 1/2 x) (* 1/8 (pow x 2))) (* x y)) |
| 36.0ms | (+ (log 2) (+ (* 1/2 x) (* 1/8 (pow x 2)))) |
3 alts after pruning (1 fresh and 2 done)
Merged error: 0.2b
Found 4 expressions with local error:
| 7.3b | (log (fma x (fma 1/8 x 1/2) (log 2))) |
| 0.9b | (exp (log (fma x (fma 1/8 x 1/2) (log 2)))) |
| 0.0b | (- (exp (log (fma x (fma 1/8 x 1/2) (log 2)))) (* y x)) |
| 0.0b | (fma x (fma 1/8 x 1/2) (log 2)) |
4 calls. Slowest were:
| 21.0ms | (- (exp (log (fma x (fma 1/8 x 1/2) (log 2)))) (* y x)) |
| 4.0ms | (exp (log (fma x (fma 1/8 x 1/2) (log 2)))) |
| 2.0ms | (log (fma x (fma 1/8 x 1/2) (log 2))) |
4 calls. Slowest were:
| 43.0ms | (log (fma x (fma 1/8 x 1/2) (log 2))) |
| 38.0ms | (- (exp (log (fma x (fma 1/8 x 1/2) (log 2)))) (* y x)) |
| 27.0ms | (fma x (fma 1/8 x 1/2) (log 2)) |
| 19.0ms | (exp (log (fma x (fma 1/8 x 1/2) (log 2)))) |
41 calls. Slowest were:
| 466.0ms | (- (+ (* 1/8 (/ (pow x 2) (log 2))) (+ (log (log 2)) (* 1/2 (/ x (log 2))))) (* 1/8 (/ (pow x 2) (pow (log 2) 2)))) |
| 324.0ms | (- (+ (log 1/8) (+ (* 8 (/ (log 2) (pow x 2))) (* 4 (/ 1 x)))) (+ (* 2 (log (/ 1 x))) (* 8 (/ 1 (pow x 2))))) |
| 307.0ms | (/ (exp (exp (log (fma x (fma 1/8 x 1/2) (log 2))))) (exp (* y x))) |
3 alts after pruning (1 fresh and 2 done)
Merged error: 0.2b
0% (0.2b remaining)
Error of 0.4b against oracle of 0.2b and baseline of 0.4b