HairBSDF, Mp, upper

Percentage Accurate: 98.6% → 98.8%
Time: 21.1s
Alternatives: 19
Speedup: 1.8×

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.0× speedup?

\[\begin{array}{l} \\ \frac{\frac{cosTheta\_i \cdot \left(cosTheta\_O \cdot \frac{1}{v}\right)}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (/
  (/
   (* cosTheta_i (* cosTheta_O (/ 1.0 v)))
   (exp (/ (* sinTheta_i sinTheta_O) v)))
  (* (sinh (/ 1.0 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 * (1.0f / v))) / expf(((sinTheta_i * sinTheta_O) / v))) / (sinhf((1.0f / 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 * (1.0e0 / v))) / exp(((sintheta_i * sintheta_o) / v))) / (sinh((1.0e0 / v)) * (v * 2.0e0))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(Float32(cosTheta_i * Float32(cosTheta_O * Float32(Float32(1.0) / v))) / exp(Float32(Float32(sinTheta_i * sinTheta_O) / v))) / Float32(sinh(Float32(Float32(1.0) / v)) * Float32(v * Float32(2.0))))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = ((cosTheta_i * (cosTheta_O * (single(1.0) / v))) / exp(((sinTheta_i * sinTheta_O) / v))) / (sinh((single(1.0) / v)) * (v * single(2.0)));
end
\begin{array}{l}

\\
\frac{\frac{cosTheta\_i \cdot \left(cosTheta\_O \cdot \frac{1}{v}\right)}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 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. Step-by-step derivation
    1. frac-2negN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)}\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    2. distribute-lft-neg-inN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot cosTheta\_O}{\mathsf{neg}\left(v\right)}\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(\color{blue}{1}, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    3. associate-/l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot \frac{cosTheta\_O}{\mathsf{neg}\left(v\right)}\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    4. distribute-neg-frac2N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    5. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right), \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    6. neg-lowering-neg.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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(\color{blue}{1}, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    7. div-invN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(\mathsf{neg}\left(cosTheta\_O \cdot \frac{1}{v}\right)\right)\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, 2\right)\right)\right) \]
    8. distribute-rgt-neg-inN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(cosTheta\_O \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    9. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    10. distribute-neg-fracN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{\mathsf{neg}\left(1\right)}{v}\right)\right)\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, 2\right)\right)\right) \]
    11. metadata-evalN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{-1}{v}\right)\right)\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, 2\right)\right)\right) \]
    12. /-lowering-/.f3299.0%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(-1, v\right)\right)\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, 2\right)\right)\right) \]
  6. Applied egg-rr99.0%

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

    \[\leadsto \frac{\frac{cosTheta\_i \cdot \left(cosTheta\_O \cdot \frac{1}{v}\right)}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
  8. Add Preprocessing

Alternative 2: 98.8% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \left(\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_O}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}\right) \cdot \frac{cosTheta\_i}{v} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (*
  (*
   (/ (/ 0.5 v) (sinh (/ 1.0 v)))
   (/ cosTheta_O (exp (/ sinTheta_i (/ v sinTheta_O)))))
  (/ cosTheta_i 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_O / expf((sinTheta_i / (v / sinTheta_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 / v) / sinh((1.0e0 / v))) * (costheta_o / exp((sintheta_i / (v / sintheta_o))))) * (costheta_i / v)
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(Float32(Float32(Float32(0.5) / v) / sinh(Float32(Float32(1.0) / v))) * Float32(cosTheta_O / exp(Float32(sinTheta_i / Float32(v / sinTheta_O))))) * Float32(cosTheta_i / 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_O / exp((sinTheta_i / (v / sinTheta_O))))) * (cosTheta_i / v);
end
\begin{array}{l}

\\
\left(\frac{\frac{0.5}{v}}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_O}{e^{\frac{sinTheta\_i}{\frac{v}{sinTheta\_O}}}}\right) \cdot \frac{cosTheta\_i}{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. clear-numN/A

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

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

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

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

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

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

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

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

Alternative 3: 98.7% accurate, 1.8× speedup?

\[\begin{array}{l} \\ \frac{\frac{cosTheta\_O}{v} \cdot \left(cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)}{\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 v)
   (- cosTheta_i (* cosTheta_i (/ (* sinTheta_i sinTheta_O) 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 / v) * (cosTheta_i - (cosTheta_i * ((sinTheta_i * sinTheta_O) / 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 / v) * (costheta_i - (costheta_i * ((sintheta_i * sintheta_o) / v)))) / (sinh((1.0e0 / v)) / (0.5e0 / v))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(Float32(cosTheta_O / v) * Float32(cosTheta_i - Float32(cosTheta_i * Float32(Float32(sinTheta_i * sinTheta_O) / 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 / v) * (cosTheta_i - (cosTheta_i * ((sinTheta_i * sinTheta_O) / v)))) / (sinh((single(1.0) / v)) / (single(0.5) / v));
end
\begin{array}{l}

\\
\frac{\frac{cosTheta\_O}{v} \cdot \left(cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}\right)}{\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. Taylor expanded in v around inf

    \[\leadsto \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    3. mul-1-negN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    4. sub-negN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    5. associate-/l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    6. distribute-lft-out--N/A

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
  8. Step-by-step derivation
    1. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}\right)\right)\right)\right), \left(\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(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{sinTheta\_i \cdot sinTheta\_O}\right)\right)\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right)\right) \]
    13. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 4: 98.7% accurate, 1.8× speedup?

