Trowbridge-Reitz Sample, near normal, slope_y

Percentage Accurate: 98.4% → 98.4%
Time: 13.2s
Alternatives: 11
Speedup: N/A×

Specification

?
\[\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)\]
\[\begin{array}{l} \\ \sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (* (sqrt (/ u1 (- 1.0 u1))) (sin (* 6.28318530718 u2))))
float code(float cosTheta_i, float u1, float u2) {
	return sqrtf((u1 / (1.0f - u1))) * sinf((6.28318530718f * u2));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(4) function code(costheta_i, u1, u2)
use fmin_fmax_functions
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: u1
    real(4), intent (in) :: u2
    code = sqrt((u1 / (1.0e0 - u1))) * sin((6.28318530718e0 * u2))
end function
function code(cosTheta_i, u1, u2)
	return Float32(sqrt(Float32(u1 / Float32(Float32(1.0) - u1))) * sin(Float32(Float32(6.28318530718) * u2)))
end
function tmp = code(cosTheta_i, u1, u2)
	tmp = sqrt((u1 / (single(1.0) - u1))) * sin((single(6.28318530718) * u2));
end
\begin{array}{l}

\\
\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\end{array}

Sampling outcomes in binary32 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 11 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 98.4% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (* (sqrt (/ u1 (- 1.0 u1))) (sin (* 6.28318530718 u2))))
float code(float cosTheta_i, float u1, float u2) {
	return sqrtf((u1 / (1.0f - u1))) * sinf((6.28318530718f * u2));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(4) function code(costheta_i, u1, u2)
use fmin_fmax_functions
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: u1
    real(4), intent (in) :: u2
    code = sqrt((u1 / (1.0e0 - u1))) * sin((6.28318530718e0 * u2))
end function
function code(cosTheta_i, u1, u2)
	return Float32(sqrt(Float32(u1 / Float32(Float32(1.0) - u1))) * sin(Float32(Float32(6.28318530718) * u2)))
end
function tmp = code(cosTheta_i, u1, u2)
	tmp = sqrt((u1 / (single(1.0) - u1))) * sin((single(6.28318530718) * u2));
end
\begin{array}{l}

\\
\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\end{array}

Alternative 1: 98.4% accurate, N/A× speedup?

\[\begin{array}{l} \\ \sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (* (sqrt (/ u1 (- 1.0 u1))) (sin (* 6.28318530718 u2))))
float code(float cosTheta_i, float u1, float u2) {
	return sqrtf((u1 / (1.0f - u1))) * sinf((6.28318530718f * u2));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(4) function code(costheta_i, u1, u2)
use fmin_fmax_functions
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: u1
    real(4), intent (in) :: u2
    code = sqrt((u1 / (1.0e0 - u1))) * sin((6.28318530718e0 * u2))
end function
function code(cosTheta_i, u1, u2)
	return Float32(sqrt(Float32(u1 / Float32(Float32(1.0) - u1))) * sin(Float32(Float32(6.28318530718) * u2)))
end
function tmp = code(cosTheta_i, u1, u2)
	tmp = sqrt((u1 / (single(1.0) - u1))) * sin((single(6.28318530718) * u2));
end
\begin{array}{l}

\\
\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\end{array}
Derivation
  1. Initial program 98.4%

    \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  2. Add Preprocessing
  3. Add Preprocessing

Alternative 2: 98.3% accurate, N/A× speedup?

\[\begin{array}{l} \\ \sqrt{\frac{u1}{\frac{1 - u1}{u1} \cdot u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (* (sqrt (/ u1 (* (/ (- 1.0 u1) u1) u1))) (sin (* 6.28318530718 u2))))
float code(float cosTheta_i, float u1, float u2) {
	return sqrtf((u1 / (((1.0f - u1) / u1) * u1))) * sinf((6.28318530718f * u2));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(4) function code(costheta_i, u1, u2)
use fmin_fmax_functions
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: u1
    real(4), intent (in) :: u2
    code = sqrt((u1 / (((1.0e0 - u1) / u1) * u1))) * sin((6.28318530718e0 * u2))
end function
function code(cosTheta_i, u1, u2)
	return Float32(sqrt(Float32(u1 / Float32(Float32(Float32(Float32(1.0) - u1) / u1) * u1))) * sin(Float32(Float32(6.28318530718) * u2)))
end
function tmp = code(cosTheta_i, u1, u2)
	tmp = sqrt((u1 / (((single(1.0) - u1) / u1) * u1))) * sin((single(6.28318530718) * u2));
end
\begin{array}{l}

\\
\sqrt{\frac{u1}{\frac{1 - u1}{u1} \cdot u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\end{array}
Derivation
  1. Initial program 98.4%

    \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  2. Add Preprocessing
  3. Taylor expanded in u1 around inf

    \[\leadsto \sqrt{\frac{u1}{\color{blue}{u1 \cdot \left(\frac{1}{u1} - 1\right)}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
  4. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \sqrt{\frac{u1}{\left(\frac{1}{u1} - 1\right) \cdot \color{blue}{u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    2. lower-*.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\left(\frac{1}{u1} - 1\right) \cdot \color{blue}{u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    3. lower--.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\left(\frac{1}{u1} - 1\right) \cdot u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    4. lower-/.f3298.3

      \[\leadsto \sqrt{\frac{u1}{\left(\frac{1}{u1} - 1\right) \cdot u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  5. Applied rewrites98.3%

    \[\leadsto \sqrt{\frac{u1}{\color{blue}{\left(\frac{1}{u1} - 1\right) \cdot u1}}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  6. Taylor expanded in u1 around 0

    \[\leadsto \sqrt{\frac{u1}{\frac{1 + -1 \cdot u1}{u1} \cdot u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
  7. Step-by-step derivation
    1. lower-/.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{1 + -1 \cdot u1}{u1} \cdot u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    2. lower-+.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{1 + -1 \cdot u1}{u1} \cdot u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    3. lift-*.f3298.3

      \[\leadsto \sqrt{\frac{u1}{\frac{1 + -1 \cdot u1}{u1} \cdot u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  8. Applied rewrites98.3%

    \[\leadsto \sqrt{\frac{u1}{\frac{1 + -1 \cdot u1}{u1} \cdot u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  9. Final simplification98.3%

    \[\leadsto \sqrt{\frac{u1}{\frac{1 - u1}{u1} \cdot u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  10. Add Preprocessing

Alternative 3: 97.8% accurate, N/A× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := {\left(\frac{1 - u1}{u1}\right)}^{0.5}\\ t_1 := \sin \left(u2 \cdot 6.28318530718\right)\\ t_2 := \frac{u1}{1 - u1}\\ t_3 := 1709.1363441345495 \cdot t\_2 - 512.7409032403648 \cdot t\_2\\ t_4 := {t\_2}^{0.5}\\ t_5 := t\_0 \cdot t\_3\\ t_6 := \frac{1}{\sqrt{u1}} \cdot 0.5\\ \mathbf{if}\;u2 \leq 0.10999999940395355:\\ \;\;\;\;\mathsf{fma}\left(6.28318530718, t\_4, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot t\_4 - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, t\_4, 0.15915494309188485 \cdot t\_5\right), \mathsf{fma}\left(-1.0471975511966667, t\_5, 0.15915494309188485 \cdot \left(t\_0 \cdot \left(-6747.399833653739 \cdot t\_2 - -481.95713097526703 \cdot t\_2\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, t\_4, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot t\_3\right)\right)\right) - 41.341702240407926 \cdot t\_4\right)\right) \cdot u2\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(t\_6 \cdot t\_1 - \left(-1 \cdot u1\right) \cdot \mathsf{fma}\left(t\_6, t\_1, \left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot t\_1\right)\right), u1 \cdot u1, \sqrt{u1} \cdot t\_1\right)\\ \end{array} \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (let* ((t_0 (pow (/ (- 1.0 u1) u1) 0.5))
        (t_1 (sin (* u2 6.28318530718)))
        (t_2 (/ u1 (- 1.0 u1)))
        (t_3 (- (* 1709.1363441345495 t_2) (* 512.7409032403648 t_2)))
        (t_4 (pow t_2 0.5))
        (t_5 (* t_0 t_3))
        (t_6 (* (/ 1.0 (sqrt u1)) 0.5)))
   (if (<= u2 0.10999999940395355)
     (*
      (fma
       6.28318530718
       t_4
       (*
        (* u2 u2)
        (-
         (*
          (* u2 u2)
          (-
           (*
            (* u2 u2)
            (-
             (* -1789.8033942389236 t_4)
             (fma
              -6.579736267393772
              (fma -272.01749758700635 t_4 (* 0.15915494309188485 t_5))
              (fma
               -1.0471975511966667
               t_5
               (*
                0.15915494309188485
                (*
                 t_0
                 (-
                  (* -6747.399833653739 t_2)
                  (* -481.95713097526703 t_2))))))))
           (fma
            -272.01749758700635
            t_4
            (* 0.15915494309188485 (* (pow (- (/ 1.0 u1) 1.0) 0.5) t_3)))))
         (* 41.341702240407926 t_4))))
      u2)
     (fma
      (-
       (* t_6 t_1)
       (*
        (* -1.0 u1)
        (fma
         t_6
         t_1
         (* (* 0.5 (sqrt u1)) (* (- 1.0 (* 0.25 (/ 1.0 u1))) t_1)))))
      (* u1 u1)
      (* (sqrt u1) t_1)))))
float code(float cosTheta_i, float u1, float u2) {
	float t_0 = powf(((1.0f - u1) / u1), 0.5f);
	float t_1 = sinf((u2 * 6.28318530718f));
	float t_2 = u1 / (1.0f - u1);
	float t_3 = (1709.1363441345495f * t_2) - (512.7409032403648f * t_2);
	float t_4 = powf(t_2, 0.5f);
	float t_5 = t_0 * t_3;
	float t_6 = (1.0f / sqrtf(u1)) * 0.5f;
	float tmp;
	if (u2 <= 0.10999999940395355f) {
		tmp = fmaf(6.28318530718f, t_4, ((u2 * u2) * (((u2 * u2) * (((u2 * u2) * ((-1789.8033942389236f * t_4) - fmaf(-6.579736267393772f, fmaf(-272.01749758700635f, t_4, (0.15915494309188485f * t_5)), fmaf(-1.0471975511966667f, t_5, (0.15915494309188485f * (t_0 * ((-6747.399833653739f * t_2) - (-481.95713097526703f * t_2)))))))) - fmaf(-272.01749758700635f, t_4, (0.15915494309188485f * (powf(((1.0f / u1) - 1.0f), 0.5f) * t_3))))) - (41.341702240407926f * t_4)))) * u2;
	} else {
		tmp = fmaf(((t_6 * t_1) - ((-1.0f * u1) * fmaf(t_6, t_1, ((0.5f * sqrtf(u1)) * ((1.0f - (0.25f * (1.0f / u1))) * t_1))))), (u1 * u1), (sqrtf(u1) * t_1));
	}
	return tmp;
}
function code(cosTheta_i, u1, u2)
	t_0 = Float32(Float32(Float32(1.0) - u1) / u1) ^ Float32(0.5)
	t_1 = sin(Float32(u2 * Float32(6.28318530718)))
	t_2 = Float32(u1 / Float32(Float32(1.0) - u1))
	t_3 = Float32(Float32(Float32(1709.1363441345495) * t_2) - Float32(Float32(512.7409032403648) * t_2))
	t_4 = t_2 ^ Float32(0.5)
	t_5 = Float32(t_0 * t_3)
	t_6 = Float32(Float32(Float32(1.0) / sqrt(u1)) * Float32(0.5))
	tmp = Float32(0.0)
	if (u2 <= Float32(0.10999999940395355))
		tmp = Float32(fma(Float32(6.28318530718), t_4, Float32(Float32(u2 * u2) * Float32(Float32(Float32(u2 * u2) * Float32(Float32(Float32(u2 * u2) * Float32(Float32(Float32(-1789.8033942389236) * t_4) - fma(Float32(-6.579736267393772), fma(Float32(-272.01749758700635), t_4, Float32(Float32(0.15915494309188485) * t_5)), fma(Float32(-1.0471975511966667), t_5, Float32(Float32(0.15915494309188485) * Float32(t_0 * Float32(Float32(Float32(-6747.399833653739) * t_2) - Float32(Float32(-481.95713097526703) * t_2)))))))) - fma(Float32(-272.01749758700635), t_4, Float32(Float32(0.15915494309188485) * Float32((Float32(Float32(Float32(1.0) / u1) - Float32(1.0)) ^ Float32(0.5)) * t_3))))) - Float32(Float32(41.341702240407926) * t_4)))) * u2);
	else
		tmp = fma(Float32(Float32(t_6 * t_1) - Float32(Float32(Float32(-1.0) * u1) * fma(t_6, t_1, Float32(Float32(Float32(0.5) * sqrt(u1)) * Float32(Float32(Float32(1.0) - Float32(Float32(0.25) * Float32(Float32(1.0) / u1))) * t_1))))), Float32(u1 * u1), Float32(sqrt(u1) * t_1));
	end
	return tmp
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {\left(\frac{1 - u1}{u1}\right)}^{0.5}\\
t_1 := \sin \left(u2 \cdot 6.28318530718\right)\\
t_2 := \frac{u1}{1 - u1}\\
t_3 := 1709.1363441345495 \cdot t\_2 - 512.7409032403648 \cdot t\_2\\
t_4 := {t\_2}^{0.5}\\
t_5 := t\_0 \cdot t\_3\\
t_6 := \frac{1}{\sqrt{u1}} \cdot 0.5\\
\mathbf{if}\;u2 \leq 0.10999999940395355:\\
\;\;\;\;\mathsf{fma}\left(6.28318530718, t\_4, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot t\_4 - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, t\_4, 0.15915494309188485 \cdot t\_5\right), \mathsf{fma}\left(-1.0471975511966667, t\_5, 0.15915494309188485 \cdot \left(t\_0 \cdot \left(-6747.399833653739 \cdot t\_2 - -481.95713097526703 \cdot t\_2\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, t\_4, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot t\_3\right)\right)\right) - 41.341702240407926 \cdot t\_4\right)\right) \cdot u2\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t\_6 \cdot t\_1 - \left(-1 \cdot u1\right) \cdot \mathsf{fma}\left(t\_6, t\_1, \left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot t\_1\right)\right), u1 \cdot u1, \sqrt{u1} \cdot t\_1\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if u2 < 0.109999999

    1. Initial program 98.6%

      \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    2. Add Preprocessing
    3. Taylor expanded in u2 around 0

      \[\leadsto \color{blue}{u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot {u2}^{2}\right) + \frac{3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)} \]
    4. Applied rewrites98.5%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}, u2 \cdot u2, -41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right), u2 \cdot u2, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot u2} \]
    5. Applied rewrites98.0%

      \[\leadsto \frac{{\left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right)\right)}^{3} + {\left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right)}^{3}}{\mathsf{fma}\left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right), \left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right), \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) - \left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right)\right) \cdot \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right)\right)} \cdot u2 \]
    6. Taylor expanded in u2 around 0

      \[\leadsto \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left({u2}^{2} \cdot \left({u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} - \left(\frac{-98696044010906577398881}{15000000000000000000000} \cdot \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right) + \left(\frac{-314159265359}{300000000000} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right) + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right) \cdot u2 \]
    7. Applied rewrites98.6%

      \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]
    8. Taylor expanded in u1 around inf

      \[\leadsto \mathsf{fma}\left(\frac{314159265359}{50000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}} - \mathsf{fma}\left(\frac{-98696044010906577398881}{15000000000000000000000}, \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(\frac{-314159265359}{300000000000}, {\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right), \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1}{u1} - 1\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}\right)\right) \cdot u2 \]
    9. Step-by-step derivation
      1. lower--.f32N/A

        \[\leadsto \mathsf{fma}\left(\frac{314159265359}{50000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}} - \mathsf{fma}\left(\frac{-98696044010906577398881}{15000000000000000000000}, \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(\frac{-314159265359}{300000000000}, {\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right), \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1}{u1} - 1\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}\right)\right) \cdot u2 \]
      2. lift-/.f3298.6

        \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]
    10. Applied rewrites98.6%

      \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]

    if 0.109999999 < u2

    1. Initial program 96.5%

      \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    2. Add Preprocessing
    3. Taylor expanded in u1 around 0

      \[\leadsto \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) + {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right)} \]
    4. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) + \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)} \]
      2. *-commutativeN/A

        \[\leadsto \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) \cdot {u1}^{2} + \color{blue}{\sqrt{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      3. lower-fma.f32N/A

        \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right), \color{blue}{{u1}^{2}}, \sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) \]
    5. Applied rewrites87.6%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \left(-1 \cdot u1\right) \cdot \mathsf{fma}\left(\frac{1}{\sqrt{u1}} \cdot 0.5, \sin \left(u2 \cdot 6.28318530718\right), \left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right), u1 \cdot u1, \sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification97.5%

    \[\leadsto \begin{array}{l} \mathbf{if}\;u2 \leq 0.10999999940395355:\\ \;\;\;\;\mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \left(-1 \cdot u1\right) \cdot \mathsf{fma}\left(\frac{1}{\sqrt{u1}} \cdot 0.5, \sin \left(u2 \cdot 6.28318530718\right), \left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right), u1 \cdot u1, \sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 4: 97.8% accurate, N/A× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \left(u2 \cdot 6.28318530718\right)\\ t_1 := \left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot t\_0\\ t_2 := {\left(\frac{1 - u1}{u1}\right)}^{0.5}\\ t_3 := \sqrt{u1} \cdot t\_0\\ t_4 := \frac{u1}{1 - u1}\\ t_5 := 1709.1363441345495 \cdot t\_4 - 512.7409032403648 \cdot t\_4\\ t_6 := {t\_4}^{0.5}\\ t_7 := t\_2 \cdot t\_5\\ t_8 := \left(t\_1 - \mathsf{fma}\left(t\_1, -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot t\_0\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\\ \mathbf{if}\;u2 \leq 0.10999999940395355:\\ \;\;\;\;\mathsf{fma}\left(6.28318530718, t\_6, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot t\_6 - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, t\_6, 0.15915494309188485 \cdot t\_7\right), \mathsf{fma}\left(-1.0471975511966667, t\_7, 0.15915494309188485 \cdot \left(t\_2 \cdot \left(-6747.399833653739 \cdot t\_4 - -481.95713097526703 \cdot t\_4\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, t\_6, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot t\_5\right)\right)\right) - 41.341702240407926 \cdot t\_6\right)\right) \cdot u2\\ \mathbf{else}:\\ \;\;\;\;\frac{{t\_8}^{3} + {t\_3}^{3}}{t\_8 \cdot t\_8 + \left(t\_3 \cdot t\_3 - t\_8 \cdot t\_3\right)}\\ \end{array} \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (let* ((t_0 (sin (* u2 6.28318530718)))
        (t_1 (* (* (/ 1.0 (sqrt u1)) 0.5) t_0))
        (t_2 (pow (/ (- 1.0 u1) u1) 0.5))
        (t_3 (* (sqrt u1) t_0))
        (t_4 (/ u1 (- 1.0 u1)))
        (t_5 (- (* 1709.1363441345495 t_4) (* 512.7409032403648 t_4)))
        (t_6 (pow t_4 0.5))
        (t_7 (* t_2 t_5))
        (t_8
         (*
          (-
           t_1
           (fma
            t_1
            (* -1.0 u1)
            (*
             (* (* 0.5 (sqrt u1)) (* (- 1.0 (* 0.25 (/ 1.0 u1))) t_0))
             (* -1.0 u1))))
          (* u1 u1))))
   (if (<= u2 0.10999999940395355)
     (*
      (fma
       6.28318530718
       t_6
       (*
        (* u2 u2)
        (-
         (*
          (* u2 u2)
          (-
           (*
            (* u2 u2)
            (-
             (* -1789.8033942389236 t_6)
             (fma
              -6.579736267393772
              (fma -272.01749758700635 t_6 (* 0.15915494309188485 t_7))
              (fma
               -1.0471975511966667
               t_7
               (*
                0.15915494309188485
                (*
                 t_2
                 (-
                  (* -6747.399833653739 t_4)
                  (* -481.95713097526703 t_4))))))))
           (fma
            -272.01749758700635
            t_6
            (* 0.15915494309188485 (* (pow (- (/ 1.0 u1) 1.0) 0.5) t_5)))))
         (* 41.341702240407926 t_6))))
      u2)
     (/
      (+ (pow t_8 3.0) (pow t_3 3.0))
      (+ (* t_8 t_8) (- (* t_3 t_3) (* t_8 t_3)))))))
