HairBSDF, Mp, upper

Percentage Accurate: 98.6% → 98.8%
Time: 21.5s
Alternatives: 19
Speedup: 1.9×

Specification

?
\[\left(\left(\left(\left(\left(-1 \leq cosTheta\_i \land cosTheta\_i \leq 1\right) \land \left(-1 \leq cosTheta\_O \land cosTheta\_O \leq 1\right)\right) \land \left(-1 \leq sinTheta\_i \land sinTheta\_i \leq 1\right)\right) \land \left(-1 \leq sinTheta\_O \land sinTheta\_O \leq 1\right)\right) \land 0.1 < v\right) \land v \leq 1.5707964\]
\[\begin{array}{l} \\ \frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (/
  (* (exp (- (/ (* sinTheta_i sinTheta_O) v))) (/ (* cosTheta_i cosTheta_O) v))
  (* (* (sinh (/ 1.0 v)) 2.0) v)))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	return (expf(-((sinTheta_i * sinTheta_O) / v)) * ((cosTheta_i * cosTheta_O) / v)) / ((sinhf((1.0f / v)) * 2.0f) * v);
}
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: costheta_o
    real(4), intent (in) :: sintheta_i
    real(4), intent (in) :: sintheta_o
    real(4), intent (in) :: v
    code = (exp(-((sintheta_i * sintheta_o) / v)) * ((costheta_i * costheta_o) / v)) / ((sinh((1.0e0 / v)) * 2.0e0) * v)
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(exp(Float32(-Float32(Float32(sinTheta_i * sinTheta_O) / v))) * Float32(Float32(cosTheta_i * cosTheta_O) / v)) / Float32(Float32(sinh(Float32(Float32(1.0) / v)) * Float32(2.0)) * v))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = (exp(-((sinTheta_i * sinTheta_O) / v)) * ((cosTheta_i * cosTheta_O) / v)) / ((sinh((single(1.0) / v)) * single(2.0)) * v);
end
\begin{array}{l}

\\
\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}
\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 19 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.6% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (/
  (* (exp (- (/ (* sinTheta_i sinTheta_O) v))) (/ (* cosTheta_i cosTheta_O) v))
  (* (* (sinh (/ 1.0 v)) 2.0) v)))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	return (expf(-((sinTheta_i * sinTheta_O) / v)) * ((cosTheta_i * cosTheta_O) / v)) / ((sinhf((1.0f / v)) * 2.0f) * v);
}
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: costheta_o
    real(4), intent (in) :: sintheta_i
    real(4), intent (in) :: sintheta_o
    real(4), intent (in) :: v
    code = (exp(-((sintheta_i * sintheta_o) / v)) * ((costheta_i * costheta_o) / v)) / ((sinh((1.0e0 / v)) * 2.0e0) * v)
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(exp(Float32(-Float32(Float32(sinTheta_i * sinTheta_O) / v))) * Float32(Float32(cosTheta_i * cosTheta_O) / v)) / Float32(Float32(sinh(Float32(Float32(1.0) / v)) * Float32(2.0)) * v))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = (exp(-((sinTheta_i * sinTheta_O) / v)) * ((cosTheta_i * cosTheta_O) / v)) / ((sinh((single(1.0) / v)) * single(2.0)) * v);
end
\begin{array}{l}

\\
\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}
\end{array}

Alternative 1: 98.8% accurate, 1.5× speedup?

\[\begin{array}{l} \\ \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\frac{-1}{v}}{\frac{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + 0.5 \cdot \frac{\frac{sinTheta\_O \cdot sinTheta\_O}{v}}{v}\right)\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (*
  (* cosTheta_i cosTheta_O)
  (/
   (/ -1.0 v)
   (/
    (-
     -1.0
     (*
      sinTheta_i
      (+
       (/ sinTheta_O v)
       (*
        sinTheta_i
        (+
         (/
          (*
           0.16666666666666666
           (* sinTheta_i (* sinTheta_O (* sinTheta_O sinTheta_O))))
          (* v (* v v)))
         (* 0.5 (/ (/ (* sinTheta_O sinTheta_O) v) v)))))))
    (/ (/ 0.5 v) (sinh (/ 1.0 v)))))))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	return (cosTheta_i * cosTheta_O) * ((-1.0f / v) / ((-1.0f - (sinTheta_i * ((sinTheta_O / v) + (sinTheta_i * (((0.16666666666666666f * (sinTheta_i * (sinTheta_O * (sinTheta_O * sinTheta_O)))) / (v * (v * v))) + (0.5f * (((sinTheta_O * sinTheta_O) / v) / v))))))) / ((0.5f / v) / sinhf((1.0f / v)))));
}
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: costheta_o
    real(4), intent (in) :: sintheta_i
    real(4), intent (in) :: sintheta_o
    real(4), intent (in) :: v
    code = (costheta_i * costheta_o) * (((-1.0e0) / v) / (((-1.0e0) - (sintheta_i * ((sintheta_o / v) + (sintheta_i * (((0.16666666666666666e0 * (sintheta_i * (sintheta_o * (sintheta_o * sintheta_o)))) / (v * (v * v))) + (0.5e0 * (((sintheta_o * sintheta_o) / v) / v))))))) / ((0.5e0 / v) / sinh((1.0e0 / v)))))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(cosTheta_i * cosTheta_O) * Float32(Float32(Float32(-1.0) / v) / Float32(Float32(Float32(-1.0) - Float32(sinTheta_i * Float32(Float32(sinTheta_O / v) + Float32(sinTheta_i * Float32(Float32(Float32(Float32(0.16666666666666666) * Float32(sinTheta_i * Float32(sinTheta_O * Float32(sinTheta_O * sinTheta_O)))) / Float32(v * Float32(v * v))) + Float32(Float32(0.5) * Float32(Float32(Float32(sinTheta_O * sinTheta_O) / v) / v))))))) / Float32(Float32(Float32(0.5) / v) / sinh(Float32(Float32(1.0) / v))))))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = (cosTheta_i * cosTheta_O) * ((single(-1.0) / v) / ((single(-1.0) - (sinTheta_i * ((sinTheta_O / v) + (sinTheta_i * (((single(0.16666666666666666) * (sinTheta_i * (sinTheta_O * (sinTheta_O * sinTheta_O)))) / (v * (v * v))) + (single(0.5) * (((sinTheta_O * sinTheta_O) / v) / v))))))) / ((single(0.5) / v) / sinh((single(1.0) / v)))));
end
\begin{array}{l}

\\
\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\frac{-1}{v}}{\frac{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + 0.5 \cdot \frac{\frac{sinTheta\_O \cdot sinTheta\_O}{v}}{v}\right)\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}}
\end{array}
Derivation
  1. Initial program 98.6%

    \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
  2. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
    2. exp-negN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    3. associate-*l/N/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    4. *-lft-identityN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    6. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    7. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    8. exp-lowering-exp.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
    9. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    10. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    11. associate-*l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    13. sinh-lowering-sinh.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
    14. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
    15. *-commutativeN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
    16. *-lowering-*.f3298.6%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
  3. Simplified98.6%

    \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. div-invN/A

      \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
    2. associate-/l*N/A

      \[\leadsto \frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \color{blue}{\frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
    3. remove-double-negN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right)\right)\right)\right) \cdot \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    4. div-invN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{v}\right)\right)\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    5. distribute-rgt-neg-inN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\right) \cdot \frac{\frac{\color{blue}{1}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    6. distribute-lft-neg-inN/A

      \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right) \cdot \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    7. associate-*l*N/A

      \[\leadsto \left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)} \]
    8. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right), \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)}\right) \]
    9. neg-sub0N/A

      \[\leadsto \mathsf{*.f32}\left(\left(0 - cosTheta\_i \cdot cosTheta\_O\right), \left(\color{blue}{\left(\mathsf{neg}\left(\frac{1}{v}\right)\right)} \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    10. --lowering--.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \left(cosTheta\_i \cdot cosTheta\_O\right)\right), \left(\color{blue}{\left(\mathsf{neg}\left(\frac{1}{v}\right)\right)} \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    11. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right), \color{blue}{\left(\frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)}\right)\right) \]
  6. Applied egg-rr98.9%

    \[\leadsto \color{blue}{\left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}\right)} \]
  7. Taylor expanded in sinTheta_i around 0

    \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \color{blue}{\left(1 + sinTheta\_i \cdot \left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)\right)}\right)\right)\right) \]
  8. Step-by-step derivation
    1. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \color{blue}{\left(sinTheta\_i \cdot \left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)\right)}\right)\right)\right)\right) \]
    2. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \color{blue}{\left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)}\right)\right)\right)\right)\right) \]
    3. +-commutativeN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \left(\frac{sinTheta\_O}{v} + \color{blue}{sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right) \]
    4. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\left(\frac{sinTheta\_O}{v}\right), \color{blue}{\left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)\right)}\right)\right)\right)\right)\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \left(\color{blue}{sinTheta\_i} \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)\right)\right)\right)\right)\right)\right)\right) \]
    6. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \color{blue}{\left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right)\right) \]
    7. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}}\right), \color{blue}{\left(\frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right)\right)\right) \]
  9. Simplified98.9%

    \[\leadsto \left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{\color{blue}{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{0.5 \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}}\right) \]
  10. Step-by-step derivation
    1. clear-numN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\frac{-1}{v} \cdot \frac{1}{\color{blue}{\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}{\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}}}}\right)\right) \]
    2. un-div-invN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\frac{\frac{-1}{v}}{\color{blue}{\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}{\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}}}}\right)\right) \]
    3. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\left(\frac{-1}{v}\right), \color{blue}{\left(\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}{\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)}\right)\right) \]
    4. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \left(\frac{\color{blue}{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}}{\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\left(1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)\right), \color{blue}{\left(\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}\right)}\right)\right)\right) \]
  11. Applied egg-rr98.9%

    \[\leadsto \left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \color{blue}{\frac{\frac{-1}{v}}{\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + 0.5 \cdot \frac{\frac{sinTheta\_O \cdot sinTheta\_O}{v}}{v}\right)\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}}} \]
  12. Final simplification98.9%

    \[\leadsto \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\frac{-1}{v}}{\frac{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + 0.5 \cdot \frac{\frac{sinTheta\_O \cdot sinTheta\_O}{v}}{v}\right)\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}} \]
  13. Add Preprocessing

Alternative 2: 98.8% accurate, 1.5× speedup?

\[\begin{array}{l} \\ \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\left(sinTheta\_O \cdot sinTheta\_O\right) \cdot 0.5}{v \cdot v}\right)\right)}\right) \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (*
  (* cosTheta_i cosTheta_O)
  (*
   (/ -1.0 v)
   (/
    (/ (/ 0.5 v) (sinh (/ 1.0 v)))
    (-
     -1.0
     (*
      sinTheta_i
      (+
       (/ sinTheta_O v)
       (*
        sinTheta_i
        (+
         (/
          (*
           0.16666666666666666
           (* sinTheta_i (* sinTheta_O (* sinTheta_O sinTheta_O))))
          (* v (* v v)))
         (/ (* (* sinTheta_O sinTheta_O) 0.5) (* v v)))))))))))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	return (cosTheta_i * cosTheta_O) * ((-1.0f / v) * (((0.5f / v) / sinhf((1.0f / v))) / (-1.0f - (sinTheta_i * ((sinTheta_O / v) + (sinTheta_i * (((0.16666666666666666f * (sinTheta_i * (sinTheta_O * (sinTheta_O * sinTheta_O)))) / (v * (v * v))) + (((sinTheta_O * sinTheta_O) * 0.5f) / (v * v)))))))));
}
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: costheta_o
    real(4), intent (in) :: sintheta_i
    real(4), intent (in) :: sintheta_o
    real(4), intent (in) :: v
    code = (costheta_i * costheta_o) * (((-1.0e0) / v) * (((0.5e0 / v) / sinh((1.0e0 / v))) / ((-1.0e0) - (sintheta_i * ((sintheta_o / v) + (sintheta_i * (((0.16666666666666666e0 * (sintheta_i * (sintheta_o * (sintheta_o * sintheta_o)))) / (v * (v * v))) + (((sintheta_o * sintheta_o) * 0.5e0) / (v * v)))))))))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(cosTheta_i * cosTheta_O) * Float32(Float32(Float32(-1.0) / v) * Float32(Float32(Float32(Float32(0.5) / v) / sinh(Float32(Float32(1.0) / v))) / Float32(Float32(-1.0) - Float32(sinTheta_i * Float32(Float32(sinTheta_O / v) + Float32(sinTheta_i * Float32(Float32(Float32(Float32(0.16666666666666666) * Float32(sinTheta_i * Float32(sinTheta_O * Float32(sinTheta_O * sinTheta_O)))) / Float32(v * Float32(v * v))) + Float32(Float32(Float32(sinTheta_O * sinTheta_O) * Float32(0.5)) / Float32(v * v))))))))))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = (cosTheta_i * cosTheta_O) * ((single(-1.0) / v) * (((single(0.5) / v) / sinh((single(1.0) / v))) / (single(-1.0) - (sinTheta_i * ((sinTheta_O / v) + (sinTheta_i * (((single(0.16666666666666666) * (sinTheta_i * (sinTheta_O * (sinTheta_O * sinTheta_O)))) / (v * (v * v))) + (((sinTheta_O * sinTheta_O) * single(0.5)) / (v * v)))))))));
end
\begin{array}{l}

