HairBSDF, Mp, upper

Percentage Accurate: 98.5% → 98.8%
Time: 20.7s
Alternatives: 21
Speedup: 1.9×

Specification

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

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

Sampling outcomes in binary32 precision:

Local Percentage Accuracy vs ?

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

Accuracy vs Speed?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 2: 98.8% accurate, 1.4× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 3: 98.7% accurate, 1.5× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 4: 98.7% accurate, 1.5× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 5: 98.6% accurate, 1.9× speedup?

\[\begin{array}{l} \\ \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{\frac{-1}{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) (/ (/ -1.0 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) * ((-1.0f / 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) * (((-1.0e0) / 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 * cosTheta_O) * Float32(Float32(Float32(-1.0) / 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) * ((single(-1.0) / v) / (sinh((single(1.0) / v)) / (single(-0.5) / v)));
end
\begin{array}{l}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(\frac{1}{e^{\frac{1}{v}}}\right)\right)\right)\right) \]
    9. rec-expN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(e^{\mathsf{neg}\left(\frac{1}{v}\right)}\right)\right)\right)\right) \]
    10. distribute-neg-fracN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(e^{\frac{\mathsf{neg}\left(1\right)}{v}}\right)\right)\right)\right) \]
    11. metadata-evalN/A

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(-1, v\right)\right)\right)\right)\right) \]
  9. Simplified98.1%

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

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\frac{\frac{-1}{v}}{\left(e^{\frac{1}{v}} - e^{-1 \cdot \frac{1}{v}}\right) \cdot v}\right)\right) \]
    4. neg-mul-1N/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \left(\frac{\frac{-1}{v}}{\left(e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}\right) \cdot v}\right)\right) \]
    5. sinh-undefN/A

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

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

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

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

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

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

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

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

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

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

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

Alternative 6: 98.6% accurate, 1.9× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\left(sinTheta\_i \cdot \frac{sinTheta\_O}{v}\right)\right), \left(\frac{cosTheta\_i \cdot cosTheta\_O}{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. clear-numN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\left(sinTheta\_i \cdot \frac{1}{\frac{v}{sinTheta\_O}}\right)\right), \left(\frac{cosTheta\_i \cdot cosTheta\_O}{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) \]
    7. un-div-invN/A

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(v, sinTheta\_O\right)\right)\right), \mathsf{*.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_O}{v}\right)\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-/.f3295.5%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(v, sinTheta\_O\right)\right)\right), \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, v\right)\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-rr95.5%

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

    \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{\left(\frac{v}{cosTheta\_O \cdot cosTheta\_i}\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. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \left(cosTheta\_O \cdot cosTheta\_i\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) \]
    2. *-lowering-*.f3295.1%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\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) \]
  9. Simplified95.1%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 7: 98.6% accurate, 1.9× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(\frac{1}{e^{\frac{1}{v}}}\right)\right)\right)\right) \]
    9. rec-expN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(e^{\mathsf{neg}\left(\frac{1}{v}\right)}\right)\right)\right)\right) \]
    10. distribute-neg-fracN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(e^{\frac{\mathsf{neg}\left(1\right)}{v}}\right)\right)\right)\right) \]
    11. metadata-evalN/A

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(-1, v\right)\right)\right)\right)\right) \]
  9. Simplified98.1%

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

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

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

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

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

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

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

Alternative 8: 98.5% accurate, 1.9× speedup?

\[\begin{array}{l} \\ \frac{\frac{cosTheta\_i \cdot 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(Float32(cosTheta_i * 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{\frac{cosTheta\_i \cdot 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. Step-by-step derivation
    1. clear-numN/A

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\left(sinTheta\_i \cdot \frac{sinTheta\_O}{v}\right)\right), \left(\frac{cosTheta\_i \cdot cosTheta\_O}{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. clear-numN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\left(sinTheta\_i \cdot \frac{1}{\frac{v}{sinTheta\_O}}\right)\right), \left(\frac{cosTheta\_i \cdot cosTheta\_O}{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) \]
    7. un-div-invN/A

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(v, sinTheta\_O\right)\right)\right), \mathsf{*.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_O}{v}\right)\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-/.f3295.5%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(v, sinTheta\_O\right)\right)\right), \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, v\right)\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-rr95.5%

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

    \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{\left(\frac{v}{cosTheta\_O \cdot cosTheta\_i}\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. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \left(cosTheta\_O \cdot cosTheta\_i\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) \]
    2. *-lowering-*.f3295.1%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\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) \]
  9. Simplified95.1%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right), v\right), \mathsf{/.f32}\left(\left(\frac{e^{\frac{1}{v}} - e^{\mathsf{neg}\left(\frac{1}{v}\right)}}{2}\right), \left(\frac{\frac{1}{2}}{v}\right)\right)\right) \]
    18. sinh-defN/A

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

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

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

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

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

