


Bits error versus u1



Bits error versus u2
Initial program 0.4
Simplified0.4
rmApplied add-exp-log0.5
rmApplied rem-exp-log0.4
Final simplification0.4
herbie shell --seed 2019002 +o rules:numerics
(FPCore (u1 u2)
:name "normal distribution"
:pre (and (<= 0 u1 1) (<= 0 u2 1))
(+ (* (* (/ 1 6) (pow (* -2 (log u1)) 0.5)) (cos (* (* 2 PI) u2))) 0.5))
Time bar (total: 20.1s)Debug log
1 calls. Slowest were:
| 296.0ms | (+ (* (* (/ 1 6) (pow (* -2 (log u1)) 0.5)) (cos (* (* 2 PI) u2))) 0.5) |
1 alts after pruning (1 fresh and 0 done)
Merged error: 0.4b
Found 4 expressions with local error:
| 0.4b | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 0.3b | (* PI (* 2 u2)) |
| 0.1b | (pow (* -2 (log u1)) 0.5) |
| 0.1b | (fma (cos (* PI (* 2 u2))) (* (pow (* -2 (log u1)) 0.5) 1/6) 0.5) |
4 calls. Slowest were:
| 12.0ms | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 1.0ms | (pow (* -2 (log u1)) 0.5) |
| 1.0ms | (* PI (* 2 u2)) |
4 calls. Slowest were:
| 894.0ms | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 426.0ms | (fma (cos (* PI (* 2 u2))) (* (pow (* -2 (log u1)) 0.5) 1/6) 0.5) |
| 382.0ms | (pow (* -2 (log u1)) 0.5) |
| 65.0ms | (* PI (* 2 u2)) |
18 calls. Slowest were:
| 230.0ms | (- (+ 0.5 (* 1/6 (pow (* (pow -2 1.0) (pow (log u1) 1.0)) 0.5))) (* 1/3 (* (* (pow u2 2) (pow PI 2)) (pow (* (pow -2 1.0) (pow (log u1) 1.0)) 0.5)))) |
| 73.0ms | (pow (* -2 (- (log -1) (log (/ -1 u1)))) 0.5) |
| 69.0ms | (* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5)) |
12 alts after pruning (12 fresh and 0 done)
Merged error: 0b
Found 4 expressions with local error:
| 0.4b | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 0.3b | (exp (log (* (pow (* -2 (log u1)) 0.5) 1/6))) |
| 0.3b | (* PI (* 2 u2)) |
| 0.2b | (log (* (pow (* -2 (log u1)) 0.5) 1/6)) |
4 calls. Slowest were:
| 10.0ms | (exp (log (* (pow (* -2 (log u1)) 0.5) 1/6))) |
| 7.0ms | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 4.0ms | (log (* (pow (* -2 (log u1)) 0.5) 1/6)) |
4 calls. Slowest were:
| 1.1s | (log (* (pow (* -2 (log u1)) 0.5) 1/6)) |
| 925.0ms | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 892.0ms | (exp (log (* (pow (* -2 (log u1)) 0.5) 1/6))) |
| 85.0ms | (* PI (* 2 u2)) |
23 calls. Slowest were:
| 120.0ms | (log (* 1/6 (pow (* (pow -1 1.0) (* (pow -2 1.0) (pow (log (/ 1 u1)) 1.0))) 0.5))) |
| 107.0ms | (log (* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5))) |
| 66.0ms | (* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5)) |
6 alts after pruning (6 fresh and 0 done)
Merged error: 0b
Found 4 expressions with local error:
| 0.4b | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 0.3b | (* PI (* 2 u2)) |
| 0.1b | (pow (* -2 (log u1)) 0.5) |
| 0.1b | (fma (cos (* PI (* 2 u2))) (* (pow (* -2 (log u1)) 0.5) 1/6) 0.5) |
4 calls. Slowest were:
| 8.0ms | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 2.0ms | (pow (* -2 (log u1)) 0.5) |
| 2.0ms | (* PI (* 2 u2)) |
4 calls. Slowest were:
| 1.0s | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 396.0ms | (fma (cos (* PI (* 2 u2))) (* (pow (* -2 (log u1)) 0.5) 1/6) 0.5) |
| 316.0ms | (pow (* -2 (log u1)) 0.5) |
| 73.0ms | (* PI (* 2 u2)) |
18 calls. Slowest were:
| 173.0ms | (- (+ 0.5 (* 1/6 (pow (* (pow -2 1.0) (pow (log u1) 1.0)) 0.5))) (* 1/3 (* (* (pow u2 2) (pow PI 2)) (pow (* (pow -2 1.0) (pow (log u1) 1.0)) 0.5)))) |
| 92.0ms | (pow (* -2 (- (log -1) (log (/ -1 u1)))) 0.5) |
| 54.0ms | (+ (* 1/6 (* (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5) (cos (* 2 (* u2 PI))))) 0.5) |
6 alts after pruning (5 fresh and 1 done)
Merged error: 0b
Found 4 expressions with local error:
| 0.4b | (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6))) |
| 0.4b | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 0.3b | (exp (log1p (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6))))) |
| 0.3b | (* PI (* 2 u2)) |
4 calls. Slowest were:
| 6.0ms | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 2.0ms | (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6))) |
| 1.0ms | (exp (log1p (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6))))) |
4 calls. Slowest were:
| 1.4s | (exp (log1p (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6))))) |
| 1.2s | (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6))) |
| 904.0ms | (* (pow (* -2 (log u1)) 0.5) 1/6) |
| 84.0ms | (* PI (* 2 u2)) |
20 calls. Slowest were:
| 60.0ms | (exp (* (cbrt (log1p (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6))))) (cbrt (log1p (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6))))))) |
| 54.0ms | (* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5)) |
| 53.0ms | (exp (sqrt (log1p (expm1 (log (* (pow (* -2 (log u1)) 0.5) 1/6)))))) |
5 alts after pruning (4 fresh and 1 done)
Merged error: 0b
0% (0.4b remaining)
Error of 0.4b against oracle of 0.0b and baseline of 0.4b