Average Error: 0.4 → 0.4
Time: 59.2s
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\]
\[\frac{\left(\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}\right) \cdot \left(\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}\right) - 0.5 \cdot 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. Using strategy rm
  6. Applied flip-+0.4

    \[\leadsto \color{blue}{\frac{\left(\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}\right) \cdot \left(\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}\right) - 0.5 \cdot 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}}\]
  7. Final simplification0.4

    \[\leadsto \frac{\left(\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}\right) \cdot \left(\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}\right) - 0.5 \cdot 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}\]

Reproduce

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

sample224.0ms

Algorithm
intervals
Results
92.0ms256×body80valid
10.0ms256×pre80true

simplify206.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
206.0ms
(+ (* (* (/ 1 6) (pow (* -2 (log u1)) 0.5)) (cos (* (* 2 PI) u2))) 0.5)

prune445.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.4b

localize67.0ms

Local error

Found 4 expressions with local error:

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

rewrite36.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
add-exp-log
*-un-lft-identity
pow1
add-sqr-sqrt
add-log-exp
associate-*l*
add-cbrt-cube
*-commutative
unpow-prod-down
flip-+
pow-exp
flip3-+
pow-pow
+-commutative
pow-to-exp
Counts
4 → 41
Calls
4 calls:
Slowest
7.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
4.0ms
(+ 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))
1.0ms
(pow (* -2 (log u1)) 0.5)
0.0ms
(* PI u2)

series1.8s

Counts
4 → 12
Calls
4 calls:
Slowest
913.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
495.0ms
(+ 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))
382.0ms
(pow (* -2 (log u1)) 0.5)
34.0ms
(* PI u2)

simplify505.0ms

Counts
18 → 53
Calls
18 calls:
Slowest
201.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))))
91.0ms
(pow (* -2 (- (log -1) (log (/ -1 u1)))) 0.5)
57.0ms
(+ (* 1/6 (* (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5) (cos (* 2 (* u2 PI))))) 0.5)
53.0ms
(+ (* 1/6 (* (pow (* (pow (log (/ 1 u1)) 1.0) (* (pow -2 1.0) (pow -1 1.0))) 0.5) (cos (* 2 (* u2 PI))))) 0.5)
44.0ms
(* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5))

prune782.0ms

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 0b

localize61.0ms

Local error

Found 4 expressions with local error:

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

rewrite38.0ms

Algorithm
rewrite-expression-head
Rules
30×add-exp-log
21×prod-exp
18×pow-exp
12×pow-to-exp
add-cbrt-cube
add-cube-cbrt
associate-*r*
*-un-lft-identity
pow1
add-sqr-sqrt
add-log-exp
*-commutative
pow-pow
unpow-prod-down
flip-+
cbrt-unprod
pow-prod-down
associate-*l*
flip3-+
+-commutative
Counts
4 → 60
Calls
4 calls:
Slowest
23.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)
3.0ms
(pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)
1.0ms
(* PI (* u2 2))

series1.8s

Counts
4 → 12
Calls
4 calls:
Slowest
1.0s
(pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)
385.0ms
(+ (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) 0.5)
332.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))
64.0ms
(* PI (* u2 2))

simplify2.3s

Counts
36 → 72
Calls
36 calls:
Slowest
214.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)))
182.0ms
(+ (log (* 1/6 (cos (* PI (* u2 2))))) (* (+ (* (log (log u1)) 1.0) (log (pow -2 1.0))) 0.5))
169.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))))
166.0ms
(+ (log (* 1/6 (cos (* PI (* u2 2))))) (* (+ (log (pow (log u1) 1.0)) (log (pow -2 1.0))) 0.5))
155.0ms
(+ (log (* 1/6 (cos (* PI (* u2 2))))) (* (+ (* (log (log u1)) 1.0) (log (pow -2 1.0))) 0.5))

prune904.0ms

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 0b

localize18.0ms

Local error

Found 4 expressions with local error:

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

rewrite151.0ms

Algorithm
rewrite-expression-head
Rules
445×prod-exp
438×add-exp-log
207×pow-exp
138×pow-to-exp
22×add-cbrt-cube
13×associate-*r*
11×cbrt-unprod
pow1
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-log-exp
*-commutative
associate-*l*
unpow-prod-down
pow-prod-up
pow-prod-down
pow-plus
pow2
Counts
4 → 187
Calls
4 calls:
Slowest
88.0ms
(* (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)))
24.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))
15.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))
14.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))

series1.6s

Counts
4 → 12
Calls
4 calls:
Slowest
417.0ms
(* (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)))
416.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))
406.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))
376.0ms
(* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))

simplify26.6s