Alternative 9: 98.5% accurate, 1.9× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(\frac{1}{e^{\frac{1}{v}}}\right)\right)\right)\right) \]
    9. rec-expN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(e^{\mathsf{neg}\left(\frac{1}{v}\right)}\right)\right)\right)\right) \]
    10. distribute-neg-fracN/A

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \left(e^{\frac{\mathsf{neg}\left(1\right)}{v}}\right)\right)\right)\right) \]
    11. metadata-evalN/A

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(-1, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{\_.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(1, v\right)\right), \mathsf{exp.f32}\left(\mathsf{/.f32}\left(-1, v\right)\right)\right)\right)\right) \]
  9. Simplified98.1%

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

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

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

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

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

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

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

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

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

Alternative 10: 98.6% accurate, 1.9× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\left(sinTheta\_i \cdot \frac{sinTheta\_O}{v}\right)\right), \left(\frac{cosTheta\_i \cdot cosTheta\_O}{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. clear-numN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\left(sinTheta\_i \cdot \frac{1}{\frac{v}{sinTheta\_O}}\right)\right), \left(\frac{cosTheta\_i \cdot cosTheta\_O}{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) \]
    7. un-div-invN/A

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(v, sinTheta\_O\right)\right)\right), \mathsf{*.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_O}{v}\right)\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-/.f3295.5%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(v, sinTheta\_O\right)\right)\right), \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, v\right)\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-rr95.5%

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

    \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{\left(\frac{v}{cosTheta\_O \cdot cosTheta\_i}\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. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \left(cosTheta\_O \cdot cosTheta\_i\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) \]
    2. *-lowering-*.f3295.1%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\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) \]
  9. Simplified95.1%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 11: 76.8% accurate, 2.8× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{0.16666666666666666}{v \cdot v}\\ \left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\frac{-1}{\frac{2}{2 \cdot \frac{\left(-1 - t\_0\right) - \frac{0.008333333333333333 + \frac{0.0001984126984126984}{v \cdot v}}{\left(v \cdot v\right) \cdot \left(v \cdot v\right)}}{v}}}}}{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(t\_0 \cdot \frac{sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)}{v} + \frac{0.5 \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}\right) \end{array} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (let* ((t_0 (/ 0.16666666666666666 (* v v))))
   (*
    (* cosTheta_i cosTheta_O)
    (*
     (/ -1.0 v)
     (/
      (/
       (/ 0.5 v)
       (/
        -1.0
        (/
         2.0
         (*
          2.0
          (/
           (-
            (- -1.0 t_0)
            (/
             (+ 0.008333333333333333 (/ 0.0001984126984126984 (* v v)))
             (* (* v v) (* v v))))
           v)))))
      (-
       -1.0
       (*
        sinTheta_i
        (+
         (/ sinTheta_O v)
         (*
          sinTheta_i
          (+
           (*
            t_0
            (/ (* sinTheta_i (* sinTheta_O (* sinTheta_O sinTheta_O))) v))
           (/ (* 0.5 (* sinTheta_O sinTheta_O)) (* v v))))))))))))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	float t_0 = 0.16666666666666666f / (v * v);
	return (cosTheta_i * cosTheta_O) * ((-1.0f / v) * (((0.5f / v) / (-1.0f / (2.0f / (2.0f * (((-1.0f - t_0) - ((0.008333333333333333f + (0.0001984126984126984f / (v * v))) / ((v * v) * (v * v)))) / v))))) / (-1.0f - (sinTheta_i * ((sinTheta_O / v) + (sinTheta_i * ((t_0 * ((sinTheta_i * (sinTheta_O * (sinTheta_O * sinTheta_O))) / v)) + ((0.5f * (sinTheta_O * 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
    real(4) :: t_0
    t_0 = 0.16666666666666666e0 / (v * v)
    code = (costheta_i * costheta_o) * (((-1.0e0) / v) * (((0.5e0 / v) / ((-1.0e0) / (2.0e0 / (2.0e0 * ((((-1.0e0) - t_0) - ((0.008333333333333333e0 + (0.0001984126984126984e0 / (v * v))) / ((v * v) * (v * v)))) / v))))) / ((-1.0e0) - (sintheta_i * ((sintheta_o / v) + (sintheta_i * ((t_0 * ((sintheta_i * (sintheta_o * (sintheta_o * sintheta_o))) / v)) + ((0.5e0 * (sintheta_o * sintheta_o)) / (v * v)))))))))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	t_0 = Float32(Float32(0.16666666666666666) / Float32(v * v))
	return Float32(Float32(cosTheta_i * cosTheta_O) * Float32(Float32(Float32(-1.0) / v) * Float32(Float32(Float32(Float32(0.5) / v) / Float32(Float32(-1.0) / Float32(Float32(2.0) / Float32(Float32(2.0) * Float32(Float32(Float32(Float32(-1.0) - t_0) - Float32(Float32(Float32(0.008333333333333333) + Float32(Float32(0.0001984126984126984) / Float32(v * v))) / Float32(Float32(v * v) * Float32(v * v)))) / v))))) / Float32(Float32(-1.0) - Float32(sinTheta_i * Float32(Float32(sinTheta_O / v) + Float32(sinTheta_i * Float32(Float32(t_0 * Float32(Float32(sinTheta_i * Float32(sinTheta_O * Float32(sinTheta_O * sinTheta_O))) / v)) + Float32(Float32(Float32(0.5) * Float32(sinTheta_O * sinTheta_O)) / Float32(v * v))))))))))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	t_0 = single(0.16666666666666666) / (v * v);
	tmp = (cosTheta_i * cosTheta_O) * ((single(-1.0) / v) * (((single(0.5) / v) / (single(-1.0) / (single(2.0) / (single(2.0) * (((single(-1.0) - t_0) - ((single(0.008333333333333333) + (single(0.0001984126984126984) / (v * v))) / ((v * v) * (v * v)))) / v))))) / (single(-1.0) - (sinTheta_i * ((sinTheta_O / v) + (sinTheta_i * ((t_0 * ((sinTheta_i * (sinTheta_O * (sinTheta_O * sinTheta_O))) / v)) + ((single(0.5) * (sinTheta_O * sinTheta_O)) / (v * v)))))))));
end
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \frac{0.16666666666666666}{v \cdot v}\\
\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \left(\frac{-1}{v} \cdot \frac{\frac{\frac{0.5}{v}}{\frac{-1}{\frac{2}{2 \cdot \frac{\left(-1 - t\_0\right) - \frac{0.008333333333333333 + \frac{0.0001984126984126984}{v \cdot v}}{\left(v \cdot v\right) \cdot \left(v \cdot v\right)}}{v}}}}}{-1 - sinTheta\_i \cdot \left(\frac{sinTheta\_O}{v} + sinTheta\_i \cdot \left(t\_0 \cdot \frac{sinTheta\_i \cdot \left(sinTheta\_O \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)\right)}{v} + \frac{0.5 \cdot \left(sinTheta\_O \cdot sinTheta\_O\right)}{v \cdot v}\right)\right)}\right)
\end{array}
\end{array}
Derivation
  1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{*.f32}\left(\mathsf{neg.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, cosTheta\_O\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(-1, v\right), \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{2}, v\right), \mathsf{/.f32}\left(1, \mathsf{/.f32}\left(2, \mathsf{*.f32}\left(\mathsf{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{120} + \frac{1}{5040} \cdot \frac{1}{{v}^{2}}}{{v}^{4}} - \left(1 + \frac{1}{6} \cdot \frac{1}{{v}^{2}}\right)\right), \left(-1 \cdot v\right)\right), 2\right)\right)\right)\right), \mathsf{+.f32}\left(1, \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{/.f32}\left(sinTheta\_O, v\right), \mathsf{*.f32}\left(sinTheta\_i, \mathsf{+.f32}\left(\mathsf{*.f32}\left(\mathsf{/.f32}\left(\frac{1}{6}, \mathsf{*.f32}\left(v, v\right)\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(sinTheta\_i, \mathsf{*.f32}\left(sinTheta\_O, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_O\right)\right)\right), v\right)\right), \mathsf{/.f32}\left(\mathsf{*.f32}\left(\frac{1}{2}, \mathsf{*.f32}\left(sinTheta\_O, sinTheta\_O\right)\right), \mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right)\right)\right)\right)\right) \]
  14. Simplified78.0%

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

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

Alternative 12: 74.2% accurate, 5.9× speedup?

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

\\
\frac{\frac{1}{\frac{v}{cosTheta\_i \cdot cosTheta\_O}}}{\frac{\left(1 + \frac{0.16666666666666666}{v \cdot v}\right) + \frac{0.008333333333333333 + \frac{0.0001984126984126984}{v \cdot v}}{\left(v \cdot v\right) \cdot \left(v \cdot v\right)}}{v} \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. clear-numN/A

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\left(sinTheta\_i \cdot \frac{sinTheta\_O}{v}\right)\right), \left(\frac{cosTheta\_i \cdot cosTheta\_O}{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. clear-numN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\left(sinTheta\_i \cdot \frac{1}{\frac{v}{sinTheta\_O}}\right)\right), \left(\frac{cosTheta\_i \cdot cosTheta\_O}{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) \]
    7. un-div-invN/A

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(v, sinTheta\_O\right)\right)\right), \mathsf{*.f32}\left(cosTheta\_i, \left(\frac{cosTheta\_O}{v}\right)\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-/.f3295.5%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(\mathsf{exp.f32}\left(\mathsf{/.f32}\left(sinTheta\_i, \mathsf{/.f32}\left(v, sinTheta\_O\right)\right)\right), \mathsf{*.f32}\left(cosTheta\_i, \mathsf{/.f32}\left(cosTheta\_O, v\right)\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-rr95.5%

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

    \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \color{blue}{\left(\frac{v}{cosTheta\_O \cdot cosTheta\_i}\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. Step-by-step derivation
    1. /-lowering-/.f32N/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \left(cosTheta\_O \cdot cosTheta\_i\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) \]
    2. *-lowering-*.f3295.1%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\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) \]
  9. Simplified95.1%

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(1, \mathsf{/.f32}\left(v, \mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right)\right)\right), \mathsf{*.f32}\left(\mathsf{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{120} + \frac{1}{5040} \cdot \frac{1}{{v}^{2}}}{{v}^{4}} - \left(1 + \frac{1}{6} \cdot \frac{1}{{v}^{2}}\right)\right), \left(-1 \cdot v\right)\right), \mathsf{*.f32}\left(\color{blue}{v}, 2\right)\right)\right) \]
  12. Simplified76.0%

    \[\leadsto \frac{\frac{1}{\frac{v}{cosTheta\_O \cdot cosTheta\_i}}}{\color{blue}{\frac{\frac{0.008333333333333333 + \frac{0.0001984126984126984}{v \cdot v}}{-\left(v \cdot v\right) \cdot \left(v \cdot v\right)} - \left(1 + \frac{0.16666666666666666}{v \cdot v}\right)}{-v}} \cdot \left(v \cdot 2\right)} \]
  13. Final simplification76.0%

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

