Average Error: 0.4 → 0.4
Time: 44.8s
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(\log u1 \cdot -2\right)}^{0.5} \cdot \frac{1}{6}\right) \cdot \cos \left(\left(u2 \cdot \pi\right) \cdot 2\right) + 0.5}{\frac{0.5 - \left({\left(\log u1 \cdot -2\right)}^{0.5} \cdot \frac{1}{6}\right) \cdot \cos \left(\left(u2 \cdot \pi\right) \cdot 2\right)}{0.5 - \left({\left(\log u1 \cdot -2\right)}^{0.5} \cdot \frac{1}{6}\right) \cdot \cos \left(\left(u2 \cdot \pi\right) \cdot 2\right)}}\]

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. Using strategy rm
  4. Applied flip-+0.4

    \[\leadsto \color{blue}{\frac{0.5 \cdot 0.5 - \left(\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)\right) \cdot \left(\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)\right)}{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)}}\]
  5. Using strategy rm
  6. Applied difference-of-squares0.4

    \[\leadsto \frac{\color{blue}{\left(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)\right) \cdot \left(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)\right)}}{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)}\]
  7. Applied associate-/l*0.4

    \[\leadsto \color{blue}{\frac{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)}{\frac{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)}{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)}}}\]
  8. Final simplification0.4

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

Reproduce

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

sample183.0ms

Algorithm
intervals

simplify126.0ms

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

prune25.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.3b

localize37.0ms

Local error

Found 4 expressions with local error:

0.4b
(* (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))))

rewrite30.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
19.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
6.0ms
(+ 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))
2.0ms
(pow (* -2 (log u1)) 0.5)
1.0ms
(* PI u2)

series1.8s

Counts
4 → 12
Calls
4 calls:
Slowest
932.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
464.0ms
(+ 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2))))
360.0ms
(pow (* -2 (log u1)) 0.5)
53.0ms
(* PI u2)

simplify561.0ms

Counts
18 → 53
Calls
18 calls:
Slowest
195.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))))
100.0ms
(pow (* -2 (- (log -1) (log (/ -1 u1)))) 0.5)
87.0ms
(+ (* 1/6 (* (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5) (cos (* 2 (* u2 PI))))) 0.5)
46.0ms
(* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5))
40.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)

prune625.0ms

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 0.0b

localize17.0ms

Local error

Found 4 expressions with local error:

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
(/ (- (* 0.5 0.5) (* (* (* (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.5 (* (* (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)

rewrite93.0ms

Algorithm
rewrite-expression-head
Rules
31×pow1
18×add-exp-log
18×add-cbrt-cube
15×add-cube-cbrt
15×*-un-lft-identity
15×add-sqr-sqrt
13×pow-prod-down
12×times-frac
associate-*l*
cbrt-unprod
prod-exp
difference-of-squares
add-log-exp
associate-/l*
pow-prod-up
*-commutative
associate-/r*
associate-/l/
flip--
associate-/r/
flip3--
pow-plus
unpow-prod-down
div-inv
associate-*r*
div-exp
div-sub
frac-2neg
clear-num
cbrt-undiv
pow2
Counts
4 → 89
Calls
4 calls:
Slowest
59.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))))
16.0ms
(/ (- (* 0.5 0.5) (* (* (* (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.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))))
8.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
7.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)

series3.0s

Counts
4 → 12
Calls
4 calls:
Slowest
892.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
832.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
743.0ms
(/ (- (* 0.5 0.5) (* (* (* (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.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))))
545.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))))

simplify10.1s

Counts
79 → 101
Calls
79 calls:
Slowest
623.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)))))
551.0ms
(- (* (* 0.5 0.5) (* 0.5 0.5)) (* (* (* (* (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))))))
383.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)))))
348.0ms
(+ (log (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))) (+ (log (* (pow (* -2 (log u1)) 0.5) 1/6)) (log (cos (* (* PI u2) 2)))))
321.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.8s

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 0b