float code(float cosTheta_i, float u1, float u2) {
	float t_0 = sinf((u2 * 6.28318530718f));
	float t_1 = ((1.0f / sqrtf(u1)) * 0.5f) * t_0;
	float t_2 = powf(((1.0f - u1) / u1), 0.5f);
	float t_3 = sqrtf(u1) * t_0;
	float t_4 = u1 / (1.0f - u1);
	float t_5 = (1709.1363441345495f * t_4) - (512.7409032403648f * t_4);
	float t_6 = powf(t_4, 0.5f);
	float t_7 = t_2 * t_5;
	float t_8 = (t_1 - fmaf(t_1, (-1.0f * u1), (((0.5f * sqrtf(u1)) * ((1.0f - (0.25f * (1.0f / u1))) * t_0)) * (-1.0f * u1)))) * (u1 * u1);
	float tmp;
	if (u2 <= 0.10999999940395355f) {
		tmp = fmaf(6.28318530718f, t_6, ((u2 * u2) * (((u2 * u2) * (((u2 * u2) * ((-1789.8033942389236f * t_6) - fmaf(-6.579736267393772f, fmaf(-272.01749758700635f, t_6, (0.15915494309188485f * t_7)), fmaf(-1.0471975511966667f, t_7, (0.15915494309188485f * (t_2 * ((-6747.399833653739f * t_4) - (-481.95713097526703f * t_4)))))))) - fmaf(-272.01749758700635f, t_6, (0.15915494309188485f * (powf(((1.0f / u1) - 1.0f), 0.5f) * t_5))))) - (41.341702240407926f * t_6)))) * u2;
	} else {
		tmp = (powf(t_8, 3.0f) + powf(t_3, 3.0f)) / ((t_8 * t_8) + ((t_3 * t_3) - (t_8 * t_3)));
	}
	return tmp;
}
function code(cosTheta_i, u1, u2)
	t_0 = sin(Float32(u2 * Float32(6.28318530718)))
	t_1 = Float32(Float32(Float32(Float32(1.0) / sqrt(u1)) * Float32(0.5)) * t_0)
	t_2 = Float32(Float32(Float32(1.0) - u1) / u1) ^ Float32(0.5)
	t_3 = Float32(sqrt(u1) * t_0)
	t_4 = Float32(u1 / Float32(Float32(1.0) - u1))
	t_5 = Float32(Float32(Float32(1709.1363441345495) * t_4) - Float32(Float32(512.7409032403648) * t_4))
	t_6 = t_4 ^ Float32(0.5)
	t_7 = Float32(t_2 * t_5)
	t_8 = Float32(Float32(t_1 - fma(t_1, Float32(Float32(-1.0) * u1), Float32(Float32(Float32(Float32(0.5) * sqrt(u1)) * Float32(Float32(Float32(1.0) - Float32(Float32(0.25) * Float32(Float32(1.0) / u1))) * t_0)) * Float32(Float32(-1.0) * u1)))) * Float32(u1 * u1))
	tmp = Float32(0.0)
	if (u2 <= Float32(0.10999999940395355))
		tmp = Float32(fma(Float32(6.28318530718), t_6, Float32(Float32(u2 * u2) * Float32(Float32(Float32(u2 * u2) * Float32(Float32(Float32(u2 * u2) * Float32(Float32(Float32(-1789.8033942389236) * t_6) - fma(Float32(-6.579736267393772), fma(Float32(-272.01749758700635), t_6, Float32(Float32(0.15915494309188485) * t_7)), fma(Float32(-1.0471975511966667), t_7, Float32(Float32(0.15915494309188485) * Float32(t_2 * Float32(Float32(Float32(-6747.399833653739) * t_4) - Float32(Float32(-481.95713097526703) * t_4)))))))) - fma(Float32(-272.01749758700635), t_6, Float32(Float32(0.15915494309188485) * Float32((Float32(Float32(Float32(1.0) / u1) - Float32(1.0)) ^ Float32(0.5)) * t_5))))) - Float32(Float32(41.341702240407926) * t_6)))) * u2);
	else
		tmp = Float32(Float32((t_8 ^ Float32(3.0)) + (t_3 ^ Float32(3.0))) / Float32(Float32(t_8 * t_8) + Float32(Float32(t_3 * t_3) - Float32(t_8 * t_3))));
	end
	return tmp
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \sin \left(u2 \cdot 6.28318530718\right)\\
t_1 := \left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot t\_0\\
t_2 := {\left(\frac{1 - u1}{u1}\right)}^{0.5}\\
t_3 := \sqrt{u1} \cdot t\_0\\
t_4 := \frac{u1}{1 - u1}\\
t_5 := 1709.1363441345495 \cdot t\_4 - 512.7409032403648 \cdot t\_4\\
t_6 := {t\_4}^{0.5}\\
t_7 := t\_2 \cdot t\_5\\
t_8 := \left(t\_1 - \mathsf{fma}\left(t\_1, -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot t\_0\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\\
\mathbf{if}\;u2 \leq 0.10999999940395355:\\
\;\;\;\;\mathsf{fma}\left(6.28318530718, t\_6, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot t\_6 - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, t\_6, 0.15915494309188485 \cdot t\_7\right), \mathsf{fma}\left(-1.0471975511966667, t\_7, 0.15915494309188485 \cdot \left(t\_2 \cdot \left(-6747.399833653739 \cdot t\_4 - -481.95713097526703 \cdot t\_4\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, t\_6, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot t\_5\right)\right)\right) - 41.341702240407926 \cdot t\_6\right)\right) \cdot u2\\