Alternative 13: 70.1% 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(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, 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(\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) \]
  6. Step-by-step derivation
    1. mul-1-negN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, 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(\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(\mathsf{*.f32}\left(cosTheta\_i, 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(\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. /-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{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right), \left(\mathsf{neg}\left(v\right)\right)\right), \mathsf{*.f32}\left(\color{blue}{v}, 2\right)\right)\right) \]
  7. Simplified71.1%

    \[\leadsto \frac{\frac{\frac{cosTheta\_i \cdot cosTheta\_O}{v}}{e^{\frac{sinTheta\_i \cdot sinTheta\_O}{v}}}}{\color{blue}{\frac{-1 + \frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{-v \cdot v}}{-v}} \cdot \left(v \cdot 2\right)} \]
  8. 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{/.f32}\left(\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)\right), \mathsf{neg.f32}\left(v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
  9. 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{/.f32}\left(\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)\right), \mathsf{neg.f32}\left(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{/.f32}\left(\color{blue}{\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)\right)}, \mathsf{neg.f32}\left(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{/.f32}\left(\mathsf{+.f32}\left(-1, \color{blue}{\mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)}\right), \mathsf{neg.f32}\left(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{/.f32}\left(\color{blue}{\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)\right)}, \mathsf{neg.f32}\left(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{/.f32}\left(\mathsf{+.f32}\left(-1, \color{blue}{\mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)}\right), \mathsf{neg.f32}\left(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{/.f32}\left(\color{blue}{\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)\right)}, \mathsf{neg.f32}\left(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{/.f32}\left(\color{blue}{\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)\right)}, \mathsf{neg.f32}\left(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{/.f32}\left(\mathsf{+.f32}\left(-1, \color{blue}{\mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)}\right), \mathsf{neg.f32}\left(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{/.f32}\left(\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \color{blue}{\mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)}\right)\right), \mathsf{neg.f32}\left(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{/.f32}\left(\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\color{blue}{\mathsf{*.f32}\left(v, v\right)}\right)\right)\right), \mathsf{neg.f32}\left(v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
    11. *-lowering-*.f3271.1%

      \[\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(\mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\frac{1}{120}, \mathsf{*.f32}\left(v, v\right)\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, \color{blue}{v}\right)\right)\right)\right), \mathsf{neg.f32}\left(v\right)\right), \mathsf{*.f32}\left(v, 2\right)\right)\right) \]
  10. Simplified71.1%

    \[\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}}}{\frac{-1 + \frac{0.16666666666666666 + \frac{0.008333333333333333}{v \cdot v}}{-v \cdot v}}{-v} \cdot \left(v \cdot 2\right)} \]
  11. Final simplification71.1%

    \[\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 14: 70.2% accurate, 10.5× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, 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(\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) \]
  6. Step-by-step derivation
    1. mul-1-negN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, 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(\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(\mathsf{*.f32}\left(cosTheta\_i, 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(\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. /-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{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right), \left(\mathsf{neg}\left(v\right)\right)\right), \mathsf{*.f32}\left(\color{blue}{v}, 2\right)\right)\right) \]
  7. Simplified71.1%

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

    \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v \cdot \left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right)}} \]
  9. 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 \cdot \left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right)}} \]
    2. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\frac{-1}{2}, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(-1, \color{blue}{\left(\frac{\frac{1}{6} + \frac{\frac{1}{120}}{v \cdot v}}{0 - v \cdot v}\right)}\right)\right)\right)\right)\right) \]
    10. sub0-negN/A

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

      \[\leadsto \mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\frac{-1}{2}, \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\left(\frac{1}{6} + \frac{\frac{1}{120}}{v \cdot v}\right), \color{blue}{\left(\mathsf{neg}\left(v \cdot v\right)\right)}\right)\right)\right)\right)\right)\right) \]
  12. Applied egg-rr71.1%

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

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