\\
\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\left(sinTheta\_O \cdot sinTheta\_O\right) \cdot 0.5}{v \cdot v}\right)\right)}\right)
\end{array}
Derivation
  1. Initial program 98.6%

    \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
  2. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
    2. exp-negN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    3. associate-*l/N/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    4. *-lft-identityN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    6. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    7. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    8. exp-lowering-exp.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
    9. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    10. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    11. associate-*l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    13. sinh-lowering-sinh.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
    14. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
    15. *-commutativeN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
    16. *-lowering-*.f3298.6%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
  3. Simplified98.6%

    \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. div-invN/A

      \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
    2. associate-/l*N/A

      \[\leadsto \frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \color{blue}{\frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
    3. remove-double-negN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right)\right)\right)\right) \cdot \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    4. div-invN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{v}\right)\right)\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    5. distribute-rgt-neg-inN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\right) \cdot \frac{\frac{\color{blue}{1}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    6. distribute-lft-neg-inN/A

      \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right) \cdot \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    7. associate-*l*N/A

      \[\leadsto \left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)} \]
    8. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right), \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)}\right) \]
    9. neg-sub0N/A

      \[\leadsto \mathsf{*.f32}\left(\left(0 - cosTheta\_i \cdot cosTheta\_O\right), \left(\color{blue}{\left(\mathsf{neg}\left(\frac{1}{v}\right)\right)} \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    10. --lowering--.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \left(cosTheta\_i \cdot cosTheta\_O\right)\right), \left(\color{blue}{\left(\mathsf{neg}\left(\frac{1}{v}\right)\right)} \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    11. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right), \color{blue}{\left(\frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)}\right)\right) \]
  6. Applied egg-rr98.9%

    \[\leadsto \color{blue}{\left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}\right)} \]
  7. Taylor expanded in sinTheta_i around 0

    \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \color{blue}{\left(1 + sinTheta\_i \cdot \left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)\right)}\right)\right)\right) \]
  8. Step-by-step derivation
    1. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \color{blue}{\left(sinTheta\_i \cdot \left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)\right)}\right)\right)\right)\right) \]
    2. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \color{blue}{\left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)}\right)\right)\right)\right)\right) \]
    3. +-commutativeN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \left(\frac{sinTheta\_O}{v} + \color{blue}{sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right) \]
    4. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\left(\frac{sinTheta\_O}{v}\right), \color{blue}{\left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)\right)}\right)\right)\right)\right)\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \left(\color{blue}{sinTheta\_i} \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)\right)\right)\right)\right)\right)\right)\right) \]
    6. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \color{blue}{\left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right)\right) \]
    7. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}}\right), \color{blue}{\left(\frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right)\right)\right) \]
  9. Simplified98.9%

    \[\leadsto \left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{\color{blue}{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{0.5 \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}}\right) \]
  10. Final simplification98.9%

    \[\leadsto \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\left(sinTheta\_O \cdot sinTheta\_O\right) \cdot 0.5}{v \cdot v}\right)\right)}\right) \]
  11. Add Preprocessing

Alternative 3: 98.8% accurate, 1.6× speedup?

\[\begin{array}{l} \\ \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\frac{-1}{v}}{\frac{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \frac{\left(sinTheta\_O \cdot sinTheta\_O\right) \cdot 0.5}{v \cdot v}\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (*
  (* cosTheta_i cosTheta_O)
  (/
   (/ -1.0 v)
   (/
    (-
     -1.0
     (*
      sinTheta_i
      (+
       (/ sinTheta_O v)
       (* sinTheta_i (/ (* (* sinTheta_O sinTheta_O) 0.5) (* v v))))))
    (/ (/ 0.5 v) (sinh (/ 1.0 v)))))))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	return (cosTheta_i * cosTheta_O) * ((-1.0f / v) / ((-1.0f - (sinTheta_i * ((sinTheta_O / v) + (sinTheta_i * (((sinTheta_O * sinTheta_O) * 0.5f) / (v * v)))))) / ((0.5f / v) / sinhf((1.0f / v)))));
}
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: costheta_o
    real(4), intent (in) :: sintheta_i
    real(4), intent (in) :: sintheta_o
    real(4), intent (in) :: v
    code = (costheta_i * costheta_o) * (((-1.0e0) / v) / (((-1.0e0) - (sintheta_i * ((sintheta_o / v) + (sintheta_i * (((sintheta_o * sintheta_o) * 0.5e0) / (v * v)))))) / ((0.5e0 / v) / sinh((1.0e0 / v)))))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(cosTheta_i * cosTheta_O) * Float32(Float32(Float32(-1.0) / v) / Float32(Float32(Float32(-1.0) - Float32(sinTheta_i * Float32(Float32(sinTheta_O / v) + Float32(sinTheta_i * Float32(Float32(Float32(sinTheta_O * sinTheta_O) * Float32(0.5)) / Float32(v * v)))))) / Float32(Float32(Float32(0.5) / v) / sinh(Float32(Float32(1.0) / v))))))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = (cosTheta_i * cosTheta_O) * ((single(-1.0) / v) / ((single(-1.0) - (sinTheta_i * ((sinTheta_O / v) + (sinTheta_i * (((sinTheta_O * sinTheta_O) * single(0.5)) / (v * v)))))) / ((single(0.5) / v) / sinh((single(1.0) / v)))));
end
\begin{array}{l}

\\
\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\frac{-1}{v}}{\frac{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \frac{\left(sinTheta\_O \cdot sinTheta\_O\right) \cdot 0.5}{v \cdot v}\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}}
\end{array}
Derivation
  1. Initial program 98.6%

    \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
  2. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
    2. exp-negN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    3. associate-*l/N/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    4. *-lft-identityN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    6. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    7. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    8. exp-lowering-exp.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
    9. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    10. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    11. associate-*l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    13. sinh-lowering-sinh.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
    14. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
    15. *-commutativeN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
    16. *-lowering-*.f3298.6%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
  3. Simplified98.6%

    \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. div-invN/A

      \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
    2. associate-/l*N/A

      \[\leadsto \frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \color{blue}{\frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
    3. remove-double-negN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right)\right)\right)\right) \cdot \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    4. div-invN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{v}\right)\right)\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    5. distribute-rgt-neg-inN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\right) \cdot \frac{\frac{\color{blue}{1}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    6. distribute-lft-neg-inN/A

      \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right) \cdot \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    7. associate-*l*N/A

      \[\leadsto \left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)} \]
    8. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right), \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)}\right) \]
    9. neg-sub0N/A

      \[\leadsto \mathsf{*.f32}\left(\left(0 - cosTheta\_i \cdot cosTheta\_O\right), \left(\color{blue}{\left(\mathsf{neg}\left(\frac{1}{v}\right)\right)} \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    10. --lowering--.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \left(cosTheta\_i \cdot cosTheta\_O\right)\right), \left(\color{blue}{\left(\mathsf{neg}\left(\frac{1}{v}\right)\right)} \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    11. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right), \color{blue}{\left(\frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)}\right)\right) \]
  6. Applied egg-rr98.9%

    \[\leadsto \color{blue}{\left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}\right)} \]
  7. Taylor expanded in sinTheta_i around 0

    \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \color{blue}{\left(1 + sinTheta\_i \cdot \left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)\right)}\right)\right)\right) \]
  8. Step-by-step derivation
    1. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \color{blue}{\left(sinTheta\_i \cdot \left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)\right)}\right)\right)\right)\right) \]
    2. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \color{blue}{\left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right) + \frac{sinTheta\_O}{v}\right)}\right)\right)\right)\right)\right) \]
    3. +-commutativeN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \left(\frac{sinTheta\_O}{v} + \color{blue}{sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right) \]
    4. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\left(\frac{sinTheta\_O}{v}\right), \color{blue}{\left(sinTheta\_i \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)\right)}\right)\right)\right)\right)\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \left(\color{blue}{sinTheta\_i} \cdot \left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)\right)\right)\right)\right)\right)\right)\right) \]
    6. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \color{blue}{\left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}} + \frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right)\right) \]
    7. +-lowering-+.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\left(\frac{1}{6} \cdot \frac{{sinTheta\_O}^{3} \cdot sinTheta\_i}{{v}^{3}}\right), \color{blue}{\left(\frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right)\right)\right)\right)\right) \]
  9. Simplified98.9%

    \[\leadsto \left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{\color{blue}{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{0.5 \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}}\right) \]
  10. Step-by-step derivation
    1. clear-numN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\frac{-1}{v} \cdot \frac{1}{\color{blue}{\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}{\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}}}}\right)\right) \]
    2. un-div-invN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\frac{\frac{-1}{v}}{\color{blue}{\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}{\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}}}}\right)\right) \]
    3. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\left(\frac{-1}{v}\right), \color{blue}{\left(\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}{\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)}\right)\right) \]
    4. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \left(\frac{\color{blue}{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}}{\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}}\right)\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\left(1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{\frac{1}{6} \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + \frac{\frac{1}{2} \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)\right), \color{blue}{\left(\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}\right)}\right)\right)\right) \]
  11. Applied egg-rr98.9%

    \[\leadsto \left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \color{blue}{\frac{\frac{-1}{v}}{\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(\frac{0.16666666666666666 \cdot \left(sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)\right)}{v \cdot \left(v \cdot v\right)} + 0.5 \cdot \frac{\frac{sinTheta\_O \cdot sinTheta\_O}{v}}{v}\right)\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}}} \]
  12. Taylor expanded in sinTheta_i around 0

    \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \color{blue}{\left(\frac{1}{2} \cdot \frac{{sinTheta\_O}^{2}}{{v}^{2}}\right)}\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right)\right) \]
  13. Step-by-step derivation
    1. associate-*r/N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \left(\frac{\frac{1}{2} \cdot {sinTheta\_O}^{2}}{{v}^{2}}\right)\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right)\right) \]
    2. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(\left(\frac{1}{2} \cdot {sinTheta\_O}^{2}\right), \left({v}^{2}\right)\right)\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right)\right) \]
    3. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(\frac{1}{2}, \left({sinTheta\_O}^{2}\right)\right), \left({v}^{2}\right)\right)\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right)\right) \]
    4. unpow2N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(\frac{1}{2}, \left(sinTheta\_O \cdot sinTheta\_O\right)\right), \left({v}^{2}\right)\right)\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right)\right) \]
    5. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_O\right)\right), \left({v}^{2}\right)\right)\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right)\right) \]
    6. unpow2N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_O\right)\right), \left(v \cdot v\right)\right)\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right)\right) \]
    7. *-lowering-*.f3298.9%

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_O\right)\right), \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right)\right) \]
  14. Simplified98.9%

    \[\leadsto \left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\frac{-1}{v}}{\frac{1 + sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \color{blue}{\frac{0.5 \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}}\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}} \]
  15. Final simplification98.9%

    \[\leadsto \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\frac{-1}{v}}{\frac{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \frac{\left(sinTheta\_O \cdot sinTheta\_O\right) \cdot 0.5}{v \cdot v}\right)}{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}} \]
  16. Add Preprocessing

Alternative 4: 98.7% accurate, 1.6× speedup?

\[\begin{array}{l} \\ \frac{\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{\frac{-0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (*
  (/
   (-
    (/
     (*
      (* cosTheta_i cosTheta_O)
      (+
       (* sinTheta_i sinTheta_O)
       (/ (* sinTheta_O (* sinTheta_i (* sinTheta_i sinTheta_O))) (/ v -0.5))))
     v)
    (* cosTheta_i cosTheta_O))
   v)
  (/ (/ -0.5 v) (sinh (/ 1.0 v)))))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	return (((((cosTheta_i * cosTheta_O) * ((sinTheta_i * sinTheta_O) + ((sinTheta_O * (sinTheta_i * (sinTheta_i * sinTheta_O))) / (v / -0.5f)))) / v) - (cosTheta_i * cosTheta_O)) / v) * ((-0.5f / v) / sinhf((1.0f / v)));
}
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: costheta_o
    real(4), intent (in) :: sintheta_i
    real(4), intent (in) :: sintheta_o
    real(4), intent (in) :: v
    code = (((((costheta_i * costheta_o) * ((sintheta_i * sintheta_o) + ((sintheta_o * (sintheta_i * (sintheta_i * sintheta_o))) / (v / (-0.5e0))))) / v) - (costheta_i * costheta_o)) / v) * (((-0.5e0) / v) / sinh((1.0e0 / v)))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(Float32(Float32(Float32(Float32(cosTheta_i * cosTheta_O) * Float32(Float32(sinTheta_i * sinTheta_O) + Float32(Float32(sinTheta_O * Float32(sinTheta_i * Float32(sinTheta_i * sinTheta_O))) / Float32(v / Float32(-0.5))))) / v) - Float32(cosTheta_i * cosTheta_O)) / v) * Float32(Float32(Float32(-0.5) / v) / sinh(Float32(Float32(1.0) / v))))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = (((((cosTheta_i * cosTheta_O) * ((sinTheta_i * sinTheta_O) + ((sinTheta_O * (sinTheta_i * (sinTheta_i * sinTheta_O))) / (v / single(-0.5))))) / v) - (cosTheta_i * cosTheta_O)) / v) * ((single(-0.5) / v) / sinh((single(1.0) / v)));
end
\begin{array}{l}

\\
\frac{\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{\frac{-0.5}{v}}{\sinh \left(\frac{1}{v}\right)}
\end{array}
Derivation
  1. Initial program 98.6%

    \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
  2. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
    2. exp-negN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    3. associate-*l/N/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    4. *-lft-identityN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    6. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    7. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    8. exp-lowering-exp.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
    9. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    10. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    11. associate-*l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    13. sinh-lowering-sinh.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
    14. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
    15. *-commutativeN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
    16. *-lowering-*.f3298.6%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
  3. Simplified98.6%

    \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
  4. Add Preprocessing
  5. Taylor expanded in v around -inf

    \[\leadsto \mathsf{/.f32}\left(\color{blue}{\left(-1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{v}\right)}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
  6. Step-by-step derivation
    1. mul-1-negN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\mathsf{neg}\left(\frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{v}\right)\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    2. distribute-neg-frac2N/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{\mathsf{neg}\left(v\right)}\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    3. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}\right), \left(\mathsf{neg}\left(v\right)\right)\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
  7. Simplified98.5%

    \[\leadsto \frac{\color{blue}{\frac{\frac{1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right) + \left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot \left(sinTheta\_i \cdot sinTheta\_i\right)\right)\right)\right) \cdot \frac{-0.5}{v}\right)}{v} - cosTheta\_O \cdot cosTheta\_i}{-v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
  8. Applied egg-rr98.7%

    \[\leadsto \color{blue}{\frac{\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{\frac{-0.5}{v}}{\sinh \left(\frac{1}{v}\right)}} \]
  9. Add Preprocessing

Alternative 5: 98.6% accurate, 1.9× speedup?

\[\begin{array}{l} \\ \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{1}{v}\right) \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (* (* cosTheta_i cosTheta_O) (* (/ (/ 0.5 v) (sinh (/ 1.0 v))) (/ 1.0 v))))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	return (cosTheta_i * cosTheta_O) * (((0.5f / v) / sinhf((1.0f / v))) * (1.0f / v));
}
real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
    real(4), intent (in) :: costheta_i
    real(4), intent (in) :: costheta_o
    real(4), intent (in) :: sintheta_i
    real(4), intent (in) :: sintheta_o
    real(4), intent (in) :: v
    code = (costheta_i * costheta_o) * (((0.5e0 / v) / sinh((1.0e0 / v))) * (1.0e0 / v))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(cosTheta_i * cosTheta_O) * Float32(Float32(Float32(Float32(0.5) / v) / sinh(Float32(Float32(1.0) / v))) * Float32(Float32(1.0) / v)))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = (cosTheta_i * cosTheta_O) * (((single(0.5) / v) / sinh((single(1.0) / v))) * (single(1.0) / v));
