


Bits error versus t
Initial program 0.1
Simplified0.1
rmApplied add-sqr-sqrt0.5
Applied associate-/l*0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019004 +o rules:numerics
(FPCore (t)
:name "Kahan p13 Example 1"
(/ (+ 1 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t)))) (+ 2 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t))))))
Time bar (total: 2.8m)Debug log
1 calls. Slowest were:
| 606.0ms | (/ (+ 1 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t)))) (+ 2 (* (/ (* 2 t) (+ 1 t)) (/ (* 2 t) (+ 1 t))))) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 0.0b
Found 4 expressions with local error:
| 0.0b | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) |
| 0.0b | (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) |
| 0.0b | (/ (* t 2) (+ 1 t)) |
| 0.0b | (/ (* t 2) (+ 1 t)) |
4 calls. Slowest were:
| 6.0ms | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) |
| 6.0ms | (/ (* t 2) (+ 1 t)) |
| 6.0ms | (/ (* t 2) (+ 1 t)) |
4 calls. Slowest were:
| 54.0ms | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) |
| 31.0ms | (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) |
| 18.0ms | (/ (* t 2) (+ 1 t)) |
| 17.0ms | (/ (* t 2) (+ 1 t)) |
63 calls. Slowest were:
| 655.0ms | (- (+ (* 2 t) (* 2 (pow t 3))) (* 2 (pow t 2))) |
| 597.0ms | (- (+ (* 2 t) (* 2 (pow t 3))) (* 2 (pow t 2))) |
| 461.0ms | (/ (* (* (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) (* (* (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2))) |
4 alts after pruning (4 fresh and 0 done)
Merged error: 0b
Found 4 expressions with local error:
| 0.0b | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) |
| 0.0b | (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) |
| 0.0b | (/ (* t 2) (+ 1 t)) |
| 0.0b | (/ (* t 2) (+ 1 t)) |
4 calls. Slowest were:
| 6.0ms | (/ (* t 2) (+ 1 t)) |
| 6.0ms | (/ (* t 2) (+ 1 t)) |
| 5.0ms | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) |
4 calls. Slowest were:
| 52.0ms | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) |
| 21.0ms | (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) |
| 14.0ms | (/ (* t 2) (+ 1 t)) |
| 11.0ms | (/ (* t 2) (+ 1 t)) |
63 calls. Slowest were:
| 759.0ms | (- (+ (* 2 t) (* 2 (pow t 3))) (* 2 (pow t 2))) |
| 612.0ms | (- (+ (* 2 t) (* 2 (pow t 3))) (* 2 (pow t 2))) |
| 432.0ms | (/ (* (* (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (* (* (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))) |
3 alts after pruning (3 fresh and 0 done)
Merged error: 0b
Found 4 expressions with local error:
| 0.0b | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))) |
| 0.0b | (hypot 1 (/ (* t 2) (+ 1 t))) |
| 0.0b | (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) |
| 0.0b | (/ (hypot 1 (/ (* t 2) (+ 1 t))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))) |
4 calls. Slowest were:
| 10.0ms | (/ (hypot 1 (/ (* t 2) (+ 1 t))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))) |
| 7.0ms | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))) |
| 1.0ms | (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) |
4 calls. Slowest were:
| 173.0ms | (/ (hypot 1 (/ (* t 2) (+ 1 t))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))) |
| 109.0ms | (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))) |
| 66.0ms | (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) |
| 49.0ms | (hypot 1 (/ (* t 2) (+ 1 t))) |
223 calls. Slowest were:
| 715.0ms | (/ (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (sqrt (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))) |
| 574.0ms | (- (+ (sqrt 5) (* 6 (/ 1 (* (pow t 2) (sqrt 5))))) (+ (* 8 (/ 1 (* (pow t 2) (pow (sqrt 5) 3)))) (* 4 (/ 1 (* t (sqrt 5)))))) |
| 500.0ms | (/ (sqrt (hypot 1 (/ (* t 2) (+ 1 t)))) (/ (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (sqrt (* (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))))) |
3 alts after pruning (2 fresh and 1 done)
Merged error: 0b
Found 4 expressions with local error:
| 0.6b | (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) |
| 0.6b | (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)) |
| 0.6b | (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) |
| 0.0b | (* (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) (/ (cbrt (hypot 1 (/ (* t 2) (+ 1 t)))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))))) |
4 calls. Slowest were:
| 62.0ms | (* (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) (/ (cbrt (hypot 1 (/ (* t 2) (+ 1 t)))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))))) |
| 12.0ms | (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) |
| 1.0ms | (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)) |
4 calls. Slowest were:
| 226.0ms | (* (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) (/ (cbrt (hypot 1 (/ (* t 2) (+ 1 t)))) (/ (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2) (sqrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))))) |
| 171.0ms | (* (* (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))) (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)))) |
| 88.0ms | (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)) |
| 87.0ms | (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1)) |
242 calls. Slowest were:
| 642.0ms | (/ (cbrt (sqrt (hypot 1 (/ (* t 2) (+ 1 t))))) (/ (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (sqrt (cbrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))))) |
| 494.0ms | (/ (sqrt (cbrt (hypot 1 (/ (* t 2) (+ 1 t))))) (/ (sqrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (sqrt (cbrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1)))))) |
| 434.0ms | (+ (+ (+ (log (cbrt (hypot 1 (/ (* 2 t) (+ t 1))))) (log (cbrt (hypot 1 (/ (* 2 t) (+ t 1)))))) (log (fabs (cbrt (fma (/ (* 2 t) (+ t 1)) (/ (* 2 t) (+ t 1)) 1))))) (- (log (cbrt (hypot 1 (/ (* t 2) (+ 1 t))))) (- (log (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 2)) (log (sqrt (cbrt (fma (/ (* t 2) (+ 1 t)) (/ (* t 2) (+ 1 t)) 1))))))) |
3 alts after pruning (1 fresh and 2 done)
Merged error: 0b
0% (0.0b remaining)
Error of 0.1b against oracle of 0.1b and baseline of 0.1b