\mathbf{else}:\\
\;\;\;\;\frac{{t\_8}^{3} + {t\_3}^{3}}{t\_8 \cdot t\_8 + \left(t\_3 \cdot t\_3 - t\_8 \cdot t\_3\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if u2 < 0.109999999

    1. Initial program 98.6%

      \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    2. Add Preprocessing
    3. Taylor expanded in u2 around 0

      \[\leadsto \color{blue}{u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot {u2}^{2}\right) + \frac{3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)} \]
    4. Applied rewrites98.5%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}, u2 \cdot u2, -41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right), u2 \cdot u2, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot u2} \]
    5. Applied rewrites98.0%

      \[\leadsto \frac{{\left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right)\right)}^{3} + {\left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right)}^{3}}{\mathsf{fma}\left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right), \left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right), \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) - \left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right)\right) \cdot \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right)\right)} \cdot u2 \]
    6. Taylor expanded in u2 around 0

      \[\leadsto \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left({u2}^{2} \cdot \left({u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} - \left(\frac{-98696044010906577398881}{15000000000000000000000} \cdot \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right) + \left(\frac{-314159265359}{300000000000} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right) + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right) \cdot u2 \]
    7. Applied rewrites98.6%

      \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]
    8. Taylor expanded in u1 around inf

      \[\leadsto \mathsf{fma}\left(\frac{314159265359}{50000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}} - \mathsf{fma}\left(\frac{-98696044010906577398881}{15000000000000000000000}, \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(\frac{-314159265359}{300000000000}, {\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right), \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1}{u1} - 1\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}\right)\right) \cdot u2 \]
    9. Step-by-step derivation
      1. lower--.f32N/A

        \[\leadsto \mathsf{fma}\left(\frac{314159265359}{50000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}} - \mathsf{fma}\left(\frac{-98696044010906577398881}{15000000000000000000000}, \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(\frac{-314159265359}{300000000000}, {\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right), \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1}{u1} - 1\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}\right)\right) \cdot u2 \]
      2. lift-/.f3298.6

        \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]
    10. Applied rewrites98.6%

      \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]

    if 0.109999999 < u2

    1. Initial program 96.5%

      \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    2. Add Preprocessing
    3. Taylor expanded in u1 around 0

      \[\leadsto \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) + {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right)} \]
    4. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) + \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)} \]
      2. *-commutativeN/A

        \[\leadsto \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) \cdot {u1}^{2} + \color{blue}{\sqrt{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      3. lower-fma.f32N/A

        \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right), \color{blue}{{u1}^{2}}, \sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) \]
    5. Applied rewrites87.6%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \left(-1 \cdot u1\right) \cdot \mathsf{fma}\left(\frac{1}{\sqrt{u1}} \cdot 0.5, \sin \left(u2 \cdot 6.28318530718\right), \left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right), u1 \cdot u1, \sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)} \]
    6. Applied rewrites87.4%

      \[\leadsto \frac{{\left(\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right), -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\right)}^{3} + {\left(\sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)}^{3}}{\color{blue}{\left(\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right), -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\right) \cdot \left(\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right), -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\right) + \left(\left(\sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right) \cdot \left(\sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right) - \left(\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right), -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\right) \cdot \left(\sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right)}} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification97.5%

    \[\leadsto \begin{array}{l} \mathbf{if}\;u2 \leq 0.10999999940395355:\\ \;\;\;\;\mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2\\ \mathbf{else}:\\ \;\;\;\;\frac{{\left(\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right), -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\right)}^{3} + {\left(\sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)}^{3}}{\left(\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right), -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\right) \cdot \left(\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right), -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\right) + \left(\left(\sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right) \cdot \left(\sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right) - \left(\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right), -1 \cdot u1, \left(\left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right) \cdot \left(-1 \cdot u1\right)\right)\right) \cdot \left(u1 \cdot u1\right)\right) \cdot \left(\sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right)}\\ \end{array} \]
  5. Add Preprocessing

Alternative 5: 97.8% accurate, N/A× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := {\left(\frac{1 - u1}{u1}\right)}^{0.5}\\ t_1 := \sin \left(6.28318530718 \cdot u2\right)\\ t_2 := t\_1 \cdot -1\\ t_3 := \frac{u1}{1 - u1}\\ t_4 := 1709.1363441345495 \cdot t\_3 - 512.7409032403648 \cdot t\_3\\ t_5 := {t\_3}^{0.5}\\ t_6 := \frac{1}{\sqrt{u1}}\\ t_7 := 0.5 \cdot \left(t\_6 \cdot t\_1\right)\\ t_8 := t\_0 \cdot t\_4\\ t_9 := t\_6 \cdot t\_2\\ \mathbf{if}\;u2 \leq 0.10999999940395355:\\ \;\;\;\;\mathsf{fma}\left(6.28318530718, t\_5, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot t\_5 - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, t\_5, 0.15915494309188485 \cdot t\_8\right), \mathsf{fma}\left(-1.0471975511966667, t\_8, 0.15915494309188485 \cdot \left(t\_0 \cdot \left(-6747.399833653739 \cdot t\_3 - -481.95713097526703 \cdot t\_3\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, t\_5, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot t\_4\right)\right)\right) - 41.341702240407926 \cdot t\_5\right)\right) \cdot u2\\ \mathbf{else}:\\ \;\;\;\;{u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot t\_2, t\_7\right)}{u1} + \mathsf{fma}\left(0.125, t\_9, t\_7\right)}{-1 \cdot u1}, -0.5 \cdot t\_9\right)\\ \end{array} \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (let* ((t_0 (pow (/ (- 1.0 u1) u1) 0.5))
        (t_1 (sin (* 6.28318530718 u2)))
        (t_2 (* t_1 -1.0))
        (t_3 (/ u1 (- 1.0 u1)))
        (t_4 (- (* 1709.1363441345495 t_3) (* 512.7409032403648 t_3)))
        (t_5 (pow t_3 0.5))
        (t_6 (/ 1.0 (sqrt u1)))
        (t_7 (* 0.5 (* t_6 t_1)))
        (t_8 (* t_0 t_4))
        (t_9 (* t_6 t_2)))
   (if (<= u2 0.10999999940395355)
     (*
      (fma
       6.28318530718
       t_5
       (*
        (* u2 u2)
        (-
         (*
          (* u2 u2)
          (-
           (*
            (* u2 u2)
            (-
             (* -1789.8033942389236 t_5)
             (fma
              -6.579736267393772
              (fma -272.01749758700635 t_5 (* 0.15915494309188485 t_8))
              (fma
               -1.0471975511966667
               t_8
               (*
                0.15915494309188485
                (*
                 t_0
                 (-
                  (* -6747.399833653739 t_3)
                  (* -481.95713097526703 t_3))))))))
           (fma
            -272.01749758700635
            t_5
            (* 0.15915494309188485 (* (pow (- (/ 1.0 u1) 1.0) 0.5) t_4)))))
         (* 41.341702240407926 t_5))))
      u2)
     (*
      (pow u1 4.0)
      (fma
       -1.0
       (/
        (+
         (/ (fma -1.0 (* (/ 1.0 (pow (pow u1 3.0) 0.5)) t_2) t_7) u1)
         (fma 0.125 t_9 t_7))
        (* -1.0 u1))
       (* -0.5 t_9))))))