localize17.0ms

Local error

Found 4 expressions with local error:

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

rewrite22.0ms

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

series2.9s

Counts
4 → 12
Calls
4 calls:
Slowest
1.0s
(* (pow (* -2 (log u1)) 0.5) 1/6)
948.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
868.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
33.0ms
(* PI u2)

simplify287.0ms

Counts
21 → 56
Calls
21 calls:
Slowest
52.0ms
(* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5))
52.0ms
(* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5))
34.0ms
(* 1/6 (pow (* (pow -1 1.0) (* (pow -2 1.0) (pow (log (/ 1 u1)) 1.0))) 0.5))
33.0ms
(* 1/6 (pow (* (pow (- (log -1) (log (/ -1 u1))) 1.0) (pow -2 1.0)) 0.5))
32.0ms
(* 1/6 (pow (* (pow -1 1.0) (* (pow -2 1.0) (pow (log (/ 1 u1)) 1.0))) 0.5))

prune785.0ms

Pruning

7 alts after pruning (6 fresh and 1 done)

Merged error: 0b

localize52.0ms

Local error

Found 4 expressions with local error:

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

rewrite251.0ms

Algorithm
rewrite-expression-head
Rules
54×add-exp-log
40×prod-exp
18×add-cbrt-cube
18×add-sqr-sqrt
14×add-cube-cbrt
14×*-un-lft-identity
12×times-frac
pow1
cbrt-unprod
pow-exp
pow-to-exp
associate-*l*
difference-of-squares
add-log-exp
associate-/l*
*-commutative
associate-/r*
associate-/l/
flip--
associate-/r/
flip3--
div-inv
pow-prod-up
pow-prod-down
associate-*r*
div-exp
div-sub
pow-plus
frac-2neg
unpow-prod-down
clear-num
cbrt-undiv
pow2
Counts
4 → 91
Calls
4 calls:
Slowest
143.0ms
(* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36)
80.0ms
(* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))))
18.0ms
(/ (- (* 0.5 0.5) (pow (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36) 1)) (- 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))))
7.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)

series2.6s

Counts
4 → 12
Calls
4 calls:
Slowest
911.0ms
(* (pow (* -2 (log u1)) 0.5) 1/6)
700.0ms
(/ (- (* 0.5 0.5) (pow (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36) 1)) (- 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))))
578.0ms
(* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36)
451.0ms
(* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))))

simplify13.4s

Counts
79 → 103
Calls
79 calls:
Slowest
587.0ms
(/ (cbrt (- (* 0.5 0.5) (pow (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36) 1))) (- 0.5 (* (* (pow (* -2 (log u1)) 0.5) 1/6) (cos (* (* PI u2) 2)))))
491.0ms
(* (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) (* (* (* (pow (* -2 (log u1)) 0.5) (pow (* -2 (log u1)) 0.5)) (pow (* -2 (log u1)) 0.5)) (* (* (cos (* (* 2 u2) PI)) (cos (* (* 2 u2) PI))) (cos (* (* 2 u2) PI)))))
426.0ms
(/ (* (cbrt (- (* 0.5 0.5) (pow (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36) 1))) (cbrt (- (* 0.5 0.5) (pow (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36) 1)))) 1)
381.0ms
(- (* (* 0.5 0.5) (* 0.5 0.5)) (* (pow (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36) 1) (pow (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36) 1)))
374.0ms
(sqrt (- (* 0.5 0.5) (pow (* (* (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI))) (* (pow (* -2 (log u1)) 0.5) (cos (* (* 2 u2) PI)))) 1/36) 1)))

prune1.9s

Pruning

6 alts after pruning (4 fresh and 2 done)

Merged error: 0b

regimes374.0ms

Accuracy

0% (0.3b remaining)

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

bsearch5.0ms

end0.0ms

sample2.7s

Algorithm
intervals