


Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a
Initial program 0.2
Simplified0.2
rmApplied add-cube-cbrt0.2
Applied log-prod0.3
Applied associate-+l+0.3
Final simplification0.3
herbie shell --seed 2019007 +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: 39.5s)Debug log
1 calls. Slowest were:
| 419.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)) |
| 5.0ms | (- (fma (- a 0.5) (log t) (log z)) t) |
| 0.0ms | (fma (- a 0.5) (log t) (log z)) |
3 calls. Slowest were:
| 117.0ms | (+ (log (+ y x)) (- (fma (- a 0.5) (log t) (log z)) t)) |
| 86.0ms | (fma (- a 0.5) (log t) (log z)) |
| 40.0ms | (- (fma (- a 0.5) (log t) (log z)) t) |
25 calls. Slowest were:
| 469.0ms | (- (+ (* a (log t)) (+ (log z) (log x))) (+ t (* 0.5 (log t)))) |
| 435.0ms | (- (* 0.5 (log (/ 1 t))) (+ t (+ (log (/ 1 z)) (* a (log (/ 1 t)))))) |
| 428.0ms | (- (* 0.5 (log (/ 1 t))) (+ (log (/ 1 z)) (* a (log (/ 1 t))))) |
9 alts after pruning (9 fresh and 0 done)
Merged error: 0.1b
Found 3 expressions with local error:
| 0.3b | (fma (log t) (- a 0.5) (log z)) |
| 0.1b | (+ (log (+ y x)) (- (fma (log t) (- a 0.5) (log z)) t)) |
| 0.0b | (- (fma (log t) (- a 0.5) (log z)) t) |
3 calls. Slowest were:
| 9.0ms | (+ (log (+ y x)) (- (fma (log t) (- a 0.5) (log z)) t)) |
| 3.0ms | (- (fma (log t) (- a 0.5) (log z)) t) |
| 0.0ms | (fma (log t) (- a 0.5) (log z)) |
3 calls. Slowest were:
| 169.0ms | (fma (log t) (- a 0.5) (log z)) |
| 162.0ms | (+ (log (+ y x)) (- (fma (log t) (- a 0.5) (log z)) t)) |
| 64.0ms | (- (fma (log t) (- a 0.5) (log z)) t) |
25 calls. Slowest were:
| 518.0ms | (- (* 0.5 (log (/ 1 t))) (+ t (+ (log (/ 1 z)) (* a (log (/ 1 t)))))) |
| 490.0ms | (- (+ (* 0.5 (log (/ -1 t))) (+ (* a (log -1)) (* 0.5 (log -1)))) (+ t (+ (* a (log (/ -1 t))) (log (/ -1 z))))) |
| 442.0ms | (- (* 0.5 (log (/ 1 t))) (+ (log (/ 1 z)) (* a (log (/ 1 t))))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 0.1b
Found 4 expressions with local error:
| 0.5b | (cbrt (+ y x)) |
| 0.5b | (cbrt (+ y x)) |
| 0.5b | (cbrt (+ y x)) |
| 0.5b | (* (cbrt (+ y x)) (cbrt (+ y x))) |
4 calls. Slowest were:
| 8.0ms | (* (cbrt (+ y x)) (cbrt (+ y x))) |
| 1.0ms | (cbrt (+ y x)) |
| 1.0ms | (cbrt (+ y x)) |
4 calls. Slowest were:
| 181.0ms | (cbrt (+ y x)) |
| 179.0ms | (* (cbrt (+ y x)) (cbrt (+ y x))) |
| 165.0ms | (cbrt (+ y x)) |
| 143.0ms | (cbrt (+ y x)) |
59 calls. Slowest were:
| 248.0ms | (- (+ (pow x 1/3) (* 1/3 (* (pow (/ 1 (pow x 2)) 1/3) y))) (* 1/9 (* (pow (/ 1 (pow x 5)) 1/3) (pow y 2)))) |
| 239.0ms | (- (+ (pow x 1/3) (* 1/3 (* (pow (/ 1 (pow x 2)) 1/3) y))) (* 1/9 (* (pow (/ 1 (pow x 5)) 1/3) (pow y 2)))) |
| 233.0ms | (- (+ (pow x 1/3) (* 1/3 (* (pow (/ 1 (pow x 2)) 1/3) y))) (* 1/9 (* (pow (/ 1 (pow x 5)) 1/3) (pow y 2)))) |
9 alts after pruning (7 fresh and 2 done)
Merged error: 0.1b
Found 4 expressions with local error:
| 0.6b | (cbrt (fma (log t) (- a 0.5) (log z))) |
| 0.6b | (cbrt (fma (log t) (- a 0.5) (log z))) |
| 0.6b | (cbrt (fma (log t) (- a 0.5) (log z))) |
| 0.5b | (* (cbrt (fma (log t) (- a 0.5) (log z))) (cbrt (fma (log t) (- a 0.5) (log z)))) |
4 calls. Slowest were:
| 10.0ms | (* (cbrt (fma (log t) (- a 0.5) (log z))) (cbrt (fma (log t) (- a 0.5) (log z)))) |
| 1.0ms | (cbrt (fma (log t) (- a 0.5) (log z))) |
| 1.0ms | (cbrt (fma (log t) (- a 0.5) (log z))) |
4 calls. Slowest were:
| 622.0ms | (* (cbrt (fma (log t) (- a 0.5) (log z))) (cbrt (fma (log t) (- a 0.5) (log z)))) |
| 293.0ms | (cbrt (fma (log t) (- a 0.5) (log z))) |
| 283.0ms | (cbrt (fma (log t) (- a 0.5) (log z))) |
| 226.0ms | (cbrt (fma (log t) (- a 0.5) (log z))) |
41 calls. Slowest were:
| 812.0ms | (- (+ (* 0.2222222222222222 (* (* (pow a 2) (* (pow (log t) 3) (log z))) (pow (/ 1 (pow (- (log z) (* 0.5 (log t))) 10)) 1/3))) (+ (* 0.2222222222222222 (* (* (pow a 2) (* (log z) (pow (log t) 3))) (pow (/ 1 (pow (- (log z) (* 0.5 (log t))) 10)) 1/3))) (+ (* 1/3 (* (* (pow a 2) (pow (log t) 2)) (pow (/ 1 (pow (- (log z) (* 0.5 (log t))) 4)) 1/3))) (+ (pow (pow (- (log z) (* 0.5 (log t))) 2) 1/3) (* 2/3 (* (* a (* (log z) (log t))) (pow (/ 1 (pow (- (log z) (* 0.5 (log t))) 4)) 1/3))))))) (+ (* 0.1111111111111111 (* (* (pow a 2) (pow (log t) 4)) (pow (/ 1 (pow (- (log z) (* 0.5 (log t))) 10)) 1/3))) (+ (* 0.3333333333333333 (* (* a (pow (log t) 2)) (pow (/ 1 (pow (- (log z) (* 0.5 (log t))) 4)) 1/3))) (* 4/9 (* (* (pow a 2) (* (pow (log z) 2) (pow (log t) 2))) (pow (/ 1 (pow (- (log z) (* 0.5 (log t))) 10)) 1/3)))))) |
| 362.0ms | (- (+ (* 0.2222222222222221 (/ (* (pow (log (/ -1 t)) 2) (* (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))) (pow (log -1) 2))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 0.4444444444444444 (/ (* (log (/ -1 z)) (* (pow (log -1) 3) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 8/9 (/ (* (log (/ -1 t)) (* (pow (log (/ -1 z)) 2) (* (log -1) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a))))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 0.3333333333333333 (/ (* (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))) (pow (log -1) 2)) (* a (pow (- (log (/ -1 t)) (log -1)) 2)))) (+ (* 2/3 (/ (* (log (/ -1 t)) (* (log (/ -1 z)) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))))) (* a (pow (- (log (/ -1 t)) (log -1)) 2)))) (+ (* 0.08333333333333333 (/ (* (pow (log (/ -1 t)) 2) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 2)))) (+ (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))) (+ (* 0.08333333333333331 (/ (* (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))) (pow (log -1) 2)) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 2)))) (+ (* 1/3 (/ (* (pow (log (/ -1 z)) 2) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 2)))) (+ (* 0.16666666666666666 (/ (* (log (/ -1 t)) (* (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))) (log -1))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 2)))) (* 0.4444444444444444 (/ (* (pow (log (/ -1 t)) 3) (* (log (/ -1 z)) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))))))))))))) (+ (* 0.11111111111111116 (/ (* (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))) (pow (log -1) 4)) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 2.220446049250313e-16 (/ (* (log (/ -1 t)) (* (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))) (pow (log -1) 3))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 0.3333333333333333 (/ (* (log (/ -1 t)) (* (log (/ -1 z)) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 2)))) (+ (* 0.3333333333333333 (/ (* (pow (log (/ -1 t)) 2) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a))))))) (* a (pow (- (log (/ -1 t)) (log -1)) 2)))) (+ (* 2/3 (/ (* (log (/ -1 z)) (* (log -1) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))))) (* a (pow (- (log (/ -1 t)) (log -1)) 2)))) (+ (* 4/9 (/ (* (pow (log (/ -1 z)) 2) (* (pow (log -1) 2) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 0.1111111111111111 (/ (* (pow (log (/ -1 t)) 4) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 0.4444444444444442 (/ (* (log (/ -1 t)) (* (log (/ -1 z)) (* (pow (log -1) 2) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a))))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 4/9 (/ (* (pow (log (/ -1 t)) 2) (* (pow (log (/ -1 z)) 2) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (+ (* 0.4444444444444444 (/ (* (pow (log (/ -1 t)) 2) (* (log (/ -1 z)) (* (log -1) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a))))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 4)))) (* 0.3333333333333333 (/ (* (log (/ -1 z)) (* (log -1) (exp (* 1/3 (- (log (pow (- (log (/ -1 t)) (log -1)) 2)) (* 2 (log (/ -1 a)))))))) (* (pow a 2) (pow (- (log (/ -1 t)) (log -1)) 2))))))))))))))) |
| 352.0ms | (* (fma (log t) (- a 0.5) (log z)) (fma (log t) (- a 0.5) (log z))) |
14 alts after pruning (13 fresh and 1 done)
Merged error: 0.0b
0% (0.2b remaining)
Error of 0.3b against oracle of 0.1b and baseline of 0.3b