float code(float cosTheta_i, float u1, float u2) {
	float t_0 = powf(((1.0f - u1) / u1), 0.5f);
	float t_1 = sinf((6.28318530718f * u2));
	float t_2 = t_1 * -1.0f;
	float t_3 = u1 / (1.0f - u1);
	float t_4 = (1709.1363441345495f * t_3) - (512.7409032403648f * t_3);
	float t_5 = powf(t_3, 0.5f);
	float t_6 = 1.0f / sqrtf(u1);
	float t_7 = 0.5f * (t_6 * t_1);
	float t_8 = t_0 * t_4;
	float t_9 = t_6 * t_2;
	float tmp;
	if (u2 <= 0.10999999940395355f) {
		tmp = fmaf(6.28318530718f, t_5, ((u2 * u2) * (((u2 * u2) * (((u2 * u2) * ((-1789.8033942389236f * t_5) - fmaf(-6.579736267393772f, fmaf(-272.01749758700635f, t_5, (0.15915494309188485f * t_8)), fmaf(-1.0471975511966667f, t_8, (0.15915494309188485f * (t_0 * ((-6747.399833653739f * t_3) - (-481.95713097526703f * t_3)))))))) - fmaf(-272.01749758700635f, t_5, (0.15915494309188485f * (powf(((1.0f / u1) - 1.0f), 0.5f) * t_4))))) - (41.341702240407926f * t_5)))) * u2;
	} else {
		tmp = powf(u1, 4.0f) * fmaf(-1.0f, (((fmaf(-1.0f, ((1.0f / powf(powf(u1, 3.0f), 0.5f)) * t_2), t_7) / u1) + fmaf(0.125f, t_9, t_7)) / (-1.0f * u1)), (-0.5f * t_9));
	}
	return tmp;
}
function code(cosTheta_i, u1, u2)
	t_0 = Float32(Float32(Float32(1.0) - u1) / u1) ^ Float32(0.5)
	t_1 = sin(Float32(Float32(6.28318530718) * u2))
	t_2 = Float32(t_1 * Float32(-1.0))
	t_3 = Float32(u1 / Float32(Float32(1.0) - u1))
	t_4 = Float32(Float32(Float32(1709.1363441345495) * t_3) - Float32(Float32(512.7409032403648) * t_3))
	t_5 = t_3 ^ Float32(0.5)
	t_6 = Float32(Float32(1.0) / sqrt(u1))
	t_7 = Float32(Float32(0.5) * Float32(t_6 * t_1))
	t_8 = Float32(t_0 * t_4)
	t_9 = Float32(t_6 * t_2)
	tmp = Float32(0.0)
	if (u2 <= Float32(0.10999999940395355))
		tmp = Float32(fma(Float32(6.28318530718), t_5, Float32(Float32(u2 * u2) * Float32(Float32(Float32(u2 * u2) * Float32(Float32(Float32(u2 * u2) * Float32(Float32(Float32(-1789.8033942389236) * t_5) - fma(Float32(-6.579736267393772), fma(Float32(-272.01749758700635), t_5, Float32(Float32(0.15915494309188485) * t_8)), fma(Float32(-1.0471975511966667), t_8, Float32(Float32(0.15915494309188485) * Float32(t_0 * Float32(Float32(Float32(-6747.399833653739) * t_3) - Float32(Float32(-481.95713097526703) * t_3)))))))) - fma(Float32(-272.01749758700635), t_5, Float32(Float32(0.15915494309188485) * Float32((Float32(Float32(Float32(1.0) / u1) - Float32(1.0)) ^ Float32(0.5)) * t_4))))) - Float32(Float32(41.341702240407926) * t_5)))) * u2);
	else
		tmp = Float32((u1 ^ Float32(4.0)) * fma(Float32(-1.0), Float32(Float32(Float32(fma(Float32(-1.0), Float32(Float32(Float32(1.0) / ((u1 ^ Float32(3.0)) ^ Float32(0.5))) * t_2), t_7) / u1) + fma(Float32(0.125), t_9, t_7)) / Float32(Float32(-1.0) * u1)), Float32(Float32(-0.5) * t_9)));
	end
	return tmp
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {\left(\frac{1 - u1}{u1}\right)}^{0.5}\\
t_1 := \sin \left(6.28318530718 \cdot u2\right)\\
t_2 := t\_1 \cdot -1\\
t_3 := \frac{u1}{1 - u1}\\
t_4 := 1709.1363441345495 \cdot t\_3 - 512.7409032403648 \cdot t\_3\\
t_5 := {t\_3}^{0.5}\\
t_6 := \frac{1}{\sqrt{u1}}\\
t_7 := 0.5 \cdot \left(t\_6 \cdot t\_1\right)\\
t_8 := t\_0 \cdot t\_4\\
t_9 := t\_6 \cdot t\_2\\
\mathbf{if}\;u2 \leq 0.10999999940395355:\\
\;\;\;\;\mathsf{fma}\left(6.28318530718, t\_5, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot t\_5 - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, t\_5, 0.15915494309188485 \cdot t\_8\right), \mathsf{fma}\left(-1.0471975511966667, t\_8, 0.15915494309188485 \cdot \left(t\_0 \cdot \left(-6747.399833653739 \cdot t\_3 - -481.95713097526703 \cdot t\_3\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, t\_5, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot t\_4\right)\right)\right) - 41.341702240407926 \cdot t\_5\right)\right) \cdot u2\\