\[\begin{array}{l} \\ \frac{\frac{cosTheta\_O}{\frac{v}{cosTheta\_i} + \frac{sinTheta\_i \cdot sinTheta\_O}{cosTheta\_i}}}{\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 (+ (/ v cosTheta_i) (/ (* sinTheta_i sinTheta_O) cosTheta_i)))
  (/ (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 / ((v / cosTheta_i) + ((sinTheta_i * sinTheta_O) / cosTheta_i))) / (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 / ((v / costheta_i) + ((sintheta_i * sintheta_o) / costheta_i))) / (sinh((1.0e0 / v)) / (0.5e0 / v))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(cosTheta_O / Float32(Float32(v / cosTheta_i) + Float32(Float32(sinTheta_i * sinTheta_O) / cosTheta_i))) / 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 / ((v / cosTheta_i) + ((sinTheta_i * sinTheta_O) / cosTheta_i))) / (sinh((single(1.0) / v)) / (single(0.5) / v));
end
\begin{array}{l}

\\
\frac{\frac{cosTheta\_O}{\frac{v}{cosTheta\_i} + \frac{sinTheta\_i \cdot sinTheta\_O}{cosTheta\_i}}}{\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. Taylor expanded in v around inf

    \[\leadsto \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    3. mul-1-negN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    4. sub-negN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    5. associate-/l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    6. distribute-lft-out--N/A

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
  8. Step-by-step derivation
    1. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}\right)\right)\right)\right), \left(\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(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{sinTheta\_i \cdot sinTheta\_O}\right)\right)\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right)\right) \]
    13. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 5: 98.5% accurate, 1.8× speedup?

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

\\
\frac{0.5}{v} \cdot \frac{\frac{cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\frac{v}{cosTheta\_i} + \frac{sinTheta\_i \cdot sinTheta\_O}{cosTheta\_i}}
\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. frac-2negN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)}\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    2. distribute-lft-neg-inN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot cosTheta\_O}{\mathsf{neg}\left(v\right)}\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(\color{blue}{1}, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    3. associate-/l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot \frac{cosTheta\_O}{\mathsf{neg}\left(v\right)}\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    4. distribute-neg-frac2N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    5. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right), \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    6. neg-lowering-neg.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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(\color{blue}{1}, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    7. div-invN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(\mathsf{neg}\left(cosTheta\_O \cdot \frac{1}{v}\right)\right)\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, 2\right)\right)\right) \]
    8. distribute-rgt-neg-inN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(cosTheta\_O \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    9. *-lowering-*.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    10. distribute-neg-fracN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{\mathsf{neg}\left(1\right)}{v}\right)\right)\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, 2\right)\right)\right) \]
    11. metadata-evalN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{-1}{v}\right)\right)\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, 2\right)\right)\right) \]
    12. /-lowering-/.f3299.0%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(-1, v\right)\right)\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, 2\right)\right)\right) \]
  6. Applied egg-rr99.0%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 6: 98.5% accurate, 1.9× speedup?

