Average Error: 0.4 → 0.4
Time: 25.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(\log u1 \cdot -2\right)}^{0.5} \cdot \frac{\cos \left(\left(u2 \cdot \pi\right) \cdot 2\right)}{6} + 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. Initial simplification0.4

    \[\leadsto 0.5 + \frac{\cos \left(\left(\pi \cdot u2\right) \cdot 2\right)}{\frac{6}{{\left(-2 \cdot \log u1\right)}^{0.5}}}\]
  3. Using strategy rm
  4. Applied associate-/r/0.4

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

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

Reproduce

herbie shell --seed 2018360 
(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: 20.7s)Debug log

start217.0ms

Algorithm
intervals

setup154.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.2b

localize54.0ms

Local error

Found 4 expressions with local error:

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

rewrite24.0ms

Algorithm
rewrite-expression-head
Counts
4 → 65
Calls

4 calls. Slowest were:

15.0ms
(/ (cos (* (* PI u2) 2)) (/ 6 (pow (* -2 (log u1)) 0.5)))
2.0ms
(pow (* -2 (log u1)) 0.5)
2.0ms
(* PI u2)

series1.7s

Counts
4 → 12
Calls

4 calls. Slowest were:

935.0ms
(/ 6 (pow (* -2 (log u1)) 0.5))
382.0ms
(/ (cos (* (* PI u2) 2)) (/ 6 (pow (* -2 (log u1)) 0.5)))
372.0ms
(pow (* -2 (log u1)) 0.5)
52.0ms
(* PI u2)

simplify1.5s

Counts
52 → 77
Calls

52 calls. Slowest were:

256.0ms
(/ (* (* (cos (* (* PI u2) 2)) (cos (* (* PI u2) 2))) (cos (* (* PI u2) 2))) (* (* (/ 6 (pow (* -2 (log u1)) 0.5)) (/ 6 (pow (* -2 (log u1)) 0.5))) (/ 6 (pow (* -2 (log u1)) 0.5))))
171.0ms
(- (* 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))))
131.0ms
(- (log (cos (* (* PI u2) 2))) (log (/ 6 (pow (* -2 (log u1)) 0.5))))

prune1.2s

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 0.0b

localize11.0ms

Local error

Found 4 expressions with local error:

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

rewrite14.0ms

Algorithm
rewrite-expression-head
Counts
4 → 50
Calls

4 calls. Slowest were:

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

series1.2s

Counts
4 → 12
Calls

4 calls. Slowest were:

435.0ms
(* (/ (cos (* (* PI u2) 2)) 6) (pow (* -2 (log u1)) 0.5))
412.0ms
(+ 0.5 (* (/ (cos (* (* PI u2) 2)) 6) (pow (* -2 (log u1)) 0.5)))
279.0ms
(pow (* -2 (log u1)) 0.5)
55.0ms
(* PI u2)

simplify1.5s

Counts
27 → 62
Calls

27 calls. Slowest were:

190.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))))
172.0ms
(+ (log (/ (cos (* (* PI u2) 2)) 6)) (log (pow (* -2 (log u1)) 0.5)))
162.0ms
(- (* 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))))

prune1.2s

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0b

localize28.0ms

Local error

Found 4 expressions with local error:

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

rewrite40.0ms

Algorithm
rewrite-expression-head
Counts
4 → 63
Calls

4 calls. Slowest were:

19.0ms
(/ (cos (* (* PI u2) 2)) (* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5)))
12.0ms
(* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5))
7.0ms
(/ 1 (* (pow -2 1.0) (pow (log u1) 1.0)))

series2.4s

Counts
4 → 12
Calls

4 calls. Slowest were:

974.0ms
(/ 1 (* (pow -2 1.0) (pow (log u1) 1.0)))
956.0ms
(* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5))
405.0ms
(/ (cos (* (* PI u2) 2)) (* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5)))
44.0ms
(* PI u2)

simplify1.5s

Counts
33 → 75
Calls

33 calls. Slowest were:

671.0ms
(/ (* (* (cos (* (* PI u2) 2)) (cos (* (* PI u2) 2))) (cos (* (* PI u2) 2))) (* (* (* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5)) (* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5))) (* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5))))
141.0ms
(- (* 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))))
130.0ms
(- (log (cos (* (* PI u2) 2))) (log (* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5))))

prune1.7s

Pruning

6 alts after pruning (4 fresh and 2 done)

Merged error: 0b

localize34.0ms

Local error

Found 4 expressions with local error:

3.7b
(log (cos (* (* PI u2) 2)))
0.3b
(exp (- (log (cos (* (* PI u2) 2))) (log (/ 6 (pow (* -2 (log u1)) 0.5)))))
0.3b
(* PI u2)
0.2b
(log (/ 6 (pow (* -2 (log u1)) 0.5)))

rewrite25.0ms

Algorithm
rewrite-expression-head
Counts
4 → 58
Calls

4 calls. Slowest were:

16.0ms
(exp (- (log (cos (* (* PI u2) 2))) (log (/ 6 (pow (* -2 (log u1)) 0.5)))))
7.0ms
(log (cos (* (* PI u2) 2)))
1.0ms
(log (/ 6 (pow (* -2 (log u1)) 0.5)))

series1.9s

Counts
4 → 12
Calls

4 calls. Slowest were:

1.2s
(log (/ 6 (pow (* -2 (log u1)) 0.5)))
584.0ms
(exp (- (log (cos (* (* PI u2) 2))) (log (/ 6 (pow (* -2 (log u1)) 0.5)))))
158.0ms
(log (cos (* (* PI u2) 2)))
47.0ms
(* PI u2)

simplify2.4s

Counts
39 → 70
Calls

39 calls. Slowest were:

436.0ms
(- (+ (* 64/45 (* (pow u2 6) (pow PI 6))) (+ (* 2 (* (pow u2 2) (pow PI 2))) (* 4/3 (* (pow u2 4) (pow PI 4))))))
395.0ms
(- (exp (- (log (* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5))))) (* 2 (* (pow u2 2) (* (exp (- (log (* 6 (pow (/ 1 (* (pow -2 1.0) (pow (log u1) 1.0))) 0.5))))) (pow PI 2)))))
298.0ms
(exp (- (log (cos (* 2 (* u2 PI)))) (log (* 6 (pow (/ 1 (* (pow -1 1.0) (* (pow -2 1.0) (pow (log (/ 1 u1)) 1.0)))) 0.5)))))

prune1.5s

Pruning

6 alts after pruning (3 fresh and 3 done)

Merged error: 0b

regimes452.0ms

Accuracy

0% (0.3b remaining)

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

bsearch2.0ms