\mathbf{else}:\\
\;\;\;\;{u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot t\_2, t\_7\right)}{u1} + \mathsf{fma}\left(0.125, t\_9, t\_7\right)}{-1 \cdot u1}, -0.5 \cdot t\_9\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if u2 < 0.109999999

    1. Initial program 98.6%

      \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    2. Add Preprocessing
    3. Taylor expanded in u2 around 0

      \[\leadsto \color{blue}{u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot {u2}^{2}\right) + \frac{3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)} \]
    4. Applied rewrites98.5%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}, u2 \cdot u2, -41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right), u2 \cdot u2, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot u2} \]
    5. Applied rewrites98.0%

      \[\leadsto \frac{{\left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right)\right)}^{3} + {\left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right)}^{3}}{\mathsf{fma}\left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right), \left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right), \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) - \left(\left(\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right)\right) \cdot \left({\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right)\right)} \cdot u2 \]
    6. Taylor expanded in u2 around 0

      \[\leadsto \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left({u2}^{2} \cdot \left({u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} - \left(\frac{-98696044010906577398881}{15000000000000000000000} \cdot \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right) + \left(\frac{-314159265359}{300000000000} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right) + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + \frac{50000000000}{314159265359} \cdot \left(\sqrt{\frac{1 - u1}{u1}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right) \cdot u2 \]
    7. Applied rewrites98.6%

      \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]
    8. Taylor expanded in u1 around inf

      \[\leadsto \mathsf{fma}\left(\frac{314159265359}{50000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}} - \mathsf{fma}\left(\frac{-98696044010906577398881}{15000000000000000000000}, \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(\frac{-314159265359}{300000000000}, {\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right), \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1}{u1} - 1\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}\right)\right) \cdot u2 \]
    9. Step-by-step derivation
      1. lower--.f32N/A

        \[\leadsto \mathsf{fma}\left(\frac{314159265359}{50000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{168750000000000000000000000000000000000000000000000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}} - \mathsf{fma}\left(\frac{-98696044010906577398881}{15000000000000000000000}, \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(\frac{-314159265359}{300000000000}, {\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right), \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{\frac{1}{2}} \cdot \left(\frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{14062500000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{-94885310160755698508969199161917078090991542041945444570644759847389875187381489531880769921}{196875000000000000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(\frac{-3060196847853821555298148281676017575122444629042460390799}{11250000000000000000000000000000000000000000000000000000}, {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}, \frac{50000000000}{314159265359} \cdot \left({\left(\frac{1}{u1} - 1\right)}^{\frac{1}{2}} \cdot \left(\frac{961389193575684075633145058384385882649239799132134631991269883031841}{562500000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1} - \frac{961389193575684075633145058384385882649239799132134631991269883031841}{1875000000000000000000000000000000000000000000000000000000000000000} \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - \frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot {\left(\frac{u1}{1 - u1}\right)}^{\frac{1}{2}}\right)\right) \cdot u2 \]
      2. lift-/.f3298.6

        \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]
    10. Applied rewrites98.6%

      \[\leadsto \mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2 \]

    if 0.109999999 < u2

    1. Initial program 96.5%

      \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    2. Add Preprocessing
    3. Taylor expanded in u1 around 0

      \[\leadsto \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) + {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right)} \]
    4. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) + \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)} \]
      2. *-commutativeN/A

        \[\leadsto \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) \cdot {u1}^{2} + \color{blue}{\sqrt{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      3. lower-fma.f32N/A

        \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right), \color{blue}{{u1}^{2}}, \sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) \]
    5. Applied rewrites87.6%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \left(-1 \cdot u1\right) \cdot \mathsf{fma}\left(\frac{1}{\sqrt{u1}} \cdot 0.5, \sin \left(u2 \cdot 6.28318530718\right), \left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right), u1 \cdot u1, \sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)} \]
    6. Taylor expanded in u1 around -inf

      \[\leadsto {u1}^{4} \cdot \color{blue}{\left(-1 \cdot \frac{-1 \cdot \frac{-1 \cdot \left(\sqrt{\frac{1}{{u1}^{3}}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)}{u1} - \left(\frac{1}{8} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)}{u1} - \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right)\right)} \]
    7. Applied rewrites87.2%

      \[\leadsto {u1}^{4} \cdot \color{blue}{\mathsf{fma}\left(-1, \frac{-1 \cdot \frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1} - \mathsf{fma}\left(0.125, \frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1}, -0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right)\right)\right)} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification97.5%

    \[\leadsto \begin{array}{l} \mathbf{if}\;u2 \leq 0.10999999940395355:\\ \;\;\;\;\mathsf{fma}\left(6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, \left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(\left(u2 \cdot u2\right) \cdot \left(-1789.8033942389236 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5} - \mathsf{fma}\left(-6.579736267393772, \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right), \mathsf{fma}\left(-1.0471975511966667, {\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right), 0.15915494309188485 \cdot \left({\left(\frac{1 - u1}{u1}\right)}^{0.5} \cdot \left(-6747.399833653739 \cdot \frac{u1}{1 - u1} - -481.95713097526703 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right)\right) - \mathsf{fma}\left(-272.01749758700635, {\left(\frac{u1}{1 - u1}\right)}^{0.5}, 0.15915494309188485 \cdot \left({\left(\frac{1}{u1} - 1\right)}^{0.5} \cdot \left(1709.1363441345495 \cdot \frac{u1}{1 - u1} - 512.7409032403648 \cdot \frac{u1}{1 - u1}\right)\right)\right)\right) - 41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right) \cdot u2\\ \mathbf{else}:\\ \;\;\;\;{u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1} + \mathsf{fma}\left(0.125, \frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{-1 \cdot u1}, -0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right)\right)\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 6: 97.7% accurate, N/A× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \left(6.28318530718 \cdot u2\right)\\ t_1 := t\_0 \cdot -1\\ t_2 := \frac{1}{\sqrt{u1}}\\ t_3 := 0.5 \cdot \left(t\_2 \cdot t\_0\right)\\ t_4 := -1 \cdot \left(u2 \cdot u2\right)\\ t_5 := \sqrt{\frac{u1 \cdot \left(1 - -1 \cdot u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}}\\ t_6 := t\_2 \cdot t\_1\\ \mathbf{if}\;u2 \leq 0.10999999940395355:\\ \;\;\;\;u2 \cdot \left(6.28318530718 \cdot t\_5 - t\_4 \cdot \left(-41.341702240407926 \cdot t\_5 - t\_4 \cdot \left(-76.70585975309672 \cdot \left(t\_5 \cdot \left(u2 \cdot u2\right)\right) + \left(-1 \cdot -81.6052492761019\right) \cdot t\_5\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;{u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot t\_1, t\_3\right)}{u1} + \mathsf{fma}\left(0.125, t\_6, t\_3\right)}{-1 \cdot u1}, -0.5 \cdot t\_6\right)\\ \end{array} \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (let* ((t_0 (sin (* 6.28318530718 u2)))
        (t_1 (* t_0 -1.0))
        (t_2 (/ 1.0 (sqrt u1)))
        (t_3 (* 0.5 (* t_2 t_0)))
        (t_4 (* -1.0 (* u2 u2)))
        (t_5
         (sqrt
          (/
           (* u1 (- 1.0 (* -1.0 u1)))
           (/ (- 1.0 (pow u1 4.0)) (+ 1.0 (* u1 u1))))))
        (t_6 (* t_2 t_1)))
   (if (<= u2 0.10999999940395355)
     (*
      u2
      (-
       (* 6.28318530718 t_5)
       (*
        t_4
        (-
         (* -41.341702240407926 t_5)
         (*
          t_4
          (+
           (* -76.70585975309672 (* t_5 (* u2 u2)))
           (* (* -1.0 -81.6052492761019) t_5)))))))
     (*
      (pow u1 4.0)
      (fma
       -1.0
       (/
        (+
         (/ (fma -1.0 (* (/ 1.0 (pow (pow u1 3.0) 0.5)) t_1) t_3) u1)
         (fma 0.125 t_6 t_3))
        (* -1.0 u1))
       (* -0.5 t_6))))))
float code(float cosTheta_i, float u1, float u2) {
	float t_0 = sinf((6.28318530718f * u2));
	float t_1 = t_0 * -1.0f;
	float t_2 = 1.0f / sqrtf(u1);
	float t_3 = 0.5f * (t_2 * t_0);
	float t_4 = -1.0f * (u2 * u2);
	float t_5 = sqrtf(((u1 * (1.0f - (-1.0f * u1))) / ((1.0f - powf(u1, 4.0f)) / (1.0f + (u1 * u1)))));
	float t_6 = t_2 * t_1;
	float tmp;
	if (u2 <= 0.10999999940395355f) {
		tmp = u2 * ((6.28318530718f * t_5) - (t_4 * ((-41.341702240407926f * t_5) - (t_4 * ((-76.70585975309672f * (t_5 * (u2 * u2))) + ((-1.0f * -81.6052492761019f) * t_5))))));
	} else {
		tmp = powf(u1, 4.0f) * fmaf(-1.0f, (((fmaf(-1.0f, ((1.0f / powf(powf(u1, 3.0f), 0.5f)) * t_1), t_3) / u1) + fmaf(0.125f, t_6, t_3)) / (-1.0f * u1)), (-0.5f * t_6));
	}
	return tmp;
}
function code(cosTheta_i, u1, u2)
	t_0 = sin(Float32(Float32(6.28318530718) * u2))
	t_1 = Float32(t_0 * Float32(-1.0))
	t_2 = Float32(Float32(1.0) / sqrt(u1))
	t_3 = Float32(Float32(0.5) * Float32(t_2 * t_0))
	t_4 = Float32(Float32(-1.0) * Float32(u2 * u2))
	t_5 = sqrt(Float32(Float32(u1 * Float32(Float32(1.0) - Float32(Float32(-1.0) * u1))) / Float32(Float32(Float32(1.0) - (u1 ^ Float32(4.0))) / Float32(Float32(1.0) + Float32(u1 * u1)))))
	t_6 = Float32(t_2 * t_1)
	tmp = Float32(0.0)
	if (u2 <= Float32(0.10999999940395355))
		tmp = Float32(u2 * Float32(Float32(Float32(6.28318530718) * t_5) - Float32(t_4 * Float32(Float32(Float32(-41.341702240407926) * t_5) - Float32(t_4 * Float32(Float32(Float32(-76.70585975309672) * Float32(t_5 * Float32(u2 * u2))) + Float32(Float32(Float32(-1.0) * Float32(-81.6052492761019)) * t_5)))))));
	else
		tmp = Float32((u1 ^ Float32(4.0)) * fma(Float32(-1.0), Float32(Float32(Float32(fma(Float32(-1.0), Float32(Float32(Float32(1.0) / ((u1 ^ Float32(3.0)) ^ Float32(0.5))) * t_1), t_3) / u1) + fma(Float32(0.125), t_6, t_3)) / Float32(Float32(-1.0) * u1)), Float32(Float32(-0.5) * t_6)));
	end
	return tmp
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \sin \left(6.28318530718 \cdot u2\right)\\
t_1 := t\_0 \cdot -1\\
t_2 := \frac{1}{\sqrt{u1}}\\
t_3 := 0.5 \cdot \left(t\_2 \cdot t\_0\right)\\
t_4 := -1 \cdot \left(u2 \cdot u2\right)\\
t_5 := \sqrt{\frac{u1 \cdot \left(1 - -1 \cdot u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}}\\
t_6 := t\_2 \cdot t\_1\\
\mathbf{if}\;u2 \leq 0.10999999940395355:\\
\;\;\;\;u2 \cdot \left(6.28318530718 \cdot t\_5 - t\_4 \cdot \left(-41.341702240407926 \cdot t\_5 - t\_4 \cdot \left(-76.70585975309672 \cdot \left(t\_5 \cdot \left(u2 \cdot u2\right)\right) + \left(-1 \cdot -81.6052492761019\right) \cdot t\_5\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;{u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot t\_1, t\_3\right)}{u1} + \mathsf{fma}\left(0.125, t\_6, t\_3\right)}{-1 \cdot u1}, -0.5 \cdot t\_6\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if u2 < 0.109999999

    1. Initial program 98.6%

      \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift--.f32N/A

        \[\leadsto \sqrt{\frac{u1}{\color{blue}{1 - u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      2. flip--N/A

        \[\leadsto \sqrt{\frac{u1}{\color{blue}{\frac{1 \cdot 1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      3. lower-/.f32N/A

        \[\leadsto \sqrt{\frac{u1}{\color{blue}{\frac{1 \cdot 1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      4. metadata-evalN/A

        \[\leadsto \sqrt{\frac{u1}{\frac{\color{blue}{1} - u1 \cdot u1}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      5. unpow2N/A

        \[\leadsto \sqrt{\frac{u1}{\frac{1 - \color{blue}{{u1}^{2}}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      6. lower--.f32N/A

        \[\leadsto \sqrt{\frac{u1}{\frac{\color{blue}{1 - {u1}^{2}}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      7. unpow2N/A

        \[\leadsto \sqrt{\frac{u1}{\frac{1 - \color{blue}{u1 \cdot u1}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      8. lower-*.f32N/A

        \[\leadsto \sqrt{\frac{u1}{\frac{1 - \color{blue}{u1 \cdot u1}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      9. lower-+.f3298.5

        \[\leadsto \sqrt{\frac{u1}{\frac{1 - u1 \cdot u1}{\color{blue}{1 + u1}}}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    4. Applied rewrites98.5%

      \[\leadsto \sqrt{\frac{u1}{\color{blue}{\frac{1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    5. Taylor expanded in u2 around 0

      \[\leadsto \color{blue}{u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1 \cdot \left(1 + u1\right)}{1 - {u1}^{2}}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1 \cdot \left(1 + u1\right)}{1 - {u1}^{2}}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1 \cdot \left(1 + u1\right)}{1 - {u1}^{2}}} \cdot {u2}^{2}\right) + \frac{3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1 \cdot \left(1 + u1\right)}{1 - {u1}^{2}}}\right)\right)\right)} \]
    6. Applied rewrites98.4%

      \[\leadsto \color{blue}{u2 \cdot \left(6.28318530718 \cdot \sqrt{\frac{u1 \cdot \left(1 + u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}} - \left(-u2 \cdot u2\right) \cdot \left(-41.341702240407926 \cdot \sqrt{\frac{u1 \cdot \left(1 + u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}} - \left(-u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot \left(\sqrt{\frac{u1 \cdot \left(1 + u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}} \cdot \left(u2 \cdot u2\right)\right) - -81.6052492761019 \cdot \sqrt{\frac{u1 \cdot \left(1 + u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}}\right)\right)\right)} \]

    if 0.109999999 < u2

    1. Initial program 96.5%

      \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
    2. Add Preprocessing
    3. Taylor expanded in u1 around 0

      \[\leadsto \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) + {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right)} \]
    4. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) + \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)} \]
      2. *-commutativeN/A

        \[\leadsto \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) \cdot {u1}^{2} + \color{blue}{\sqrt{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
      3. lower-fma.f32N/A

        \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right), \color{blue}{{u1}^{2}}, \sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) \]
    5. Applied rewrites87.6%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \left(-1 \cdot u1\right) \cdot \mathsf{fma}\left(\frac{1}{\sqrt{u1}} \cdot 0.5, \sin \left(u2 \cdot 6.28318530718\right), \left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right), u1 \cdot u1, \sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)} \]
    6. Taylor expanded in u1 around -inf

      \[\leadsto {u1}^{4} \cdot \color{blue}{\left(-1 \cdot \frac{-1 \cdot \frac{-1 \cdot \left(\sqrt{\frac{1}{{u1}^{3}}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)}{u1} - \left(\frac{1}{8} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)}{u1} - \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right)\right)} \]
    7. Applied rewrites87.2%

      \[\leadsto {u1}^{4} \cdot \color{blue}{\mathsf{fma}\left(-1, \frac{-1 \cdot \frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1} - \mathsf{fma}\left(0.125, \frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1}, -0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right)\right)\right)} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification97.3%

    \[\leadsto \begin{array}{l} \mathbf{if}\;u2 \leq 0.10999999940395355:\\ \;\;\;\;u2 \cdot \left(6.28318530718 \cdot \sqrt{\frac{u1 \cdot \left(1 - -1 \cdot u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}} - \left(-1 \cdot \left(u2 \cdot u2\right)\right) \cdot \left(-41.341702240407926 \cdot \sqrt{\frac{u1 \cdot \left(1 - -1 \cdot u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}} - \left(-1 \cdot \left(u2 \cdot u2\right)\right) \cdot \left(-76.70585975309672 \cdot \left(\sqrt{\frac{u1 \cdot \left(1 - -1 \cdot u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}} \cdot \left(u2 \cdot u2\right)\right) + \left(-1 \cdot -81.6052492761019\right) \cdot \sqrt{\frac{u1 \cdot \left(1 - -1 \cdot u1\right)}{\frac{1 - {u1}^{4}}{1 + u1 \cdot u1}}}\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;{u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1} + \mathsf{fma}\left(0.125, \frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{-1 \cdot u1}, -0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right)\right)\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 7: 96.3% accurate, N/A× speedup?

\[\begin{array}{l} \\ e^{\log \left(\frac{u1}{1 - u1}\right) \cdot 0.5} \cdot \sin \left(6.28318530718 \cdot u2\right) \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (* (exp (* (log (/ u1 (- 1.0 u1))) 0.5)) (sin (* 6.28318530718 u2))))
float code(float cosTheta_i, float u1, float u2) {
	return expf((logf((u1 / (1.0f - u1))) * 0.5f)) * sinf((6.28318530718f * u2));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(4) function code(costheta_i, u1, u2)
use fmin_fmax_functions
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: u1
    real(4), intent (in) :: u2
    code = exp((log((u1 / (1.0e0 - u1))) * 0.5e0)) * sin((6.28318530718e0 * u2))
end function
function code(cosTheta_i, u1, u2)
	return Float32(exp(Float32(log(Float32(u1 / Float32(Float32(1.0) - u1))) * Float32(0.5))) * sin(Float32(Float32(6.28318530718) * u2)))
end
function tmp = code(cosTheta_i, u1, u2)
	tmp = exp((log((u1 / (single(1.0) - u1))) * single(0.5))) * sin((single(6.28318530718) * u2));
end
\begin{array}{l}

\\
e^{\log \left(\frac{u1}{1 - u1}\right) \cdot 0.5} \cdot \sin \left(6.28318530718 \cdot u2\right)
\end{array}
Derivation
  1. Initial program 98.4%

    \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. lift--.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\color{blue}{1 - u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    2. flip--N/A

      \[\leadsto \sqrt{\frac{u1}{\color{blue}{\frac{1 \cdot 1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    3. lower-/.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\color{blue}{\frac{1 \cdot 1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    4. metadata-evalN/A

      \[\leadsto \sqrt{\frac{u1}{\frac{\color{blue}{1} - u1 \cdot u1}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    5. unpow2N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{1 - \color{blue}{{u1}^{2}}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    6. lower--.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{\color{blue}{1 - {u1}^{2}}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    7. unpow2N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{1 - \color{blue}{u1 \cdot u1}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    8. lower-*.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{1 - \color{blue}{u1 \cdot u1}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    9. lower-+.f3298.3

      \[\leadsto \sqrt{\frac{u1}{\frac{1 - u1 \cdot u1}{\color{blue}{1 + u1}}}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  4. Applied rewrites98.3%

    \[\leadsto \sqrt{\frac{u1}{\color{blue}{\frac{1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  5. Step-by-step derivation
    1. lift-sqrt.f32N/A

      \[\leadsto \color{blue}{\sqrt{\frac{u1}{\frac{1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    2. lift-/.f32N/A

      \[\leadsto \sqrt{\color{blue}{\frac{u1}{\frac{1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    3. lift-+.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{1 - u1 \cdot u1}{\color{blue}{1 + u1}}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    4. lift-/.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\color{blue}{\frac{1 - u1 \cdot u1}{1 + u1}}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    5. lift--.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{\color{blue}{1 - u1 \cdot u1}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    6. lift-*.f32N/A

      \[\leadsto \sqrt{\frac{u1}{\frac{1 - \color{blue}{u1 \cdot u1}}{1 + u1}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    7. pow1/2N/A

      \[\leadsto \color{blue}{{\left(\frac{u1}{\frac{1 - u1 \cdot u1}{1 + u1}}\right)}^{\frac{1}{2}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    8. pow2N/A

      \[\leadsto {\left(\frac{u1}{\frac{1 - \color{blue}{{u1}^{2}}}{1 + u1}}\right)}^{\frac{1}{2}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    9. metadata-evalN/A

      \[\leadsto {\left(\frac{u1}{\frac{\color{blue}{1 \cdot 1} - {u1}^{2}}{1 + u1}}\right)}^{\frac{1}{2}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    10. pow2N/A

      \[\leadsto {\left(\frac{u1}{\frac{1 \cdot 1 - \color{blue}{u1 \cdot u1}}{1 + u1}}\right)}^{\frac{1}{2}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    11. flip--N/A

      \[\leadsto {\left(\frac{u1}{\color{blue}{1 - u1}}\right)}^{\frac{1}{2}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    12. pow-to-expN/A

      \[\leadsto \color{blue}{e^{\log \left(\frac{u1}{1 - u1}\right) \cdot \frac{1}{2}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    13. lower-exp.f32N/A

      \[\leadsto \color{blue}{e^{\log \left(\frac{u1}{1 - u1}\right) \cdot \frac{1}{2}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    14. lower-*.f32N/A

      \[\leadsto e^{\color{blue}{\log \left(\frac{u1}{1 - u1}\right) \cdot \frac{1}{2}}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    15. lower-log.f32N/A

      \[\leadsto e^{\color{blue}{\log \left(\frac{u1}{1 - u1}\right)} \cdot \frac{1}{2}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    16. lift-/.f32N/A

      \[\leadsto e^{\log \color{blue}{\left(\frac{u1}{1 - u1}\right)} \cdot \frac{1}{2}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    17. lift--.f3296.2

      \[\leadsto e^{\log \left(\frac{u1}{\color{blue}{1 - u1}}\right) \cdot 0.5} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  6. Applied rewrites96.2%

    \[\leadsto \color{blue}{e^{\log \left(\frac{u1}{1 - u1}\right) \cdot 0.5}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  7. Add Preprocessing

Alternative 8: 91.3% accurate, N/A× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin \left(6.28318530718 \cdot u2\right)\\ t_1 := t\_0 \cdot -1\\ t_2 := \frac{1}{\sqrt{u1}}\\ t_3 := 0.5 \cdot \left(t\_2 \cdot t\_0\right)\\ t_4 := t\_2 \cdot t\_1\\ {u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot t\_1, t\_3\right)}{u1} + \mathsf{fma}\left(0.125, t\_4, t\_3\right)}{-1 \cdot u1}, -0.5 \cdot t\_4\right) \end{array} \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (let* ((t_0 (sin (* 6.28318530718 u2)))
        (t_1 (* t_0 -1.0))
        (t_2 (/ 1.0 (sqrt u1)))
        (t_3 (* 0.5 (* t_2 t_0)))
        (t_4 (* t_2 t_1)))
   (*
    (pow u1 4.0)
    (fma
     -1.0
     (/
      (+
       (/ (fma -1.0 (* (/ 1.0 (pow (pow u1 3.0) 0.5)) t_1) t_3) u1)
       (fma 0.125 t_4 t_3))
      (* -1.0 u1))
     (* -0.5 t_4)))))
float code(float cosTheta_i, float u1, float u2) {
	float t_0 = sinf((6.28318530718f * u2));
	float t_1 = t_0 * -1.0f;
	float t_2 = 1.0f / sqrtf(u1);
	float t_3 = 0.5f * (t_2 * t_0);
	float t_4 = t_2 * t_1;
	return powf(u1, 4.0f) * fmaf(-1.0f, (((fmaf(-1.0f, ((1.0f / powf(powf(u1, 3.0f), 0.5f)) * t_1), t_3) / u1) + fmaf(0.125f, t_4, t_3)) / (-1.0f * u1)), (-0.5f * t_4));
}
function code(cosTheta_i, u1, u2)
	t_0 = sin(Float32(Float32(6.28318530718) * u2))
	t_1 = Float32(t_0 * Float32(-1.0))
	t_2 = Float32(Float32(1.0) / sqrt(u1))
	t_3 = Float32(Float32(0.5) * Float32(t_2 * t_0))
	t_4 = Float32(t_2 * t_1)
	return Float32((u1 ^ Float32(4.0)) * fma(Float32(-1.0), Float32(Float32(Float32(fma(Float32(-1.0), Float32(Float32(Float32(1.0) / ((u1 ^ Float32(3.0)) ^ Float32(0.5))) * t_1), t_3) / u1) + fma(Float32(0.125), t_4, t_3)) / Float32(Float32(-1.0) * u1)), Float32(Float32(-0.5) * t_4)))
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \sin \left(6.28318530718 \cdot u2\right)\\
t_1 := t\_0 \cdot -1\\
t_2 := \frac{1}{\sqrt{u1}}\\
t_3 := 0.5 \cdot \left(t\_2 \cdot t\_0\right)\\
t_4 := t\_2 \cdot t\_1\\
{u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot t\_1, t\_3\right)}{u1} + \mathsf{fma}\left(0.125, t\_4, t\_3\right)}{-1 \cdot u1}, -0.5 \cdot t\_4\right)
\end{array}
\end{array}
Derivation
  1. Initial program 98.4%

    \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  2. Add Preprocessing
  3. Taylor expanded in u1 around 0

    \[\leadsto \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) + {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right)} \]
  4. Step-by-step derivation
    1. +-commutativeN/A

      \[\leadsto {u1}^{2} \cdot \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) + \color{blue}{\sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)} \]
    2. *-commutativeN/A

      \[\leadsto \left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)\right) \cdot {u1}^{2} + \color{blue}{\sqrt{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \]
    3. lower-fma.f32N/A

      \[\leadsto \mathsf{fma}\left(\frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) + u1 \cdot \left(\frac{1}{2} \cdot \left(\sqrt{u1} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right), \color{blue}{{u1}^{2}}, \sqrt{u1} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right) \]
  5. Applied rewrites92.4%

    \[\leadsto \color{blue}{\mathsf{fma}\left(\left(\frac{1}{\sqrt{u1}} \cdot 0.5\right) \cdot \sin \left(u2 \cdot 6.28318530718\right) - \left(-1 \cdot u1\right) \cdot \mathsf{fma}\left(\frac{1}{\sqrt{u1}} \cdot 0.5, \sin \left(u2 \cdot 6.28318530718\right), \left(0.5 \cdot \sqrt{u1}\right) \cdot \left(\left(1 - 0.25 \cdot \frac{1}{u1}\right) \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)\right), u1 \cdot u1, \sqrt{u1} \cdot \sin \left(u2 \cdot 6.28318530718\right)\right)} \]
  6. Taylor expanded in u1 around -inf

    \[\leadsto {u1}^{4} \cdot \color{blue}{\left(-1 \cdot \frac{-1 \cdot \frac{-1 \cdot \left(\sqrt{\frac{1}{{u1}^{3}}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)}{u1} - \left(\frac{1}{8} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right) + \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \sin \left(\frac{314159265359}{50000000000} \cdot u2\right)\right)\right)}{u1} - \frac{1}{2} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(\sin \left(\frac{314159265359}{50000000000} \cdot u2\right) \cdot {\left(\sqrt{-1}\right)}^{2}\right)\right)\right)} \]
  7. Applied rewrites91.9%

    \[\leadsto {u1}^{4} \cdot \color{blue}{\mathsf{fma}\left(-1, \frac{-1 \cdot \frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1} - \mathsf{fma}\left(0.125, \frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1}, -0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right)\right)\right)} \]
  8. Final simplification91.9%

    \[\leadsto {u1}^{4} \cdot \mathsf{fma}\left(-1, \frac{\frac{\mathsf{fma}\left(-1, \frac{1}{{\left({u1}^{3}\right)}^{0.5}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{u1} + \mathsf{fma}\left(0.125, \frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right), 0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)\right)\right)}{-1 \cdot u1}, -0.5 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\sin \left(6.28318530718 \cdot u2\right) \cdot -1\right)\right)\right) \]
  9. Add Preprocessing

Alternative 9: 87.8% accurate, N/A× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := 1 - 0.25 \cdot \frac{1}{u1}\\ t_1 := -1 \cdot \left(u2 \cdot u2\right)\\ t_2 := \frac{1}{\sqrt{u1}}\\ t_3 := u2 \cdot \mathsf{fma}\left(3.14159265359, t\_2, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, t\_2, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\left(-1 \cdot t\_2\right) \cdot t\_1\right) - -40.80262463805095 \cdot t\_2\right)\right)\right)\\ t_4 := t\_2 \cdot t\_0\\ \mathsf{fma}\left(u2, \mathsf{fma}\left(6.28318530718, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot \left(\left(-1 \cdot \sqrt{u1}\right) \cdot t\_1\right) - -81.6052492761019 \cdot \sqrt{u1}\right)\right)\right), \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, t\_4, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, t\_4, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(t\_2 \cdot \left(t\_1 \cdot \left(-1 \cdot t\_0\right)\right)\right) + \left(-1 \cdot -40.80262463805095\right) \cdot t\_4\right)\right)\right), t\_3\right), t\_3\right)\right) \end{array} \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (let* ((t_0 (- 1.0 (* 0.25 (/ 1.0 u1))))
        (t_1 (* -1.0 (* u2 u2)))
        (t_2 (/ 1.0 (sqrt u1)))
        (t_3
         (*
          u2
          (fma
           3.14159265359
           t_2
           (*
            (* u2 u2)
            (fma
             -20.670851120203963
             t_2
             (*
              (* u2 u2)
              (-
               (* -38.35292987654836 (* (* -1.0 t_2) t_1))
               (* -40.80262463805095 t_2))))))))
        (t_4 (* t_2 t_0)))
   (fma
    u2
    (fma
     6.28318530718
     (sqrt u1)
     (*
      (* u2 u2)
      (fma
       -41.341702240407926
       (sqrt u1)
       (*
        (* u2 u2)
        (-
         (* -76.70585975309672 (* (* -1.0 (sqrt u1)) t_1))
         (* -81.6052492761019 (sqrt u1)))))))
    (*
     (* u1 u1)
     (fma
      u1
      (fma
       u1
       (*
        u2
        (fma
         3.14159265359
         t_4
         (*
          (* u2 u2)
          (fma
           -20.670851120203963
           t_4
           (*
            (* u2 u2)
            (+
             (* -38.35292987654836 (* t_2 (* t_1 (* -1.0 t_0))))
             (* (* -1.0 -40.80262463805095) t_4)))))))
       t_3)
      t_3)))))
float code(float cosTheta_i, float u1, float u2) {
	float t_0 = 1.0f - (0.25f * (1.0f / u1));
	float t_1 = -1.0f * (u2 * u2);
	float t_2 = 1.0f / sqrtf(u1);
	float t_3 = u2 * fmaf(3.14159265359f, t_2, ((u2 * u2) * fmaf(-20.670851120203963f, t_2, ((u2 * u2) * ((-38.35292987654836f * ((-1.0f * t_2) * t_1)) - (-40.80262463805095f * t_2))))));
	float t_4 = t_2 * t_0;
	return fmaf(u2, fmaf(6.28318530718f, sqrtf(u1), ((u2 * u2) * fmaf(-41.341702240407926f, sqrtf(u1), ((u2 * u2) * ((-76.70585975309672f * ((-1.0f * sqrtf(u1)) * t_1)) - (-81.6052492761019f * sqrtf(u1))))))), ((u1 * u1) * fmaf(u1, fmaf(u1, (u2 * fmaf(3.14159265359f, t_4, ((u2 * u2) * fmaf(-20.670851120203963f, t_4, ((u2 * u2) * ((-38.35292987654836f * (t_2 * (t_1 * (-1.0f * t_0)))) + ((-1.0f * -40.80262463805095f) * t_4))))))), t_3), t_3)));
}
function code(cosTheta_i, u1, u2)
	t_0 = Float32(Float32(1.0) - Float32(Float32(0.25) * Float32(Float32(1.0) / u1)))
	t_1 = Float32(Float32(-1.0) * Float32(u2 * u2))
	t_2 = Float32(Float32(1.0) / sqrt(u1))
	t_3 = Float32(u2 * fma(Float32(3.14159265359), t_2, Float32(Float32(u2 * u2) * fma(Float32(-20.670851120203963), t_2, Float32(Float32(u2 * u2) * Float32(Float32(Float32(-38.35292987654836) * Float32(Float32(Float32(-1.0) * t_2) * t_1)) - Float32(Float32(-40.80262463805095) * t_2)))))))
	t_4 = Float32(t_2 * t_0)
	return fma(u2, fma(Float32(6.28318530718), sqrt(u1), Float32(Float32(u2 * u2) * fma(Float32(-41.341702240407926), sqrt(u1), Float32(Float32(u2 * u2) * Float32(Float32(Float32(-76.70585975309672) * Float32(Float32(Float32(-1.0) * sqrt(u1)) * t_1)) - Float32(Float32(-81.6052492761019) * sqrt(u1))))))), Float32(Float32(u1 * u1) * fma(u1, fma(u1, Float32(u2 * fma(Float32(3.14159265359), t_4, Float32(Float32(u2 * u2) * fma(Float32(-20.670851120203963), t_4, Float32(Float32(u2 * u2) * Float32(Float32(Float32(-38.35292987654836) * Float32(t_2 * Float32(t_1 * Float32(Float32(-1.0) * t_0)))) + Float32(Float32(Float32(-1.0) * Float32(-40.80262463805095)) * t_4))))))), t_3), t_3)))
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := 1 - 0.25 \cdot \frac{1}{u1}\\
t_1 := -1 \cdot \left(u2 \cdot u2\right)\\
t_2 := \frac{1}{\sqrt{u1}}\\
t_3 := u2 \cdot \mathsf{fma}\left(3.14159265359, t\_2, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, t\_2, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\left(-1 \cdot t\_2\right) \cdot t\_1\right) - -40.80262463805095 \cdot t\_2\right)\right)\right)\\
t_4 := t\_2 \cdot t\_0\\
\mathsf{fma}\left(u2, \mathsf{fma}\left(6.28318530718, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot \left(\left(-1 \cdot \sqrt{u1}\right) \cdot t\_1\right) - -81.6052492761019 \cdot \sqrt{u1}\right)\right)\right), \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, t\_4, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, t\_4, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(t\_2 \cdot \left(t\_1 \cdot \left(-1 \cdot t\_0\right)\right)\right) + \left(-1 \cdot -40.80262463805095\right) \cdot t\_4\right)\right)\right), t\_3\right), t\_3\right)\right)
\end{array}
\end{array}
Derivation
  1. Initial program 98.4%

    \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  2. Add Preprocessing
  3. Taylor expanded in u2 around 0

    \[\leadsto \color{blue}{u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot {u2}^{2}\right) + \frac{3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)} \]
  4. Applied rewrites94.1%

    \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}, u2 \cdot u2, -41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right), u2 \cdot u2, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot u2} \]
  5. Taylor expanded in u2 around -inf

    \[\leadsto -1 \cdot \color{blue}{\left({u2}^{7} \cdot \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{2}}\right) + \left(\frac{-314159265359}{50000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{6}}\right) + \left(\frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{4}}\right) + \frac{302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)\right)} \]
  6. Applied rewrites55.1%

    \[\leadsto -1 \cdot \color{blue}{\left({u2}^{7} \cdot \mathsf{fma}\left(-81.6052492761019, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{u2 \cdot u2}, \mathsf{fma}\left(-6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{{u2}^{6}}, \mathsf{fma}\left(41.341702240407926, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{{u2}^{4}}, 76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right)\right)\right)} \]
  7. Taylor expanded in u1 around 0

    \[\leadsto u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{u1} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{u1} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{u1} \cdot {u2}^{2}\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{u1}\right)\right)\right) + \color{blue}{{u1}^{2} \cdot \left(u1 \cdot \left(u1 \cdot \left(u2 \cdot \left(\frac{314159265359}{100000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right) + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right) + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left({u2}^{2} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right)\right)\right)\right) + u2 \cdot \left(\frac{314159265359}{100000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot {u2}^{2}\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}}\right)\right)\right)\right) + u2 \cdot \left(\frac{314159265359}{100000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot {u2}^{2}\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}}\right)\right)\right)\right)} \]
  8. Applied rewrites89.1%

    \[\leadsto \mathsf{fma}\left(u2, \color{blue}{\mathsf{fma}\left(6.28318530718, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot \left(\sqrt{u1} \cdot \left(u2 \cdot u2\right)\right) - -81.6052492761019 \cdot \sqrt{u1}\right)\right)\right)}, \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\left(u2 \cdot u2\right) \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right) - -40.80262463805095 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right)\right) \]
  9. Final simplification89.1%

    \[\leadsto \mathsf{fma}\left(u2, \mathsf{fma}\left(6.28318530718, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot \left(\left(-1 \cdot \sqrt{u1}\right) \cdot \left(-1 \cdot \left(u2 \cdot u2\right)\right)\right) - -81.6052492761019 \cdot \sqrt{u1}\right)\right)\right), \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\left(-1 \cdot \left(u2 \cdot u2\right)\right) \cdot \left(-1 \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right)\right) + \left(-1 \cdot -40.80262463805095\right) \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\left(-1 \cdot \frac{1}{\sqrt{u1}}\right) \cdot \left(-1 \cdot \left(u2 \cdot u2\right)\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\left(-1 \cdot \frac{1}{\sqrt{u1}}\right) \cdot \left(-1 \cdot \left(u2 \cdot u2\right)\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right)\right) \]
  10. Add Preprocessing

Alternative 10: 87.6% accurate, N/A× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := 1 - 0.25 \cdot \frac{1}{u1}\\ t_1 := -1 \cdot \left(u2 \cdot u2\right)\\ t_2 := \frac{1}{\sqrt{u1}}\\ t_3 := t\_2 \cdot t\_0\\ t_4 := \left(-1 \cdot t\_2\right) \cdot t\_1\\ t_5 := u2 \cdot \mathsf{fma}\left(3.14159265359, t\_2, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, t\_2, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot t\_4 - -40.80262463805095 \cdot t\_2\right)\right)\right)\\ \mathsf{fma}\left(u2, u1 \cdot \mathsf{fma}\left(6.28318530718, t\_2, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, t\_2, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot t\_4 - -81.6052492761019 \cdot t\_2\right)\right)\right), \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, t\_3, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, t\_3, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(t\_2 \cdot \left(t\_1 \cdot \left(-1 \cdot t\_0\right)\right)\right) + \left(-1 \cdot -40.80262463805095\right) \cdot t\_3\right)\right)\right), t\_5\right), t\_5\right)\right) \end{array} \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (let* ((t_0 (- 1.0 (* 0.25 (/ 1.0 u1))))
        (t_1 (* -1.0 (* u2 u2)))
        (t_2 (/ 1.0 (sqrt u1)))
        (t_3 (* t_2 t_0))
        (t_4 (* (* -1.0 t_2) t_1))
        (t_5
         (*
          u2
          (fma
           3.14159265359
           t_2
           (*
            (* u2 u2)
            (fma
             -20.670851120203963
             t_2
             (*
              (* u2 u2)
              (- (* -38.35292987654836 t_4) (* -40.80262463805095 t_2)))))))))
   (fma
    u2
    (*
     u1
     (fma
      6.28318530718
      t_2
      (*
       (* u2 u2)
       (fma
        -41.341702240407926
        t_2
        (*
         (* u2 u2)
         (- (* -76.70585975309672 t_4) (* -81.6052492761019 t_2)))))))
    (*
     (* u1 u1)
     (fma
      u1
      (fma
       u1
       (*
        u2
        (fma
         3.14159265359
         t_3
         (*
          (* u2 u2)
          (fma
           -20.670851120203963
           t_3
           (*
            (* u2 u2)
            (+
             (* -38.35292987654836 (* t_2 (* t_1 (* -1.0 t_0))))
             (* (* -1.0 -40.80262463805095) t_3)))))))
       t_5)
      t_5)))))
float code(float cosTheta_i, float u1, float u2) {
	float t_0 = 1.0f - (0.25f * (1.0f / u1));
	float t_1 = -1.0f * (u2 * u2);
	float t_2 = 1.0f / sqrtf(u1);
	float t_3 = t_2 * t_0;
	float t_4 = (-1.0f * t_2) * t_1;
	float t_5 = u2 * fmaf(3.14159265359f, t_2, ((u2 * u2) * fmaf(-20.670851120203963f, t_2, ((u2 * u2) * ((-38.35292987654836f * t_4) - (-40.80262463805095f * t_2))))));
	return fmaf(u2, (u1 * fmaf(6.28318530718f, t_2, ((u2 * u2) * fmaf(-41.341702240407926f, t_2, ((u2 * u2) * ((-76.70585975309672f * t_4) - (-81.6052492761019f * t_2))))))), ((u1 * u1) * fmaf(u1, fmaf(u1, (u2 * fmaf(3.14159265359f, t_3, ((u2 * u2) * fmaf(-20.670851120203963f, t_3, ((u2 * u2) * ((-38.35292987654836f * (t_2 * (t_1 * (-1.0f * t_0)))) + ((-1.0f * -40.80262463805095f) * t_3))))))), t_5), t_5)));
}
function code(cosTheta_i, u1, u2)
	t_0 = Float32(Float32(1.0) - Float32(Float32(0.25) * Float32(Float32(1.0) / u1)))
	t_1 = Float32(Float32(-1.0) * Float32(u2 * u2))
	t_2 = Float32(Float32(1.0) / sqrt(u1))
	t_3 = Float32(t_2 * t_0)
	t_4 = Float32(Float32(Float32(-1.0) * t_2) * t_1)
	t_5 = Float32(u2 * fma(Float32(3.14159265359), t_2, Float32(Float32(u2 * u2) * fma(Float32(-20.670851120203963), t_2, Float32(Float32(u2 * u2) * Float32(Float32(Float32(-38.35292987654836) * t_4) - Float32(Float32(-40.80262463805095) * t_2)))))))
	return fma(u2, Float32(u1 * fma(Float32(6.28318530718), t_2, Float32(Float32(u2 * u2) * fma(Float32(-41.341702240407926), t_2, Float32(Float32(u2 * u2) * Float32(Float32(Float32(-76.70585975309672) * t_4) - Float32(Float32(-81.6052492761019) * t_2))))))), Float32(Float32(u1 * u1) * fma(u1, fma(u1, Float32(u2 * fma(Float32(3.14159265359), t_3, Float32(Float32(u2 * u2) * fma(Float32(-20.670851120203963), t_3, Float32(Float32(u2 * u2) * Float32(Float32(Float32(-38.35292987654836) * Float32(t_2 * Float32(t_1 * Float32(Float32(-1.0) * t_0)))) + Float32(Float32(Float32(-1.0) * Float32(-40.80262463805095)) * t_3))))))), t_5), t_5)))
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := 1 - 0.25 \cdot \frac{1}{u1}\\
t_1 := -1 \cdot \left(u2 \cdot u2\right)\\
t_2 := \frac{1}{\sqrt{u1}}\\
t_3 := t\_2 \cdot t\_0\\
t_4 := \left(-1 \cdot t\_2\right) \cdot t\_1\\
t_5 := u2 \cdot \mathsf{fma}\left(3.14159265359, t\_2, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, t\_2, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot t\_4 - -40.80262463805095 \cdot t\_2\right)\right)\right)\\
\mathsf{fma}\left(u2, u1 \cdot \mathsf{fma}\left(6.28318530718, t\_2, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, t\_2, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot t\_4 - -81.6052492761019 \cdot t\_2\right)\right)\right), \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, t\_3, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, t\_3, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(t\_2 \cdot \left(t\_1 \cdot \left(-1 \cdot t\_0\right)\right)\right) + \left(-1 \cdot -40.80262463805095\right) \cdot t\_3\right)\right)\right), t\_5\right), t\_5\right)\right)
\end{array}
\end{array}
Derivation
  1. Initial program 98.4%

    \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  2. Add Preprocessing
  3. Taylor expanded in u2 around 0

    \[\leadsto \color{blue}{u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot {u2}^{2}\right) + \frac{3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)} \]
  4. Applied rewrites94.1%

    \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}, u2 \cdot u2, -41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right), u2 \cdot u2, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot u2} \]
  5. Taylor expanded in u2 around -inf

    \[\leadsto -1 \cdot \color{blue}{\left({u2}^{7} \cdot \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{2}}\right) + \left(\frac{-314159265359}{50000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{6}}\right) + \left(\frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{4}}\right) + \frac{302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)\right)} \]
  6. Applied rewrites55.1%

    \[\leadsto -1 \cdot \color{blue}{\left({u2}^{7} \cdot \mathsf{fma}\left(-81.6052492761019, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{u2 \cdot u2}, \mathsf{fma}\left(-6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{{u2}^{6}}, \mathsf{fma}\left(41.341702240407926, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{{u2}^{4}}, 76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right)\right)\right)} \]
  7. Taylor expanded in u1 around 0

    \[\leadsto u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{u1} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{u1} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{u1} \cdot {u2}^{2}\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{u1}\right)\right)\right) + \color{blue}{{u1}^{2} \cdot \left(u1 \cdot \left(u1 \cdot \left(u2 \cdot \left(\frac{314159265359}{100000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right) + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right) + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left({u2}^{2} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right)\right)\right)\right) + u2 \cdot \left(\frac{314159265359}{100000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot {u2}^{2}\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}}\right)\right)\right)\right) + u2 \cdot \left(\frac{314159265359}{100000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot {u2}^{2}\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}}\right)\right)\right)\right)} \]
  8. Applied rewrites89.1%

    \[\leadsto \mathsf{fma}\left(u2, \color{blue}{\mathsf{fma}\left(6.28318530718, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, \sqrt{u1}, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot \left(\sqrt{u1} \cdot \left(u2 \cdot u2\right)\right) - -81.6052492761019 \cdot \sqrt{u1}\right)\right)\right)}, \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\left(u2 \cdot u2\right) \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right) - -40.80262463805095 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right)\right) \]
  9. Taylor expanded in u1 around inf

    \[\leadsto \mathsf{fma}\left(u2, u1 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{1}{u1}} + \color{blue}{{u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{1}{u1}} \cdot {u2}^{2}\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{1}{u1}}\right)\right)}\right), \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(\frac{314159265359}{100000000000}, \frac{1}{\sqrt{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000}, \frac{1}{\sqrt{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\left(u2 \cdot u2\right) \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(1 - \frac{1}{4} \cdot \frac{1}{u1}\right)\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(\frac{314159265359}{100000000000}, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000}, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(\frac{314159265359}{100000000000}, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(\frac{-31006276680305942139213528068663279}{1500000000000000000000000000000000}, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{7875000000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - \frac{-3060196847853821555298148281676017575122444629042460390799}{75000000000000000000000000000000000000000000000000000000} \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right)\right) \]
  10. Applied rewrites88.8%

    \[\leadsto \mathsf{fma}\left(u2, u1 \cdot \mathsf{fma}\left(6.28318530718, \color{blue}{\frac{1}{\sqrt{u1}}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - -81.6052492761019 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right), \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\left(u2 \cdot u2\right) \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right) - -40.80262463805095 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(u2 \cdot u2\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right)\right) \]
  11. Final simplification88.8%

    \[\leadsto \mathsf{fma}\left(u2, u1 \cdot \mathsf{fma}\left(6.28318530718, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-41.341702240407926, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-76.70585975309672 \cdot \left(\left(-1 \cdot \frac{1}{\sqrt{u1}}\right) \cdot \left(-1 \cdot \left(u2 \cdot u2\right)\right)\right) - -81.6052492761019 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right), \left(u1 \cdot u1\right) \cdot \mathsf{fma}\left(u1, \mathsf{fma}\left(u1, u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right), \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(\left(-1 \cdot \left(u2 \cdot u2\right)\right) \cdot \left(-1 \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right)\right) + \left(-1 \cdot -40.80262463805095\right) \cdot \left(\frac{1}{\sqrt{u1}} \cdot \left(1 - 0.25 \cdot \frac{1}{u1}\right)\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\left(-1 \cdot \frac{1}{\sqrt{u1}}\right) \cdot \left(-1 \cdot \left(u2 \cdot u2\right)\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right), u2 \cdot \mathsf{fma}\left(3.14159265359, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \mathsf{fma}\left(-20.670851120203963, \frac{1}{\sqrt{u1}}, \left(u2 \cdot u2\right) \cdot \left(-38.35292987654836 \cdot \left(\left(-1 \cdot \frac{1}{\sqrt{u1}}\right) \cdot \left(-1 \cdot \left(u2 \cdot u2\right)\right)\right) - -40.80262463805095 \cdot \frac{1}{\sqrt{u1}}\right)\right)\right)\right)\right) \]
  12. Add Preprocessing

Alternative 11: 57.8% accurate, N/A× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := {\left(\frac{u1}{1 - u1}\right)}^{0.5}\\ \left(-1 \cdot {u2}^{7}\right) \cdot \mathsf{fma}\left(-81.6052492761019, t\_0 \cdot \frac{-1}{-1 \cdot \left(u2 \cdot u2\right)}, \mathsf{fma}\left(-6.28318530718, t\_0 \cdot \frac{1}{{u2}^{6}}, \mathsf{fma}\left(41.341702240407926, t\_0 \cdot \frac{1}{{u2}^{4}}, 76.70585975309672 \cdot t\_0\right)\right)\right) \end{array} \end{array} \]
(FPCore (cosTheta_i u1 u2)
 :precision binary32
 (let* ((t_0 (pow (/ u1 (- 1.0 u1)) 0.5)))
   (*
    (* -1.0 (pow u2 7.0))
    (fma
     -81.6052492761019
     (* t_0 (/ -1.0 (* -1.0 (* u2 u2))))
     (fma
      -6.28318530718
      (* t_0 (/ 1.0 (pow u2 6.0)))
      (fma
       41.341702240407926
       (* t_0 (/ 1.0 (pow u2 4.0)))
       (* 76.70585975309672 t_0)))))))
float code(float cosTheta_i, float u1, float u2) {
	float t_0 = powf((u1 / (1.0f - u1)), 0.5f);
	return (-1.0f * powf(u2, 7.0f)) * fmaf(-81.6052492761019f, (t_0 * (-1.0f / (-1.0f * (u2 * u2)))), fmaf(-6.28318530718f, (t_0 * (1.0f / powf(u2, 6.0f))), fmaf(41.341702240407926f, (t_0 * (1.0f / powf(u2, 4.0f))), (76.70585975309672f * t_0))));
}
function code(cosTheta_i, u1, u2)
	t_0 = Float32(u1 / Float32(Float32(1.0) - u1)) ^ Float32(0.5)
	return Float32(Float32(Float32(-1.0) * (u2 ^ Float32(7.0))) * fma(Float32(-81.6052492761019), Float32(t_0 * Float32(Float32(-1.0) / Float32(Float32(-1.0) * Float32(u2 * u2)))), fma(Float32(-6.28318530718), Float32(t_0 * Float32(Float32(1.0) / (u2 ^ Float32(6.0)))), fma(Float32(41.341702240407926), Float32(t_0 * Float32(Float32(1.0) / (u2 ^ Float32(4.0)))), Float32(Float32(76.70585975309672) * t_0)))))
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {\left(\frac{u1}{1 - u1}\right)}^{0.5}\\
\left(-1 \cdot {u2}^{7}\right) \cdot \mathsf{fma}\left(-81.6052492761019, t\_0 \cdot \frac{-1}{-1 \cdot \left(u2 \cdot u2\right)}, \mathsf{fma}\left(-6.28318530718, t\_0 \cdot \frac{1}{{u2}^{6}}, \mathsf{fma}\left(41.341702240407926, t\_0 \cdot \frac{1}{{u2}^{4}}, 76.70585975309672 \cdot t\_0\right)\right)\right)
\end{array}
\end{array}
Derivation
  1. Initial program 98.4%

    \[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right) \]
  2. Add Preprocessing
  3. Taylor expanded in u2 around 0

    \[\leadsto \color{blue}{u2 \cdot \left(\frac{314159265359}{50000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}} + {u2}^{2} \cdot \left(\frac{-302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot {u2}^{2}\right) + \frac{3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)} \]
  4. Applied rewrites94.1%

    \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(\left(-76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right) \cdot \left(u2 \cdot u2\right) - -81.6052492761019 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}, u2 \cdot u2, -41.341702240407926 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right), u2 \cdot u2, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot 6.28318530718\right) \cdot u2} \]
  5. Taylor expanded in u2 around -inf

    \[\leadsto -1 \cdot \color{blue}{\left({u2}^{7} \cdot \left(\frac{-3060196847853821555298148281676017575122444629042460390799}{37500000000000000000000000000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{2}}\right) + \left(\frac{-314159265359}{50000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{6}}\right) + \left(\frac{31006276680305942139213528068663279}{750000000000000000000000000000000} \cdot \left(\sqrt{\frac{u1}{1 - u1}} \cdot \frac{1}{{u2}^{4}}\right) + \frac{302029322777818351566783844332719832329455959975176141755859165754785028165295919}{3937500000000000000000000000000000000000000000000000000000000000000000000000000} \cdot \sqrt{\frac{u1}{1 - u1}}\right)\right)\right)\right)} \]
  6. Applied rewrites55.1%

    \[\leadsto -1 \cdot \color{blue}{\left({u2}^{7} \cdot \mathsf{fma}\left(-81.6052492761019, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{u2 \cdot u2}, \mathsf{fma}\left(-6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{{u2}^{6}}, \mathsf{fma}\left(41.341702240407926, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{{u2}^{4}}, 76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right)\right)\right)} \]
  7. Final simplification55.1%

    \[\leadsto \left(-1 \cdot {u2}^{7}\right) \cdot \mathsf{fma}\left(-81.6052492761019, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{-1}{-1 \cdot \left(u2 \cdot u2\right)}, \mathsf{fma}\left(-6.28318530718, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{{u2}^{6}}, \mathsf{fma}\left(41.341702240407926, {\left(\frac{u1}{1 - u1}\right)}^{0.5} \cdot \frac{1}{{u2}^{4}}, 76.70585975309672 \cdot {\left(\frac{u1}{1 - u1}\right)}^{0.5}\right)\right)\right) \]
  8. Add Preprocessing

Reproduce

?
herbie shell --seed 2025064 
(FPCore (cosTheta_i u1 u2)
  :name "Trowbridge-Reitz 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 (/ u1 (- 1.0 u1))) (sin (* 6.28318530718 u2))))