Average Error: 0.4 → 0.4
Time: 27.4s
Precision: 64
Internal Precision: 128
\[\left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right) + 0.5\]
\[\left(\frac{1}{6} \cdot \cos \left(\pi \cdot \left(u2 \cdot 2\right)\right)\right) \cdot {\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)}^{0.5} + 0.5\]

Error

Bits error versus u1

Bits error versus u2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.4

    \[\left(\frac{1}{6} \cdot {\left(-2 \cdot \log u1\right)}^{0.5}\right) \cdot \cos \left(\left(2 \cdot \pi\right) \cdot u2\right) + 0.5\]
  2. Simplified0.4

    \[\leadsto \color{blue}{0.5 + \left({\left(-2 \cdot \log u1\right)}^{0.5} \cdot \frac{1}{6}\right) \cdot \cos \left(\left(\pi \cdot u2\right) \cdot 2\right)}\]
  3. Taylor expanded around -inf 62.0

    \[\leadsto \color{blue}{\frac{1}{6} \cdot \left({\left({\left(\log -1 - \log \left(\frac{-1}{u1}\right)\right)}^{1.0} \cdot {-2}^{1.0}\right)}^{0.5} \cdot \cos \left(2 \cdot \left(u2 \cdot \pi\right)\right)\right) + 0.5}\]
  4. Simplified0.4

    \[\leadsto \color{blue}{\left(\frac{1}{6} \cdot \cos \left(\pi \cdot \left(u2 \cdot 2\right)\right)\right) \cdot {\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)}^{0.5} + 0.5}\]
  5. Final simplification0.4

    \[\leadsto \left(\frac{1}{6} \cdot \cos \left(\pi \cdot \left(u2 \cdot 2\right)\right)\right) \cdot {\left({\left(\log u1\right)}^{1.0} \cdot {-2}^{1.0}\right)}^{0.5} + 0.5\]

Reproduce

herbie shell --seed 2019004 
(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))

Details

Time bar (total: 26.4s)Debug log

sample136.0ms

Algorithm
intervals

simplify85.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

84.0ms
(+ (* (* (/ 1 6) (pow (* -2 (log u1)) 0.5)) (cos (* (* 2 PI) u2))) 0.5)

prune15.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.3b

localize41.0ms

Local error

Found 4 expressions with local error:

0.4b
(* (pow (* -2 (log u1)) 0.5) 1/6)
0.3b
(* PI u2)
0.1b
(pow (* -2 (log u1)) 0.5)
0.1b
(+ 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
4 → 41
Calls

4 calls. Slowest were:

5.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
3.0ms
(+ 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))
1.0ms
(pow (* -2 (log u1)) 0.5)

series1.8s

Counts
4 → 12
Calls

4 calls. Slowest were:

890.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
490.0ms
(+ 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))
376.0ms
(pow (* -2 (log u1)) 0.5)
56.0ms
(* PI u2)

simplify510.0ms

Counts
18 → 53
Calls

18 calls. Slowest were:

166.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))))
111.0ms
(pow (* -2 (- (log -1) (log (/ -1 u1)))) 0.5)
78.0ms
(+ (* 1/6 (* (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5) (cos (* 2 (* u2 PI))))) 0.5)

prune707.0ms

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 0.0b

localize31.0ms

Local error

Found 4 expressions with local error:

0.4b
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))
0.3b
(* PI (* u2 2))
0.1b
(pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)
0.1b
(+ (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) 0.5)

rewrite45.0ms

Algorithm
rewrite-expression-head
Counts
4 → 60
Calls

4 calls. Slowest were:

26.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))
11.0ms
(+ (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) 0.5)
5.0ms
(pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)

series2.1s

Counts
4 → 12
Calls

4 calls. Slowest were:

1.1s
(pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)
434.0ms
(+ (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) 0.5)
406.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))
68.0ms
(* PI (* u2 2))

simplify2.6s

Counts
36 → 72
Calls

36 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))))
225.0ms
(* (* (* (* 1/6 (cos (* PI (* u2 2)))) (* 1/6 (cos (* PI (* u2 2))))) (* 1/6 (cos (* PI (* u2 2))))) (* (* (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)))
164.0ms
(+ (log (* 1/6 (cos (* PI (* u2 2))))) (* (+ (log (pow (log u1) 1.0)) (log (pow -2 1.0))) 0.5))

prune1.1s

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 0.0b

localize26.0ms

Local error

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 u2)
0.2b
(log (* (pow (* -2 (log u1)) 0.5) 1/6))

rewrite30.0ms

Algorithm
rewrite-expression-head
Counts
4 → 43
Calls

4 calls. Slowest were:

11.0ms
(log (* (pow (* -2 (log u1)) 0.5) 1/6))
10.0ms
(exp (log (* (pow (* -2 (log u1)) 0.5) 1/6)))
8.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)

series2.8s

Counts
4 → 12
Calls

4 calls. Slowest were:

963.0ms
(log (* (pow (* -2 (log u1)) 0.5) 1/6))
909.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
885.0ms
(exp (log (* (pow (* -2 (log u1)) 0.5) 1/6)))
33.0ms
(* PI u2)

simplify495.0ms

Counts
23 → 55
Calls

23 calls. Slowest were:

85.0ms
(log (* 1/6 (pow (* (pow -1 1.0) (* (pow -2 1.0) (pow (log (/ 1 u1)) 1.0))) 0.5)))
77.0ms
(log (* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5)))
57.0ms
(* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5))

prune731.0ms

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0.0b

localize54.0ms

Local error

Found 4 expressions with local error:

0.7b
(pow (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))) 3)
0.5b
(* (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))) (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))
0.4b
(* (pow (* -2 (log u1)) 0.5) 1/6)
0.4b
(* (pow (* -2 (log u1)) 0.5) 1/6)

rewrite103.0ms

Algorithm
rewrite-expression-head
Counts
4 → 71
Calls

4 calls. Slowest were:

77.0ms
(* (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))) (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))
10.0ms
(pow (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))) 3)
7.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)

series2.9s

Counts
4 → 12
Calls

4 calls. Slowest were:

943.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
927.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
550.0ms
(pow (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))) 3)
476.0ms
(* (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))) (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))

simplify5.0s

Counts
50 → 83
Calls

50 calls. Slowest were:

678.0ms
(* (* (* (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))) (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))) (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))) (* (* (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))) (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))) (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))))
379.0ms
(+ (+ (log (* (pow (* -2 (log u1)) 0.5) 1/6)) (log (cos (* (* PI u2) 2)))) (log (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))))
303.0ms
(+ (+ (log (* (pow (* -2 (log u1)) 0.5) 1/6)) (log (cos (* (* PI u2) 2)))) (+ (log (* (pow (* -2 (log u1)) 0.5) 1/6)) (log (cos (* (* PI u2) 2)))))

prune1.6s

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0b

regimes462.0ms

Accuracy

0% (0.4b remaining)

Error of 0.4b against oracle of 0.0b and baseline of 0.4b

bsearch3.0ms

end0.0ms

sample3.1s

Algorithm
intervals