\[\begin{array}{l} \\ \frac{cosTheta\_i \cdot \frac{cosTheta\_O}{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_i (/ cosTheta_O 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_i * (cosTheta_O / 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_i * (costheta_o / v)) / (sinh((1.0e0 / v)) / (0.5e0 / v))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(cosTheta_i * Float32(cosTheta_O / 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_i * (cosTheta_O / v)) / (sinh((single(1.0) / v)) / (single(0.5) / v));
end
\begin{array}{l}

\\
\frac{cosTheta\_i \cdot \frac{cosTheta\_O}{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. Taylor expanded in v around inf

    \[\leadsto \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    3. mul-1-negN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    4. sub-negN/A

      \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    5. associate-/l*N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    6. distribute-lft-out--N/A

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
  8. Step-by-step derivation
    1. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}\right)\right)\right)\right), \left(\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(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{sinTheta\_i \cdot sinTheta\_O}\right)\right)\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right)\right) \]
    13. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Alternative 7: 98.4% accurate, 1.9× speedup?

    \[\begin{array}{l} \\ \frac{0.5}{v} \cdot \frac{\frac{cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\frac{v}{cosTheta\_i}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (* (/ 0.5 v) (/ (/ cosTheta_O (sinh (/ 1.0 v))) (/ v cosTheta_i))))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return (0.5f / v) * ((cosTheta_O / sinhf((1.0f / v))) / (v / cosTheta_i));
    }
    
    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_o / sinh((1.0e0 / v))) / (v / costheta_i))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(Float32(0.5) / v) * Float32(Float32(cosTheta_O / sinh(Float32(Float32(1.0) / v))) / Float32(v / cosTheta_i)))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = (single(0.5) / v) * ((cosTheta_O / sinh((single(1.0) / v))) / (v / cosTheta_i));
    end
    
    \begin{array}{l}
    
    \\
    \frac{0.5}{v} \cdot \frac{\frac{cosTheta\_O}{\sinh \left(\frac{1}{v}\right)}}{\frac{v}{cosTheta\_i}}
    \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. frac-2negN/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{\mathsf{neg}\left(cosTheta\_i \cdot cosTheta\_O\right)}{\mathsf{neg}\left(v\right)}\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      2. distribute-lft-neg-inN/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\frac{\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot cosTheta\_O}{\mathsf{neg}\left(v\right)}\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(\color{blue}{1}, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      3. associate-/l*N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot \frac{cosTheta\_O}{\mathsf{neg}\left(v\right)}\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      4. distribute-neg-frac2N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right) \cdot \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      5. *-lowering-*.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\left(\mathsf{neg}\left(cosTheta\_i\right)\right), \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      6. neg-lowering-neg.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(\mathsf{neg}\left(\frac{cosTheta\_O}{v}\right)\right)\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(\color{blue}{1}, v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      7. div-invN/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(\mathsf{neg}\left(cosTheta\_O \cdot \frac{1}{v}\right)\right)\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, 2\right)\right)\right) \]
      8. distribute-rgt-neg-inN/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \left(cosTheta\_O \cdot \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      9. *-lowering-*.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\mathsf{neg}\left(\frac{1}{v}\right)\right)\right)\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, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      10. distribute-neg-fracN/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{\mathsf{neg}\left(1\right)}{v}\right)\right)\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, 2\right)\right)\right) \]
      11. metadata-evalN/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \left(\frac{-1}{v}\right)\right)\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, 2\right)\right)\right) \]
      12. /-lowering-/.f3299.0%

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{neg.f32}\left(cosTheta\_i\right), \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(-1, v\right)\right)\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, 2\right)\right)\right) \]
    6. Applied egg-rr99.0%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, v\right)\right)\right), \color{blue}{\left(\frac{v}{cosTheta\_i}\right)}\right), \mathsf{/.f32}\left(\frac{1}{2}, v\right)\right) \]
    10. Step-by-step derivation
      1. /-lowering-/.f3298.4%

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

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

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

    Alternative 8: 98.4% accurate, 1.9× speedup?

    \[\begin{array}{l} \\ \frac{cosTheta\_O}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_i \cdot 0.5}{v \cdot v} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (* (/ cosTheta_O (sinh (/ 1.0 v))) (/ (* cosTheta_i 0.5) (* v v))))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return (cosTheta_O / sinhf((1.0f / v))) * ((cosTheta_i * 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_o / sinh((1.0e0 / v))) * ((costheta_i * 0.5e0) / (v * v))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(cosTheta_O / sinh(Float32(Float32(1.0) / v))) * Float32(Float32(cosTheta_i * Float32(0.5)) / Float32(v * v)))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = (cosTheta_O / sinh((single(1.0) / v))) * ((cosTheta_i * single(0.5)) / (v * v));
    end
    
    \begin{array}{l}
    
    \\
    \frac{cosTheta\_O}{\sinh \left(\frac{1}{v}\right)} \cdot \frac{cosTheta\_i \cdot 0.5}{v \cdot 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}{v}}{\color{blue}{\left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right) \cdot e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}} \]
      2. *-commutativeN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Alternative 9: 70.7% accurate, 6.7× speedup?

    \[\begin{array}{l} \\ \frac{cosTheta\_O}{\frac{\frac{v}{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}}}{\frac{\frac{0.5}{v}}{\frac{\frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{v \cdot v} + 1}{v}}}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/
      cosTheta_O
      (/
       (/ v (- cosTheta_i (* cosTheta_i (/ (* sinTheta_i sinTheta_O) v))))
       (/
        (/ 0.5 v)
        (/
         (+
          (/ (+ 0.16666666666666666 (/ 0.008333333333333333 (* v v))) (* v v))
          1.0)
         v)))))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return cosTheta_O / ((v / (cosTheta_i - (cosTheta_i * ((sinTheta_i * sinTheta_O) / v)))) / ((0.5f / v) / ((((0.16666666666666666f + (0.008333333333333333f / (v * v))) / (v * 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_o / ((v / (costheta_i - (costheta_i * ((sintheta_i * sintheta_o) / v)))) / ((0.5e0 / v) / ((((0.16666666666666666e0 + (0.008333333333333333e0 / (v * v))) / (v * v)) + 1.0e0) / v)))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(cosTheta_O / Float32(Float32(v / Float32(cosTheta_i - Float32(cosTheta_i * Float32(Float32(sinTheta_i * sinTheta_O) / v)))) / Float32(Float32(Float32(0.5) / v) / Float32(Float32(Float32(Float32(Float32(0.16666666666666666) + Float32(Float32(0.008333333333333333) / Float32(v * v))) / Float32(v * v)) + Float32(1.0)) / v))))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = cosTheta_O / ((v / (cosTheta_i - (cosTheta_i * ((sinTheta_i * sinTheta_O) / v)))) / ((single(0.5) / v) / ((((single(0.16666666666666666) + (single(0.008333333333333333) / (v * v))) / (v * v)) + single(1.0)) / v)));
    end
    
    \begin{array}{l}
    
    \\
    \frac{cosTheta\_O}{\frac{\frac{v}{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}}}{\frac{\frac{0.5}{v}}{\frac{\frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{v \cdot v} + 1}{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 \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      3. mul-1-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      4. sub-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      5. associate-/l*N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      6. distribute-lft-out--N/A

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    8. Step-by-step derivation
      1. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}\right)\right)\right)\right), \left(\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(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{sinTheta\_i \cdot sinTheta\_O}\right)\right)\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right)\right) \]
      13. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right), v\right)\right)\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right), \color{blue}{\left(-1 \cdot v\right)}\right)\right)\right)\right) \]
    14. Simplified69.8%

      \[\leadsto \frac{cosTheta\_O}{\frac{\frac{v}{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_O \cdot sinTheta\_i}{v}}}{\frac{\frac{0.5}{v}}{\color{blue}{\frac{\frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{-1 \cdot \left(v \cdot v\right)} + -1}{-v}}}}} \]
    15. Final simplification69.8%

      \[\leadsto \frac{cosTheta\_O}{\frac{\frac{v}{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}}}{\frac{\frac{0.5}{v}}{\frac{\frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{v \cdot v} + 1}{v}}}} \]
    16. Add Preprocessing

    Alternative 10: 70.7% accurate, 6.7× speedup?

    \[\begin{array}{l} \\ \frac{\frac{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)}{v}\right)}{v}}{\left(v \cdot 2\right) \cdot \frac{\frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{v \cdot v} + 1}{v}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/
      (/
       (* cosTheta_O (- cosTheta_i (/ (* cosTheta_i (* sinTheta_i sinTheta_O)) v)))
       v)
      (*
       (* v 2.0)
       (/
        (+
         (/ (+ 0.16666666666666666 (/ 0.008333333333333333 (* v v))) (* v v))
         1.0)
        v))))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return ((cosTheta_O * (cosTheta_i - ((cosTheta_i * (sinTheta_i * sinTheta_O)) / v))) / v) / ((v * 2.0f) * ((((0.16666666666666666f + (0.008333333333333333f / (v * v))) / (v * 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_o * (costheta_i - ((costheta_i * (sintheta_i * sintheta_o)) / v))) / v) / ((v * 2.0e0) * ((((0.16666666666666666e0 + (0.008333333333333333e0 / (v * v))) / (v * v)) + 1.0e0) / v))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(Float32(cosTheta_O * Float32(cosTheta_i - Float32(Float32(cosTheta_i * Float32(sinTheta_i * sinTheta_O)) / v))) / v) / Float32(Float32(v * Float32(2.0)) * Float32(Float32(Float32(Float32(Float32(0.16666666666666666) + Float32(Float32(0.008333333333333333) / Float32(v * v))) / Float32(v * v)) + Float32(1.0)) / v)))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = ((cosTheta_O * (cosTheta_i - ((cosTheta_i * (sinTheta_i * sinTheta_O)) / v))) / v) / ((v * single(2.0)) * ((((single(0.16666666666666666) + (single(0.008333333333333333) / (v * v))) / (v * v)) + single(1.0)) / v));
    end
    
    \begin{array}{l}
    
    \\
    \frac{\frac{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_i \cdot sinTheta\_O\right)}{v}\right)}{v}}{\left(v \cdot 2\right) \cdot \frac{\frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{v \cdot v} + 1}{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 \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      3. mul-1-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      4. sub-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      5. associate-/l*N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      6. distribute-lft-out--N/A

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    8. Taylor expanded in v around -inf

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right), \left(-1 \cdot v\right)\right), \mathsf{*.f32}\left(\color{blue}{v}, 2\right)\right)\right) \]
    10. Simplified69.8%

      \[\leadsto \frac{\frac{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}{\color{blue}{\frac{\frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{-v \cdot v} + -1}{-v}} \cdot \left(v \cdot 2\right)} \]
    11. Final simplification69.8%

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

    Alternative 11: 64.5% accurate, 8.1× speedup?

    \[\begin{array}{l} \\ \frac{cosTheta\_O}{\frac{\frac{v}{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}}}{\frac{\frac{0.5}{v}}{\frac{\frac{0.16666666666666666}{v \cdot v} + 1}{v}}}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/
      cosTheta_O
      (/
       (/ v (- cosTheta_i (* cosTheta_i (/ (* sinTheta_i sinTheta_O) v))))
       (/ (/ 0.5 v) (/ (+ (/ 0.16666666666666666 (* v v)) 1.0) v)))))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return cosTheta_O / ((v / (cosTheta_i - (cosTheta_i * ((sinTheta_i * sinTheta_O) / v)))) / ((0.5f / v) / (((0.16666666666666666f / (v * 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_o / ((v / (costheta_i - (costheta_i * ((sintheta_i * sintheta_o) / v)))) / ((0.5e0 / v) / (((0.16666666666666666e0 / (v * v)) + 1.0e0) / v)))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(cosTheta_O / Float32(Float32(v / Float32(cosTheta_i - Float32(cosTheta_i * Float32(Float32(sinTheta_i * sinTheta_O) / v)))) / Float32(Float32(Float32(0.5) / v) / Float32(Float32(Float32(Float32(0.16666666666666666) / Float32(v * v)) + Float32(1.0)) / v))))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = cosTheta_O / ((v / (cosTheta_i - (cosTheta_i * ((sinTheta_i * sinTheta_O) / v)))) / ((single(0.5) / v) / (((single(0.16666666666666666) / (v * v)) + single(1.0)) / v)));
    end
    
    \begin{array}{l}
    
    \\
    \frac{cosTheta\_O}{\frac{\frac{v}{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}}}{\frac{\frac{0.5}{v}}{\frac{\frac{0.16666666666666666}{v \cdot v} + 1}{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 \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      3. mul-1-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      4. sub-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      5. associate-/l*N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      6. distribute-lft-out--N/A

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    8. Step-by-step derivation
      1. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}\right)\right)\right)\right), \left(\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(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{sinTheta\_i \cdot sinTheta\_O}\right)\right)\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right)\right) \]
      13. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{cosTheta\_O}{\frac{\frac{v}{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_O \cdot sinTheta\_i}{v}}}{\frac{\frac{0.5}{v}}{\color{blue}{\frac{1 + \frac{0.16666666666666666}{v \cdot v}}{v}}}}} \]
    15. Final simplification63.4%

      \[\leadsto \frac{cosTheta\_O}{\frac{\frac{v}{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}}}{\frac{\frac{0.5}{v}}{\frac{\frac{0.16666666666666666}{v \cdot v} + 1}{v}}}} \]
    16. Add Preprocessing

    Alternative 12: 64.5% accurate, 10.5× speedup?

    \[\begin{array}{l} \\ \frac{cosTheta\_O}{\frac{2 + \frac{0.3333333333333333}{v \cdot v}}{\frac{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{v}}{v}}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/
      cosTheta_O
      (/
       (+ 2.0 (/ 0.3333333333333333 (* v v)))
       (/ (- cosTheta_i (* cosTheta_i (/ (* sinTheta_i sinTheta_O) v))) v))))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return cosTheta_O / ((2.0f + (0.3333333333333333f / (v * v))) / ((cosTheta_i - (cosTheta_i * ((sinTheta_i * sinTheta_O) / 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 / ((2.0e0 + (0.3333333333333333e0 / (v * v))) / ((costheta_i - (costheta_i * ((sintheta_i * sintheta_o) / v))) / v))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(cosTheta_O / Float32(Float32(Float32(2.0) + Float32(Float32(0.3333333333333333) / Float32(v * v))) / Float32(Float32(cosTheta_i - Float32(cosTheta_i * Float32(Float32(sinTheta_i * sinTheta_O) / v))) / v)))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = cosTheta_O / ((single(2.0) + (single(0.3333333333333333) / (v * v))) / ((cosTheta_i - (cosTheta_i * ((sinTheta_i * sinTheta_O) / v))) / v));
    end
    
    \begin{array}{l}
    
    \\
    \frac{cosTheta\_O}{\frac{2 + \frac{0.3333333333333333}{v \cdot v}}{\frac{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_i \cdot sinTheta\_O}{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. Taylor expanded in v around inf

      \[\leadsto \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      3. mul-1-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      4. sub-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      5. associate-/l*N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      6. distribute-lft-out--N/A

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    8. Step-by-step derivation
      1. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}\right)\right)\right)\right), \left(\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(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{sinTheta\_i \cdot sinTheta\_O}\right)\right)\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right)\right) \]
      13. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{\frac{cosTheta\_O}{\frac{v}{cosTheta\_i - \frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}}}}{\color{blue}{2 + \frac{0.3333333333333333}{v \cdot v}}} \]
    13. Step-by-step derivation
      1. associate-/l/N/A

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

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

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

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

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

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

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

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

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

        \[\leadsto \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), \left(\frac{cosTheta\_i - \color{blue}{cosTheta\_i \cdot \frac{sinTheta\_O \cdot sinTheta\_i}{v}}}{v}\right)\right)\right) \]
      11. *-lowering-*.f32N/A

        \[\leadsto \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), \left(\frac{cosTheta\_i - cosTheta\_i \cdot \color{blue}{\frac{sinTheta\_O \cdot sinTheta\_i}{v}}}{v}\right)\right)\right) \]
      12. /-lowering-/.f32N/A

        \[\leadsto \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), \mathsf{/.f32}\left(\left(cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_O \cdot sinTheta\_i}{v}\right), \color{blue}{v}\right)\right)\right) \]
    14. Applied egg-rr63.4%

      \[\leadsto \color{blue}{\frac{cosTheta\_O}{\frac{2 + \frac{0.3333333333333333}{v \cdot v}}{\frac{cosTheta\_i - cosTheta\_i \cdot \frac{sinTheta\_O \cdot sinTheta\_i}{v}}{v}}}} \]
    15. Final simplification63.4%

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

    Alternative 13: 64.4% accurate, 16.9× speedup?

    \[\begin{array}{l} \\ \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{2 + \frac{0.3333333333333333}{v \cdot v}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/ (/ (* cosTheta_i cosTheta_O) 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) / 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) / 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) / 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) / v) / (single(2.0) + (single(0.3333333333333333) / (v * v)));
    end
    
    \begin{array}{l}
    
    \\
    \frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{2 + \frac{0.3333333333333333}{v \cdot 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 \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      3. mul-1-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      4. sub-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      5. associate-/l*N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      6. distribute-lft-out--N/A

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    8. Step-by-step derivation
      1. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}\right)\right)\right)\right), \left(\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(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{sinTheta\_i \cdot sinTheta\_O}\right)\right)\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right)\right) \]
      13. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{\frac{cosTheta\_O}{\frac{v}{cosTheta\_i - \frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}}}}{\color{blue}{2 + \frac{0.3333333333333333}{v \cdot v}}} \]
    13. 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)}} \]
    14. Step-by-step derivation
      1. associate-/r*N/A

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \color{blue}{\frac{\frac{cosTheta\_O \cdot cosTheta\_i}{v}}{2 + \frac{0.3333333333333333}{v \cdot v}}} \]
    16. Final simplification63.3%

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

    Alternative 14: 64.4% accurate, 16.9× speedup?

    \[\begin{array}{l} \\ \frac{\frac{cosTheta\_O}{\frac{v}{cosTheta\_i}}}{2 + \frac{0.3333333333333333}{v \cdot v}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/ (/ cosTheta_O (/ v cosTheta_i)) (+ 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 / (v / cosTheta_i)) / (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 / (v / costheta_i)) / (2.0e0 + (0.3333333333333333e0 / (v * v)))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(cosTheta_O / Float32(v / cosTheta_i)) / 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 / (v / cosTheta_i)) / (single(2.0) + (single(0.3333333333333333) / (v * v)));
    end
    
    \begin{array}{l}
    
    \\
    \frac{\frac{cosTheta\_O}{\frac{v}{cosTheta\_i}}}{2 + \frac{0.3333333333333333}{v \cdot 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 \mathsf{/.f32}\left(\color{blue}{\left(\frac{-1 \cdot \frac{cosTheta\_O \cdot \left(cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)\right)}{v} + cosTheta\_O \cdot cosTheta\_i}{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. /-lowering-/.f32N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\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), v\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. +-commutativeN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      3. mul-1-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      4. sub-negN/A

        \[\leadsto \mathsf{/.f32}\left(\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), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\color{blue}{\mathsf{/.f32}\left(1, v\right)}\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      5. associate-/l*N/A

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\left(cosTheta\_O \cdot cosTheta\_i - cosTheta\_O \cdot \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right), v\right), \mathsf{*.f32}\left(\mathsf{sinh.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{v}\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
      6. distribute-lft-out--N/A

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_i\right)\right), v\right)\right)\right), v\right), \mathsf{*.f32}\left(\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{cosTheta\_O \cdot \left(cosTheta\_i - \frac{cosTheta\_i \cdot \left(sinTheta\_O \cdot sinTheta\_i\right)}{v}\right)}{v}}}{\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)} \]
    8. Step-by-step derivation
      1. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}\right)\right)\right)\right), \left(\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(cosTheta\_O, \mathsf{/.f32}\left(v, \mathsf{\_.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_i, \left(\frac{v}{sinTheta\_i \cdot sinTheta\_O}\right)\right)\right)\right)\right), \left(\sinh \left(\frac{1}{v}\right) \cdot \left(v \cdot 2\right)\right)\right) \]
      13. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{\frac{cosTheta\_O}{\frac{v}{cosTheta\_i - \frac{cosTheta\_i}{\frac{v}{sinTheta\_i \cdot sinTheta\_O}}}}}{\color{blue}{2 + \frac{0.3333333333333333}{v \cdot v}}} \]
    13. Taylor expanded in v around inf

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

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

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

    Alternative 15: 59.2% accurate, 24.4× speedup?

    \[\begin{array}{l} \\ \frac{\frac{0.5}{v}}{\frac{1}{cosTheta\_i \cdot cosTheta\_O}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/ (/ 0.5 v) (/ 1.0 (* cosTheta_i cosTheta_O))))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return (0.5f / v) / (1.0f / (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) / (1.0e0 / (costheta_i * costheta_o))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(Float32(0.5) / v) / Float32(Float32(1.0) / Float32(cosTheta_i * cosTheta_O)))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = (single(0.5) / v) / (single(1.0) / (cosTheta_i * cosTheta_O));
    end
    
    \begin{array}{l}
    
    \\
    \frac{\frac{0.5}{v}}{\frac{1}{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. Step-by-step derivation
      1. clear-numN/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{\frac{0.5}{v}}{\color{blue}{\frac{1}{cosTheta\_O \cdot cosTheta\_i}}} \]
    10. Final simplification58.0%

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

    Alternative 16: 59.1% accurate, 24.4× speedup?

    \[\begin{array}{l} \\ \frac{1}{\frac{v}{0.5 \cdot \left(cosTheta\_i \cdot cosTheta\_O\right)}} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/ 1.0 (/ v (* 0.5 (* cosTheta_i cosTheta_O)))))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return 1.0f / (v / (0.5f * (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 = 1.0e0 / (v / (0.5e0 * (costheta_i * costheta_o)))
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(1.0) / Float32(v / Float32(Float32(0.5) * Float32(cosTheta_i * cosTheta_O))))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = single(1.0) / (v / (single(0.5) * (cosTheta_i * cosTheta_O)));
    end
    
    \begin{array}{l}
    
    \\
    \frac{1}{\frac{v}{0.5 \cdot \left(cosTheta\_i \cdot cosTheta\_O\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. associate-*r*N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Alternative 17: 58.7% accurate, 31.4× speedup?

    \[\begin{array}{l} \\ \frac{0.5 \cdot \left(cosTheta\_i \cdot cosTheta\_O\right)}{v} \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (/ (* 0.5 (* cosTheta_i cosTheta_O)) v))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return (0.5f * (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 * (costheta_i * costheta_o)) / v
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(Float32(0.5) * Float32(cosTheta_i * cosTheta_O)) / v)
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = (single(0.5) * (cosTheta_i * cosTheta_O)) / v;
    end
    
    \begin{array}{l}
    
    \\
    \frac{0.5 \cdot \left(cosTheta\_i \cdot cosTheta\_O\right)}{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. associate-*r*N/A

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

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

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

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

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

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

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

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

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

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

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

    Alternative 18: 58.7% accurate, 31.4× speedup?

    \[\begin{array}{l} \\ \frac{0.5}{v} \cdot \left(cosTheta\_i \cdot cosTheta\_O\right) \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(Float32(0.5) / 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}{v} \cdot \left(cosTheta\_i \cdot cosTheta\_O\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. associate-*r*N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

    Alternative 19: 58.7% accurate, 31.4× speedup?

    \[\begin{array}{l} \\ \frac{cosTheta\_i}{v} \cdot \left(cosTheta\_O \cdot 0.5\right) \end{array} \]
    (FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
     :precision binary32
     (* (/ cosTheta_i v) (* cosTheta_O 0.5)))
    float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
    	return (cosTheta_i / v) * (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 = (costheta_i / v) * (costheta_o * 0.5e0)
    end function
    
    function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	return Float32(Float32(cosTheta_i / v) * Float32(cosTheta_O * Float32(0.5)))
    end
    
    function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
    	tmp = (cosTheta_i / v) * (cosTheta_O * single(0.5));
    end
    
    \begin{array}{l}
    
    \\
    \frac{cosTheta\_i}{v} \cdot \left(cosTheta\_O \cdot 0.5\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. associate-*r*N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

    Reproduce

    ?
    herbie shell --seed 2024161 
    (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)))