Counts
164 → 199
Calls
164 calls:
Slowest
717.0ms
(* (* (* (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))) (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))) (* (* (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5)) (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))) (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))))
520.0ms
(+ (+ (log (* 1/6 (cos (* PI (* u2 2))))) (log (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))) (+ (log (* 1/6 (cos (* PI (* u2 2))))) (* (+ (log (pow (log u1) 1.0)) (* (log -2) 1.0)) 0.5)))
503.0ms
(+ (+ (log (* 1/6 (cos (* PI (* u2 2))))) (log (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))) (+ (log (* 1/6 (cos (* PI (* u2 2))))) (* (log (* (pow (log u1) 1.0) (pow -2 1.0))) 0.5)))
474.0ms
(+ (+ (log (* 1/6 (cos (* PI (* u2 2))))) (log (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))) (+ (log (* 1/6 (cos (* PI (* u2 2))))) (* (log (* (pow (log u1) 1.0) (pow -2 1.0))) 0.5)))
453.0ms
(+ (+ (log (* 1/6 (cos (* PI (* u2 2))))) (* (log (* (pow (log u1) 1.0) (pow -2 1.0))) 0.5)) (log (* (* 1/6 (cos (* PI (* u2 2)))) (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5))))

prune2.8s

Pruning

8 alts after pruning (7 fresh and 1 done)

Merged error: 0b

localize59.0ms

Local error

Found 4 expressions with local error:

0.7b
(pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3)
0.5b
(cbrt (* (pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3) (* (* (cos (* (* 2 PI) u2)) (cos (* (* 2 PI) u2))) (* (cos (* (* 2 PI) u2)) 1/216))))
0.4b
(* (pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3) (* (* (cos (* (* 2 PI) u2)) (cos (* (* 2 PI) u2))) (* (cos (* (* 2 PI) u2)) 1/216)))
0.2b
(* (* 2 PI) u2)

rewrite242.0ms

Algorithm
rewrite-expression-head
Rules
109×add-exp-log
90×prod-exp
72×pow-exp
28×pow-to-exp
14×associate-*l*
14×add-cbrt-cube
12×unpow-prod-down
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
cube-prod
cbrt-unprod
add-log-exp
pow1
*-commutative
cos-mult
associate-*r/
associate-*l/
unpow3
cube-mult
rem-cube-cbrt
associate-*r*
pow1/3
pow-pow
cbrt-div
cbrt-prod
Counts
4 → 107
Calls
4 calls:
Slowest
149.0ms
(* (pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3) (* (* (cos (* (* 2 PI) u2)) (cos (* (* 2 PI) u2))) (* (cos (* (* 2 PI) u2)) 1/216)))
83.0ms
(cbrt (* (pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3) (* (* (cos (* (* 2 PI) u2)) (cos (* (* 2 PI) u2))) (* (cos (* (* 2 PI) u2)) 1/216))))
6.0ms
(pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3)
2.0ms
(* (* 2 PI) u2)

series2.2s

Counts
4 → 12
Calls
4 calls:
Slowest
1.1s
(pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3)
508.0ms
(* (pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3) (* (* (cos (* (* 2 PI) u2)) (cos (* (* 2 PI) u2))) (* (cos (* (* 2 PI) u2)) 1/216)))
504.0ms
(cbrt (* (pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3) (* (* (cos (* (* 2 PI) u2)) (cos (* (* 2 PI) u2))) (* (cos (* (* 2 PI) u2)) 1/216))))
64.0ms
(* (* 2 PI) u2)

simplify9.7s

Counts
82 → 119
Calls
82 calls:
Slowest
412.0ms
(cbrt (* (pow (pow (* (pow (log u1) 1.0) (pow -2 1.0)) 0.5) 3) (* (+ (cos (+ (* (* 2 PI) u2) (* (* 2 PI) u2))) (cos (- (* (* 2 PI) u2) (* (* 2 PI) u2)))) (* (cos (* (* 2 PI) u2)) 1/216))))
300.0ms
(* (* (+ (log (pow (log u1) 1.0)) (log (pow -2 1.0))) 0.5) 3)
300.0ms
(+ (* (* (log (* (pow (log u1) 1.0) (pow -2 1.0))) 0.5) 3) (+ (+ (log (cos (* (* 2 PI) u2))) (log (cos (* (* 2 PI) u2)))) (log (* (cos (* (* 2 PI) u2)) 1/216))))
296.0ms
(* (* (+ (* (log (log u1)) 1.0) (log (pow -2 1.0))) 0.5) 3)
291.0ms
(- (* (cbrt 1/216) (pow (* (pow -2 1.0) (pow (log u1) 1.0)) 0.5)) (* 2 (* (* (pow u2 2) (* (cbrt 1/216) (pow PI 2))) (pow (* (pow -2 1.0) (pow (log u1) 1.0)) 0.5))))

prune1.7s

Pruning

8 alts after pruning (6 fresh and 2 done)

Merged error: 0b

regimes674.0ms

Accuracy

0% (0.4b remaining)

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

bsearch4.0ms

end0.0ms

sample2.8s

Algorithm
intervals
Results
2.5s8000×body80valid
305.0ms8000×pre80true