Alternative 15: 70.2% accurate, 10.5× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, 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(\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) \]
  6. Step-by-step derivation
    1. mul-1-negN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, 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(\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(\mathsf{*.f32}\left(cosTheta\_i, 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(\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. /-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{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right), \left(\mathsf{neg}\left(v\right)\right)\right), \mathsf{*.f32}\left(\color{blue}{v}, 2\right)\right)\right) \]
  7. Simplified71.1%

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

    \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v \cdot \left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right)}} \]
  9. 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 \cdot \left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right)}} \]
    2. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \frac{-1}{2}\right), \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(-1, \color{blue}{\left(\frac{\frac{1}{6} + \frac{\frac{1}{120}}{v \cdot v}}{0 - v \cdot v}\right)}\right)\right)\right)\right) \]
    9. sub0-negN/A

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

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

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

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

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

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

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

      \[\leadsto \mathsf{*.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \frac{-1}{2}\right), \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(-1, \mathsf{/.f32}\left(\mathsf{+.f32}\left(\frac{1}{6}, \mathsf{/.f32}\left(\mathsf{/.f32}\left(\frac{1}{120}, v\right), v\right)\right), \mathsf{neg.f32}\left(\mathsf{*.f32}\left(v, v\right)\right)\right)\right)\right)\right)\right) \]
  12. Applied egg-rr71.1%

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

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

