?

Average Error: 13.4 → 0.5
Time: 15.2s
Precision: binary32
Cost: 19552

?

\[\left(\left(cosTheta_i > 0.9999 \land cosTheta_i \leq 1\right) \land \left(2.328306437 \cdot 10^{-10} \leq u1 \land u1 \leq 1\right)\right) \land \left(2.328306437 \cdot 10^{-10} \leq u2 \land u2 \leq 1\right)\]
\[\sqrt{-\log \left(1 - u1\right)} \cdot \sin \left(\left(2 \cdot \pi\right) \cdot u2\right) \]
\[\sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \left(\left(\sin \left(\pi \cdot u2\right) \cdot \cos \left(\pi \cdot u2\right)\right) \cdot 2\right) \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (* (sqrt (- (log (- 1.0 u1)))) (sin (* (* 2.0 PI) u2))))
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (* (sqrt (- (log1p (- u1)))) (* (* (sin (* PI u2)) (cos (* PI u2))) 2.0)))
float code(float cosTheta_i, float u1, float u2) {
	return sqrtf(-logf((1.0f - u1))) * sinf(((2.0f * ((float) M_PI)) * u2));
}
float code(float cosTheta_i, float u1, float u2) {
	return sqrtf(-log1pf(-u1)) * ((sinf((((float) M_PI) * u2)) * cosf((((float) M_PI) * u2))) * 2.0f);
}
function code(cosTheta_i, u1, u2)
	return Float32(sqrt(Float32(-log(Float32(Float32(1.0) - u1)))) * sin(Float32(Float32(Float32(2.0) * Float32(pi)) * u2)))
end
function code(cosTheta_i, u1, u2)
	return Float32(sqrt(Float32(-log1p(Float32(-u1)))) * Float32(Float32(sin(Float32(Float32(pi) * u2)) * cos(Float32(Float32(pi) * u2))) * Float32(2.0)))
end
\sqrt{-\log \left(1 - u1\right)} \cdot \sin \left(\left(2 \cdot \pi\right) \cdot u2\right)
\sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \left(\left(\sin \left(\pi \cdot u2\right) \cdot \cos \left(\pi \cdot u2\right)\right) \cdot 2\right)

Error?

Try it out?

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation?

  1. Initial program 13.4

    \[\sqrt{-\log \left(1 - u1\right)} \cdot \sin \left(\left(2 \cdot \pi\right) \cdot u2\right) \]
  2. Simplified0.5

    \[\leadsto \color{blue}{\sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \sin \left(2 \cdot \left(\pi \cdot u2\right)\right)} \]
    Proof

    [Start]13.4

    \[ \sqrt{-\log \left(1 - u1\right)} \cdot \sin \left(\left(2 \cdot \pi\right) \cdot u2\right) \]

    sub-neg [=>]13.4

    \[ \sqrt{-\log \color{blue}{\left(1 + \left(-u1\right)\right)}} \cdot \sin \left(\left(2 \cdot \pi\right) \cdot u2\right) \]

    log1p-def [=>]0.5

    \[ \sqrt{-\color{blue}{\mathsf{log1p}\left(-u1\right)}} \cdot \sin \left(\left(2 \cdot \pi\right) \cdot u2\right) \]

    associate-*l* [=>]0.5

    \[ \sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \sin \color{blue}{\left(2 \cdot \left(\pi \cdot u2\right)\right)} \]
  3. Applied egg-rr0.5

    \[\leadsto \sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \color{blue}{\left(\left(\sin \left(\pi \cdot u2\right) \cdot \cos \left(\pi \cdot u2\right)\right) \cdot 2\right)} \]
  4. Final simplification0.5

    \[\leadsto \sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \left(\left(\sin \left(\pi \cdot u2\right) \cdot \cos \left(\pi \cdot u2\right)\right) \cdot 2\right) \]

Alternatives

Alternative 1
Error0.5
Cost16352
\[\sin \left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot \sqrt{\mathsf{log1p}\left(u1\right) - \mathsf{log1p}\left(u1 \cdot \left(-u1\right)\right)} \]
Alternative 2
Error1.4
Cost13476
\[\begin{array}{l} t_0 := u2 \cdot \left(\pi \cdot 2\right)\\ \mathbf{if}\;t_0 \leq 0.0007999999797903001:\\ \;\;\;\;\sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \left(\left(\pi \cdot u2\right) \cdot 2\right)\\ \mathbf{else}:\\ \;\;\;\;\sqrt{u1 + \left(u1 \cdot u1\right) \cdot \left(0.5 + u1 \cdot 0.3333333333333333\right)} \cdot \sin t_0\\ \end{array} \]
Alternative 3
Error1.9
Cost13348
\[\begin{array}{l} t_0 := u2 \cdot \left(\pi \cdot 2\right)\\ \mathbf{if}\;t_0 \leq 0.0007999999797903001:\\ \;\;\;\;\sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \left(\left(\pi \cdot u2\right) \cdot 2\right)\\ \mathbf{else}:\\ \;\;\;\;\sin t_0 \cdot \sqrt{u1 + u1 \cdot \left(u1 \cdot 0.5\right)}\\ \end{array} \]
Alternative 4
Error3.2
Cost13220
\[\begin{array}{l} t_0 := u2 \cdot \left(\pi \cdot 2\right)\\ \mathbf{if}\;t_0 \leq 0.001500000013038516:\\ \;\;\;\;\sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \left(\left(\pi \cdot u2\right) \cdot 2\right)\\ \mathbf{else}:\\ \;\;\;\;\sin t_0 \cdot \sqrt{u1}\\ \end{array} \]
Alternative 5
Error5.4
Cost13156
\[\begin{array}{l} t_0 := u2 \cdot \left(\pi \cdot 2\right)\\ \mathbf{if}\;t_0 \leq 0.001500000013038516:\\ \;\;\;\;\left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot \sqrt{u1 + u1 \cdot \left(u1 \cdot 0.5\right)}\\ \mathbf{else}:\\ \;\;\;\;\sin t_0 \cdot \sqrt{u1}\\ \end{array} \]
Alternative 6
Error0.5
Cost13056
\[\sqrt{-\mathsf{log1p}\left(-u1\right)} \cdot \sin \left(\left(\pi \cdot u2\right) \cdot 2\right) \]
Alternative 7
Error8.3
Cost6784
\[\left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot \sqrt{u1 + u1 \cdot \left(u1 \cdot 0.5\right)} \]
Alternative 8
Error10.8
Cost6592
\[\left(\left(\pi \cdot u2\right) \cdot 2\right) \cdot \sqrt{u1} \]
Alternative 9
Error29.7
Cost6496
\[\sqrt{\mathsf{log1p}\left(u1\right)} \cdot 0 \]
Alternative 10
Error26.6
Cost6496
\[\frac{\sqrt{\mathsf{log1p}\left(u1\right)}}{0.5} \]

Error

Reproduce?

herbie shell --seed 2023060 
(FPCore (cosTheta_i u1 u2)
  :name "Beckmann Sample, near normal, slope_y"
  :precision binary32
  :pre (and (and (and (> cosTheta_i 0.9999) (<= cosTheta_i 1.0)) (and (<= 2.328306437e-10 u1) (<= u1 1.0))) (and (<= 2.328306437e-10 u2) (<= u2 1.0)))
  (* (sqrt (- (log (- 1.0 u1)))) (sin (* (* 2.0 PI) u2))))