


Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
Results
Initial program 0.3
Simplified0.2
rmApplied fma-udef0.2
Applied associate--l+0.2
Applied associate-+r+0.3
rmApplied associate-+l+0.2
Final simplification0.2
herbie shell --seed 2019008 +o rules:numerics
(FPCore (x y z t a)
:name "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2"
(+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))
Time bar (total: 43.9s)Debug log
1 calls. Slowest were:
| 334.0ms | (+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))) |
2 alts after pruning (2 fresh and 0 done)
Merged error: 0.2b
Found 3 expressions with local error:
| 0.3b | (fma (- a 0.5) (log t) (log z)) |
| 0.1b | (+ (log (+ y x)) (- (fma (- a 0.5) (log t) (log z)) t)) |
| 0.0b | (- (fma (- a 0.5) (log t) (log z)) t) |
3 calls. Slowest were:
| 9.0ms | (+ (log (+ y x)) (- (fma (- a 0.5) (log t) (log z)) t)) |
| 8.0ms | (- (fma (- a 0.5) (log t) (log z)) t) |
| 0.0ms | (fma (- a 0.5) (log t) (log z)) |
3 calls. Slowest were:
| 147.0ms | (+ (log (+ y x)) (- (fma (- a 0.5) (log t) (log z)) t)) |
| 70.0ms | (fma (- a 0.5) (log t) (log z)) |
| 48.0ms | (- (fma (- a 0.5) (log t) (log z)) t) |
25 calls. Slowest were:
| 474.0ms | (- (* 0.5 (log (/ 1 t))) (+ (log (/ 1 z)) (* a (log (/ 1 t))))) |
| 470.0ms | (- (* 0.5 (log (/ 1 t))) (+ t (+ (log (/ 1 z)) (* a (log (/ 1 t)))))) |
| 441.0ms | (- (+ (* 0.5 (log (/ -1 t))) (+ (* a (log -1)) (* 0.5 (log -1)))) (+ t (+ (* a (log (/ -1 t))) (log (/ -1 z))))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 0.1b
Found 4 expressions with local error:
| 0.3b | (+ (log (+ y x)) (* (- a 0.5) (log t))) |
| 0.2b | (+ (+ (log (+ y x)) (* (- a 0.5) (log t))) (- (log z) t)) |
| 0.1b | (* (- a 0.5) (log t)) |
| 0.0b | (- (log z) t) |
4 calls. Slowest were:
| 38.0ms | (+ (+ (log (+ y x)) (* (- a 0.5) (log t))) (- (log z) t)) |
| 11.0ms | (+ (log (+ y x)) (* (- a 0.5) (log t))) |
| 4.0ms | (* (- a 0.5) (log t)) |
4 calls. Slowest were:
| 159.0ms | (+ (log (+ y x)) (* (- a 0.5) (log t))) |
| 151.0ms | (+ (+ (log (+ y x)) (* (- a 0.5) (log t))) (- (log z) t)) |
| 89.0ms | (- (log z) t) |
| 54.0ms | (* (- a 0.5) (log t)) |
50 calls. Slowest were:
| 465.0ms | (- (* 0.5 (log (/ 1 t))) (+ (* a (log (/ 1 t))) (log (/ 1 y)))) |
| 352.0ms | (- (+ (* a (log t)) (+ (log z) (log x))) (+ t (* 0.5 (log t)))) |
| 350.0ms | (- (log -1) (+ t (log (/ -1 z)))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 0.0b
Found 4 expressions with local error:
| 0.1b | (+ (* (- a 0.5) (log t)) (- (log z) t)) |
| 0.1b | (+ (log (+ y x)) (+ (* (- a 0.5) (log t)) (- (log z) t))) |
| 0.1b | (* (- a 0.5) (log t)) |
| 0.0b | (- (log z) t) |
4 calls. Slowest were:
| 23.0ms | (+ (* (- a 0.5) (log t)) (- (log z) t)) |
| 23.0ms | (+ (log (+ y x)) (+ (* (- a 0.5) (log t)) (- (log z) t))) |
| 4.0ms | (* (- a 0.5) (log t)) |
4 calls. Slowest were:
| 142.0ms | (+ (log (+ y x)) (+ (* (- a 0.5) (log t)) (- (log z) t))) |
| 65.0ms | (- (log z) t) |
| 60.0ms | (* (- a 0.5) (log t)) |
| 58.0ms | (+ (* (- a 0.5) (log t)) (- (log z) t)) |
48 calls. Slowest were:
| 449.0ms | (- (+ (* 0.5 (log (/ -1 t))) (+ (* a (log -1)) (* 0.5 (log -1)))) (+ t (+ (* a (log (/ -1 t))) (log (/ -1 z))))) |
| 416.0ms | (- (* 0.5 (log (/ 1 t))) (+ t (+ (log (/ 1 z)) (* a (log (/ 1 t)))))) |
| 415.0ms | (- (log -1) (+ t (log (/ -1 z)))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 0.0b
Found 4 expressions with local error:
| 0.5b | (* (cbrt (* (- a 0.5) (log t))) (cbrt (* (- a 0.5) (log t)))) |
| 0.5b | (cbrt (* (- a 0.5) (log t))) |
| 0.5b | (cbrt (* (- a 0.5) (log t))) |
| 0.5b | (cbrt (* (- a 0.5) (log t))) |
4 calls. Slowest were:
| 17.0ms | (* (cbrt (* (- a 0.5) (log t))) (cbrt (* (- a 0.5) (log t)))) |
| 2.0ms | (cbrt (* (- a 0.5) (log t))) |
| 2.0ms | (cbrt (* (- a 0.5) (log t))) |
4 calls. Slowest were:
| 114.0ms | (* (cbrt (* (- a 0.5) (log t))) (cbrt (* (- a 0.5) (log t)))) |
| 105.0ms | (cbrt (* (- a 0.5) (log t))) |
| 92.0ms | (cbrt (* (- a 0.5) (log t))) |
| 83.0ms | (cbrt (* (- a 0.5) (log t))) |
49 calls. Slowest were:
| 376.0ms | (* (cbrt (* (- (* a a) (* 0.5 0.5)) (log t))) (cbrt (* (- a 0.5) (log t)))) |
| 334.0ms | (- (* (pow (cbrt -1) 2) (exp (* 1/3 (- (log (pow (- (log -1) (log (/ -1 t))) 2)) (* 2 (log (/ -1 a))))))) (+ (* 0.027777777777777776 (/ (* (pow (cbrt -1) 2) (exp (* 1/3 (- (log (pow (- (log -1) (log (/ -1 t))) 2)) (* 2 (log (/ -1 a))))))) (pow a 2))) (* 0.3333333333333333 (/ (* (pow (cbrt -1) 2) (exp (* 1/3 (- (log (pow (- (log -1) (log (/ -1 t))) 2)) (* 2 (log (/ -1 a))))))) a)))) |
| 320.0ms | (- (pow (* -0.5 (log t)) 1/3) (+ (* 0.4444444444444444 (* (pow a 2) (pow (* (log t) -0.5) 1/3))) (* 0.6666666666666666 (* a (pow (* (log t) -0.5) 1/3))))) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 0.0b
0% (0.2b remaining)
Error of 0.2b against oracle of 0.1b and baseline of 0.2b