Alternative 16: 63.9% accurate, 14.7× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, 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(\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) \]
  6. Step-by-step derivation
    1. mul-1-negN/A

      \[\leadsto \mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, 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(\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(\mathsf{*.f32}\left(cosTheta\_i, 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(\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. /-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{/.f32}\left(\left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right), \left(\mathsf{neg}\left(v\right)\right)\right), \mathsf{*.f32}\left(\color{blue}{v}, 2\right)\right)\right) \]
  7. Simplified71.1%

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

    \[\leadsto \color{blue}{\frac{-1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{v \cdot \left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right)}} \]
  9. 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 \cdot \left(-1 \cdot \frac{\frac{1}{6} + \frac{1}{120} \cdot \frac{1}{{v}^{2}}}{{v}^{2}} - 1\right)}} \]
    2. /-lowering-/.f32N/A

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(\mathsf{*.f32}\left(cosTheta\_O, cosTheta\_i\right), \frac{-1}{2}\right), \mathsf{*.f32}\left(v, \mathsf{+.f32}\left(\mathsf{/.f32}\left(\frac{-1}{6}, \mathsf{*.f32}\left(v, v\right)\right), -1\right)\right)\right) \]
  13. Simplified64.9%

    \[\leadsto \frac{\left(cosTheta\_O \cdot cosTheta\_i\right) \cdot -0.5}{v \cdot \left(\color{blue}{\frac{-0.16666666666666666}{v \cdot v}} + -1\right)} \]
  14. Final simplification64.9%

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