end
\begin{array}{l}

\\
\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{1}{v}\right)
\end{array}
Derivation
  1. Initial program 98.6%

    \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
  2. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
    2. exp-negN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    3. associate-*l/N/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    4. *-lft-identityN/A

      \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    5. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
    6. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    7. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
    8. exp-lowering-exp.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
    9. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    10. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
    11. associate-*l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
    13. sinh-lowering-sinh.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
    14. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
    15. *-commutativeN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
    16. *-lowering-*.f3298.6%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
  3. Simplified98.6%

    \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. div-invN/A

      \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
    2. associate-/l*N/A

      \[\leadsto \frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \color{blue}{\frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
    3. remove-double-negN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right)\right)\right)\right) \cdot \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    4. div-invN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{v}\right)\right)\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    5. distribute-rgt-neg-inN/A

      \[\leadsto \left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\right) \cdot \frac{\frac{\color{blue}{1}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    6. distribute-lft-neg-inN/A

      \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right) \cdot \frac{\color{blue}{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    7. associate-*l*N/A

      \[\leadsto \left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)} \]
    8. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right), \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)}\right) \]
    9. neg-sub0N/A

      \[\leadsto \mathsf{*.f32}\left(\left(0 - cosTheta\_i \cdot cosTheta\_O\right), \left(\color{blue}{\left(\mathsf{neg}\left(\frac{1}{v}\right)\right)} \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    10. --lowering--.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \left(cosTheta\_i \cdot cosTheta\_O\right)\right), \left(\color{blue}{\left(\mathsf{neg}\left(\frac{1}{v}\right)\right)} \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    11. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right) \cdot \frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)\right) \]
    12. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\left(\mathsf{neg}\left(\frac{1}{v}\right)\right), \color{blue}{\left(\frac{\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}\right)}\right)\right) \]
  6. Applied egg-rr98.9%

    \[\leadsto \color{blue}{\left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}\right)} \]
  7. Taylor expanded in sinTheta_i around 0

    \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(0, \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \color{blue}{1}\right)\right)\right) \]
  8. Step-by-step derivation
    1. Simplified98.7%

      \[\leadsto \left(0 - cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}}{\color{blue}{1}}\right) \]
    2. Final simplification98.7%

      \[\leadsto \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{1}{v}\right) \]
    3. Add Preprocessing

    Alternative 6: 98.5% accurate, 1.9× speedup?

    \[\begin{array}{l} \\ \frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (* (/ (/ 0.5 v) (sinh (/ 1.0 v))) (/ (* cosTheta_i cosTheta_O) v)))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return ((0.5f / v) / sinhf((1.0f / v))) * ((cosTheta_i * cosTheta_O) / v);
    }
    
    real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
        real(4), intent (in) :: costheta_i
        real(4), intent (in) :: costheta_o
        real(4), intent (in) :: sintheta_i
        real(4), intent (in) :: sintheta_o
        real(4), intent (in) :: v
        code = ((0.5e0 / v) / sinh((1.0e0 / v))) * ((costheta_i * costheta_o) / v)
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(Float32(Float32(0.5) / v) / sinh(Float32(Float32(1.0) / v))) * Float32(Float32(cosTheta_i * cosTheta_O) / v))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = ((single(0.5) / v) / sinh((single(1.0) / v))) * ((cosTheta_i * cosTheta_O) / v);
    end
    
    \begin{array}{l}
    
    \\
    \frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}
    \end{array}
    
    Derivation
    1. Initial program 98.6%

      \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
    2. Step-by-step derivation
      1. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
      2. exp-negN/A

        \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
      3. associate-*l/N/A

        \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
      4. *-lft-identityN/A

        \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
      5. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
      6. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
      7. *-lowering-*.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
      8. exp-lowering-exp.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
      9. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
      10. *-lowering-*.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
      11. associate-*l*N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
      12. *-lowering-*.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
      13. sinh-lowering-sinh.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
      14. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
      15. *-commutativeN/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
      16. *-lowering-*.f3298.6%

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
    3. Simplified98.6%

      \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
    4. Add Preprocessing
    5. Step-by-step derivation
      1. associate-/l/N/A

        \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
      2. *-commutativeN/A

        \[\leadsto \frac{\frac{cosTheta\_O \cdot cosTheta\_i}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
      3. times-fracN/A

        \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
      4. *-commutativeN/A

        \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\sinh \left(\frac{1}{v}\right) \cdot \left(2 \cdot \color{blue}{v}\right)} \]
      5. associate-*r*N/A

        \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot \color{blue}{v}} \]
      6. times-fracN/A

        \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \color{blue}{\frac{\frac{cosTheta\_i}{v}}{v}} \]
      7. *-commutativeN/A

        \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{2 \cdot \sinh \left(\frac{1}{v}\right)} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
      8. sinh-undefN/A

        \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
      9. *-lowering-*.f32N/A

        \[\leadsto \mathsf{*.f32}\left(\left(\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}}\right), \color{blue}{\left(\frac{\frac{cosTheta\_i}{v}}{v}\right)}\right) \]
    6. Applied egg-rr98.5%

      \[\leadsto \color{blue}{\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v}} \]
    7. Taylor expanded in sinTheta_i around 0

      \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\color{blue}{cosTheta\_O}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), 2\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
    8. Step-by-step derivation
      1. Simplified98.3%

        \[\leadsto \frac{\color{blue}{cosTheta\_O}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \]
      2. Step-by-step derivation
        1. frac-timesN/A

          \[\leadsto \frac{cosTheta\_O \cdot \frac{cosTheta\_i}{v}}{\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}} \]
        2. div-invN/A

          \[\leadsto \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right) \cdot \color{blue}{\frac{1}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}} \]
        3. associate-*l*N/A

          \[\leadsto \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right) \cdot \frac{1}{\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}} \]
        4. metadata-evalN/A

          \[\leadsto \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right) \cdot \frac{1}{\sinh \left(\frac{1}{v}\right) \cdot \left(\frac{1}{\frac{1}{2}} \cdot v\right)} \]
        5. associate-/r/N/A

          \[\leadsto \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right) \cdot \frac{1}{\sinh \left(\frac{1}{v}\right) \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2}}{v}}}} \]
        6. div-invN/A

          \[\leadsto \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right) \cdot \frac{1}{\frac{\sinh \left(\frac{1}{v}\right)}{\color{blue}{\frac{\frac{1}{2}}{v}}}} \]
        7. clear-numN/A

          \[\leadsto \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right) \cdot \frac{\frac{\frac{1}{2}}{v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)}} \]
        8. *-lowering-*.f32N/A

          \[\leadsto \mathsf{*.f32}\left(\left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right), \color{blue}{\left(\frac{\frac{\frac{1}{2}}{v}}{\sinh \left(\frac{1}{v}\right)}\right)}\right) \]
        9. associate-*r/N/A

          \[\leadsto \mathsf{*.f32}\left(\left(\frac{cosTheta\_O \cdot cosTheta\_i}{v}\right), \left(\frac{\color{blue}{\frac{\frac{1}{2}}{v}}}{\sinh \left(\frac{1}{v}\right)}\right)\right) \]
        10. *-commutativeN/A

          \[\leadsto \mathsf{*.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\frac{\frac{\color{blue}{\frac{1}{2}}}{v}}{\sinh \left(\frac{1}{v}\right)}\right)\right) \]
        11. /-lowering-/.f32N/A

          \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(\frac{\color{blue}{\frac{\frac{1}{2}}{v}}}{\sinh \left(\frac{1}{v}\right)}\right)\right) \]
        12. *-lowering-*.f32N/A

          \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(\frac{\frac{\color{blue}{\frac{1}{2}}}{v}}{\sinh \left(\frac{1}{v}\right)}\right)\right) \]
        13. /-lowering-/.f32N/A

          \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{/.f32}\left(\left(\frac{\frac{1}{2}}{v}\right), \color{blue}{\sinh \left(\frac{1}{v}\right)}\right)\right) \]
        14. /-lowering-/.f32N/A

          \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \sinh \color{blue}{\left(\frac{1}{v}\right)}\right)\right) \]
        15. sinh-lowering-sinh.f32N/A

          \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right)\right)\right) \]
        16. /-lowering-/.f3298.6%

          \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right) \]
      3. Applied egg-rr98.6%

        \[\leadsto \color{blue}{\frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}} \]
      4. Final simplification98.6%

        \[\leadsto \frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v} \]
      5. Add Preprocessing

      Alternative 7: 98.5% accurate, 1.9× speedup?

      \[\begin{array}{l} \\ \frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_i}{\frac{v}{cosTheta\_O}} \end{array} \]
      (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
       :precision binary32
       (* (/ (/ 0.5 v) (sinh (/ 1.0 v))) (/ cosTheta_i (/ v cosTheta_O))))
      float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
      	return ((0.5f / v) / sinhf((1.0f / v))) * (cosTheta_i / (v / cosTheta_O));
      }
      
      real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
          real(4), intent (in) :: costheta_i
          real(4), intent (in) :: costheta_o
          real(4), intent (in) :: sintheta_i
          real(4), intent (in) :: sintheta_o
          real(4), intent (in) :: v
          code = ((0.5e0 / v) / sinh((1.0e0 / v))) * (costheta_i / (v / costheta_o))
      end function
      
      function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
      	return Float32(Float32(Float32(Float32(0.5) / v) / sinh(Float32(Float32(1.0) / v))) * Float32(cosTheta_i / Float32(v / cosTheta_O)))
      end
      
      function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
      	tmp = ((single(0.5) / v) / sinh((single(1.0) / v))) * (cosTheta_i / (v / cosTheta_O));
      end
      
      \begin{array}{l}
      
      \\
      \frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_i}{\frac{v}{cosTheta\_O}}
      \end{array}
      
      Derivation
      1. Initial program 98.6%

        \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
      2. Step-by-step derivation
        1. /-lowering-/.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
        2. exp-negN/A

          \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
        3. associate-*l/N/A

          \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
        4. *-lft-identityN/A

          \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
        5. /-lowering-/.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
        6. /-lowering-/.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
        7. *-lowering-*.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
        8. exp-lowering-exp.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
        9. /-lowering-/.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
        10. *-lowering-*.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
        11. associate-*l*N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
        12. *-lowering-*.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
        13. sinh-lowering-sinh.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
        14. /-lowering-/.f32N/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
        15. *-commutativeN/A

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
        16. *-lowering-*.f3298.6%

          \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
      3. Simplified98.6%

        \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
      4. Add Preprocessing
      5. Step-by-step derivation
        1. associate-/l/N/A

          \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
        2. *-commutativeN/A

          \[\leadsto \frac{\frac{cosTheta\_O \cdot cosTheta\_i}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
        3. times-fracN/A

          \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
        4. *-commutativeN/A

          \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\sinh \left(\frac{1}{v}\right) \cdot \left(2 \cdot \color{blue}{v}\right)} \]
        5. associate-*r*N/A

          \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot \color{blue}{v}} \]
        6. times-fracN/A

          \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \color{blue}{\frac{\frac{cosTheta\_i}{v}}{v}} \]
        7. *-commutativeN/A

          \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{2 \cdot \sinh \left(\frac{1}{v}\right)} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
        8. sinh-undefN/A

          \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
        9. *-lowering-*.f32N/A

          \[\leadsto \mathsf{*.f32}\left(\left(\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}}\right), \color{blue}{\left(\frac{\frac{cosTheta\_i}{v}}{v}\right)}\right) \]
      6. Applied egg-rr98.5%

        \[\leadsto \color{blue}{\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v}} \]
      7. Taylor expanded in sinTheta_i around 0

        \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\color{blue}{cosTheta\_O}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), 2\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
      8. Step-by-step derivation
        1. Simplified98.3%

          \[\leadsto \frac{\color{blue}{cosTheta\_O}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \]
        2. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \frac{\frac{cosTheta\_i}{v}}{v} \cdot \color{blue}{\frac{cosTheta\_O}{\sinh \left(\frac{1}{v}\right) \cdot 2}} \]
          2. associate-/l/N/A

            \[\leadsto \frac{cosTheta\_i}{v \cdot v} \cdot \frac{\color{blue}{cosTheta\_O}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \]
          3. associate-/r*N/A

            \[\leadsto \frac{cosTheta\_i}{v \cdot v} \cdot \frac{\frac{cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\color{blue}{2}} \]
          4. frac-timesN/A

            \[\leadsto \frac{cosTheta\_i \cdot \frac{cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\color{blue}{\left(v \cdot v\right) \cdot 2}} \]
          5. associate-/l*N/A

            \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\color{blue}{\left(v \cdot v\right)} \cdot 2} \]
          6. metadata-evalN/A

            \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\left(v \cdot v\right) \cdot \frac{1}{\color{blue}{\frac{1}{2}}}} \]
          7. div-invN/A

            \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\frac{v \cdot v}{\color{blue}{\frac{1}{2}}}} \]
          8. associate-*r/N/A

            \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{v \cdot \color{blue}{\frac{v}{\frac{1}{2}}}} \]
          9. clear-numN/A

            \[\leadsto \frac{1}{\color{blue}{\frac{v \cdot \frac{v}{\frac{1}{2}}}{\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}}} \]
          10. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(1, \color{blue}{\left(\frac{v \cdot \frac{v}{\frac{1}{2}}}{\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}\right)}\right) \]
          11. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\left(v \cdot \frac{v}{\frac{1}{2}}\right), \color{blue}{\left(\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}\right)}\right)\right) \]
          12. associate-*r/N/A

            \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\left(\frac{v \cdot v}{\frac{1}{2}}\right), \left(\frac{\color{blue}{cosTheta\_i \cdot cosTheta\_O}}{\sinh \left(\frac{1}{v}\right)}\right)\right)\right) \]
          13. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(v \cdot v\right), \frac{1}{2}\right), \left(\frac{\color{blue}{cosTheta\_i \cdot cosTheta\_O}}{\sinh \left(\frac{1}{v}\right)}\right)\right)\right) \]
          14. *-lowering-*.f32N/A

            \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(v, v\right), \frac{1}{2}\right), \left(\frac{\color{blue}{cosTheta\_i} \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}\right)\right)\right) \]
          15. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(v, v\right), \frac{1}{2}\right), \mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), \color{blue}{\sinh \left(\frac{1}{v}\right)}\right)\right)\right) \]
          16. *-lowering-*.f32N/A

            \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(v, v\right), \frac{1}{2}\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \sinh \color{blue}{\left(\frac{1}{v}\right)}\right)\right)\right) \]
          17. sinh-lowering-sinh.f32N/A

            \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(v, v\right), \frac{1}{2}\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right)\right)\right)\right) \]
          18. /-lowering-/.f3293.5%

            \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(v, v\right), \frac{1}{2}\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right)\right)\right) \]
        3. Applied egg-rr93.5%

          \[\leadsto \color{blue}{\frac{1}{\frac{\frac{v \cdot v}{0.5}}{\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}}} \]
        4. Step-by-step derivation
          1. clear-numN/A

            \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\color{blue}{\frac{v \cdot v}{\frac{1}{2}}}} \]
          2. div-invN/A

            \[\leadsto \frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{\sinh \left(\frac{1}{v}\right)}}{\frac{\color{blue}{v \cdot v}}{\frac{1}{2}}} \]
          3. associate-/l*N/A

            \[\leadsto \frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{\sinh \left(\frac{1}{v}\right)}}{v \cdot \color{blue}{\frac{v}{\frac{1}{2}}}} \]
          4. times-fracN/A

            \[\leadsto \frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \color{blue}{\frac{\frac{1}{\sinh \left(\frac{1}{v}\right)}}{\frac{v}{\frac{1}{2}}}} \]
          5. frac-2negN/A

            \[\leadsto \frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)} \cdot \frac{\color{blue}{\frac{1}{\sinh \left(\frac{1}{v}\right)}}}{\frac{v}{\frac{1}{2}}} \]
          6. un-div-invN/A

            \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{1}{\mathsf{neg}\left(v\right)}\right) \cdot \frac{\color{blue}{\frac{1}{\sinh \left(\frac{1}{v}\right)}}}{\frac{v}{\frac{1}{2}}} \]
          7. metadata-evalN/A

            \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(v\right)}\right) \cdot \frac{\frac{1}{\sinh \color{blue}{\left(\frac{1}{v}\right)}}}{\frac{v}{\frac{1}{2}}} \]
          8. frac-2negN/A

            \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{v}\right) \cdot \frac{\frac{1}{\color{blue}{\sinh \left(\frac{1}{v}\right)}}}{\frac{v}{\frac{1}{2}}} \]
          9. un-div-invN/A

            \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{v}\right) \cdot \left(\frac{1}{\sinh \left(\frac{1}{v}\right)} \cdot \color{blue}{\frac{1}{\frac{v}{\frac{1}{2}}}}\right) \]
          10. clear-numN/A

            \[\leadsto \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{v}\right) \cdot \left(\frac{1}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{\frac{1}{2}}{\color{blue}{v}}\right) \]
          11. *-lowering-*.f32N/A

            \[\leadsto \mathsf{*.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{v}\right), \color{blue}{\left(\frac{1}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{\frac{1}{2}}{v}\right)}\right) \]
          12. frac-2negN/A

            \[\leadsto \mathsf{*.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(v\right)}\right), \left(\frac{1}{\color{blue}{\sinh \left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          13. metadata-evalN/A

            \[\leadsto \mathsf{*.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{1}{\mathsf{neg}\left(v\right)}\right), \left(\frac{1}{\sinh \color{blue}{\left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          14. un-div-invN/A

            \[\leadsto \mathsf{*.f32}\left(\left(\frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)}\right), \left(\color{blue}{\frac{1}{\sinh \left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          15. frac-2negN/A

            \[\leadsto \mathsf{*.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\color{blue}{\frac{1}{\sinh \left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          16. associate-*r/N/A

            \[\leadsto \mathsf{*.f32}\left(\left(cosTheta\_i \cdot \frac{cosTheta\_O}{v}\right), \left(\color{blue}{\frac{1}{\sinh \left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          17. clear-numN/A

            \[\leadsto \mathsf{*.f32}\left(\left(cosTheta\_i \cdot \frac{1}{\frac{v}{cosTheta\_O}}\right), \left(\frac{1}{\color{blue}{\sinh \left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          18. un-div-invN/A

            \[\leadsto \mathsf{*.f32}\left(\left(\frac{cosTheta\_i}{\frac{v}{cosTheta\_O}}\right), \left(\color{blue}{\frac{1}{\sinh \left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          19. /-lowering-/.f32N/A

            \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{cosTheta\_O}\right)\right), \left(\color{blue}{\frac{1}{\sinh \left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          20. /-lowering-/.f32N/A

            \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(v, cosTheta\_O\right)\right), \left(\frac{1}{\color{blue}{\sinh \left(\frac{1}{v}\right)}} \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
          21. *-commutativeN/A

            \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(v, cosTheta\_O\right)\right), \left(\frac{\frac{1}{2}}{v} \cdot \color{blue}{\frac{1}{\sinh \left(\frac{1}{v}\right)}}\right)\right) \]
        5. Applied egg-rr98.2%

          \[\leadsto \color{blue}{\frac{cosTheta\_i}{\frac{v}{cosTheta\_O}} \cdot \frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)}} \]
        6. Final simplification98.2%

          \[\leadsto \frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_i}{\frac{v}{cosTheta\_O}} \]
        7. Add Preprocessing

        Alternative 8: 98.6% accurate, 1.9× speedup?

        \[\begin{array}{l} \\ cosTheta\_O \cdot \frac{\frac{cosTheta\_i}{v}}{\frac{\sinh \left(\frac{1}{v}\right)}{\frac{0.5}{v}}} \end{array} \]
        (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
         :precision binary32
         (* cosTheta_O (/ (/ cosTheta_i v) (/ (sinh (/ 1.0 v)) (/ 0.5 v)))))
        float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
        	return cosTheta_O * ((cosTheta_i / v) / (sinhf((1.0f / v)) / (0.5f / v)));
        }
        
        real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
            real(4), intent (in) :: costheta_i
            real(4), intent (in) :: costheta_o
            real(4), intent (in) :: sintheta_i
            real(4), intent (in) :: sintheta_o
            real(4), intent (in) :: v
            code = costheta_o * ((costheta_i / v) / (sinh((1.0e0 / v)) / (0.5e0 / v)))
        end function
        
        function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
        	return Float32(cosTheta_O * Float32(Float32(cosTheta_i / v) / Float32(sinh(Float32(Float32(1.0) / v)) / Float32(Float32(0.5) / v))))
        end
        
        function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
        	tmp = cosTheta_O * ((cosTheta_i / v) / (sinh((single(1.0) / v)) / (single(0.5) / v)));
        end
        
        \begin{array}{l}
        
        \\
        cosTheta\_O \cdot \frac{\frac{cosTheta\_i}{v}}{\frac{\sinh \left(\frac{1}{v}\right)}{\frac{0.5}{v}}}
        \end{array}
        
        Derivation
        1. Initial program 98.6%

          \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
        2. Step-by-step derivation
          1. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
          2. exp-negN/A

            \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
          3. associate-*l/N/A

            \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
          4. *-lft-identityN/A

            \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
          5. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
          6. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
          7. *-lowering-*.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
          8. exp-lowering-exp.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
          9. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
          10. *-lowering-*.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
          11. associate-*l*N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
          12. *-lowering-*.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
          13. sinh-lowering-sinh.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
          14. /-lowering-/.f32N/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
          15. *-commutativeN/A

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
          16. *-lowering-*.f3298.6%

            \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
        3. Simplified98.6%

          \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
        4. Add Preprocessing
        5. Step-by-step derivation
          1. associate-/l/N/A

            \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
          2. *-commutativeN/A

            \[\leadsto \frac{\frac{cosTheta\_O \cdot cosTheta\_i}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
          3. times-fracN/A

            \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
          4. *-commutativeN/A

            \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\sinh \left(\frac{1}{v}\right) \cdot \left(2 \cdot \color{blue}{v}\right)} \]
          5. associate-*r*N/A

            \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot \color{blue}{v}} \]
          6. times-fracN/A

            \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \color{blue}{\frac{\frac{cosTheta\_i}{v}}{v}} \]
          7. *-commutativeN/A

            \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{2 \cdot \sinh \left(\frac{1}{v}\right)} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
          8. sinh-undefN/A

            \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
          9. *-lowering-*.f32N/A

            \[\leadsto \mathsf{*.f32}\left(\left(\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}}\right), \color{blue}{\left(\frac{\frac{cosTheta\_i}{v}}{v}\right)}\right) \]
        6. Applied egg-rr98.5%

          \[\leadsto \color{blue}{\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v}} \]
        7. Taylor expanded in sinTheta_i around 0

          \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\color{blue}{cosTheta\_O}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), 2\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
        8. Step-by-step derivation
          1. Simplified98.3%

            \[\leadsto \frac{\color{blue}{cosTheta\_O}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \]
          2. Step-by-step derivation
            1. frac-timesN/A

              \[\leadsto \frac{cosTheta\_O \cdot \frac{cosTheta\_i}{v}}{\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}} \]
            2. associate-/l*N/A

              \[\leadsto cosTheta\_O \cdot \color{blue}{\frac{\frac{cosTheta\_i}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}} \]
            3. *-lowering-*.f32N/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \color{blue}{\left(\frac{\frac{cosTheta\_i}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v}\right)}\right) \]
            4. associate-*l*N/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{\frac{cosTheta\_i}{v}}{\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}}\right)\right) \]
            5. metadata-evalN/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{\frac{cosTheta\_i}{v}}{\sinh \left(\frac{1}{v}\right) \cdot \left(\frac{1}{\frac{1}{2}} \cdot v\right)}\right)\right) \]
            6. associate-/r/N/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{\frac{cosTheta\_i}{v}}{\sinh \left(\frac{1}{v}\right) \cdot \frac{1}{\color{blue}{\frac{\frac{1}{2}}{v}}}}\right)\right) \]
            7. div-invN/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{\frac{cosTheta\_i}{v}}{\frac{\sinh \left(\frac{1}{v}\right)}{\color{blue}{\frac{\frac{1}{2}}{v}}}}\right)\right) \]
            8. /-lowering-/.f32N/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\left(\frac{cosTheta\_i}{v}\right), \color{blue}{\left(\frac{\sinh \left(\frac{1}{v}\right)}{\frac{\frac{1}{2}}{v}}\right)}\right)\right) \]
            9. /-lowering-/.f32N/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), \left(\frac{\color{blue}{\sinh \left(\frac{1}{v}\right)}}{\frac{\frac{1}{2}}{v}}\right)\right)\right) \]
            10. /-lowering-/.f32N/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), \mathsf{/.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(\frac{\frac{1}{2}}{v}\right)}\right)\right)\right) \]
            11. sinh-lowering-sinh.f32N/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), \mathsf{/.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\frac{\color{blue}{\frac{1}{2}}}{v}\right)\right)\right)\right) \]
            12. /-lowering-/.f32N/A

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), \mathsf{/.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(\frac{\frac{1}{2}}{v}\right)\right)\right)\right) \]
            13. /-lowering-/.f3298.5%

              \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), \mathsf{/.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{/.f32}\left(\frac{1}{2}, \color{blue}{v}\right)\right)\right)\right) \]
          3. Applied egg-rr98.5%

            \[\leadsto \color{blue}{cosTheta\_O \cdot \frac{\frac{cosTheta\_i}{v}}{\frac{\sinh \left(\frac{1}{v}\right)}{\frac{0.5}{v}}}} \]
          4. Add Preprocessing

          Alternative 9: 70.2% accurate, 5.1× speedup?

          \[\begin{array}{l} \\ \left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{-1}{v \cdot \left(\frac{0.3333333333333333 + \frac{0.016666666666666666}{v \cdot v}}{v \cdot v} - -2\right)} \end{array} \]
          (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
           :precision binary32
           (*
            (-
             (/
              (*
               (* cosTheta_i cosTheta_O)
               (+
                (* sinTheta_i sinTheta_O)
                (/ (* sinTheta_O (* sinTheta_i (* sinTheta_i sinTheta_O))) (/ v -0.5))))
              v)
             (* cosTheta_i cosTheta_O))
            (/
             -1.0
             (*
              v
              (-
               (/ (+ 0.3333333333333333 (/ 0.016666666666666666 (* v v))) (* v v))
               -2.0)))))
          float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
          	return ((((cosTheta_i * cosTheta_O) * ((sinTheta_i * sinTheta_O) + ((sinTheta_O * (sinTheta_i * (sinTheta_i * sinTheta_O))) / (v / -0.5f)))) / v) - (cosTheta_i * cosTheta_O)) * (-1.0f / (v * (((0.3333333333333333f + (0.016666666666666666f / (v * v))) / (v * v)) - -2.0f)));
          }
          
          real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
              real(4), intent (in) :: costheta_i
              real(4), intent (in) :: costheta_o
              real(4), intent (in) :: sintheta_i
              real(4), intent (in) :: sintheta_o
              real(4), intent (in) :: v
              code = ((((costheta_i * costheta_o) * ((sintheta_i * sintheta_o) + ((sintheta_o * (sintheta_i * (sintheta_i * sintheta_o))) / (v / (-0.5e0))))) / v) - (costheta_i * costheta_o)) * ((-1.0e0) / (v * (((0.3333333333333333e0 + (0.016666666666666666e0 / (v * v))) / (v * v)) - (-2.0e0))))
          end function
          
          function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
          	return Float32(Float32(Float32(Float32(Float32(cosTheta_i * cosTheta_O) * Float32(Float32(sinTheta_i * sinTheta_O) + Float32(Float32(sinTheta_O * Float32(sinTheta_i * Float32(sinTheta_i * sinTheta_O))) / Float32(v / Float32(-0.5))))) / v) - Float32(cosTheta_i * cosTheta_O)) * Float32(Float32(-1.0) / Float32(v * Float32(Float32(Float32(Float32(0.3333333333333333) + Float32(Float32(0.016666666666666666) / Float32(v * v))) / Float32(v * v)) - Float32(-2.0)))))
          end
          
          function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
          	tmp = ((((cosTheta_i * cosTheta_O) * ((sinTheta_i * sinTheta_O) + ((sinTheta_O * (sinTheta_i * (sinTheta_i * sinTheta_O))) / (v / single(-0.5))))) / v) - (cosTheta_i * cosTheta_O)) * (single(-1.0) / (v * (((single(0.3333333333333333) + (single(0.016666666666666666) / (v * v))) / (v * v)) - single(-2.0))));
          end
          
          \begin{array}{l}
          
          \\
          \left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{-1}{v \cdot \left(\frac{0.3333333333333333 + \frac{0.016666666666666666}{v \cdot v}}{v \cdot v} - -2\right)}
          \end{array}
          
          Derivation
          1. Initial program 98.6%

            \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
          2. Step-by-step derivation
            1. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
            2. exp-negN/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            3. associate-*l/N/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
            4. *-lft-identityN/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            5. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
            6. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            7. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            8. exp-lowering-exp.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
            9. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
            10. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
            11. associate-*l*N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
            12. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
            13. sinh-lowering-sinh.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
            14. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
            15. *-commutativeN/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
            16. *-lowering-*.f3298.6%

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
          3. Simplified98.6%

            \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
          4. Add Preprocessing
          5. Taylor expanded in v around -inf

            \[\leadsto \mathsf{/.f32}\left(\color{blue}{\left(-1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{v}\right)}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
          6. Step-by-step derivation
            1. mul-1-negN/A

              \[\leadsto \mathsf{/.f32}\left(\left(\mathsf{neg}\left(\frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{v}\right)\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
            2. distribute-neg-frac2N/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{\mathsf{neg}\left(v\right)}\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
            3. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}\right), \left(\mathsf{neg}\left(v\right)\right)\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
          7. Simplified98.5%

            \[\leadsto \frac{\color{blue}{\frac{\frac{1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right) + \left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot \left(sinTheta\_i \cdot sinTheta\_i\right)\right)\right)\right) \cdot \frac{-0.5}{v}\right)}{v} - cosTheta\_O \cdot cosTheta\_i}{-v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
          8. Applied egg-rr98.4%

            \[\leadsto \color{blue}{\left(-\left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{1}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot \frac{v}{0.5}\right)}} \]
          9. Taylor expanded in v around -inf

            \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \color{blue}{\left(-1 \cdot \left(v \cdot \left(-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2\right)\right)\right)}\right)\right) \]
          10. Step-by-step derivation
            1. mul-1-negN/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \left(\mathsf{neg}\left(v \cdot \left(-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2\right)\right)\right)\right)\right) \]
            2. *-commutativeN/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \left(\mathsf{neg}\left(\left(-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2\right) \cdot v\right)\right)\right)\right) \]
            3. distribute-rgt-neg-inN/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \left(\left(-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2\right) \cdot \color{blue}{\left(\mathsf{neg}\left(v\right)\right)}\right)\right)\right) \]
            4. mul-1-negN/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \left(\left(-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2\right) \cdot \left(-1 \cdot \color{blue}{v}\right)\right)\right)\right) \]
            5. *-lowering-*.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(\left(-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2\right), \color{blue}{\left(-1 \cdot v\right)}\right)\right)\right) \]
          11. Simplified67.3%

            \[\leadsto \left(-\left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{1}{\color{blue}{\left(\frac{0.3333333333333333 + \frac{0.016666666666666666}{v \cdot v}}{-v \cdot v} + -2\right) \cdot \left(-v\right)}} \]
          12. Final simplification67.3%

            \[\leadsto \left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{-1}{v \cdot \left(\frac{0.3333333333333333 + \frac{0.016666666666666666}{v \cdot v}}{v \cdot v} - -2\right)} \]
          13. Add Preprocessing

          Alternative 10: 64.1% accurate, 8.8× speedup?

          \[\begin{array}{l} \\ \left(cosTheta\_i \cdot cosTheta\_O - \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{v}\right) \cdot \frac{1}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)} \end{array} \]
          (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
           :precision binary32
           (*
            (-
             (* cosTheta_i cosTheta_O)
             (/ (* cosTheta_O (* cosTheta_i (* sinTheta_i sinTheta_O))) v))
            (/ 1.0 (* v (+ 2.0 (/ 0.3333333333333333 (* v v)))))))
          float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
          	return ((cosTheta_i * cosTheta_O) - ((cosTheta_O * (cosTheta_i * (sinTheta_i * sinTheta_O))) / v)) * (1.0f / (v * (2.0f + (0.3333333333333333f / (v * v)))));
          }
          
          real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
              real(4), intent (in) :: costheta_i
              real(4), intent (in) :: costheta_o
              real(4), intent (in) :: sintheta_i
              real(4), intent (in) :: sintheta_o
              real(4), intent (in) :: v
              code = ((costheta_i * costheta_o) - ((costheta_o * (costheta_i * (sintheta_i * sintheta_o))) / v)) * (1.0e0 / (v * (2.0e0 + (0.3333333333333333e0 / (v * v)))))
          end function
          
          function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
          	return Float32(Float32(Float32(cosTheta_i * cosTheta_O) - Float32(Float32(cosTheta_O * Float32(cosTheta_i * Float32(sinTheta_i * sinTheta_O))) / v)) * Float32(Float32(1.0) / Float32(v * Float32(Float32(2.0) + Float32(Float32(0.3333333333333333) / Float32(v * v))))))
          end
          
          function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
          	tmp = ((cosTheta_i * cosTheta_O) - ((cosTheta_O * (cosTheta_i * (sinTheta_i * sinTheta_O))) / v)) * (single(1.0) / (v * (single(2.0) + (single(0.3333333333333333) / (v * v)))));
          end
          
          \begin{array}{l}
          
          \\
          \left(cosTheta\_i \cdot cosTheta\_O - \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{v}\right) \cdot \frac{1}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)}
          \end{array}
          
          Derivation
          1. Initial program 98.6%

            \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
          2. Step-by-step derivation
            1. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
            2. exp-negN/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            3. associate-*l/N/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
            4. *-lft-identityN/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            5. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
            6. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            7. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            8. exp-lowering-exp.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
            9. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
            10. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
            11. associate-*l*N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
            12. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
            13. sinh-lowering-sinh.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
            14. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
            15. *-commutativeN/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
            16. *-lowering-*.f3298.6%

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
          3. Simplified98.6%

            \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
          4. Add Preprocessing
          5. Taylor expanded in v around -inf

            \[\leadsto \mathsf{/.f32}\left(\color{blue}{\left(-1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{v}\right)}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
          6. Step-by-step derivation
            1. mul-1-negN/A

              \[\leadsto \mathsf{/.f32}\left(\left(\mathsf{neg}\left(\frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{v}\right)\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
            2. distribute-neg-frac2N/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{\mathsf{neg}\left(v\right)}\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
            3. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}\right), \left(\mathsf{neg}\left(v\right)\right)\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
          7. Simplified98.5%

            \[\leadsto \frac{\color{blue}{\frac{\frac{1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right) + \left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot \left(sinTheta\_i \cdot sinTheta\_i\right)\right)\right)\right) \cdot \frac{-0.5}{v}\right)}{v} - cosTheta\_O \cdot cosTheta\_i}{-v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
          8. Applied egg-rr98.4%

            \[\leadsto \color{blue}{\left(-\left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{1}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot \frac{v}{0.5}\right)}} \]
          9. Taylor expanded in v around inf

            \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \color{blue}{\left(v \cdot \left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)\right)}\right)\right) \]
          10. Step-by-step derivation
            1. *-lowering-*.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \color{blue}{\left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}\right)\right)\right) \]
            2. +-lowering-+.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \color{blue}{\left(\frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}\right)\right)\right)\right) \]
            3. associate-*r/N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \left(\frac{\frac{1}{3} \cdot 1}{\color{blue}{{v}^{2}}}\right)\right)\right)\right)\right) \]
            4. metadata-evalN/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \left(\frac{\frac{1}{3}}{{\color{blue}{v}}^{2}}\right)\right)\right)\right)\right) \]
            5. /-lowering-/.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \color{blue}{\left({v}^{2}\right)}\right)\right)\right)\right)\right) \]
            6. unpow2N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \left(v \cdot \color{blue}{v}\right)\right)\right)\right)\right)\right) \]
            7. *-lowering-*.f3261.0%

              \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, \color{blue}{v}\right)\right)\right)\right)\right)\right) \]
          11. Simplified61.0%

            \[\leadsto \left(-\left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{1}{\color{blue}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)}} \]
          12. Taylor expanded in sinTheta_i around 0

            \[\leadsto \mathsf{*.f32}\left(\color{blue}{\left(-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i\right)}, \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
          13. Step-by-step derivation
            1. +-commutativeN/A

              \[\leadsto \mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i + -1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v}\right), \mathsf{/.f32}\left(\color{blue}{1}, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            2. mul-1-negN/A

              \[\leadsto \mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i + \left(\mathsf{neg}\left(\frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v}\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            3. sub-negN/A

              \[\leadsto \mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v}\right), \mathsf{/.f32}\left(\color{blue}{1}, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            4. --lowering--.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i\right), \left(\frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v}\right)\right), \mathsf{/.f32}\left(\color{blue}{1}, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            5. *-lowering-*.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \left(\frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v}\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            6. /-lowering-/.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \mathsf{/.f32}\left(\left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right), v\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            7. *-lowering-*.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right), v\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            8. *-commutativeN/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \left(\left(sinTheta\_O \cdot sinTheta\_i\right) \cdot cosTheta\_i\right)\right), v\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            9. *-lowering-*.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{*.f32}\left(\left(sinTheta\_O \cdot sinTheta\_i\right), cosTheta\_i\right)\right), v\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
            10. *-lowering-*.f3261.0%

              \[\leadsto \mathsf{*.f32}\left(\mathsf{\_.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{*.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right), cosTheta\_i\right)\right), v\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right) \]
          14. Simplified61.0%

            \[\leadsto \color{blue}{\left(cosTheta\_O \cdot cosTheta\_i - \frac{cosTheta\_O \cdot \left(\left(sinTheta\_O \cdot sinTheta\_i\right) \cdot cosTheta\_i\right)}{v}\right)} \cdot \frac{1}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)} \]
          15. Final simplification61.0%

            \[\leadsto \left(cosTheta\_i \cdot cosTheta\_O - \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{v}\right) \cdot \frac{1}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)} \]
          16. Add Preprocessing

          Alternative 11: 70.2% accurate, 9.6× speedup?

          \[\begin{array}{l} \\ \frac{cosTheta\_O}{\frac{\frac{0.3333333333333333 + \frac{0.016666666666666666}{v \cdot v}}{v \cdot v} - -2}{v}} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \end{array} \]
          (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
           :precision binary32
           (*
            (/
             cosTheta_O
             (/
              (-
               (/ (+ 0.3333333333333333 (/ 0.016666666666666666 (* v v))) (* v v))
               -2.0)
              v))
            (/ (/ cosTheta_i v) v)))
          float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
          	return (cosTheta_O / ((((0.3333333333333333f + (0.016666666666666666f / (v * v))) / (v * v)) - -2.0f) / v)) * ((cosTheta_i / v) / v);
          }
          
          real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
              real(4), intent (in) :: costheta_i
              real(4), intent (in) :: costheta_o
              real(4), intent (in) :: sintheta_i
              real(4), intent (in) :: sintheta_o
              real(4), intent (in) :: v
              code = (costheta_o / ((((0.3333333333333333e0 + (0.016666666666666666e0 / (v * v))) / (v * v)) - (-2.0e0)) / v)) * ((costheta_i / v) / v)
          end function
          
          function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
          	return Float32(Float32(cosTheta_O / Float32(Float32(Float32(Float32(Float32(0.3333333333333333) + Float32(Float32(0.016666666666666666) / Float32(v * v))) / Float32(v * v)) - Float32(-2.0)) / v)) * Float32(Float32(cosTheta_i / v) / v))
          end
          
          function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
          	tmp = (cosTheta_O / ((((single(0.3333333333333333) + (single(0.016666666666666666) / (v * v))) / (v * v)) - single(-2.0)) / v)) * ((cosTheta_i / v) / v);
          end
          
          \begin{array}{l}
          
          \\
          \frac{cosTheta\_O}{\frac{\frac{0.3333333333333333 + \frac{0.016666666666666666}{v \cdot v}}{v \cdot v} - -2}{v}} \cdot \frac{\frac{cosTheta\_i}{v}}{v}
          \end{array}
          
          Derivation
          1. Initial program 98.6%

            \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
          2. Step-by-step derivation
            1. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
            2. exp-negN/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            3. associate-*l/N/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
            4. *-lft-identityN/A

              \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            5. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
            6. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            7. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
            8. exp-lowering-exp.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
            9. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
            10. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
            11. associate-*l*N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
            12. *-lowering-*.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
            13. sinh-lowering-sinh.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
            14. /-lowering-/.f32N/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
            15. *-commutativeN/A

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
            16. *-lowering-*.f3298.6%

              \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
          3. Simplified98.6%

            \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
          4. Add Preprocessing
          5. Step-by-step derivation
            1. associate-/l/N/A

              \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
            2. *-commutativeN/A

              \[\leadsto \frac{\frac{cosTheta\_O \cdot cosTheta\_i}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
            3. times-fracN/A

              \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
            4. *-commutativeN/A

              \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\sinh \left(\frac{1}{v}\right) \cdot \left(2 \cdot \color{blue}{v}\right)} \]
            5. associate-*r*N/A

              \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot \color{blue}{v}} \]
            6. times-fracN/A

              \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \color{blue}{\frac{\frac{cosTheta\_i}{v}}{v}} \]
            7. *-commutativeN/A

              \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{2 \cdot \sinh \left(\frac{1}{v}\right)} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
            8. sinh-undefN/A

              \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
            9. *-lowering-*.f32N/A

              \[\leadsto \mathsf{*.f32}\left(\left(\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}}\right), \color{blue}{\left(\frac{\frac{cosTheta\_i}{v}}{v}\right)}\right) \]
          6. Applied egg-rr98.5%

            \[\leadsto \color{blue}{\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v}} \]
          7. Taylor expanded in sinTheta_i around 0

            \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\color{blue}{cosTheta\_O}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), 2\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
          8. Step-by-step derivation
            1. Simplified98.3%

              \[\leadsto \frac{\color{blue}{cosTheta\_O}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \]
            2. Taylor expanded in v around -inf

              \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \color{blue}{\left(-1 \cdot \frac{-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2}{v}\right)}\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
            3. Step-by-step derivation
              1. mul-1-negN/A

                \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \left(\mathsf{neg}\left(\frac{-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2}{v}\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, \color{blue}{v}\right), v\right)\right) \]
              2. distribute-neg-frac2N/A

                \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \left(\frac{-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2}{\mathsf{neg}\left(v\right)}\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, \color{blue}{v}\right), v\right)\right) \]
              3. mul-1-negN/A

                \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \left(\frac{-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2}{-1 \cdot v}\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
              4. /-lowering-/.f32N/A

                \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{3} + \frac{1}{60} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 2\right), \left(-1 \cdot v\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, \color{blue}{v}\right), v\right)\right) \]
            4. Simplified67.2%

              \[\leadsto \frac{cosTheta\_O}{\color{blue}{\frac{\frac{0.3333333333333333 + \frac{0.016666666666666666}{v \cdot v}}{-v \cdot v} + -2}{-v}}} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \]
            5. Final simplification67.2%

              \[\leadsto \frac{cosTheta\_O}{\frac{\frac{0.3333333333333333 + \frac{0.016666666666666666}{v \cdot v}}{v \cdot v} - -2}{v}} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \]
            6. Add Preprocessing

            Alternative 12: 64.1% accurate, 12.9× speedup?

            \[\begin{array}{l} \\ \frac{\frac{cosTheta\_i}{v}}{v} \cdot \frac{cosTheta\_O}{\frac{2 + \frac{0.3333333333333333}{v \cdot v}}{v}} \end{array} \]
            (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
             :precision binary32
             (*
              (/ (/ cosTheta_i v) v)
              (/ cosTheta_O (/ (+ 2.0 (/ 0.3333333333333333 (* v v))) v))))
            float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
            	return ((cosTheta_i / v) / v) * (cosTheta_O / ((2.0f + (0.3333333333333333f / (v * v))) / v));
            }
            
            real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
                real(4), intent (in) :: costheta_i
                real(4), intent (in) :: costheta_o
                real(4), intent (in) :: sintheta_i
                real(4), intent (in) :: sintheta_o
                real(4), intent (in) :: v
                code = ((costheta_i / v) / v) * (costheta_o / ((2.0e0 + (0.3333333333333333e0 / (v * v))) / v))
            end function
            
            function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
            	return Float32(Float32(Float32(cosTheta_i / v) / v) * Float32(cosTheta_O / Float32(Float32(Float32(2.0) + Float32(Float32(0.3333333333333333) / Float32(v * v))) / v)))
            end
            
            function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
            	tmp = ((cosTheta_i / v) / v) * (cosTheta_O / ((single(2.0) + (single(0.3333333333333333) / (v * v))) / v));
            end
            
            \begin{array}{l}
            
            \\
            \frac{\frac{cosTheta\_i}{v}}{v} \cdot \frac{cosTheta\_O}{\frac{2 + \frac{0.3333333333333333}{v \cdot v}}{v}}
            \end{array}
            
            Derivation
            1. Initial program 98.6%

              \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
            2. Step-by-step derivation
              1. /-lowering-/.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
              2. exp-negN/A

                \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
              3. associate-*l/N/A

                \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
              4. *-lft-identityN/A

                \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
              5. /-lowering-/.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
              6. /-lowering-/.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
              7. *-lowering-*.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
              8. exp-lowering-exp.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
              9. /-lowering-/.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
              10. *-lowering-*.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
              11. associate-*l*N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
              12. *-lowering-*.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
              13. sinh-lowering-sinh.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
              14. /-lowering-/.f32N/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
              15. *-commutativeN/A

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
              16. *-lowering-*.f3298.6%

                \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
            3. Simplified98.6%

              \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
            4. Add Preprocessing
            5. Step-by-step derivation
              1. associate-/l/N/A

                \[\leadsto \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
              2. *-commutativeN/A

                \[\leadsto \frac{\frac{cosTheta\_O \cdot cosTheta\_i}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot v}}{\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
              3. times-fracN/A

                \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot \left(v \cdot 2\right)} \]
              4. *-commutativeN/A

                \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\sinh \left(\frac{1}{v}\right) \cdot \left(2 \cdot \color{blue}{v}\right)} \]
              5. associate-*r*N/A

                \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot \color{blue}{v}} \]
              6. times-fracN/A

                \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \color{blue}{\frac{\frac{cosTheta\_i}{v}}{v}} \]
              7. *-commutativeN/A

                \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{2 \cdot \sinh \left(\frac{1}{v}\right)} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
              8. sinh-undefN/A

                \[\leadsto \frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}} \cdot \frac{\frac{cosTheta\_i}{\color{blue}{v}}}{v} \]
              9. *-lowering-*.f32N/A

                \[\leadsto \mathsf{*.f32}\left(\left(\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}}\right), \color{blue}{\left(\frac{\frac{cosTheta\_i}{v}}{v}\right)}\right) \]
            6. Applied egg-rr98.5%

              \[\leadsto \color{blue}{\frac{\frac{cosTheta\_O}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v}} \]
            7. Taylor expanded in sinTheta_i around 0

              \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\color{blue}{cosTheta\_O}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), 2\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
            8. Step-by-step derivation
              1. Simplified98.3%

                \[\leadsto \frac{\color{blue}{cosTheta\_O}}{\sinh \left(\frac{1}{v}\right) \cdot 2} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \]
              2. Taylor expanded in v around inf

                \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \color{blue}{\left(\frac{2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}}{v}\right)}\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
              3. Step-by-step derivation
                1. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right), v\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, \color{blue}{v}\right), v\right)\right) \]
                2. +-lowering-+.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{+.f32}\left(2, \left(\frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)\right), v\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
                3. associate-*r/N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{+.f32}\left(2, \left(\frac{\frac{1}{3} \cdot 1}{{v}^{2}}\right)\right), v\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
                4. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{+.f32}\left(2, \left(\frac{\frac{1}{3}}{{v}^{2}}\right)\right), v\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \left({v}^{2}\right)\right)\right), v\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
                6. unpow2N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \left(v \cdot v\right)\right)\right), v\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
                7. *-lowering-*.f3261.0%

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, v\right)\right)\right), v\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_i, v\right), v\right)\right) \]
              4. Simplified61.0%

                \[\leadsto \frac{cosTheta\_O}{\color{blue}{\frac{2 + \frac{0.3333333333333333}{v \cdot v}}{v}}} \cdot \frac{\frac{cosTheta\_i}{v}}{v} \]
              5. Final simplification61.0%

                \[\leadsto \frac{\frac{cosTheta\_i}{v}}{v} \cdot \frac{cosTheta\_O}{\frac{2 + \frac{0.3333333333333333}{v \cdot v}}{v}} \]
              6. Add Preprocessing

              Alternative 13: 64.1% accurate, 16.9× speedup?

              \[\begin{array}{l} \\ cosTheta\_O \cdot \frac{cosTheta\_i}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)} \end{array} \]
              (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
               :precision binary32
               (* cosTheta_O (/ cosTheta_i (* v (+ 2.0 (/ 0.3333333333333333 (* v v)))))))
              float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
              	return cosTheta_O * (cosTheta_i / (v * (2.0f + (0.3333333333333333f / (v * v)))));
              }
              
              real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
                  real(4), intent (in) :: costheta_i
                  real(4), intent (in) :: costheta_o
                  real(4), intent (in) :: sintheta_i
                  real(4), intent (in) :: sintheta_o
                  real(4), intent (in) :: v
                  code = costheta_o * (costheta_i / (v * (2.0e0 + (0.3333333333333333e0 / (v * v)))))
              end function
              
              function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	return Float32(cosTheta_O * Float32(cosTheta_i / Float32(v * Float32(Float32(2.0) + Float32(Float32(0.3333333333333333) / Float32(v * v))))))
              end
              
              function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	tmp = cosTheta_O * (cosTheta_i / (v * (single(2.0) + (single(0.3333333333333333) / (v * v)))));
              end
              
              \begin{array}{l}
              
              \\
              cosTheta\_O \cdot \frac{cosTheta\_i}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)}
              \end{array}
              
              Derivation
              1. Initial program 98.6%

                \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
              2. Step-by-step derivation
                1. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
                2. exp-negN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                3. associate-*l/N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                4. *-lft-identityN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                7. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                8. exp-lowering-exp.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
                9. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                10. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                11. associate-*l*N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                12. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                13. sinh-lowering-sinh.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
                14. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
                15. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
                16. *-lowering-*.f3298.6%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
              3. Simplified98.6%

                \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
              4. Add Preprocessing
              5. Taylor expanded in v around -inf

                \[\leadsto \mathsf{/.f32}\left(\color{blue}{\left(-1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{v}\right)}, \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
              6. Step-by-step derivation
                1. mul-1-negN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\mathsf{neg}\left(\frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{v}\right)\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
                2. distribute-neg-frac2N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}}{\mathsf{neg}\left(v\right)}\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
                3. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(-1 \cdot \left(cosTheta\_O \cdot cosTheta\_i\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)\right) + -1 \cdot \frac{-1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right) + \frac{1}{2} \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left({sinTheta\_O}^{2} \cdot {sinTheta\_i}^{2}\right)\right)\right)}{v}}{v}\right), \left(\mathsf{neg}\left(v\right)\right)\right), \mathsf{*.f32}\left(\color{blue}{\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)}, \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
              7. Simplified98.5%

                \[\leadsto \frac{\color{blue}{\frac{\frac{1 \cdot \left(cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right) + \left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot \left(sinTheta\_i \cdot sinTheta\_i\right)\right)\right)\right) \cdot \frac{-0.5}{v}\right)}{v} - cosTheta\_O \cdot cosTheta\_i}{-v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
              8. Applied egg-rr98.4%

                \[\leadsto \color{blue}{\left(-\left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{1}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot \frac{v}{0.5}\right)}} \]
              9. Taylor expanded in v around inf

                \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \color{blue}{\left(v \cdot \left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)\right)}\right)\right) \]
              10. Step-by-step derivation
                1. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \color{blue}{\left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}\right)\right)\right) \]
                2. +-lowering-+.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \color{blue}{\left(\frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}\right)\right)\right)\right) \]
                3. associate-*r/N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \left(\frac{\frac{1}{3} \cdot 1}{\color{blue}{{v}^{2}}}\right)\right)\right)\right)\right) \]
                4. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \left(\frac{\frac{1}{3}}{{\color{blue}{v}}^{2}}\right)\right)\right)\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \color{blue}{\left({v}^{2}\right)}\right)\right)\right)\right)\right) \]
                6. unpow2N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \left(v \cdot \color{blue}{v}\right)\right)\right)\right)\right)\right) \]
                7. *-lowering-*.f3261.0%

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{\_.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \mathsf{+.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right)\right)\right), \mathsf{/.f32}\left(v, \frac{-1}{2}\right)\right)\right)\right), v\right), \mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right)\right), \mathsf{/.f32}\left(1, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, \color{blue}{v}\right)\right)\right)\right)\right)\right) \]
              11. Simplified61.0%

                \[\leadsto \left(-\left(\frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(sinTheta\_i \cdot sinTheta\_O + \frac{sinTheta\_O \cdot \left(sinTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)\right)}{\frac{v}{-0.5}}\right)}{v} - cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{1}{\color{blue}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)}} \]
              12. Taylor expanded in sinTheta_i around 0

                \[\leadsto \color{blue}{\frac{cosTheta\_O \cdot cosTheta\_i}{v \cdot \left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}} \]
              13. Step-by-step derivation
                1. associate-/l*N/A

                  \[\leadsto cosTheta\_O \cdot \color{blue}{\frac{cosTheta\_i}{v \cdot \left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}} \]
                2. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \color{blue}{\left(\frac{cosTheta\_i}{v \cdot \left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}\right)}\right) \]
                3. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \color{blue}{\left(v \cdot \left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)\right)}\right)\right) \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(v, \color{blue}{\left(2 + \frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}\right)\right)\right) \]
                5. +-lowering-+.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \color{blue}{\left(\frac{1}{3} \cdot \frac{1}{{v}^{2}}\right)}\right)\right)\right)\right) \]
                6. associate-*r/N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \left(\frac{\frac{1}{3} \cdot 1}{\color{blue}{{v}^{2}}}\right)\right)\right)\right)\right) \]
                7. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \left(\frac{\frac{1}{3}}{{\color{blue}{v}}^{2}}\right)\right)\right)\right)\right) \]
                8. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \color{blue}{\left({v}^{2}\right)}\right)\right)\right)\right)\right) \]
                9. unpow2N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \left(v \cdot \color{blue}{v}\right)\right)\right)\right)\right)\right) \]
                10. *-lowering-*.f3261.0%

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(2, \mathsf{/.f32}\left(\frac{1}{3}, \mathsf{*.f32}\left(v, \color{blue}{v}\right)\right)\right)\right)\right)\right) \]
              14. Simplified61.0%

                \[\leadsto \color{blue}{cosTheta\_O \cdot \frac{cosTheta\_i}{v \cdot \left(2 + \frac{0.3333333333333333}{v \cdot v}\right)}} \]
              15. Add Preprocessing

              Alternative 14: 58.9% accurate, 24.4× speedup?

              \[\begin{array}{l} \\ \frac{1}{\frac{\frac{v}{cosTheta\_i}}{cosTheta\_O \cdot 0.5}} \end{array} \]
              (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
               :precision binary32
               (/ 1.0 (/ (/ v cosTheta_i) (* cosTheta_O 0.5))))
              float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
              	return 1.0f / ((v / cosTheta_i) / (cosTheta_O * 0.5f));
              }
              
              real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
                  real(4), intent (in) :: costheta_i
                  real(4), intent (in) :: costheta_o
                  real(4), intent (in) :: sintheta_i
                  real(4), intent (in) :: sintheta_o
                  real(4), intent (in) :: v
                  code = 1.0e0 / ((v / costheta_i) / (costheta_o * 0.5e0))
              end function
              
              function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	return Float32(Float32(1.0) / Float32(Float32(v / cosTheta_i) / Float32(cosTheta_O * Float32(0.5))))
              end
              
              function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	tmp = single(1.0) / ((v / cosTheta_i) / (cosTheta_O * single(0.5)));
              end
              
              \begin{array}{l}
              
              \\
              \frac{1}{\frac{\frac{v}{cosTheta\_i}}{cosTheta\_O \cdot 0.5}}
              \end{array}
              
              Derivation
              1. Initial program 98.6%

                \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
              2. Step-by-step derivation
                1. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
                2. exp-negN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                3. associate-*l/N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                4. *-lft-identityN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                7. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                8. exp-lowering-exp.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
                9. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                10. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                11. associate-*l*N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                12. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                13. sinh-lowering-sinh.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
                14. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
                15. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
                16. *-lowering-*.f3298.6%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
              3. Simplified98.6%

                \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
              4. Add Preprocessing
              5. Taylor expanded in v around inf

                \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
              6. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{v}} \]
                2. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)\right), \color{blue}{v}\right) \]
                3. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{2}\right), v\right) \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
                5. *-lowering-*.f3255.4%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
              7. Simplified55.4%

                \[\leadsto \color{blue}{\frac{\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot 0.5}{v}} \]
              8. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{v} \]
                2. associate-/l*N/A

                  \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
                3. frac-2negN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{\mathsf{neg}\left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{\mathsf{neg}\left(v\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)} \]
                5. un-div-invN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \color{blue}{\frac{1}{\mathsf{neg}\left(v\right)}}\right) \]
                6. metadata-evalN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(\color{blue}{v}\right)}\right) \]
                7. frac-2negN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{\color{blue}{v}}\right) \]
                8. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \color{blue}{\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{v}\right)}\right) \]
                9. *-commutativeN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\left(\mathsf{neg}\left(cosTheta\_O \cdot cosTheta\_i\right)\right) \cdot \frac{-1}{v}\right)\right) \]
                10. distribute-lft-neg-outN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{-1}{v}\right)\right)\right) \]
                11. frac-2negN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                12. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                13. div-invN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\frac{cosTheta\_O \cdot cosTheta\_i}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                14. associate-/l*N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(cosTheta\_O \cdot \frac{cosTheta\_i}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                15. distribute-neg-frac2N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(cosTheta\_O \cdot \left(\mathsf{neg}\left(\frac{cosTheta\_i}{v}\right)\right)\right)\right)\right) \]
                16. distribute-rgt-neg-inN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{cosTheta\_i}{v}\right)\right)\right)\right)}\right)\right) \]
                17. remove-double-negN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \frac{cosTheta\_i}{\color{blue}{v}}\right)\right) \]
                18. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_O, \color{blue}{\left(\frac{cosTheta\_i}{v}\right)}\right)\right) \]
                19. /-lowering-/.f3255.3%

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \color{blue}{v}\right)\right)\right) \]
              9. Applied egg-rr55.3%

                \[\leadsto \color{blue}{0.5 \cdot \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right)} \]
              10. Step-by-step derivation
                1. associate-*r*N/A

                  \[\leadsto \left(\frac{1}{2} \cdot cosTheta\_O\right) \cdot \color{blue}{\frac{cosTheta\_i}{v}} \]
                2. clear-numN/A

                  \[\leadsto \left(\frac{1}{2} \cdot cosTheta\_O\right) \cdot \frac{1}{\color{blue}{\frac{v}{cosTheta\_i}}} \]
                3. un-div-invN/A

                  \[\leadsto \frac{\frac{1}{2} \cdot cosTheta\_O}{\color{blue}{\frac{v}{cosTheta\_i}}} \]
                4. clear-numN/A

                  \[\leadsto \frac{1}{\color{blue}{\frac{\frac{v}{cosTheta\_i}}{\frac{1}{2} \cdot cosTheta\_O}}} \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(1, \color{blue}{\left(\frac{\frac{v}{cosTheta\_i}}{\frac{1}{2} \cdot cosTheta\_O}\right)}\right) \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\left(\frac{v}{cosTheta\_i}\right), \color{blue}{\left(\frac{1}{2} \cdot cosTheta\_O\right)}\right)\right) \]
                7. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{/.f32}\left(v, cosTheta\_i\right), \left(\color{blue}{\frac{1}{2}} \cdot cosTheta\_O\right)\right)\right) \]
                8. *-lowering-*.f3255.5%

                  \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{/.f32}\left(v, cosTheta\_i\right), \mathsf{*.f32}\left(\frac{1}{2}, \color{blue}{cosTheta\_O}\right)\right)\right) \]
              11. Applied egg-rr55.5%

                \[\leadsto \color{blue}{\frac{1}{\frac{\frac{v}{cosTheta\_i}}{0.5 \cdot cosTheta\_O}}} \]
              12. Final simplification55.5%

                \[\leadsto \frac{1}{\frac{\frac{v}{cosTheta\_i}}{cosTheta\_O \cdot 0.5}} \]
              13. Add Preprocessing

              Alternative 15: 58.9% accurate, 24.4× speedup?

              \[\begin{array}{l} \\ \frac{1}{\frac{v}{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot 0.5}} \end{array} \]
              (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
               :precision binary32
               (/ 1.0 (/ v (* (* cosTheta_i cosTheta_O) 0.5))))
              float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
              	return 1.0f / (v / ((cosTheta_i * cosTheta_O) * 0.5f));
              }
              
              real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
                  real(4), intent (in) :: costheta_i
                  real(4), intent (in) :: costheta_o
                  real(4), intent (in) :: sintheta_i
                  real(4), intent (in) :: sintheta_o
                  real(4), intent (in) :: v
                  code = 1.0e0 / (v / ((costheta_i * costheta_o) * 0.5e0))
              end function
              
              function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	return Float32(Float32(1.0) / Float32(v / Float32(Float32(cosTheta_i * cosTheta_O) * Float32(0.5))))
              end
              
              function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	tmp = single(1.0) / (v / ((cosTheta_i * cosTheta_O) * single(0.5)));
              end
              
              \begin{array}{l}
              
              \\
              \frac{1}{\frac{v}{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot 0.5}}
              \end{array}
              
              Derivation
              1. Initial program 98.6%

                \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
              2. Step-by-step derivation
                1. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
                2. exp-negN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                3. associate-*l/N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                4. *-lft-identityN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                7. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                8. exp-lowering-exp.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
                9. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                10. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                11. associate-*l*N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                12. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                13. sinh-lowering-sinh.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
                14. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
                15. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
                16. *-lowering-*.f3298.6%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
              3. Simplified98.6%

                \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
              4. Add Preprocessing
              5. Taylor expanded in v around inf

                \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
              6. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{v}} \]
                2. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)\right), \color{blue}{v}\right) \]
                3. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{2}\right), v\right) \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
                5. *-lowering-*.f3255.4%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
              7. Simplified55.4%

                \[\leadsto \color{blue}{\frac{\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot 0.5}{v}} \]
              8. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{v} \]
                2. associate-/l*N/A

                  \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
                3. frac-2negN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{\mathsf{neg}\left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{\mathsf{neg}\left(v\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)} \]
                5. un-div-invN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \color{blue}{\frac{1}{\mathsf{neg}\left(v\right)}}\right) \]
                6. metadata-evalN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(\color{blue}{v}\right)}\right) \]
                7. frac-2negN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{\color{blue}{v}}\right) \]
                8. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \color{blue}{\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{v}\right)}\right) \]
                9. *-commutativeN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\left(\mathsf{neg}\left(cosTheta\_O \cdot cosTheta\_i\right)\right) \cdot \frac{-1}{v}\right)\right) \]
                10. distribute-lft-neg-outN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{-1}{v}\right)\right)\right) \]
                11. frac-2negN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                12. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                13. div-invN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\frac{cosTheta\_O \cdot cosTheta\_i}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                14. associate-/l*N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(cosTheta\_O \cdot \frac{cosTheta\_i}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                15. distribute-neg-frac2N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(cosTheta\_O \cdot \left(\mathsf{neg}\left(\frac{cosTheta\_i}{v}\right)\right)\right)\right)\right) \]
                16. distribute-rgt-neg-inN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{cosTheta\_i}{v}\right)\right)\right)\right)}\right)\right) \]
                17. remove-double-negN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \frac{cosTheta\_i}{\color{blue}{v}}\right)\right) \]
                18. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_O, \color{blue}{\left(\frac{cosTheta\_i}{v}\right)}\right)\right) \]
                19. /-lowering-/.f3255.3%

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \color{blue}{v}\right)\right)\right) \]
              9. Applied egg-rr55.3%

                \[\leadsto \color{blue}{0.5 \cdot \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right)} \]
              10. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right) \cdot \color{blue}{\frac{1}{2}} \]
                2. associate-*r/N/A

                  \[\leadsto \frac{cosTheta\_O \cdot cosTheta\_i}{v} \cdot \frac{1}{2} \]
                3. *-commutativeN/A

                  \[\leadsto \frac{cosTheta\_i \cdot cosTheta\_O}{v} \cdot \frac{1}{2} \]
                4. associate-*l/N/A

                  \[\leadsto \frac{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{2}}{\color{blue}{v}} \]
                5. clear-numN/A

                  \[\leadsto \frac{1}{\color{blue}{\frac{v}{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{2}}}} \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(1, \color{blue}{\left(\frac{v}{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{2}}\right)}\right) \]
                7. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \color{blue}{\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{1}{2}\right)}\right)\right) \]
                8. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \mathsf{*.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), \color{blue}{\frac{1}{2}}\right)\right)\right) \]
                9. *-lowering-*.f3255.5%

                  \[\leadsto \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), \frac{1}{2}\right)\right)\right) \]
              11. Applied egg-rr55.5%

                \[\leadsto \color{blue}{\frac{1}{\frac{v}{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot 0.5}}} \]
              12. Add Preprocessing

              Alternative 16: 58.9% accurate, 31.4× speedup?

              \[\begin{array}{l} \\ \frac{0.5}{\frac{v}{cosTheta\_i \cdot cosTheta\_O}} \end{array} \]
              (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
               :precision binary32
               (/ 0.5 (/ v (* cosTheta_i cosTheta_O))))
              float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
              	return 0.5f / (v / (cosTheta_i * cosTheta_O));
              }
              
              real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
                  real(4), intent (in) :: costheta_i
                  real(4), intent (in) :: costheta_o
                  real(4), intent (in) :: sintheta_i
                  real(4), intent (in) :: sintheta_o
                  real(4), intent (in) :: v
                  code = 0.5e0 / (v / (costheta_i * costheta_o))
              end function
              
              function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	return Float32(Float32(0.5) / Float32(v / Float32(cosTheta_i * cosTheta_O)))
              end
              
              function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	tmp = single(0.5) / (v / (cosTheta_i * cosTheta_O));
              end
              
              \begin{array}{l}
              
              \\
              \frac{0.5}{\frac{v}{cosTheta\_i \cdot cosTheta\_O}}
              \end{array}
              
              Derivation
              1. Initial program 98.6%

                \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
              2. Step-by-step derivation
                1. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
                2. exp-negN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                3. associate-*l/N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                4. *-lft-identityN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                7. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                8. exp-lowering-exp.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
                9. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                10. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                11. associate-*l*N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                12. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                13. sinh-lowering-sinh.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
                14. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
                15. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
                16. *-lowering-*.f3298.6%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
              3. Simplified98.6%

                \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
              4. Add Preprocessing
              5. Taylor expanded in v around inf

                \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
              6. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{v}} \]
                2. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)\right), \color{blue}{v}\right) \]
                3. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{2}\right), v\right) \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
                5. *-lowering-*.f3255.4%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
              7. Simplified55.4%

                \[\leadsto \color{blue}{\frac{\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot 0.5}{v}} \]
              8. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{v} \]
                2. associate-/l*N/A

                  \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
                3. frac-2negN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{\mathsf{neg}\left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{\mathsf{neg}\left(v\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)} \]
                5. un-div-invN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \color{blue}{\frac{1}{\mathsf{neg}\left(v\right)}}\right) \]
                6. metadata-evalN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(\color{blue}{v}\right)}\right) \]
                7. frac-2negN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{\color{blue}{v}}\right) \]
                8. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \color{blue}{\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{v}\right)}\right) \]
                9. *-commutativeN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\left(\mathsf{neg}\left(cosTheta\_O \cdot cosTheta\_i\right)\right) \cdot \frac{-1}{v}\right)\right) \]
                10. distribute-lft-neg-outN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{-1}{v}\right)\right)\right) \]
                11. frac-2negN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                12. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                13. div-invN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\frac{cosTheta\_O \cdot cosTheta\_i}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                14. associate-/l*N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(cosTheta\_O \cdot \frac{cosTheta\_i}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                15. distribute-neg-frac2N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(cosTheta\_O \cdot \left(\mathsf{neg}\left(\frac{cosTheta\_i}{v}\right)\right)\right)\right)\right) \]
                16. distribute-rgt-neg-inN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{cosTheta\_i}{v}\right)\right)\right)\right)}\right)\right) \]
                17. remove-double-negN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \frac{cosTheta\_i}{\color{blue}{v}}\right)\right) \]
                18. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_O, \color{blue}{\left(\frac{cosTheta\_i}{v}\right)}\right)\right) \]
                19. /-lowering-/.f3255.3%

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \color{blue}{v}\right)\right)\right) \]
              9. Applied egg-rr55.3%

                \[\leadsto \color{blue}{0.5 \cdot \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right)} \]
              10. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\frac{cosTheta\_O \cdot cosTheta\_i}{\color{blue}{v}}\right)\right) \]
                2. *-commutativeN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right)\right) \]
                3. associate-/l*N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_i \cdot \color{blue}{\frac{cosTheta\_O}{v}}\right)\right) \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_i, \color{blue}{\left(\frac{cosTheta\_O}{v}\right)}\right)\right) \]
                5. /-lowering-/.f3255.3%

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, \color{blue}{v}\right)\right)\right) \]
              11. Applied egg-rr55.3%

                \[\leadsto 0.5 \cdot \color{blue}{\left(cosTheta\_i \cdot \frac{cosTheta\_O}{v}\right)} \]
              12. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \frac{1}{2} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{\color{blue}{v}} \]
                2. clear-numN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{1}{\color{blue}{\frac{v}{cosTheta\_i \cdot cosTheta\_O}}} \]
                3. un-div-invN/A

                  \[\leadsto \frac{\frac{1}{2}}{\color{blue}{\frac{v}{cosTheta\_i \cdot cosTheta\_O}}} \]
                4. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\frac{1}{2}, \color{blue}{\left(\frac{v}{cosTheta\_i \cdot cosTheta\_O}\right)}\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\frac{1}{2}, \mathsf{/.f32}\left(v, \color{blue}{\left(cosTheta\_i \cdot cosTheta\_O\right)}\right)\right) \]
                6. *-lowering-*.f3255.5%

                  \[\leadsto \mathsf{/.f32}\left(\frac{1}{2}, \mathsf{/.f32}\left(v, \mathsf{*.f32}\left(cosTheta\_i, \color{blue}{cosTheta\_O}\right)\right)\right) \]
              13. Applied egg-rr55.5%

                \[\leadsto \color{blue}{\frac{0.5}{\frac{v}{cosTheta\_i \cdot cosTheta\_O}}} \]
              14. Add Preprocessing

              Alternative 17: 58.4% accurate, 31.4× speedup?

              \[\begin{array}{l} \\ \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{0.5}{v} \end{array} \]
              (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
               :precision binary32
               (* (* cosTheta_i cosTheta_O) (/ 0.5 v)))
              float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
              	return (cosTheta_i * cosTheta_O) * (0.5f / v);
              }
              
              real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
                  real(4), intent (in) :: costheta_i
                  real(4), intent (in) :: costheta_o
                  real(4), intent (in) :: sintheta_i
                  real(4), intent (in) :: sintheta_o
                  real(4), intent (in) :: v
                  code = (costheta_i * costheta_o) * (0.5e0 / v)
              end function
              
              function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	return Float32(Float32(cosTheta_i * cosTheta_O) * Float32(Float32(0.5) / v))
              end
              
              function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	tmp = (cosTheta_i * cosTheta_O) * (single(0.5) / v);
              end
              
              \begin{array}{l}
              
              \\
              \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{0.5}{v}
              \end{array}
              
              Derivation
              1. Initial program 98.6%

                \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
              2. Step-by-step derivation
                1. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
                2. exp-negN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                3. associate-*l/N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                4. *-lft-identityN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                7. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                8. exp-lowering-exp.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
                9. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                10. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                11. associate-*l*N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                12. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                13. sinh-lowering-sinh.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
                14. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
                15. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
                16. *-lowering-*.f3298.6%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
              3. Simplified98.6%

                \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
              4. Add Preprocessing
              5. Taylor expanded in v around inf

                \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
              6. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{v}} \]
                2. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)\right), \color{blue}{v}\right) \]
                3. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{2}\right), v\right) \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
                5. *-lowering-*.f3255.4%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
              7. Simplified55.4%

                \[\leadsto \color{blue}{\frac{\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot 0.5}{v}} \]
              8. Step-by-step derivation
                1. associate-/l*N/A

                  \[\leadsto \left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \color{blue}{\frac{\frac{1}{2}}{v}} \]
                2. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{2}}{v} \cdot \color{blue}{\left(cosTheta\_O \cdot cosTheta\_i\right)} \]
                3. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\left(\frac{\frac{1}{2}}{v}\right), \color{blue}{\left(cosTheta\_O \cdot cosTheta\_i\right)}\right) \]
                4. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \left(\color{blue}{cosTheta\_O} \cdot cosTheta\_i\right)\right) \]
                5. *-commutativeN/A

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \left(cosTheta\_i \cdot \color{blue}{cosTheta\_O}\right)\right) \]
                6. *-lowering-*.f3255.4%

                  \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{*.f32}\left(cosTheta\_i, \color{blue}{cosTheta\_O}\right)\right) \]
              9. Applied egg-rr55.4%

                \[\leadsto \color{blue}{\frac{0.5}{v} \cdot \left(cosTheta\_i \cdot cosTheta\_O\right)} \]
              10. Final simplification55.4%

                \[\leadsto \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{0.5}{v} \]
              11. Add Preprocessing

              Alternative 18: 58.4% accurate, 31.4× speedup?

              \[\begin{array}{l} \\ cosTheta\_i \cdot \frac{cosTheta\_O}{\frac{v}{0.5}} \end{array} \]
              (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
               :precision binary32
               (* cosTheta_i (/ cosTheta_O (/ v 0.5))))
              float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
              	return cosTheta_i * (cosTheta_O / (v / 0.5f));
              }
              
              real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
                  real(4), intent (in) :: costheta_i
                  real(4), intent (in) :: costheta_o
                  real(4), intent (in) :: sintheta_i
                  real(4), intent (in) :: sintheta_o
                  real(4), intent (in) :: v
                  code = costheta_i * (costheta_o / (v / 0.5e0))
              end function
              
              function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	return Float32(cosTheta_i * Float32(cosTheta_O / Float32(v / Float32(0.5))))
              end
              
              function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	tmp = cosTheta_i * (cosTheta_O / (v / single(0.5)));
              end
              
              \begin{array}{l}
              
              \\
              cosTheta\_i \cdot \frac{cosTheta\_O}{\frac{v}{0.5}}
              \end{array}
              
              Derivation
              1. Initial program 98.6%

                \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
              2. Step-by-step derivation
                1. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
                2. exp-negN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                3. associate-*l/N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                4. *-lft-identityN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                7. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                8. exp-lowering-exp.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
                9. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                10. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                11. associate-*l*N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                12. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                13. sinh-lowering-sinh.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
                14. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
                15. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
                16. *-lowering-*.f3298.6%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
              3. Simplified98.6%

                \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
              4. Add Preprocessing
              5. Taylor expanded in v around inf

                \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
              6. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{v}} \]
                2. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)\right), \color{blue}{v}\right) \]
                3. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{2}\right), v\right) \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
                5. *-lowering-*.f3255.4%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
              7. Simplified55.4%

                \[\leadsto \color{blue}{\frac{\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot 0.5}{v}} \]
              8. Step-by-step derivation
                1. associate-/l*N/A

                  \[\leadsto \left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \color{blue}{\frac{\frac{1}{2}}{v}} \]
                2. *-commutativeN/A

                  \[\leadsto \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\color{blue}{\frac{1}{2}}}{v} \]
                3. associate-*l*N/A

                  \[\leadsto cosTheta\_i \cdot \color{blue}{\left(cosTheta\_O \cdot \frac{\frac{1}{2}}{v}\right)} \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \color{blue}{\left(cosTheta\_O \cdot \frac{\frac{1}{2}}{v}\right)}\right) \]
                5. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \left(cosTheta\_O \cdot \frac{\frac{1}{2}}{v}\right)\right) \]
                6. associate-/r*N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \left(cosTheta\_O \cdot \frac{1}{\color{blue}{2 \cdot v}}\right)\right) \]
                7. *-commutativeN/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \left(cosTheta\_O \cdot \frac{1}{v \cdot \color{blue}{2}}\right)\right) \]
                8. un-div-invN/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_O}{\color{blue}{v \cdot 2}}\right)\right) \]
                9. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, \color{blue}{\left(v \cdot 2\right)}\right)\right) \]
                10. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, \left(v \cdot \frac{1}{\color{blue}{\frac{1}{2}}}\right)\right)\right) \]
                11. div-invN/A

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, \left(\frac{v}{\color{blue}{\frac{1}{2}}}\right)\right)\right) \]
                12. /-lowering-/.f3255.4%

                  \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \color{blue}{\frac{1}{2}}\right)\right)\right) \]
              9. Applied egg-rr55.4%

                \[\leadsto \color{blue}{cosTheta\_i \cdot \frac{cosTheta\_O}{\frac{v}{0.5}}} \]
              10. Add Preprocessing

              Alternative 19: 58.4% accurate, 31.4× speedup?

              \[\begin{array}{l} \\ 0.5 \cdot \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right) \end{array} \]
              (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
               :precision binary32
               (* 0.5 (* cosTheta_O (/ cosTheta_i v))))
              float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
              	return 0.5f * (cosTheta_O * (cosTheta_i / v));
              }
              
              real(4) function code(costheta_i, costheta_o, sintheta_i, sintheta_o, v)
                  real(4), intent (in) :: costheta_i
                  real(4), intent (in) :: costheta_o
                  real(4), intent (in) :: sintheta_i
                  real(4), intent (in) :: sintheta_o
                  real(4), intent (in) :: v
                  code = 0.5e0 * (costheta_o * (costheta_i / v))
              end function
              
              function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	return Float32(Float32(0.5) * Float32(cosTheta_O * Float32(cosTheta_i / v)))
              end
              
              function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
              	tmp = single(0.5) * (cosTheta_O * (cosTheta_i / v));
              end
              
              \begin{array}{l}
              
              \\
              0.5 \cdot \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right)
              \end{array}
              
              Derivation
              1. Initial program 98.6%

                \[\frac{e^{-\frac{sinTheta\_i \cdot sinTheta\_O}{v}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v} \]
              2. Step-by-step derivation
                1. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(e^{\mathsf{neg}\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \color{blue}{\left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)}\right) \]
                2. exp-negN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                3. associate-*l/N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1 \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                4. *-lft-identityN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                5. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{cosTheta\_i \cdot cosTheta\_O}{v}\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right)} \cdot v\right)\right) \]
                6. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_i \cdot cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\color{blue}{\sinh \left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                7. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \left(e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}\right)\right), \left(\left(\sinh \color{blue}{\left(\frac{1}{v}\right)} \cdot 2\right) \cdot v\right)\right) \]
                8. exp-lowering-exp.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\left(\frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{2}\right) \cdot v\right)\right) \]
                9. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\left(sinTheta\_i \cdot sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                10. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\left(\sinh \left(\frac{1}{v}\right) \cdot 2\right) \cdot v\right)\right) \]
                11. associate-*l*N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                12. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\sinh \left(\frac{1}{v}\right), \color{blue}{\left(2 \cdot v\right)}\right)\right) \]
                13. sinh-lowering-sinh.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\left(\frac{1}{v}\right)\right), \left(\color{blue}{2} \cdot v\right)\right)\right) \]
                14. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(2 \cdot v\right)\right)\right) \]
                15. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(v \cdot \color{blue}{2}\right)\right)\right) \]
                16. *-lowering-*.f3298.6%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, sinTheta\_O\right), v\right)\right)\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{*.f32}\left(v, \color{blue}{2}\right)\right)\right) \]
              3. Simplified98.6%

                \[\leadsto \color{blue}{\frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)}} \]
              4. Add Preprocessing
              5. Taylor expanded in v around inf

                \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
              6. Step-by-step derivation
                1. associate-*r/N/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{v}} \]
                2. /-lowering-/.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)\right), \color{blue}{v}\right) \]
                3. *-commutativeN/A

                  \[\leadsto \mathsf{/.f32}\left(\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{2}\right), v\right) \]
                4. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
                5. *-lowering-*.f3255.4%

                  \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \frac{1}{2}\right), v\right) \]
              7. Simplified55.4%

                \[\leadsto \color{blue}{\frac{\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot 0.5}{v}} \]
              8. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(cosTheta\_O \cdot cosTheta\_i\right)}{v} \]
                2. associate-/l*N/A

                  \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{cosTheta\_O \cdot cosTheta\_i}{v}} \]
                3. frac-2negN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{\mathsf{neg}\left(cosTheta\_O \cdot cosTheta\_i\right)}{\color{blue}{\mathsf{neg}\left(v\right)}} \]
                4. *-commutativeN/A

                  \[\leadsto \frac{1}{2} \cdot \frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)} \]
                5. un-div-invN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \color{blue}{\frac{1}{\mathsf{neg}\left(v\right)}}\right) \]
                6. metadata-evalN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(\color{blue}{v}\right)}\right) \]
                7. frac-2negN/A

                  \[\leadsto \frac{1}{2} \cdot \left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{\color{blue}{v}}\right) \]
                8. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \color{blue}{\left(\left(\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)\right) \cdot \frac{-1}{v}\right)}\right) \]
                9. *-commutativeN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\left(\mathsf{neg}\left(cosTheta\_O \cdot cosTheta\_i\right)\right) \cdot \frac{-1}{v}\right)\right) \]
                10. distribute-lft-neg-outN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{-1}{v}\right)\right)\right) \]
                11. frac-2negN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{\mathsf{neg}\left(-1\right)}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                12. metadata-evalN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot \frac{1}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                13. div-invN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(\frac{cosTheta\_O \cdot cosTheta\_i}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                14. associate-/l*N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(cosTheta\_O \cdot \frac{cosTheta\_i}{\mathsf{neg}\left(v\right)}\right)\right)\right) \]
                15. distribute-neg-frac2N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\mathsf{neg}\left(cosTheta\_O \cdot \left(\mathsf{neg}\left(\frac{cosTheta\_i}{v}\right)\right)\right)\right)\right) \]
                16. distribute-rgt-neg-inN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(\frac{cosTheta\_i}{v}\right)\right)\right)\right)}\right)\right) \]
                17. remove-double-negN/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \frac{cosTheta\_i}{\color{blue}{v}}\right)\right) \]
                18. *-lowering-*.f32N/A

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_O, \color{blue}{\left(\frac{cosTheta\_i}{v}\right)}\right)\right) \]
                19. /-lowering-/.f3255.3%

                  \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(cosTheta\_i, \color{blue}{v}\right)\right)\right) \]
              9. Applied egg-rr55.3%

                \[\leadsto \color{blue}{0.5 \cdot \left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right)} \]
              10. Add Preprocessing

              Reproduce

              ?
              herbie shell --seed 2024164 
              (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
                :name "HairBSDF, Mp, upper"
                :precision binary32
                :pre (and (and (and (and (and (and (<= -1.0 cosTheta_i) (<= cosTheta_i 1.0)) (and (<= -1.0 cosTheta_O) (<= cosTheta_O 1.0))) (and (<= -1.0 sinTheta_i) (<= sinTheta_i 1.0))) (and (<= -1.0 sinTheta_O) (<= sinTheta_O 1.0))) (< 0.1 v)) (<= v 1.5707964))
                (/ (* (exp (- (/ (* sinTheta_i sinTheta_O) v))) (/ (* cosTheta_i cosTheta_O) v)) (* (* (sinh (/ 1.0 v)) 2.0) v)))