


Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a



Bits error versus b



Bits error versus c
Results
if t < -5.35729014039294e-28Initial program 2.9
Taylor expanded around inf 6.9
Simplified3.4
if -5.35729014039294e-28 < t < -4.263262868647511e-303Initial program 6.2
Taylor expanded around -inf 6.2
rmApplied flip-+8.6
Applied frac-sub8.6
Applied associate-*r/8.7
Applied frac-sub6.4
if -4.263262868647511e-303 < t Initial program 3.3
Taylor expanded around -inf 3.3
Final simplification3.8
herbie shell --seed 2018365
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2"
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))
Time bar (total: 3.1m)Debug log
1 alts after pruning (1 fresh and 0 done)
Merged error: 2.9b
Found 4 expressions with local error:
| 5.4b | (/ (* z (sqrt (+ t a))) t) |
| 1.2b | (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))) |
| 0.3b | (/ 2.0 (* t 3.0)) |
| 0.2b | (* z (sqrt (+ t a))) |
4 calls. Slowest were:
| 17.0ms | (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))) |
| 4.0ms | (/ (* z (sqrt (+ t a))) t) |
| 2.0ms | (* z (sqrt (+ t a))) |
4 calls. Slowest were:
| 159.0ms | (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))) |
| 59.0ms | (* z (sqrt (+ t a))) |
| 51.0ms | (/ (* z (sqrt (+ t a))) t) |
| 10.0ms | (/ 2.0 (* t 3.0)) |
57 calls. Slowest were:
| 622.0ms | (* t (* (+ b c) (* (- a (/ 5.0 6.0)) (* t 3.0)))) |
| 559.0ms | (- (* (* z (sqrt (+ t a))) (* (+ (* b b) (+ (* c c) (* b c))) (+ (* (+ a (/ 5.0 6.0)) (+ a (/ 5.0 6.0))) (+ (* (/ 2.0 (* t 3.0)) (/ 2.0 (* t 3.0))) (* (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))) (* t (* (- (pow b 3) (pow c 3)) (- (pow (+ a (/ 5.0 6.0)) 3) (pow (/ 2.0 (* t 3.0)) 3))))) |
| 509.0ms | (- (* (* z (sqrt (+ t a))) (* (+ b c) (+ (* (+ a (/ 5.0 6.0)) (+ a (/ 5.0 6.0))) (+ (* (/ 2.0 (* t 3.0)) (/ 2.0 (* t 3.0))) (* (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))) (* t (* (- (* b b) (* c c)) (- (pow (+ a (/ 5.0 6.0)) 3) (pow (/ 2.0 (* t 3.0)) 3))))) |
3 alts after pruning (3 fresh and 0 done)
Merged error: 0.2b
Found 4 expressions with local error:
| 5.4b | (/ (* z (sqrt (+ t a))) t) |
| 1.2b | (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 0.6666666666666666 t)))) |
| 0.2b | (* z (sqrt (+ t a))) |
| 0.1b | (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 0.6666666666666666 t))) |
4 calls. Slowest were:
| 18.0ms | (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 0.6666666666666666 t)))) |
| 18.0ms | (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 0.6666666666666666 t))) |
| 7.0ms | (/ (* z (sqrt (+ t a))) t) |
4 calls. Slowest were:
| 178.0ms | (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 0.6666666666666666 t)))) |
| 68.0ms | (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 0.6666666666666666 t))) |
| 60.0ms | (* z (sqrt (+ t a))) |
| 57.0ms | (/ (* z (sqrt (+ t a))) t) |
95 calls. Slowest were:
| 1.1s | (* (+ (* b b) (+ (* c c) (* b c))) (* (+ (* a a) (- (* (/ 5.0 6.0) (/ 5.0 6.0)) (* a (/ 5.0 6.0)))) t)) |
| 610.0ms | (* (- (pow b 3) (pow c 3)) (- (* (+ a (/ 5.0 6.0)) (+ a (/ 5.0 6.0))) (* (/ 0.6666666666666666 t) (/ 0.6666666666666666 t)))) |
| 531.0ms | (* t (* (+ b c) (* (+ (* a a) (- (* (/ 5.0 6.0) (/ 5.0 6.0)) (* a (/ 5.0 6.0)))) t))) |
3 alts after pruning (2 fresh and 1 done)
Merged error: 0.2b
Found 2 expressions with local error:
| 0.0b | (- (* 0.8333333333333334 c) (* (- b c) a)) |
| 0.0b | (* (- b c) a) |
2 calls. Slowest were:
| 5.0ms | (* (- b c) a) |
| 2.0ms | (- (* 0.8333333333333334 c) (* (- b c) a)) |
2 calls. Slowest were:
| 35.0ms | (- (* 0.8333333333333334 c) (* (- b c) a)) |
| 21.0ms | (* (- b c) a) |
11 calls. Slowest were:
| 317.0ms | (* (- (* b b) (* c c)) a) |
| 132.0ms | (/ (exp (* 0.8333333333333334 c)) (exp (* (- b c) a))) |
| 75.0ms | (* (- (pow b 3) (pow c 3)) a) |
3 alts after pruning (1 fresh and 2 done)
Merged error: 0.2b
Found 4 expressions with local error:
| 27.4b | (/ (- (* (* z (sqrt (+ t a))) (* (- a (/ 5.0 6.0)) t)) (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666))))) (* t (* (- a (/ 5.0 6.0)) t))) |
| 6.8b | (- (* (* z (sqrt (+ t a))) (* (- a (/ 5.0 6.0)) t)) (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666))))) |
| 3.4b | (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) |
| 2.0b | (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666)))) |
4 calls. Slowest were:
| 147.0ms | (/ (- (* (* z (sqrt (+ t a))) (* (- a (/ 5.0 6.0)) t)) (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666))))) (* t (* (- a (/ 5.0 6.0)) t))) |
| 126.0ms | (- (* (* z (sqrt (+ t a))) (* (- a (/ 5.0 6.0)) t)) (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666))))) |
| 45.0ms | (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666)))) |
4 calls. Slowest were:
| 606.0ms | (/ (- (* (* z (sqrt (+ t a))) (* (- a (/ 5.0 6.0)) t)) (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666))))) (* t (* (- a (/ 5.0 6.0)) t))) |
| 464.0ms | (- (* (* z (sqrt (+ t a))) (* (- a (/ 5.0 6.0)) t)) (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666))))) |
| 163.0ms | (* t (* (- b c) (- (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666)))) |
| 26.0ms | (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) |
551 calls. Slowest were:
| 1.1s | (* (* (sqrt (+ (* t t) (- (* a a) (* t a)))) (+ a (/ 5.0 6.0))) (* (+ (* b b) (+ (* c c) (* b c))) (* (+ (* (* a a) (* a a)) (+ (* (* (/ 5.0 6.0) (/ 5.0 6.0)) (* (/ 5.0 6.0) (/ 5.0 6.0))) (* (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))))) (+ (* a a) (+ (* (/ 5.0 6.0) (/ 5.0 6.0)) (* a (/ 5.0 6.0))))))) |
| 1.0s | (- (* (* (* z (sqrt (- (* t t) (* a a)))) (* (- (pow a 3) (pow (/ 5.0 6.0) 3)) t)) (+ (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666))) (* (* (sqrt (- t a)) (+ (* a a) (+ (* (/ 5.0 6.0) (/ 5.0 6.0)) (* a (/ 5.0 6.0))))) (* t (* (- b c) (- (* (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t)) (* (* (- a (/ 5.0 6.0)) 0.6666666666666666) (* (- a (/ 5.0 6.0)) 0.6666666666666666))))))) |
| 882.0ms | (- (* (* (* z (sqrt (+ (pow t 3) (pow a 3)))) (* (- a (/ 5.0 6.0)) t)) (+ (* (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t)) (+ (* (* (- a (/ 5.0 6.0)) 0.6666666666666666) (* (- a (/ 5.0 6.0)) 0.6666666666666666)) (* (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) (* (- a (/ 5.0 6.0)) 0.6666666666666666))))) (* (sqrt (+ (* t t) (- (* a a) (* t a)))) (* t (* (- b c) (- (pow (* (- (* a a) (* (/ 5.0 6.0) (/ 5.0 6.0))) t) 3) (pow (* (- a (/ 5.0 6.0)) 0.6666666666666666) 3)))))) |
4 alts after pruning (1 fresh and 3 done)
Merged error: 0b
-2.4% (3.6b remaining)
Error of 3.8b against oracle of 0.2b and baseline of 3.8b