Alternative 17: 58.8% accurate, 24.4× speedup?

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

\\
\frac{\frac{1}{v}}{\frac{2}{cosTheta\_i \cdot cosTheta\_O}}
\end{array}
Derivation
  1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\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-/.f3259.3%

      \[\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-rr59.3%

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

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

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

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

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

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

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

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

      \[\leadsto \left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{-1}{2}\right)\right) \cdot \frac{1}{v} \]
    9. remove-double-divN/A

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \color{blue}{\frac{\frac{1}{v}}{\frac{2}{cosTheta\_i \cdot cosTheta\_O}}} \]
  12. Add Preprocessing

Alternative 18: 58.8% accurate, 24.4× speedup?

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

\\
\frac{1}{v \cdot \frac{2}{cosTheta\_i \cdot cosTheta\_O}}
\end{array}
Derivation
  1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\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-/.f3259.3%

      \[\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-rr59.3%

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

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

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

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

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

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

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

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

      \[\leadsto \left(\mathsf{neg}\left(\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{-1}{2}\right)\right) \cdot \frac{1}{v} \]
    9. remove-double-divN/A

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

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

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \color{blue}{\frac{1}{\frac{2}{cosTheta\_i \cdot cosTheta\_O} \cdot v}} \]
  12. Final simplification60.2%

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

Alternative 19: 58.6% accurate, 31.4× speedup?

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

