Average Error: 0.4 → 0.4
Time: 23.3s
Precision: binary32
\[-10000 \leq xi \land xi \leq 10000 \land -10000 \leq yi \land yi \leq 10000 \land -10000 \leq zi \land zi \leq 10000 \land 2.328306437 \cdot 10^{-10} \leq ux \land ux \leq 1 \land 2.328306437 \cdot 10^{-10} \leq uy \land uy \leq 1 \land 0 \leq maxCos \land maxCos \leq 1\]
\[\left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot xi + \left(\sin \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot yi\right) + \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot zi\]
\[\left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right)}\right) \cdot xi + \left(\sqrt{1 - \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right)} \cdot \sin \left(\sqrt[3]{{\pi}^{2} \cdot {\left(uy \cdot 2\right)}^{3}} \cdot \sqrt[3]{\pi}\right)\right) \cdot yi\right) + \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot zi\]
\left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot xi + \left(\sin \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot yi\right) + \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot zi
\left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right)}\right) \cdot xi + \left(\sqrt{1 - \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right)} \cdot \sin \left(\sqrt[3]{{\pi}^{2} \cdot {\left(uy \cdot 2\right)}^{3}} \cdot \sqrt[3]{\pi}\right)\right) \cdot yi\right) + \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot zi
(FPCore (xi yi zi ux uy maxCos)
 :precision binary32
 (+
  (+
   (*
    (*
     (cos (* (* uy 2.0) PI))
     (sqrt
      (- 1.0 (* (* (* (- 1.0 ux) maxCos) ux) (* (* (- 1.0 ux) maxCos) ux)))))
    xi)
   (*
    (*
     (sin (* (* uy 2.0) PI))
     (sqrt
      (- 1.0 (* (* (* (- 1.0 ux) maxCos) ux) (* (* (- 1.0 ux) maxCos) ux)))))
    yi))
  (* (* (* (- 1.0 ux) maxCos) ux) zi)))
(FPCore (xi yi zi ux uy maxCos)
 :precision binary32
 (+
  (+
   (*
    (*
     (cos (* (* uy 2.0) PI))
     (sqrt
      (- 1.0 (* (* ux (* (- 1.0 ux) maxCos)) (* ux (* (- 1.0 ux) maxCos))))))
    xi)
   (*
    (*
     (sqrt
      (- 1.0 (* (* ux (* (- 1.0 ux) maxCos)) (* ux (* (- 1.0 ux) maxCos)))))
     (sin (* (cbrt (* (pow PI 2.0) (pow (* uy 2.0) 3.0))) (cbrt PI))))
    yi))
  (* (* ux (* (- 1.0 ux) maxCos)) zi)))
float code(float xi, float yi, float zi, float ux, float uy, float maxCos) {
	return (((cosf((uy * 2.0f) * ((float) M_PI)) * sqrtf(1.0f - ((((1.0f - ux) * maxCos) * ux) * (((1.0f - ux) * maxCos) * ux)))) * xi) + ((sinf((uy * 2.0f) * ((float) M_PI)) * sqrtf(1.0f - ((((1.0f - ux) * maxCos) * ux) * (((1.0f - ux) * maxCos) * ux)))) * yi)) + ((((1.0f - ux) * maxCos) * ux) * zi);
}
float code(float xi, float yi, float zi, float ux, float uy, float maxCos) {
	return (((cosf((uy * 2.0f) * ((float) M_PI)) * sqrtf(1.0f - ((ux * ((1.0f - ux) * maxCos)) * (ux * ((1.0f - ux) * maxCos))))) * xi) + ((sqrtf(1.0f - ((ux * ((1.0f - ux) * maxCos)) * (ux * ((1.0f - ux) * maxCos)))) * sinf(cbrtf(powf(((float) M_PI), 2.0f) * powf((uy * 2.0f), 3.0f)) * cbrtf((float) M_PI))) * yi)) + ((ux * ((1.0f - ux) * maxCos)) * zi);
}

Error

Bits error versus xi

Bits error versus yi

Bits error versus zi

Bits error versus ux

Bits error versus uy

Bits error versus maxCos

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.4

    \[\left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot xi + \left(\sin \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot yi\right) + \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot zi\]
  2. Using strategy rm
  3. Applied add-cube-cbrt_binary320.4

    \[\leadsto \left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot xi + \left(\sin \left(\left(uy \cdot 2\right) \cdot \color{blue}{\left(\left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right) \cdot \sqrt[3]{\pi}\right)}\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot yi\right) + \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot zi\]
  4. Applied associate-*r*_binary320.5

    \[\leadsto \left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot xi + \left(\sin \color{blue}{\left(\left(\left(uy \cdot 2\right) \cdot \left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right)\right) \cdot \sqrt[3]{\pi}\right)} \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot yi\right) + \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot zi\]
  5. Simplified0.5

    \[\leadsto \left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot xi + \left(\sin \left(\color{blue}{\left(\left(2 \cdot uy\right) \cdot \left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right)\right)} \cdot \sqrt[3]{\pi}\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot yi\right) + \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot zi\]
  6. Using strategy rm
  7. Applied add-cbrt-cube_binary320.5

    \[\leadsto \left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot xi + \left(\sin \left(\color{blue}{\sqrt[3]{\left(\left(\left(2 \cdot uy\right) \cdot \left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right)\right) \cdot \left(\left(2 \cdot uy\right) \cdot \left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right)\right)\right) \cdot \left(\left(2 \cdot uy\right) \cdot \left(\sqrt[3]{\pi} \cdot \sqrt[3]{\pi}\right)\right)}} \cdot \sqrt[3]{\pi}\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot yi\right) + \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot zi\]
  8. Simplified0.4

    \[\leadsto \left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot xi + \left(\sin \left(\sqrt[3]{\color{blue}{{\pi}^{2} \cdot {\left(2 \cdot uy\right)}^{3}}} \cdot \sqrt[3]{\pi}\right) \cdot \sqrt{1 - \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right)}\right) \cdot yi\right) + \left(\left(\left(1 - ux\right) \cdot maxCos\right) \cdot ux\right) \cdot zi\]
  9. Final simplification0.4

    \[\leadsto \left(\left(\cos \left(\left(uy \cdot 2\right) \cdot \pi\right) \cdot \sqrt{1 - \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right)}\right) \cdot xi + \left(\sqrt{1 - \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right)} \cdot \sin \left(\sqrt[3]{{\pi}^{2} \cdot {\left(uy \cdot 2\right)}^{3}} \cdot \sqrt[3]{\pi}\right)\right) \cdot yi\right) + \left(ux \cdot \left(\left(1 - ux\right) \cdot maxCos\right)\right) \cdot zi\]

Reproduce

herbie shell --seed 2021174 
(FPCore (xi yi zi ux uy maxCos)
  :name "UniformSampleCone 2"
  :precision binary32
  :pre (and (<= -10000.0 xi 10000.0) (<= -10000.0 yi 10000.0) (<= -10000.0 zi 10000.0) (<= 2.328306437e-10 ux 1.0) (<= 2.328306437e-10 uy 1.0) (<= 0.0 maxCos 1.0))
  (+ (+ (* (* (cos (* (* uy 2.0) PI)) (sqrt (- 1.0 (* (* (* (- 1.0 ux) maxCos) ux) (* (* (- 1.0 ux) maxCos) ux))))) xi) (* (* (sin (* (* uy 2.0) PI)) (sqrt (- 1.0 (* (* (* (- 1.0 ux) maxCos) ux) (* (* (- 1.0 ux) maxCos) ux))))) yi)) (* (* (* (- 1.0 ux) maxCos) ux) zi)))