\\
\frac{0.5}{\frac{v}{cosTheta\_i \cdot cosTheta\_O}}
\end{array}
Derivation
  1. Initial program 98.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    \[\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-/.f3259.3%

      \[\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-rr59.3%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Alternative 20: 58.2% accurate, 31.4× speedup?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(cosTheta\_O, \frac{1}{2}\right)\right), v\right) \]
  7. Simplified59.3%

    \[\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-/.f3259.3%

      \[\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-rr59.3%

    \[\leadsto \color{blue}{\left(cosTheta\_i \cdot cosTheta\_O\right) \cdot \frac{0.5}{v}} \]
  10. Add Preprocessing

Alternative 21: 58.2% accurate, 31.4× speedup?

\[\begin{array}{l} \\ 0.5 \cdot \frac{cosTheta\_O}{\frac{v}{cosTheta\_i}} \end{array} \]
(FPCore (cosTheta_i cosTheta_O sinTheta_i sinTheta_O v)
 :precision binary32
 (* 0.5 (/ cosTheta_O (/ v cosTheta_i))))
float code(float cosTheta_i, float cosTheta_O, float sinTheta_i, float sinTheta_O, float v) {
	return 0.5f * (cosTheta_O / (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 * (costheta_o / (v / costheta_i))
end function
function code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	return Float32(Float32(0.5) * Float32(cosTheta_O / Float32(v / cosTheta_i)))
end
function tmp = code(cosTheta_i, cosTheta_O, sinTheta_i, sinTheta_O, v)
	tmp = single(0.5) * (cosTheta_O / (v / cosTheta_i));
end
\begin{array}{l}

\\
0.5 \cdot \frac{cosTheta\_O}{\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. 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-*.f3259.3%

      \[\leadsto \mathsf{/.f32}\left(\mathsf{*.f32}\left(cosTheta\_i, \mathsf{*.f32}\left(cosTheta\_O, \frac{1}{2}\right)\right), v\right) \]
  7. Simplified59.3%

    \[\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-/.f3259.3%

      \[\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-rr59.3%

    \[\leadsto \color{blue}{\left(cosTheta\_O \cdot 0.5\right) \cdot \frac{cosTheta\_i}{v}} \]
  10. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \left(\frac{1}{2} \cdot cosTheta\_O\right) \cdot \frac{\color{blue}{cosTheta\_i}}{v} \]
    2. associate-*l*N/A

      \[\leadsto \frac{1}{2} \cdot \color{blue}{\left(cosTheta\_O \cdot \frac{cosTheta\_i}{v}\right)} \]
    3. associate-/l*N/A

      \[\leadsto \frac{1}{2} \cdot \frac{cosTheta\_O \cdot cosTheta\_i}{\color{blue}{v}} \]
    4. *-commutativeN/A

      \[\leadsto \frac{1}{2} \cdot \frac{cosTheta\_i \cdot cosTheta\_O}{v} \]
    5. associate-*r/N/A

      \[\leadsto \frac{1}{2} \cdot \left(cosTheta\_i \cdot \color{blue}{\frac{cosTheta\_O}{v}}\right) \]
    6. *-lowering-*.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \color{blue}{\left(cosTheta\_i \cdot \frac{cosTheta\_O}{v}\right)}\right) \]
    7. *-commutativeN/A

      \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\frac{cosTheta\_O}{v} \cdot \color{blue}{cosTheta\_i}\right)\right) \]
    8. div-invN/A

      \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\left(cosTheta\_O \cdot \frac{1}{v}\right) \cdot cosTheta\_i\right)\right) \]
    9. associate-*l*N/A

      \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \color{blue}{\left(\frac{1}{v} \cdot cosTheta\_i\right)}\right)\right) \]
    10. associate-/r/N/A

      \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(cosTheta\_O \cdot \frac{1}{\color{blue}{\frac{v}{cosTheta\_i}}}\right)\right) \]
    11. un-div-invN/A

      \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \left(\frac{cosTheta\_O}{\color{blue}{\frac{v}{cosTheta\_i}}}\right)\right) \]
    12. /-lowering-/.f32N/A

      \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{/.f32}\left(cosTheta\_O, \color{blue}{\left(\frac{v}{cosTheta\_i}\right)}\right)\right) \]
    13. /-lowering-/.f3259.3%

      \[\leadsto \mathsf{*.f32}\left(\frac{1}{2}, \mathsf{/.f32}\left(cosTheta\_O, \mathsf{/.f32}\left(v, \color{blue}{cosTheta\_i}\right)\right)\right) \]
  11. Applied egg-rr59.3%

    \[\leadsto \color{blue}{0.5 \cdot \frac{cosTheta\_O}{\frac{v}{cosTheta\_i}}} \]
  12. Add Preprocessing

Reproduce

?
herbie shell --seed 2024145 
(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)))