Toniolo and Linder, Equation (2)

Percentage Accurate: 83.6% → 98.8%
Time: 8.1s
Alternatives: 12
Speedup: 1.3×

Specification

?
\[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
(FPCore (t l Om Omc)
  :precision binary64
  (asin
 (sqrt
  (/ (- 1.0 (pow (/ Om Omc) 2.0)) (+ 1.0 (* 2.0 (pow (/ t l) 2.0)))))))
double code(double t, double l, double Om, double Omc) {
	return asin(sqrt(((1.0 - pow((Om / Omc), 2.0)) / (1.0 + (2.0 * pow((t / l), 2.0))))));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

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

real(8) function code(t, l, om, omc)
use fmin_fmax_functions
    real(8), intent (in) :: t
    real(8), intent (in) :: l
    real(8), intent (in) :: om
    real(8), intent (in) :: omc
    code = asin(sqrt(((1.0d0 - ((om / omc) ** 2.0d0)) / (1.0d0 + (2.0d0 * ((t / l) ** 2.0d0))))))
end function
public static double code(double t, double l, double Om, double Omc) {
	return Math.asin(Math.sqrt(((1.0 - Math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * Math.pow((t / l), 2.0))))));
}
def code(t, l, Om, Omc):
	return math.asin(math.sqrt(((1.0 - math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * math.pow((t / l), 2.0))))))
function code(t, l, Om, Omc)
	return asin(sqrt(Float64(Float64(1.0 - (Float64(Om / Omc) ^ 2.0)) / Float64(1.0 + Float64(2.0 * (Float64(t / l) ^ 2.0))))))
end
function tmp = code(t, l, Om, Omc)
	tmp = asin(sqrt(((1.0 - ((Om / Omc) ^ 2.0)) / (1.0 + (2.0 * ((t / l) ^ 2.0))))));
end
code[t_, l_, Om_, Omc_] := N[ArcSin[N[Sqrt[N[(N[(1.0 - N[Power[N[(Om / Omc), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(2.0 * N[Power[N[(t / l), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]
\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)

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 12 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: 83.6% accurate, 1.0× speedup?

\[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
(FPCore (t l Om Omc)
  :precision binary64
  (asin
 (sqrt
  (/ (- 1.0 (pow (/ Om Omc) 2.0)) (+ 1.0 (* 2.0 (pow (/ t l) 2.0)))))))
double code(double t, double l, double Om, double Omc) {
	return asin(sqrt(((1.0 - pow((Om / Omc), 2.0)) / (1.0 + (2.0 * pow((t / l), 2.0))))));
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

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

real(8) function code(t, l, om, omc)
use fmin_fmax_functions
    real(8), intent (in) :: t
    real(8), intent (in) :: l
    real(8), intent (in) :: om
    real(8), intent (in) :: omc
    code = asin(sqrt(((1.0d0 - ((om / omc) ** 2.0d0)) / (1.0d0 + (2.0d0 * ((t / l) ** 2.0d0))))))
end function
public static double code(double t, double l, double Om, double Omc) {
	return Math.asin(Math.sqrt(((1.0 - Math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * Math.pow((t / l), 2.0))))));
}
def code(t, l, Om, Omc):
	return math.asin(math.sqrt(((1.0 - math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * math.pow((t / l), 2.0))))))
function code(t, l, Om, Omc)
	return asin(sqrt(Float64(Float64(1.0 - (Float64(Om / Omc) ^ 2.0)) / Float64(1.0 + Float64(2.0 * (Float64(t / l) ^ 2.0))))))
end
function tmp = code(t, l, Om, Omc)
	tmp = asin(sqrt(((1.0 - ((Om / Omc) ^ 2.0)) / (1.0 + (2.0 * ((t / l) ^ 2.0))))));
end
code[t_, l_, Om_, Omc_] := N[ArcSin[N[Sqrt[N[(N[(1.0 - N[Power[N[(Om / Omc), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(2.0 * N[Power[N[(t / l), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]
\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right)

Alternative 1: 98.8% accurate, 0.7× speedup?

\[\begin{array}{l} t_1 := \frac{\left|t\right|}{\left|\ell\right|}\\ \mathbf{if}\;2 \cdot {t\_1}^{2} \leq 5.8 \cdot 10^{+276}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\frac{\left|t\right| + \left|t\right|}{\left|\ell\right|}, t\_1, 1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\left|\ell\right| \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{\left|t\right|}\right)\\ \end{array} \]
(FPCore (t l Om Omc)
  :precision binary64
  (let* ((t_1 (/ (fabs t) (fabs l))))
  (if (<= (* 2.0 (pow t_1 2.0)) 5.8e+276)
    (asin
     (sqrt
      (/
       (- 1.0 (pow (/ Om Omc) 2.0))
       (fma (/ (+ (fabs t) (fabs t)) (fabs l)) t_1 1.0))))
    (asin
     (*
      -1.0
      (/
       (*
        -1.0
        (*
         (fabs l)
         (sqrt (* -0.5 (* (+ 1.0 (/ Om Omc)) (- (/ Om Omc) 1.0))))))
       (fabs t)))))))
double code(double t, double l, double Om, double Omc) {
	double t_1 = fabs(t) / fabs(l);
	double tmp;
	if ((2.0 * pow(t_1, 2.0)) <= 5.8e+276) {
		tmp = asin(sqrt(((1.0 - pow((Om / Omc), 2.0)) / fma(((fabs(t) + fabs(t)) / fabs(l)), t_1, 1.0))));
	} else {
		tmp = asin((-1.0 * ((-1.0 * (fabs(l) * sqrt((-0.5 * ((1.0 + (Om / Omc)) * ((Om / Omc) - 1.0)))))) / fabs(t))));
	}
	return tmp;
}
function code(t, l, Om, Omc)
	t_1 = Float64(abs(t) / abs(l))
	tmp = 0.0
	if (Float64(2.0 * (t_1 ^ 2.0)) <= 5.8e+276)
		tmp = asin(sqrt(Float64(Float64(1.0 - (Float64(Om / Omc) ^ 2.0)) / fma(Float64(Float64(abs(t) + abs(t)) / abs(l)), t_1, 1.0))));
	else
		tmp = asin(Float64(-1.0 * Float64(Float64(-1.0 * Float64(abs(l) * sqrt(Float64(-0.5 * Float64(Float64(1.0 + Float64(Om / Omc)) * Float64(Float64(Om / Omc) - 1.0)))))) / abs(t))));
	end
	return tmp
end
code[t_, l_, Om_, Omc_] := Block[{t$95$1 = N[(N[Abs[t], $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(2.0 * N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision], 5.8e+276], N[ArcSin[N[Sqrt[N[(N[(1.0 - N[Power[N[(Om / Omc), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(N[Abs[t], $MachinePrecision] + N[Abs[t], $MachinePrecision]), $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision] * t$95$1 + 1.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], N[ArcSin[N[(-1.0 * N[(N[(-1.0 * N[(N[Abs[l], $MachinePrecision] * N[Sqrt[N[(-0.5 * N[(N[(1.0 + N[(Om / Omc), $MachinePrecision]), $MachinePrecision] * N[(N[(Om / Omc), $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Abs[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]
\begin{array}{l}
t_1 := \frac{\left|t\right|}{\left|\ell\right|}\\
\mathbf{if}\;2 \cdot {t\_1}^{2} \leq 5.8 \cdot 10^{+276}:\\
\;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\frac{\left|t\right| + \left|t\right|}{\left|\ell\right|}, t\_1, 1\right)}}\right)\\

\mathbf{else}:\\
\;\;\;\;\sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\left|\ell\right| \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{\left|t\right|}\right)\\


\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))) < 5.7999999999999999e276

    1. Initial program 83.6%

      \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
    2. Step-by-step derivation
      1. remove-double-negN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\mathsf{neg}\left(\left(\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)\right)\right)}}}\right) \]
      2. lift-+.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{neg}\left(\left(\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)\right)\right)}}\right) \]
      3. +-commutativeN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{neg}\left(\left(\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)\right)\right)}}\right) \]
      4. distribute-neg-inN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{neg}\left(\color{blue}{\left(\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)\right)}\right)}}\right) \]
      5. metadata-evalN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{neg}\left(\left(\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \color{blue}{-1}\right)\right)}}\right) \]
      6. distribute-neg-inN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)\right)\right) + \left(\mathsf{neg}\left(-1\right)\right)}}}\right) \]
      7. remove-double-negN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{2 \cdot {\left(\frac{t}{\ell}\right)}^{2}} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      8. lift-*.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{2 \cdot {\left(\frac{t}{\ell}\right)}^{2}} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      9. *-commutativeN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{{\left(\frac{t}{\ell}\right)}^{2} \cdot 2} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      10. lift-pow.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{{\left(\frac{t}{\ell}\right)}^{2}} \cdot 2 + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      11. unpow2N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right)} \cdot 2 + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      12. associate-*l*N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\frac{t}{\ell} \cdot \left(\frac{t}{\ell} \cdot 2\right)} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      13. *-commutativeN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\frac{t}{\ell} \cdot \color{blue}{\left(2 \cdot \frac{t}{\ell}\right)} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      14. count-2-revN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\frac{t}{\ell} \cdot \color{blue}{\left(\frac{t}{\ell} + \frac{t}{\ell}\right)} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      15. *-commutativeN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\left(\frac{t}{\ell} + \frac{t}{\ell}\right) \cdot \frac{t}{\ell}} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
      16. metadata-evalN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\left(\frac{t}{\ell} + \frac{t}{\ell}\right) \cdot \frac{t}{\ell} + \color{blue}{1}}}\right) \]
      17. lower-fma.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\mathsf{fma}\left(\frac{t}{\ell} + \frac{t}{\ell}, \frac{t}{\ell}, 1\right)}}}\right) \]
      18. lift-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\color{blue}{\frac{t}{\ell}} + \frac{t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
      19. lift-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\frac{t}{\ell} + \color{blue}{\frac{t}{\ell}}, \frac{t}{\ell}, 1\right)}}\right) \]
      20. div-add-revN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\color{blue}{\frac{t + t}{\ell}}, \frac{t}{\ell}, 1\right)}}\right) \]
      21. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\color{blue}{\frac{t + t}{\ell}}, \frac{t}{\ell}, 1\right)}}\right) \]
      22. lower-+.f6483.6%

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\frac{\color{blue}{t + t}}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
    3. Applied rewrites83.6%

      \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}}\right) \]

    if 5.7999999999999999e276 < (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))

    1. Initial program 83.6%

      \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
    2. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}}\right) \]
      2. frac-2negN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{neg}\left(\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      3. lift--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{neg}\left(\color{blue}{\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)}\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      4. sub-negate-revN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      5. lift-pow.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      6. unpow2N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      7. difference-of-sqr-1N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \left(\frac{Om}{Omc} - 1\right)}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      8. associate-/l*N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      9. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      10. add-flipN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - \left(\mathsf{neg}\left(1\right)\right)\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      11. metadata-evalN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - \color{blue}{-1}\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      12. lower--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      13. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \color{blue}{\frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      14. lower--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\color{blue}{\frac{Om}{Omc} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      15. lift-+.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)}}\right) \]
      16. +-commutativeN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)}}\right) \]
      17. distribute-neg-inN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)}}}\right) \]
    3. Applied rewrites72.1%

      \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(-2 \cdot t, \frac{t}{\ell \cdot \ell}, -1\right)}}}\right) \]
    4. Taylor expanded in t around -inf

      \[\leadsto \sin^{-1} \color{blue}{\left(-1 \cdot \frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}\right)} \]
    5. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \color{blue}{\frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}}\right) \]
      2. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{\color{blue}{t}}\right) \]
    6. Applied rewrites25.4%

      \[\leadsto \sin^{-1} \color{blue}{\left(-1 \cdot \frac{\sqrt{-0.5 \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}\right)} \]
    7. Taylor expanded in l around -inf

      \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
    8. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      2. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      3. lower-sqrt.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      4. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      5. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      6. lower-+.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      7. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      8. lower--.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      9. lower-/.f6432.0%

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
    9. Applied rewrites32.0%

      \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 2: 98.8% accurate, 0.8× speedup?

\[\begin{array}{l} t_1 := \frac{Om}{Omc} - 1\\ t_2 := \frac{\left|t\right|}{\left|\ell\right|}\\ \mathbf{if}\;2 \cdot {t\_2}^{2} \leq 5.8 \cdot 10^{+276}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{t\_1}{\mathsf{fma}\left(\frac{-2 \cdot \left|t\right|}{\left|\ell\right|}, t\_2, -1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\left|\ell\right| \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot t\_1\right)}\right)}{\left|t\right|}\right)\\ \end{array} \]
(FPCore (t l Om Omc)
  :precision binary64
  (let* ((t_1 (- (/ Om Omc) 1.0)) (t_2 (/ (fabs t) (fabs l))))
  (if (<= (* 2.0 (pow t_2 2.0)) 5.8e+276)
    (asin
     (sqrt
      (*
       (- (/ Om Omc) -1.0)
       (/ t_1 (fma (/ (* -2.0 (fabs t)) (fabs l)) t_2 -1.0)))))
    (asin
     (*
      -1.0
      (/
       (*
        -1.0
        (* (fabs l) (sqrt (* -0.5 (* (+ 1.0 (/ Om Omc)) t_1)))))
       (fabs t)))))))
double code(double t, double l, double Om, double Omc) {
	double t_1 = (Om / Omc) - 1.0;
	double t_2 = fabs(t) / fabs(l);
	double tmp;
	if ((2.0 * pow(t_2, 2.0)) <= 5.8e+276) {
		tmp = asin(sqrt((((Om / Omc) - -1.0) * (t_1 / fma(((-2.0 * fabs(t)) / fabs(l)), t_2, -1.0)))));
	} else {
		tmp = asin((-1.0 * ((-1.0 * (fabs(l) * sqrt((-0.5 * ((1.0 + (Om / Omc)) * t_1))))) / fabs(t))));
	}
	return tmp;
}
function code(t, l, Om, Omc)
	t_1 = Float64(Float64(Om / Omc) - 1.0)
	t_2 = Float64(abs(t) / abs(l))
	tmp = 0.0
	if (Float64(2.0 * (t_2 ^ 2.0)) <= 5.8e+276)
		tmp = asin(sqrt(Float64(Float64(Float64(Om / Omc) - -1.0) * Float64(t_1 / fma(Float64(Float64(-2.0 * abs(t)) / abs(l)), t_2, -1.0)))));
	else
		tmp = asin(Float64(-1.0 * Float64(Float64(-1.0 * Float64(abs(l) * sqrt(Float64(-0.5 * Float64(Float64(1.0 + Float64(Om / Omc)) * t_1))))) / abs(t))));
	end
	return tmp
end
code[t_, l_, Om_, Omc_] := Block[{t$95$1 = N[(N[(Om / Omc), $MachinePrecision] - 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[Abs[t], $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(2.0 * N[Power[t$95$2, 2.0], $MachinePrecision]), $MachinePrecision], 5.8e+276], N[ArcSin[N[Sqrt[N[(N[(N[(Om / Omc), $MachinePrecision] - -1.0), $MachinePrecision] * N[(t$95$1 / N[(N[(N[(-2.0 * N[Abs[t], $MachinePrecision]), $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision] * t$95$2 + -1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], N[ArcSin[N[(-1.0 * N[(N[(-1.0 * N[(N[Abs[l], $MachinePrecision] * N[Sqrt[N[(-0.5 * N[(N[(1.0 + N[(Om / Omc), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Abs[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]
\begin{array}{l}
t_1 := \frac{Om}{Omc} - 1\\
t_2 := \frac{\left|t\right|}{\left|\ell\right|}\\
\mathbf{if}\;2 \cdot {t\_2}^{2} \leq 5.8 \cdot 10^{+276}:\\
\;\;\;\;\sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{t\_1}{\mathsf{fma}\left(\frac{-2 \cdot \left|t\right|}{\left|\ell\right|}, t\_2, -1\right)}}\right)\\

\mathbf{else}:\\
\;\;\;\;\sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\left|\ell\right| \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot t\_1\right)}\right)}{\left|t\right|}\right)\\


\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))) < 5.7999999999999999e276

    1. Initial program 83.6%

      \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
    2. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}}\right) \]
      2. frac-2negN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{neg}\left(\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      3. lift--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{neg}\left(\color{blue}{\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)}\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      4. sub-negate-revN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      5. lift-pow.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      6. unpow2N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      7. difference-of-sqr-1N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \left(\frac{Om}{Omc} - 1\right)}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      8. associate-/l*N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      9. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      10. add-flipN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - \left(\mathsf{neg}\left(1\right)\right)\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      11. metadata-evalN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - \color{blue}{-1}\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      12. lower--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      13. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \color{blue}{\frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      14. lower--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\color{blue}{\frac{Om}{Omc} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      15. lift-+.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)}}\right) \]
      16. +-commutativeN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)}}\right) \]
      17. distribute-neg-inN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)}}}\right) \]
    3. Applied rewrites72.1%

      \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(-2 \cdot t, \frac{t}{\ell \cdot \ell}, -1\right)}}}\right) \]
    4. Step-by-step derivation
      1. lift-fma.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(-2 \cdot t\right) \cdot \frac{t}{\ell \cdot \ell} + -1}}}\right) \]
      2. lift-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\left(-2 \cdot t\right) \cdot \color{blue}{\frac{t}{\ell \cdot \ell}} + -1}}\right) \]
      3. associate-*r/N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\frac{\left(-2 \cdot t\right) \cdot t}{\ell \cdot \ell}} + -1}}\right) \]
      4. lift-*.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\left(-2 \cdot t\right) \cdot t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
      5. times-fracN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\frac{-2 \cdot t}{\ell} \cdot \frac{t}{\ell}} + -1}}\right) \]
      6. lift-*.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{-2 \cdot t}}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
      7. metadata-evalN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{\left(\mathsf{neg}\left(2\right)\right)} \cdot t}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
      8. distribute-lft-neg-outN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{\mathsf{neg}\left(2 \cdot t\right)}}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
      9. count-2N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
      10. lift-+.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
      11. lift-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell} \cdot \color{blue}{\frac{t}{\ell}} + -1}}\right) \]
      12. lower-fma.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]
      13. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\color{blue}{\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell}}, \frac{t}{\ell}, -1\right)}}\right) \]
      14. lift-+.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
      15. count-2N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\color{blue}{2 \cdot t}\right)}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
      16. distribute-lft-neg-outN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{\left(\mathsf{neg}\left(2\right)\right) \cdot t}}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
      17. metadata-evalN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{-2} \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
      18. lift-*.f6483.5%

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{-2 \cdot t}}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
    5. Applied rewrites83.5%

      \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\mathsf{fma}\left(\frac{-2 \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]

    if 5.7999999999999999e276 < (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))

    1. Initial program 83.6%

      \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
    2. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}}\right) \]
      2. frac-2negN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{neg}\left(\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      3. lift--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{neg}\left(\color{blue}{\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)}\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      4. sub-negate-revN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      5. lift-pow.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      6. unpow2N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      7. difference-of-sqr-1N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \left(\frac{Om}{Omc} - 1\right)}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      8. associate-/l*N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      9. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      10. add-flipN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - \left(\mathsf{neg}\left(1\right)\right)\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      11. metadata-evalN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - \color{blue}{-1}\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      12. lower--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      13. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \color{blue}{\frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
      14. lower--.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\color{blue}{\frac{Om}{Omc} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
      15. lift-+.f64N/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)}}\right) \]
      16. +-commutativeN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)}}\right) \]
      17. distribute-neg-inN/A

        \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)}}}\right) \]
    3. Applied rewrites72.1%

      \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(-2 \cdot t, \frac{t}{\ell \cdot \ell}, -1\right)}}}\right) \]
    4. Taylor expanded in t around -inf

      \[\leadsto \sin^{-1} \color{blue}{\left(-1 \cdot \frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}\right)} \]
    5. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \color{blue}{\frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}}\right) \]
      2. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{\color{blue}{t}}\right) \]
    6. Applied rewrites25.4%

      \[\leadsto \sin^{-1} \color{blue}{\left(-1 \cdot \frac{\sqrt{-0.5 \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}\right)} \]
    7. Taylor expanded in l around -inf

      \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
    8. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      2. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      3. lower-sqrt.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      4. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      5. lower-*.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      6. lower-+.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      7. lower-/.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      8. lower--.f64N/A

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      9. lower-/.f6432.0%

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
    9. Applied rewrites32.0%

      \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 3: 98.6% accurate, 0.6× speedup?

\[\begin{array}{l} t_1 := \frac{\left|t\right|}{\left|\ell\right|}\\ t_2 := 2 \cdot {t\_1}^{2}\\ \mathbf{if}\;t\_2 \leq 5 \cdot 10^{-20}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\ \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+229}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om \cdot Om}{Omc}}{Omc}}{\mathsf{fma}\left(\frac{\left|t\right| + \left|t\right|}{\left|\ell\right|}, t\_1, 1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\left|\ell\right| \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{\left|t\right|}\right)\\ \end{array} \]
(FPCore (t l Om Omc)
  :precision binary64
  (let* ((t_1 (/ (fabs t) (fabs l))) (t_2 (* 2.0 (pow t_1 2.0))))
  (if (<= t_2 5e-20)
    (asin (sqrt (/ (- 1.0 (/ (* (/ Om Omc) Om) Omc)) 1.0)))
    (if (<= t_2 2e+229)
      (asin
       (sqrt
        (/
         (- 1.0 (/ (/ (* Om Om) Omc) Omc))
         (fma (/ (+ (fabs t) (fabs t)) (fabs l)) t_1 1.0))))
      (asin
       (*
        -1.0
        (/
         (*
          -1.0
          (*
           (fabs l)
           (sqrt (* -0.5 (* (+ 1.0 (/ Om Omc)) (- (/ Om Omc) 1.0))))))
         (fabs t))))))))
double code(double t, double l, double Om, double Omc) {
	double t_1 = fabs(t) / fabs(l);
	double t_2 = 2.0 * pow(t_1, 2.0);
	double tmp;
	if (t_2 <= 5e-20) {
		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
	} else if (t_2 <= 2e+229) {
		tmp = asin(sqrt(((1.0 - (((Om * Om) / Omc) / Omc)) / fma(((fabs(t) + fabs(t)) / fabs(l)), t_1, 1.0))));
	} else {
		tmp = asin((-1.0 * ((-1.0 * (fabs(l) * sqrt((-0.5 * ((1.0 + (Om / Omc)) * ((Om / Omc) - 1.0)))))) / fabs(t))));
	}
	return tmp;
}
function code(t, l, Om, Omc)
	t_1 = Float64(abs(t) / abs(l))
	t_2 = Float64(2.0 * (t_1 ^ 2.0))
	tmp = 0.0
	if (t_2 <= 5e-20)
		tmp = asin(sqrt(Float64(Float64(1.0 - Float64(Float64(Float64(Om / Omc) * Om) / Omc)) / 1.0)));
	elseif (t_2 <= 2e+229)
		tmp = asin(sqrt(Float64(Float64(1.0 - Float64(Float64(Float64(Om * Om) / Omc) / Omc)) / fma(Float64(Float64(abs(t) + abs(t)) / abs(l)), t_1, 1.0))));
	else
		tmp = asin(Float64(-1.0 * Float64(Float64(-1.0 * Float64(abs(l) * sqrt(Float64(-0.5 * Float64(Float64(1.0 + Float64(Om / Omc)) * Float64(Float64(Om / Omc) - 1.0)))))) / abs(t))));
	end
	return tmp
end
code[t_, l_, Om_, Omc_] := Block[{t$95$1 = N[(N[Abs[t], $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(2.0 * N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, 5e-20], N[ArcSin[N[Sqrt[N[(N[(1.0 - N[(N[(N[(Om / Omc), $MachinePrecision] * Om), $MachinePrecision] / Omc), $MachinePrecision]), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], If[LessEqual[t$95$2, 2e+229], N[ArcSin[N[Sqrt[N[(N[(1.0 - N[(N[(N[(Om * Om), $MachinePrecision] / Omc), $MachinePrecision] / Omc), $MachinePrecision]), $MachinePrecision] / N[(N[(N[(N[Abs[t], $MachinePrecision] + N[Abs[t], $MachinePrecision]), $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision] * t$95$1 + 1.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], N[ArcSin[N[(-1.0 * N[(N[(-1.0 * N[(N[Abs[l], $MachinePrecision] * N[Sqrt[N[(-0.5 * N[(N[(1.0 + N[(Om / Omc), $MachinePrecision]), $MachinePrecision] * N[(N[(Om / Omc), $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Abs[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]
\begin{array}{l}
t_1 := \frac{\left|t\right|}{\left|\ell\right|}\\
t_2 := 2 \cdot {t\_1}^{2}\\
\mathbf{if}\;t\_2 \leq 5 \cdot 10^{-20}:\\
\;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\

\mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+229}:\\
\;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om \cdot Om}{Omc}}{Omc}}{\mathsf{fma}\left(\frac{\left|t\right| + \left|t\right|}{\left|\ell\right|}, t\_1, 1\right)}}\right)\\

\mathbf{else}:\\
\;\;\;\;\sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\left|\ell\right| \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{\left|t\right|}\right)\\


\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))) < 4.9999999999999999e-20

    1. Initial program 83.6%

      \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
    2. Taylor expanded in t around 0

      \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
    3. Step-by-step derivation
      1. Applied rewrites50.2%

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
      2. Step-by-step derivation
        1. lift-pow.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
        2. unpow2N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{1}}\right) \]
        3. lift-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}}{1}}\right) \]
        4. associate-*r/N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
        5. lower-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
        6. lower-*.f6450.2%

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{\frac{Om}{Omc} \cdot Om}}{Omc}}{1}}\right) \]
      3. Applied rewrites50.2%

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]

      if 4.9999999999999999e-20 < (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))) < 2e229

      1. Initial program 83.6%

        \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
      2. Step-by-step derivation
        1. remove-double-negN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\mathsf{neg}\left(\left(\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)\right)\right)}}}\right) \]
        2. lift-+.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{neg}\left(\left(\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)\right)\right)}}\right) \]
        3. +-commutativeN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{neg}\left(\left(\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)\right)\right)}}\right) \]
        4. distribute-neg-inN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{neg}\left(\color{blue}{\left(\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)\right)}\right)}}\right) \]
        5. metadata-evalN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{neg}\left(\left(\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \color{blue}{-1}\right)\right)}}\right) \]
        6. distribute-neg-inN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\left(\mathsf{neg}\left(\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)\right)\right) + \left(\mathsf{neg}\left(-1\right)\right)}}}\right) \]
        7. remove-double-negN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{2 \cdot {\left(\frac{t}{\ell}\right)}^{2}} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        8. lift-*.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{2 \cdot {\left(\frac{t}{\ell}\right)}^{2}} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        9. *-commutativeN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{{\left(\frac{t}{\ell}\right)}^{2} \cdot 2} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        10. lift-pow.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{{\left(\frac{t}{\ell}\right)}^{2}} \cdot 2 + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        11. unpow2N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\left(\frac{t}{\ell} \cdot \frac{t}{\ell}\right)} \cdot 2 + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        12. associate-*l*N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\frac{t}{\ell} \cdot \left(\frac{t}{\ell} \cdot 2\right)} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        13. *-commutativeN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\frac{t}{\ell} \cdot \color{blue}{\left(2 \cdot \frac{t}{\ell}\right)} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        14. count-2-revN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\frac{t}{\ell} \cdot \color{blue}{\left(\frac{t}{\ell} + \frac{t}{\ell}\right)} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        15. *-commutativeN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\left(\frac{t}{\ell} + \frac{t}{\ell}\right) \cdot \frac{t}{\ell}} + \left(\mathsf{neg}\left(-1\right)\right)}}\right) \]
        16. metadata-evalN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\left(\frac{t}{\ell} + \frac{t}{\ell}\right) \cdot \frac{t}{\ell} + \color{blue}{1}}}\right) \]
        17. lower-fma.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\mathsf{fma}\left(\frac{t}{\ell} + \frac{t}{\ell}, \frac{t}{\ell}, 1\right)}}}\right) \]
        18. lift-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\color{blue}{\frac{t}{\ell}} + \frac{t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        19. lift-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\frac{t}{\ell} + \color{blue}{\frac{t}{\ell}}, \frac{t}{\ell}, 1\right)}}\right) \]
        20. div-add-revN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\color{blue}{\frac{t + t}{\ell}}, \frac{t}{\ell}, 1\right)}}\right) \]
        21. lower-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\color{blue}{\frac{t + t}{\ell}}, \frac{t}{\ell}, 1\right)}}\right) \]
        22. lower-+.f6483.6%

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\mathsf{fma}\left(\frac{\color{blue}{t + t}}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
      3. Applied rewrites83.6%

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}}\right) \]
      4. Step-by-step derivation
        1. lift-pow.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        2. unpow2N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        3. lift-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om}{Omc}} \cdot \frac{Om}{Omc}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        4. lift-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        5. frac-timesN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om \cdot Om}{Omc \cdot Omc}}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        6. unpow2N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        7. lift-pow.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        8. associate-/r*N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{{Om}^{2}}{Omc}}{Omc}}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        9. lower-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{{Om}^{2}}{Omc}}{Omc}}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        10. lower-/.f6478.2%

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{\frac{{Om}^{2}}{Omc}}}{Omc}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        11. lift-pow.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{\color{blue}{{Om}^{2}}}{Omc}}{Omc}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        12. unpow2N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{\color{blue}{Om \cdot Om}}{Omc}}{Omc}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
        13. lower-*.f6478.2%

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{\color{blue}{Om \cdot Om}}{Omc}}{Omc}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]
      5. Applied rewrites78.2%

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om \cdot Om}{Omc}}{Omc}}}{\mathsf{fma}\left(\frac{t + t}{\ell}, \frac{t}{\ell}, 1\right)}}\right) \]

      if 2e229 < (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))

      1. Initial program 83.6%

        \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
      2. Step-by-step derivation
        1. lift-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}}\right) \]
        2. frac-2negN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{neg}\left(\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
        3. lift--.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{neg}\left(\color{blue}{\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)}\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        4. sub-negate-revN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        5. lift-pow.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        6. unpow2N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        7. difference-of-sqr-1N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \left(\frac{Om}{Omc} - 1\right)}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        8. associate-/l*N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
        9. lower-*.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
        10. add-flipN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - \left(\mathsf{neg}\left(1\right)\right)\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        11. metadata-evalN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - \color{blue}{-1}\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        12. lower--.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        13. lower-/.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \color{blue}{\frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
        14. lower--.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\color{blue}{\frac{Om}{Omc} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
        15. lift-+.f64N/A

          \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)}}\right) \]
        16. +-commutativeN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)}}\right) \]
        17. distribute-neg-inN/A

          \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)}}}\right) \]
      3. Applied rewrites72.1%

        \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(-2 \cdot t, \frac{t}{\ell \cdot \ell}, -1\right)}}}\right) \]
      4. Taylor expanded in t around -inf

        \[\leadsto \sin^{-1} \color{blue}{\left(-1 \cdot \frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}\right)} \]
      5. Step-by-step derivation
        1. lower-*.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \color{blue}{\frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}}\right) \]
        2. lower-/.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{\color{blue}{t}}\right) \]
      6. Applied rewrites25.4%

        \[\leadsto \sin^{-1} \color{blue}{\left(-1 \cdot \frac{\sqrt{-0.5 \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}\right)} \]
      7. Taylor expanded in l around -inf

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      8. Step-by-step derivation
        1. lower-*.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        2. lower-*.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        3. lower-sqrt.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        4. lower-*.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        5. lower-*.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        6. lower-+.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        7. lower-/.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        8. lower--.f64N/A

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        9. lower-/.f6432.0%

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      9. Applied rewrites32.0%

        \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
    4. Recombined 3 regimes into one program.
    5. Add Preprocessing

    Alternative 4: 97.6% accurate, 0.6× speedup?

    \[\begin{array}{l} t_1 := \frac{\left|t\right|}{\left|\ell\right|}\\ t_2 := 2 \cdot {t\_1}^{2}\\ \mathbf{if}\;t\_2 \leq 5 \cdot 10^{-24}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\ \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+20}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\mathsf{fma}\left(\frac{-2 \cdot \left|t\right|}{\left|\ell\right|}, t\_1, -1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\left|\ell\right| \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{\left|t\right|}\right)\\ \end{array} \]
    (FPCore (t l Om Omc)
      :precision binary64
      (let* ((t_1 (/ (fabs t) (fabs l))) (t_2 (* 2.0 (pow t_1 2.0))))
      (if (<= t_2 5e-24)
        (asin (sqrt (/ (- 1.0 (/ (* (/ Om Omc) Om) Omc)) 1.0)))
        (if (<= t_2 2e+20)
          (asin
           (sqrt
            (/
             (fma (/ Om (* Omc Omc)) Om -1.0)
             (fma (/ (* -2.0 (fabs t)) (fabs l)) t_1 -1.0))))
          (asin
           (*
            -1.0
            (/
             (*
              -1.0
              (*
               (fabs l)
               (sqrt (* -0.5 (* (+ 1.0 (/ Om Omc)) (- (/ Om Omc) 1.0))))))
             (fabs t))))))))
    double code(double t, double l, double Om, double Omc) {
    	double t_1 = fabs(t) / fabs(l);
    	double t_2 = 2.0 * pow(t_1, 2.0);
    	double tmp;
    	if (t_2 <= 5e-24) {
    		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
    	} else if (t_2 <= 2e+20) {
    		tmp = asin(sqrt((fma((Om / (Omc * Omc)), Om, -1.0) / fma(((-2.0 * fabs(t)) / fabs(l)), t_1, -1.0))));
    	} else {
    		tmp = asin((-1.0 * ((-1.0 * (fabs(l) * sqrt((-0.5 * ((1.0 + (Om / Omc)) * ((Om / Omc) - 1.0)))))) / fabs(t))));
    	}
    	return tmp;
    }
    
    function code(t, l, Om, Omc)
    	t_1 = Float64(abs(t) / abs(l))
    	t_2 = Float64(2.0 * (t_1 ^ 2.0))
    	tmp = 0.0
    	if (t_2 <= 5e-24)
    		tmp = asin(sqrt(Float64(Float64(1.0 - Float64(Float64(Float64(Om / Omc) * Om) / Omc)) / 1.0)));
    	elseif (t_2 <= 2e+20)
    		tmp = asin(sqrt(Float64(fma(Float64(Om / Float64(Omc * Omc)), Om, -1.0) / fma(Float64(Float64(-2.0 * abs(t)) / abs(l)), t_1, -1.0))));
    	else
    		tmp = asin(Float64(-1.0 * Float64(Float64(-1.0 * Float64(abs(l) * sqrt(Float64(-0.5 * Float64(Float64(1.0 + Float64(Om / Omc)) * Float64(Float64(Om / Omc) - 1.0)))))) / abs(t))));
    	end
    	return tmp
    end
    
    code[t_, l_, Om_, Omc_] := Block[{t$95$1 = N[(N[Abs[t], $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(2.0 * N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, 5e-24], N[ArcSin[N[Sqrt[N[(N[(1.0 - N[(N[(N[(Om / Omc), $MachinePrecision] * Om), $MachinePrecision] / Omc), $MachinePrecision]), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], If[LessEqual[t$95$2, 2e+20], N[ArcSin[N[Sqrt[N[(N[(N[(Om / N[(Omc * Omc), $MachinePrecision]), $MachinePrecision] * Om + -1.0), $MachinePrecision] / N[(N[(N[(-2.0 * N[Abs[t], $MachinePrecision]), $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision] * t$95$1 + -1.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], N[ArcSin[N[(-1.0 * N[(N[(-1.0 * N[(N[Abs[l], $MachinePrecision] * N[Sqrt[N[(-0.5 * N[(N[(1.0 + N[(Om / Omc), $MachinePrecision]), $MachinePrecision] * N[(N[(Om / Omc), $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Abs[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]
    
    \begin{array}{l}
    t_1 := \frac{\left|t\right|}{\left|\ell\right|}\\
    t_2 := 2 \cdot {t\_1}^{2}\\
    \mathbf{if}\;t\_2 \leq 5 \cdot 10^{-24}:\\
    \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\
    
    \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+20}:\\
    \;\;\;\;\sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\mathsf{fma}\left(\frac{-2 \cdot \left|t\right|}{\left|\ell\right|}, t\_1, -1\right)}}\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;\sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\left|\ell\right| \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{\left|t\right|}\right)\\
    
    
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))) < 4.9999999999999998e-24

      1. Initial program 83.6%

        \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
      2. Taylor expanded in t around 0

        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
      3. Step-by-step derivation
        1. Applied rewrites50.2%

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
        2. Step-by-step derivation
          1. lift-pow.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
          2. unpow2N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{1}}\right) \]
          3. lift-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}}{1}}\right) \]
          4. associate-*r/N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
          5. lower-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
          6. lower-*.f6450.2%

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{\frac{Om}{Omc} \cdot Om}}{Omc}}{1}}\right) \]
        3. Applied rewrites50.2%

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]

        if 4.9999999999999998e-24 < (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))) < 2e20

        1. Initial program 83.6%

          \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
        2. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}}\right) \]
          2. frac-2negN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{neg}\left(\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
          3. lift--.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{neg}\left(\color{blue}{\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)}\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          4. sub-negate-revN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          5. lift-pow.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          6. unpow2N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          7. difference-of-sqr-1N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \left(\frac{Om}{Omc} - 1\right)}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          8. associate-/l*N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
          9. lower-*.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
          10. add-flipN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - \left(\mathsf{neg}\left(1\right)\right)\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          11. metadata-evalN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - \color{blue}{-1}\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          12. lower--.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          13. lower-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \color{blue}{\frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
          14. lower--.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\color{blue}{\frac{Om}{Omc} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          15. lift-+.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)}}\right) \]
          16. +-commutativeN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)}}\right) \]
          17. distribute-neg-inN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)}}}\right) \]
        3. Applied rewrites72.1%

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(-2 \cdot t, \frac{t}{\ell \cdot \ell}, -1\right)}}}\right) \]
        4. Step-by-step derivation
          1. lift-fma.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(-2 \cdot t\right) \cdot \frac{t}{\ell \cdot \ell} + -1}}}\right) \]
          2. lift-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\left(-2 \cdot t\right) \cdot \color{blue}{\frac{t}{\ell \cdot \ell}} + -1}}\right) \]
          3. associate-*r/N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\frac{\left(-2 \cdot t\right) \cdot t}{\ell \cdot \ell}} + -1}}\right) \]
          4. lift-*.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\left(-2 \cdot t\right) \cdot t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
          5. times-fracN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\frac{-2 \cdot t}{\ell} \cdot \frac{t}{\ell}} + -1}}\right) \]
          6. lift-*.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{-2 \cdot t}}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
          7. metadata-evalN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{\left(\mathsf{neg}\left(2\right)\right)} \cdot t}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
          8. distribute-lft-neg-outN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{\mathsf{neg}\left(2 \cdot t\right)}}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
          9. count-2N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
          10. lift-+.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
          11. lift-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell} \cdot \color{blue}{\frac{t}{\ell}} + -1}}\right) \]
          12. lower-fma.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]
          13. lower-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\color{blue}{\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell}}, \frac{t}{\ell}, -1\right)}}\right) \]
          14. lift-+.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
          15. count-2N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\color{blue}{2 \cdot t}\right)}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
          16. distribute-lft-neg-outN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{\left(\mathsf{neg}\left(2\right)\right) \cdot t}}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
          17. metadata-evalN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{-2} \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
          18. lift-*.f6483.5%

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{-2 \cdot t}}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
        5. Applied rewrites83.5%

          \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\mathsf{fma}\left(\frac{-2 \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]
        6. Applied rewrites67.7%

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\mathsf{fma}\left(\frac{t}{\ell \cdot \ell} \cdot -2, t, -1\right)}}}\right) \]
        7. Step-by-step derivation
          1. lift-fma.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\left(\frac{t}{\ell \cdot \ell} \cdot -2\right) \cdot t + -1}}}\right) \]
          2. lift-*.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\left(\frac{t}{\ell \cdot \ell} \cdot -2\right)} \cdot t + -1}}\right) \]
          3. associate-*l*N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\frac{t}{\ell \cdot \ell} \cdot \left(-2 \cdot t\right)} + -1}}\right) \]
          4. *-commutativeN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\left(-2 \cdot t\right) \cdot \frac{t}{\ell \cdot \ell}} + -1}}\right) \]
          5. lift-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\left(-2 \cdot t\right) \cdot \color{blue}{\frac{t}{\ell \cdot \ell}} + -1}}\right) \]
          6. lift-*.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\left(-2 \cdot t\right) \cdot \frac{t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
          7. lift-*.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\left(-2 \cdot t\right) \cdot \frac{t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
          8. associate-*r/N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\frac{\left(-2 \cdot t\right) \cdot t}{\ell \cdot \ell}} + -1}}\right) \]
          9. lift-*.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\frac{\left(-2 \cdot t\right) \cdot t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
          10. times-fracN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\frac{-2 \cdot t}{\ell} \cdot \frac{t}{\ell}} + -1}}\right) \]
          11. lift-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\frac{-2 \cdot t}{\ell} \cdot \color{blue}{\frac{t}{\ell}} + -1}}\right) \]
          12. lower-fma.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\mathsf{fma}\left(\frac{-2 \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]
          13. lower-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\mathsf{fma}\left(\color{blue}{\frac{-2 \cdot t}{\ell}}, \frac{t}{\ell}, -1\right)}}\right) \]
          14. lower-*.f6478.5%

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\mathsf{fma}\left(\frac{\color{blue}{-2 \cdot t}}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
        8. Applied rewrites78.5%

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\mathsf{fma}\left(\frac{-2 \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]

        if 2e20 < (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))

        1. Initial program 83.6%

          \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
        2. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}}\right) \]
          2. frac-2negN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{neg}\left(\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
          3. lift--.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{neg}\left(\color{blue}{\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)}\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          4. sub-negate-revN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          5. lift-pow.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          6. unpow2N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          7. difference-of-sqr-1N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \left(\frac{Om}{Omc} - 1\right)}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          8. associate-/l*N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
          9. lower-*.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
          10. add-flipN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - \left(\mathsf{neg}\left(1\right)\right)\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          11. metadata-evalN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - \color{blue}{-1}\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          12. lower--.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          13. lower-/.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \color{blue}{\frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
          14. lower--.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\color{blue}{\frac{Om}{Omc} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
          15. lift-+.f64N/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)}}\right) \]
          16. +-commutativeN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)}}\right) \]
          17. distribute-neg-inN/A

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)}}}\right) \]
        3. Applied rewrites72.1%

          \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(-2 \cdot t, \frac{t}{\ell \cdot \ell}, -1\right)}}}\right) \]
        4. Taylor expanded in t around -inf

          \[\leadsto \sin^{-1} \color{blue}{\left(-1 \cdot \frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}\right)} \]
        5. Step-by-step derivation
          1. lower-*.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \color{blue}{\frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}}\right) \]
          2. lower-/.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{\sqrt{\frac{-1}{2} \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{\color{blue}{t}}\right) \]
        6. Applied rewrites25.4%

          \[\leadsto \sin^{-1} \color{blue}{\left(-1 \cdot \frac{\sqrt{-0.5 \cdot \left({\ell}^{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)\right)}}{t}\right)} \]
        7. Taylor expanded in l around -inf

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        8. Step-by-step derivation
          1. lower-*.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
          2. lower-*.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
          3. lower-sqrt.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
          4. lower-*.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
          5. lower-*.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
          6. lower-+.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
          7. lower-/.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
          8. lower--.f64N/A

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{\frac{-1}{2} \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
          9. lower-/.f6432.0%

            \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
        9. Applied rewrites32.0%

          \[\leadsto \sin^{-1} \left(-1 \cdot \frac{-1 \cdot \left(\ell \cdot \sqrt{-0.5 \cdot \left(\left(1 + \frac{Om}{Omc}\right) \cdot \left(\frac{Om}{Omc} - 1\right)\right)}\right)}{t}\right) \]
      4. Recombined 3 regimes into one program.
      5. Add Preprocessing

      Alternative 5: 95.9% accurate, 1.0× speedup?

      \[\begin{array}{l} t_1 := \frac{\left|t\right|}{\left|\ell\right|}\\ t_2 := \frac{Om}{Omc \cdot Omc}\\ \mathbf{if}\;t\_1 \leq 2 \cdot 10^{-12}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\ \mathbf{elif}\;t\_1 \leq 3 \cdot 10^{+114}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(t\_2, Om, -1\right)}{\mathsf{fma}\left(\frac{-2 \cdot \left|t\right|}{\left|\ell\right|}, t\_1, -1\right)}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \frac{\sqrt{\frac{0.5 \cdot \left(1 - Om \cdot t\_2\right)}{\left|t\right|}}}{\sqrt{\left|t\right|}}\right)\\ \end{array} \]
      (FPCore (t l Om Omc)
        :precision binary64
        (let* ((t_1 (/ (fabs t) (fabs l))) (t_2 (/ Om (* Omc Omc))))
        (if (<= t_1 2e-12)
          (asin (sqrt (/ (- 1.0 (/ (* (/ Om Omc) Om) Omc)) 1.0)))
          (if (<= t_1 3e+114)
            (asin
             (sqrt
              (/
               (fma t_2 Om -1.0)
               (fma (/ (* -2.0 (fabs t)) (fabs l)) t_1 -1.0))))
            (asin
             (*
              (fabs l)
              (/
               (sqrt (/ (* 0.5 (- 1.0 (* Om t_2))) (fabs t)))
               (sqrt (fabs t)))))))))
      double code(double t, double l, double Om, double Omc) {
      	double t_1 = fabs(t) / fabs(l);
      	double t_2 = Om / (Omc * Omc);
      	double tmp;
      	if (t_1 <= 2e-12) {
      		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
      	} else if (t_1 <= 3e+114) {
      		tmp = asin(sqrt((fma(t_2, Om, -1.0) / fma(((-2.0 * fabs(t)) / fabs(l)), t_1, -1.0))));
      	} else {
      		tmp = asin((fabs(l) * (sqrt(((0.5 * (1.0 - (Om * t_2))) / fabs(t))) / sqrt(fabs(t)))));
      	}
      	return tmp;
      }
      
      function code(t, l, Om, Omc)
      	t_1 = Float64(abs(t) / abs(l))
      	t_2 = Float64(Om / Float64(Omc * Omc))
      	tmp = 0.0
      	if (t_1 <= 2e-12)
      		tmp = asin(sqrt(Float64(Float64(1.0 - Float64(Float64(Float64(Om / Omc) * Om) / Omc)) / 1.0)));
      	elseif (t_1 <= 3e+114)
      		tmp = asin(sqrt(Float64(fma(t_2, Om, -1.0) / fma(Float64(Float64(-2.0 * abs(t)) / abs(l)), t_1, -1.0))));
      	else
      		tmp = asin(Float64(abs(l) * Float64(sqrt(Float64(Float64(0.5 * Float64(1.0 - Float64(Om * t_2))) / abs(t))) / sqrt(abs(t)))));
      	end
      	return tmp
      end
      
      code[t_, l_, Om_, Omc_] := Block[{t$95$1 = N[(N[Abs[t], $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(Om / N[(Omc * Omc), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 2e-12], N[ArcSin[N[Sqrt[N[(N[(1.0 - N[(N[(N[(Om / Omc), $MachinePrecision] * Om), $MachinePrecision] / Omc), $MachinePrecision]), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], If[LessEqual[t$95$1, 3e+114], N[ArcSin[N[Sqrt[N[(N[(t$95$2 * Om + -1.0), $MachinePrecision] / N[(N[(N[(-2.0 * N[Abs[t], $MachinePrecision]), $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision] * t$95$1 + -1.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], N[ArcSin[N[(N[Abs[l], $MachinePrecision] * N[(N[Sqrt[N[(N[(0.5 * N[(1.0 - N[(Om * t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Abs[t], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Sqrt[N[Abs[t], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]
      
      \begin{array}{l}
      t_1 := \frac{\left|t\right|}{\left|\ell\right|}\\
      t_2 := \frac{Om}{Omc \cdot Omc}\\
      \mathbf{if}\;t\_1 \leq 2 \cdot 10^{-12}:\\
      \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\
      
      \mathbf{elif}\;t\_1 \leq 3 \cdot 10^{+114}:\\
      \;\;\;\;\sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(t\_2, Om, -1\right)}{\mathsf{fma}\left(\frac{-2 \cdot \left|t\right|}{\left|\ell\right|}, t\_1, -1\right)}}\right)\\
      
      \mathbf{else}:\\
      \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \frac{\sqrt{\frac{0.5 \cdot \left(1 - Om \cdot t\_2\right)}{\left|t\right|}}}{\sqrt{\left|t\right|}}\right)\\
      
      
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if (/.f64 t l) < 2e-12

        1. Initial program 83.6%

          \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
        2. Taylor expanded in t around 0

          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
        3. Step-by-step derivation
          1. Applied rewrites50.2%

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
          2. Step-by-step derivation
            1. lift-pow.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
            2. unpow2N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{1}}\right) \]
            3. lift-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}}{1}}\right) \]
            4. associate-*r/N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
            5. lower-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
            6. lower-*.f6450.2%

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{\frac{Om}{Omc} \cdot Om}}{Omc}}{1}}\right) \]
          3. Applied rewrites50.2%

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]

          if 2e-12 < (/.f64 t l) < 3e114

          1. Initial program 83.6%

            \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
          2. Step-by-step derivation
            1. lift-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}}\right) \]
            2. frac-2negN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{neg}\left(\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
            3. lift--.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{neg}\left(\color{blue}{\left(1 - {\left(\frac{Om}{Omc}\right)}^{2}\right)}\right)}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            4. sub-negate-revN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            5. lift-pow.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            6. unpow2N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            7. difference-of-sqr-1N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \left(\frac{Om}{Omc} - 1\right)}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            8. associate-/l*N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
            9. lower-*.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} + 1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
            10. add-flipN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - \left(\mathsf{neg}\left(1\right)\right)\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            11. metadata-evalN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - \color{blue}{-1}\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            12. lower--.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right)} \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            13. lower-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \color{blue}{\frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}}\right) \]
            14. lower--.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\color{blue}{\frac{Om}{Omc} - 1}}{\mathsf{neg}\left(\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right)}}\right) \]
            15. lift-+.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)}\right)}}\right) \]
            16. +-commutativeN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{neg}\left(\color{blue}{\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2} + 1\right)}\right)}}\right) \]
            17. distribute-neg-inN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(\mathsf{neg}\left(2 \cdot {\left(\frac{t}{\ell}\right)}^{2}\right)\right) + \left(\mathsf{neg}\left(1\right)\right)}}}\right) \]
          3. Applied rewrites72.1%

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(-2 \cdot t, \frac{t}{\ell \cdot \ell}, -1\right)}}}\right) \]
          4. Step-by-step derivation
            1. lift-fma.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\left(-2 \cdot t\right) \cdot \frac{t}{\ell \cdot \ell} + -1}}}\right) \]
            2. lift-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\left(-2 \cdot t\right) \cdot \color{blue}{\frac{t}{\ell \cdot \ell}} + -1}}\right) \]
            3. associate-*r/N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\frac{\left(-2 \cdot t\right) \cdot t}{\ell \cdot \ell}} + -1}}\right) \]
            4. lift-*.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\left(-2 \cdot t\right) \cdot t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
            5. times-fracN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\frac{-2 \cdot t}{\ell} \cdot \frac{t}{\ell}} + -1}}\right) \]
            6. lift-*.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{-2 \cdot t}}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
            7. metadata-evalN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{\left(\mathsf{neg}\left(2\right)\right)} \cdot t}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
            8. distribute-lft-neg-outN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\color{blue}{\mathsf{neg}\left(2 \cdot t\right)}}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
            9. count-2N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
            10. lift-+.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell} \cdot \frac{t}{\ell} + -1}}\right) \]
            11. lift-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell} \cdot \color{blue}{\frac{t}{\ell}} + -1}}\right) \]
            12. lower-fma.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]
            13. lower-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\color{blue}{\frac{\mathsf{neg}\left(\left(t + t\right)\right)}{\ell}}, \frac{t}{\ell}, -1\right)}}\right) \]
            14. lift-+.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\color{blue}{\left(t + t\right)}\right)}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
            15. count-2N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\mathsf{neg}\left(\color{blue}{2 \cdot t}\right)}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
            16. distribute-lft-neg-outN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{\left(\mathsf{neg}\left(2\right)\right) \cdot t}}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
            17. metadata-evalN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{-2} \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
            18. lift-*.f6483.5%

              \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\mathsf{fma}\left(\frac{\color{blue}{-2 \cdot t}}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
          5. Applied rewrites83.5%

            \[\leadsto \sin^{-1} \left(\sqrt{\left(\frac{Om}{Omc} - -1\right) \cdot \frac{\frac{Om}{Omc} - 1}{\color{blue}{\mathsf{fma}\left(\frac{-2 \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]
          6. Applied rewrites67.7%

            \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\mathsf{fma}\left(\frac{t}{\ell \cdot \ell} \cdot -2, t, -1\right)}}}\right) \]
          7. Step-by-step derivation
            1. lift-fma.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\left(\frac{t}{\ell \cdot \ell} \cdot -2\right) \cdot t + -1}}}\right) \]
            2. lift-*.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\left(\frac{t}{\ell \cdot \ell} \cdot -2\right)} \cdot t + -1}}\right) \]
            3. associate-*l*N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\frac{t}{\ell \cdot \ell} \cdot \left(-2 \cdot t\right)} + -1}}\right) \]
            4. *-commutativeN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\left(-2 \cdot t\right) \cdot \frac{t}{\ell \cdot \ell}} + -1}}\right) \]
            5. lift-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\left(-2 \cdot t\right) \cdot \color{blue}{\frac{t}{\ell \cdot \ell}} + -1}}\right) \]
            6. lift-*.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\left(-2 \cdot t\right) \cdot \frac{t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
            7. lift-*.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\left(-2 \cdot t\right) \cdot \frac{t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
            8. associate-*r/N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\frac{\left(-2 \cdot t\right) \cdot t}{\ell \cdot \ell}} + -1}}\right) \]
            9. lift-*.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\frac{\left(-2 \cdot t\right) \cdot t}{\color{blue}{\ell \cdot \ell}} + -1}}\right) \]
            10. times-fracN/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\frac{-2 \cdot t}{\ell} \cdot \frac{t}{\ell}} + -1}}\right) \]
            11. lift-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\frac{-2 \cdot t}{\ell} \cdot \color{blue}{\frac{t}{\ell}} + -1}}\right) \]
            12. lower-fma.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\mathsf{fma}\left(\frac{-2 \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]
            13. lower-/.f64N/A

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\mathsf{fma}\left(\color{blue}{\frac{-2 \cdot t}{\ell}}, \frac{t}{\ell}, -1\right)}}\right) \]
            14. lower-*.f6478.5%

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\mathsf{fma}\left(\frac{\color{blue}{-2 \cdot t}}{\ell}, \frac{t}{\ell}, -1\right)}}\right) \]
          8. Applied rewrites78.5%

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\mathsf{fma}\left(\frac{Om}{Omc \cdot Omc}, Om, -1\right)}{\color{blue}{\mathsf{fma}\left(\frac{-2 \cdot t}{\ell}, \frac{t}{\ell}, -1\right)}}}\right) \]

          if 3e114 < (/.f64 t l)

          1. Initial program 83.6%

            \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
          2. Taylor expanded in l around 0

            \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
          3. Step-by-step derivation
            1. lower-*.f64N/A

              \[\leadsto \sin^{-1} \left(\ell \cdot \color{blue}{\sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}}\right) \]
            2. lower-sqrt.f64N/A

              \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            3. lower-*.f64N/A

              \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            4. lower-/.f64N/A

              \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            5. lower--.f64N/A

              \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            6. lower-/.f64N/A

              \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            7. lower-pow.f64N/A

              \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            8. lower-pow.f64N/A

              \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            9. lower-pow.f6421.7%

              \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
          4. Applied rewrites21.7%

            \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
          5. Applied rewrites15.0%

            \[\leadsto \sin^{-1} \left(\ell \cdot \frac{\sqrt{\frac{0.5 \cdot \left(1 - Om \cdot \frac{Om}{Omc \cdot Omc}\right)}{t}}}{\color{blue}{\sqrt{t}}}\right) \]
        4. Recombined 3 regimes into one program.
        5. Add Preprocessing

        Alternative 6: 94.8% accurate, 1.3× speedup?

        \[\begin{array}{l} \mathbf{if}\;\frac{\left|t\right|}{\left|\ell\right|} \leq 0.5:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \frac{\sqrt{\frac{0.5 \cdot \left(1 - Om \cdot \frac{Om}{Omc \cdot Omc}\right)}{\left|t\right|}}}{\sqrt{\left|t\right|}}\right)\\ \end{array} \]
        (FPCore (t l Om Omc)
          :precision binary64
          (if (<= (/ (fabs t) (fabs l)) 0.5)
          (asin (sqrt (/ (- 1.0 (/ (* (/ Om Omc) Om) Omc)) 1.0)))
          (asin
           (*
            (fabs l)
            (/
             (sqrt (/ (* 0.5 (- 1.0 (* Om (/ Om (* Omc Omc))))) (fabs t)))
             (sqrt (fabs t)))))))
        double code(double t, double l, double Om, double Omc) {
        	double tmp;
        	if ((fabs(t) / fabs(l)) <= 0.5) {
        		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
        	} else {
        		tmp = asin((fabs(l) * (sqrt(((0.5 * (1.0 - (Om * (Om / (Omc * Omc))))) / fabs(t))) / sqrt(fabs(t)))));
        	}
        	return tmp;
        }
        
        module fmin_fmax_functions
            implicit none
            private
            public fmax
            public fmin
        
            interface fmax
                module procedure fmax88
                module procedure fmax44
                module procedure fmax84
                module procedure fmax48
            end interface
            interface fmin
                module procedure fmin88
                module procedure fmin44
                module procedure fmin84
                module procedure fmin48
            end interface
        contains
            real(8) function fmax88(x, y) result (res)
                real(8), intent (in) :: x
                real(8), intent (in) :: y
                res = merge(y, merge(x, max(x, y), y /= y), x /= x)
            end function
            real(4) function fmax44(x, y) result (res)
                real(4), intent (in) :: x
                real(4), intent (in) :: y
                res = merge(y, merge(x, max(x, y), y /= y), x /= x)
            end function
            real(8) function fmax84(x, y) result(res)
                real(8), intent (in) :: x
                real(4), intent (in) :: y
                res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
            end function
            real(8) function fmax48(x, y) result(res)
                real(4), intent (in) :: x
                real(8), intent (in) :: y
                res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
            end function
            real(8) function fmin88(x, y) result (res)
                real(8), intent (in) :: x
                real(8), intent (in) :: y
                res = merge(y, merge(x, min(x, y), y /= y), x /= x)
            end function
            real(4) function fmin44(x, y) result (res)
                real(4), intent (in) :: x
                real(4), intent (in) :: y
                res = merge(y, merge(x, min(x, y), y /= y), x /= x)
            end function
            real(8) function fmin84(x, y) result(res)
                real(8), intent (in) :: x
                real(4), intent (in) :: y
                res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
            end function
            real(8) function fmin48(x, y) result(res)
                real(4), intent (in) :: x
                real(8), intent (in) :: y
                res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
            end function
        end module
        
        real(8) function code(t, l, om, omc)
        use fmin_fmax_functions
            real(8), intent (in) :: t
            real(8), intent (in) :: l
            real(8), intent (in) :: om
            real(8), intent (in) :: omc
            real(8) :: tmp
            if ((abs(t) / abs(l)) <= 0.5d0) then
                tmp = asin(sqrt(((1.0d0 - (((om / omc) * om) / omc)) / 1.0d0)))
            else
                tmp = asin((abs(l) * (sqrt(((0.5d0 * (1.0d0 - (om * (om / (omc * omc))))) / abs(t))) / sqrt(abs(t)))))
            end if
            code = tmp
        end function
        
        public static double code(double t, double l, double Om, double Omc) {
        	double tmp;
        	if ((Math.abs(t) / Math.abs(l)) <= 0.5) {
        		tmp = Math.asin(Math.sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
        	} else {
        		tmp = Math.asin((Math.abs(l) * (Math.sqrt(((0.5 * (1.0 - (Om * (Om / (Omc * Omc))))) / Math.abs(t))) / Math.sqrt(Math.abs(t)))));
        	}
        	return tmp;
        }
        
        def code(t, l, Om, Omc):
        	tmp = 0
        	if (math.fabs(t) / math.fabs(l)) <= 0.5:
        		tmp = math.asin(math.sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)))
        	else:
        		tmp = math.asin((math.fabs(l) * (math.sqrt(((0.5 * (1.0 - (Om * (Om / (Omc * Omc))))) / math.fabs(t))) / math.sqrt(math.fabs(t)))))
        	return tmp
        
        function code(t, l, Om, Omc)
        	tmp = 0.0
        	if (Float64(abs(t) / abs(l)) <= 0.5)
        		tmp = asin(sqrt(Float64(Float64(1.0 - Float64(Float64(Float64(Om / Omc) * Om) / Omc)) / 1.0)));
        	else
        		tmp = asin(Float64(abs(l) * Float64(sqrt(Float64(Float64(0.5 * Float64(1.0 - Float64(Om * Float64(Om / Float64(Omc * Omc))))) / abs(t))) / sqrt(abs(t)))));
        	end
        	return tmp
        end
        
        function tmp_2 = code(t, l, Om, Omc)
        	tmp = 0.0;
        	if ((abs(t) / abs(l)) <= 0.5)
        		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
        	else
        		tmp = asin((abs(l) * (sqrt(((0.5 * (1.0 - (Om * (Om / (Omc * Omc))))) / abs(t))) / sqrt(abs(t)))));
        	end
        	tmp_2 = tmp;
        end
        
        code[t_, l_, Om_, Omc_] := If[LessEqual[N[(N[Abs[t], $MachinePrecision] / N[Abs[l], $MachinePrecision]), $MachinePrecision], 0.5], N[ArcSin[N[Sqrt[N[(N[(1.0 - N[(N[(N[(Om / Omc), $MachinePrecision] * Om), $MachinePrecision] / Omc), $MachinePrecision]), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], N[ArcSin[N[(N[Abs[l], $MachinePrecision] * N[(N[Sqrt[N[(N[(0.5 * N[(1.0 - N[(Om * N[(Om / N[(Omc * Omc), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Abs[t], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Sqrt[N[Abs[t], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
        
        \begin{array}{l}
        \mathbf{if}\;\frac{\left|t\right|}{\left|\ell\right|} \leq 0.5:\\
        \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\
        
        \mathbf{else}:\\
        \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \frac{\sqrt{\frac{0.5 \cdot \left(1 - Om \cdot \frac{Om}{Omc \cdot Omc}\right)}{\left|t\right|}}}{\sqrt{\left|t\right|}}\right)\\
        
        
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if (/.f64 t l) < 0.5

          1. Initial program 83.6%

            \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
          2. Taylor expanded in t around 0

            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
          3. Step-by-step derivation
            1. Applied rewrites50.2%

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
            2. Step-by-step derivation
              1. lift-pow.f64N/A

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
              2. unpow2N/A

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{1}}\right) \]
              3. lift-/.f64N/A

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}}{1}}\right) \]
              4. associate-*r/N/A

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
              5. lower-/.f64N/A

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
              6. lower-*.f6450.2%

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{\frac{Om}{Omc} \cdot Om}}{Omc}}{1}}\right) \]
            3. Applied rewrites50.2%

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]

            if 0.5 < (/.f64 t l)

            1. Initial program 83.6%

              \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
            2. Taylor expanded in l around 0

              \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
            3. Step-by-step derivation
              1. lower-*.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \color{blue}{\sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}}\right) \]
              2. lower-sqrt.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              3. lower-*.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              4. lower-/.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              5. lower--.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              6. lower-/.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              7. lower-pow.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              8. lower-pow.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              9. lower-pow.f6421.7%

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            4. Applied rewrites21.7%

              \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
            5. Applied rewrites15.0%

              \[\leadsto \sin^{-1} \left(\ell \cdot \frac{\sqrt{\frac{0.5 \cdot \left(1 - Om \cdot \frac{Om}{Omc \cdot Omc}\right)}{t}}}{\color{blue}{\sqrt{t}}}\right) \]
          4. Recombined 2 regimes into one program.
          5. Add Preprocessing

          Alternative 7: 94.8% accurate, 0.6× speedup?

          \[\begin{array}{l} \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 1:\\ \;\;\;\;\sin^{-1} \left(\frac{\sqrt{0.5 \cdot \left(1 - Om \cdot \frac{Om}{Omc \cdot Omc}\right)}}{\left|t\right|} \cdot \left|\ell\right|\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\ \end{array} \]
          (FPCore (t l Om Omc)
            :precision binary64
            (if (<=
               (asin
                (sqrt
                 (/
                  (- 1.0 (pow (/ Om Omc) 2.0))
                  (+ 1.0 (* 2.0 (pow (/ t (fabs l)) 2.0))))))
               1.0)
            (asin
             (*
              (/ (sqrt (* 0.5 (- 1.0 (* Om (/ Om (* Omc Omc)))))) (fabs t))
              (fabs l)))
            (asin (sqrt (/ (- 1.0 (/ (* (/ Om Omc) Om) Omc)) 1.0)))))
          double code(double t, double l, double Om, double Omc) {
          	double tmp;
          	if (asin(sqrt(((1.0 - pow((Om / Omc), 2.0)) / (1.0 + (2.0 * pow((t / fabs(l)), 2.0)))))) <= 1.0) {
          		tmp = asin(((sqrt((0.5 * (1.0 - (Om * (Om / (Omc * Omc)))))) / fabs(t)) * fabs(l)));
          	} else {
          		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
          	}
          	return tmp;
          }
          
          module fmin_fmax_functions
              implicit none
              private
              public fmax
              public fmin
          
              interface fmax
                  module procedure fmax88
                  module procedure fmax44
                  module procedure fmax84
                  module procedure fmax48
              end interface
              interface fmin
                  module procedure fmin88
                  module procedure fmin44
                  module procedure fmin84
                  module procedure fmin48
              end interface
          contains
              real(8) function fmax88(x, y) result (res)
                  real(8), intent (in) :: x
                  real(8), intent (in) :: y
                  res = merge(y, merge(x, max(x, y), y /= y), x /= x)
              end function
              real(4) function fmax44(x, y) result (res)
                  real(4), intent (in) :: x
                  real(4), intent (in) :: y
                  res = merge(y, merge(x, max(x, y), y /= y), x /= x)
              end function
              real(8) function fmax84(x, y) result(res)
                  real(8), intent (in) :: x
                  real(4), intent (in) :: y
                  res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
              end function
              real(8) function fmax48(x, y) result(res)
                  real(4), intent (in) :: x
                  real(8), intent (in) :: y
                  res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
              end function
              real(8) function fmin88(x, y) result (res)
                  real(8), intent (in) :: x
                  real(8), intent (in) :: y
                  res = merge(y, merge(x, min(x, y), y /= y), x /= x)
              end function
              real(4) function fmin44(x, y) result (res)
                  real(4), intent (in) :: x
                  real(4), intent (in) :: y
                  res = merge(y, merge(x, min(x, y), y /= y), x /= x)
              end function
              real(8) function fmin84(x, y) result(res)
                  real(8), intent (in) :: x
                  real(4), intent (in) :: y
                  res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
              end function
              real(8) function fmin48(x, y) result(res)
                  real(4), intent (in) :: x
                  real(8), intent (in) :: y
                  res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
              end function
          end module
          
          real(8) function code(t, l, om, omc)
          use fmin_fmax_functions
              real(8), intent (in) :: t
              real(8), intent (in) :: l
              real(8), intent (in) :: om
              real(8), intent (in) :: omc
              real(8) :: tmp
              if (asin(sqrt(((1.0d0 - ((om / omc) ** 2.0d0)) / (1.0d0 + (2.0d0 * ((t / abs(l)) ** 2.0d0)))))) <= 1.0d0) then
                  tmp = asin(((sqrt((0.5d0 * (1.0d0 - (om * (om / (omc * omc)))))) / abs(t)) * abs(l)))
              else
                  tmp = asin(sqrt(((1.0d0 - (((om / omc) * om) / omc)) / 1.0d0)))
              end if
              code = tmp
          end function
          
          public static double code(double t, double l, double Om, double Omc) {
          	double tmp;
          	if (Math.asin(Math.sqrt(((1.0 - Math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * Math.pow((t / Math.abs(l)), 2.0)))))) <= 1.0) {
          		tmp = Math.asin(((Math.sqrt((0.5 * (1.0 - (Om * (Om / (Omc * Omc)))))) / Math.abs(t)) * Math.abs(l)));
          	} else {
          		tmp = Math.asin(Math.sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
          	}
          	return tmp;
          }
          
          def code(t, l, Om, Omc):
          	tmp = 0
          	if math.asin(math.sqrt(((1.0 - math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * math.pow((t / math.fabs(l)), 2.0)))))) <= 1.0:
          		tmp = math.asin(((math.sqrt((0.5 * (1.0 - (Om * (Om / (Omc * Omc)))))) / math.fabs(t)) * math.fabs(l)))
          	else:
          		tmp = math.asin(math.sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)))
          	return tmp
          
          function code(t, l, Om, Omc)
          	tmp = 0.0
          	if (asin(sqrt(Float64(Float64(1.0 - (Float64(Om / Omc) ^ 2.0)) / Float64(1.0 + Float64(2.0 * (Float64(t / abs(l)) ^ 2.0)))))) <= 1.0)
          		tmp = asin(Float64(Float64(sqrt(Float64(0.5 * Float64(1.0 - Float64(Om * Float64(Om / Float64(Omc * Omc)))))) / abs(t)) * abs(l)));
          	else
          		tmp = asin(sqrt(Float64(Float64(1.0 - Float64(Float64(Float64(Om / Omc) * Om) / Omc)) / 1.0)));
          	end
          	return tmp
          end
          
          function tmp_2 = code(t, l, Om, Omc)
          	tmp = 0.0;
          	if (asin(sqrt(((1.0 - ((Om / Omc) ^ 2.0)) / (1.0 + (2.0 * ((t / abs(l)) ^ 2.0)))))) <= 1.0)
          		tmp = asin(((sqrt((0.5 * (1.0 - (Om * (Om / (Omc * Omc)))))) / abs(t)) * abs(l)));
          	else
          		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
          	end
          	tmp_2 = tmp;
          end
          
          code[t_, l_, Om_, Omc_] := If[LessEqual[N[ArcSin[N[Sqrt[N[(N[(1.0 - N[Power[N[(Om / Omc), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(2.0 * N[Power[N[(t / N[Abs[l], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], 1.0], N[ArcSin[N[(N[(N[Sqrt[N[(0.5 * N[(1.0 - N[(Om * N[(Om / N[(Omc * Omc), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[t], $MachinePrecision]), $MachinePrecision] * N[Abs[l], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcSin[N[Sqrt[N[(N[(1.0 - N[(N[(N[(Om / Omc), $MachinePrecision] * Om), $MachinePrecision] / Omc), $MachinePrecision]), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]]
          
          \begin{array}{l}
          \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 1:\\
          \;\;\;\;\sin^{-1} \left(\frac{\sqrt{0.5 \cdot \left(1 - Om \cdot \frac{Om}{Omc \cdot Omc}\right)}}{\left|t\right|} \cdot \left|\ell\right|\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\
          
          
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))))))) < 1

            1. Initial program 83.6%

              \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
            2. Taylor expanded in l around 0

              \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
            3. Step-by-step derivation
              1. lower-*.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \color{blue}{\sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}}\right) \]
              2. lower-sqrt.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              3. lower-*.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              4. lower-/.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              5. lower--.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              6. lower-/.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              7. lower-pow.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              8. lower-pow.f64N/A

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              9. lower-pow.f6421.7%

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
            4. Applied rewrites21.7%

              \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
            5. Applied rewrites30.0%

              \[\leadsto \sin^{-1} \left(\frac{\sqrt{0.5 \cdot \left(1 - Om \cdot \frac{Om}{Omc \cdot Omc}\right)}}{\left|t\right|} \cdot \color{blue}{\ell}\right) \]

            if 1 < (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))))))

            1. Initial program 83.6%

              \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
            2. Taylor expanded in t around 0

              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
            3. Step-by-step derivation
              1. Applied rewrites50.2%

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
              2. Step-by-step derivation
                1. lift-pow.f64N/A

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
                2. unpow2N/A

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{1}}\right) \]
                3. lift-/.f64N/A

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}}{1}}\right) \]
                4. associate-*r/N/A

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
                5. lower-/.f64N/A

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
                6. lower-*.f6450.2%

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{\frac{Om}{Omc} \cdot Om}}{Omc}}{1}}\right) \]
              3. Applied rewrites50.2%

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
            4. Recombined 2 regimes into one program.
            5. Add Preprocessing

            Alternative 8: 83.0% accurate, 0.7× speedup?

            \[\begin{array}{l} \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 0.0002:\\ \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\ \end{array} \]
            (FPCore (t l Om Omc)
              :precision binary64
              (if (<=
                 (asin
                  (sqrt
                   (/
                    (- 1.0 (pow (/ Om Omc) 2.0))
                    (+ 1.0 (* 2.0 (pow (/ t (fabs l)) 2.0))))))
                 0.0002)
              (asin (* (fabs l) (sqrt (/ (/ 0.5 t) t))))
              (asin (sqrt (/ (- 1.0 (/ (* (/ Om Omc) Om) Omc)) 1.0)))))
            double code(double t, double l, double Om, double Omc) {
            	double tmp;
            	if (asin(sqrt(((1.0 - pow((Om / Omc), 2.0)) / (1.0 + (2.0 * pow((t / fabs(l)), 2.0)))))) <= 0.0002) {
            		tmp = asin((fabs(l) * sqrt(((0.5 / t) / t))));
            	} else {
            		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
            	}
            	return tmp;
            }
            
            module fmin_fmax_functions
                implicit none
                private
                public fmax
                public fmin
            
                interface fmax
                    module procedure fmax88
                    module procedure fmax44
                    module procedure fmax84
                    module procedure fmax48
                end interface
                interface fmin
                    module procedure fmin88
                    module procedure fmin44
                    module procedure fmin84
                    module procedure fmin48
                end interface
            contains
                real(8) function fmax88(x, y) result (res)
                    real(8), intent (in) :: x
                    real(8), intent (in) :: y
                    res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                end function
                real(4) function fmax44(x, y) result (res)
                    real(4), intent (in) :: x
                    real(4), intent (in) :: y
                    res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                end function
                real(8) function fmax84(x, y) result(res)
                    real(8), intent (in) :: x
                    real(4), intent (in) :: y
                    res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                end function
                real(8) function fmax48(x, y) result(res)
                    real(4), intent (in) :: x
                    real(8), intent (in) :: y
                    res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                end function
                real(8) function fmin88(x, y) result (res)
                    real(8), intent (in) :: x
                    real(8), intent (in) :: y
                    res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                end function
                real(4) function fmin44(x, y) result (res)
                    real(4), intent (in) :: x
                    real(4), intent (in) :: y
                    res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                end function
                real(8) function fmin84(x, y) result(res)
                    real(8), intent (in) :: x
                    real(4), intent (in) :: y
                    res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                end function
                real(8) function fmin48(x, y) result(res)
                    real(4), intent (in) :: x
                    real(8), intent (in) :: y
                    res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                end function
            end module
            
            real(8) function code(t, l, om, omc)
            use fmin_fmax_functions
                real(8), intent (in) :: t
                real(8), intent (in) :: l
                real(8), intent (in) :: om
                real(8), intent (in) :: omc
                real(8) :: tmp
                if (asin(sqrt(((1.0d0 - ((om / omc) ** 2.0d0)) / (1.0d0 + (2.0d0 * ((t / abs(l)) ** 2.0d0)))))) <= 0.0002d0) then
                    tmp = asin((abs(l) * sqrt(((0.5d0 / t) / t))))
                else
                    tmp = asin(sqrt(((1.0d0 - (((om / omc) * om) / omc)) / 1.0d0)))
                end if
                code = tmp
            end function
            
            public static double code(double t, double l, double Om, double Omc) {
            	double tmp;
            	if (Math.asin(Math.sqrt(((1.0 - Math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * Math.pow((t / Math.abs(l)), 2.0)))))) <= 0.0002) {
            		tmp = Math.asin((Math.abs(l) * Math.sqrt(((0.5 / t) / t))));
            	} else {
            		tmp = Math.asin(Math.sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
            	}
            	return tmp;
            }
            
            def code(t, l, Om, Omc):
            	tmp = 0
            	if math.asin(math.sqrt(((1.0 - math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * math.pow((t / math.fabs(l)), 2.0)))))) <= 0.0002:
            		tmp = math.asin((math.fabs(l) * math.sqrt(((0.5 / t) / t))))
            	else:
            		tmp = math.asin(math.sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)))
            	return tmp
            
            function code(t, l, Om, Omc)
            	tmp = 0.0
            	if (asin(sqrt(Float64(Float64(1.0 - (Float64(Om / Omc) ^ 2.0)) / Float64(1.0 + Float64(2.0 * (Float64(t / abs(l)) ^ 2.0)))))) <= 0.0002)
            		tmp = asin(Float64(abs(l) * sqrt(Float64(Float64(0.5 / t) / t))));
            	else
            		tmp = asin(sqrt(Float64(Float64(1.0 - Float64(Float64(Float64(Om / Omc) * Om) / Omc)) / 1.0)));
            	end
            	return tmp
            end
            
            function tmp_2 = code(t, l, Om, Omc)
            	tmp = 0.0;
            	if (asin(sqrt(((1.0 - ((Om / Omc) ^ 2.0)) / (1.0 + (2.0 * ((t / abs(l)) ^ 2.0)))))) <= 0.0002)
            		tmp = asin((abs(l) * sqrt(((0.5 / t) / t))));
            	else
            		tmp = asin(sqrt(((1.0 - (((Om / Omc) * Om) / Omc)) / 1.0)));
            	end
            	tmp_2 = tmp;
            end
            
            code[t_, l_, Om_, Omc_] := If[LessEqual[N[ArcSin[N[Sqrt[N[(N[(1.0 - N[Power[N[(Om / Omc), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(2.0 * N[Power[N[(t / N[Abs[l], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], 0.0002], N[ArcSin[N[(N[Abs[l], $MachinePrecision] * N[Sqrt[N[(N[(0.5 / t), $MachinePrecision] / t), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcSin[N[Sqrt[N[(N[(1.0 - N[(N[(N[(Om / Omc), $MachinePrecision] * Om), $MachinePrecision] / Omc), $MachinePrecision]), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]]
            
            \begin{array}{l}
            \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 0.0002:\\
            \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right)\\
            
            \mathbf{else}:\\
            \;\;\;\;\sin^{-1} \left(\sqrt{\frac{1 - \frac{\frac{Om}{Omc} \cdot Om}{Omc}}{1}}\right)\\
            
            
            \end{array}
            
            Derivation
            1. Split input into 2 regimes
            2. if (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))))))) < 2.0000000000000001e-4

              1. Initial program 83.6%

                \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
              2. Taylor expanded in l around 0

                \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
              3. Step-by-step derivation
                1. lower-*.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \color{blue}{\sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}}\right) \]
                2. lower-sqrt.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                3. lower-*.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                4. lower-/.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                5. lower--.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                6. lower-/.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                7. lower-pow.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                8. lower-pow.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                9. lower-pow.f6421.7%

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
              4. Applied rewrites21.7%

                \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
              5. Taylor expanded in Om around 0

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
              6. Step-by-step derivation
                1. lower-/.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                2. lower-pow.f6424.4%

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{0.5}{{t}^{2}}}\right) \]
              7. Applied rewrites24.4%

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{0.5}{{t}^{2}}}\right) \]
              8. Step-by-step derivation
                1. lift-/.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                2. lift-pow.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                3. unpow2N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{t \cdot t}}\right) \]
                4. associate-/r*N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{\frac{1}{2}}{t}}{t}}\right) \]
                5. lower-/.f64N/A

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{\frac{1}{2}}{t}}{t}}\right) \]
                6. lower-/.f6424.6%

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right) \]
              9. Applied rewrites24.6%

                \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right) \]

              if 2.0000000000000001e-4 < (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))))))

              1. Initial program 83.6%

                \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
              2. Taylor expanded in t around 0

                \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
              3. Step-by-step derivation
                1. Applied rewrites50.2%

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                2. Step-by-step derivation
                  1. lift-pow.f64N/A

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
                  2. unpow2N/A

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}}{1}}\right) \]
                  3. lift-/.f64N/A

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}}{1}}\right) \]
                  4. associate-*r/N/A

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
                  5. lower-/.f64N/A

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
                  6. lower-*.f6450.2%

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \frac{\color{blue}{\frac{Om}{Omc} \cdot Om}}{Omc}}{1}}\right) \]
                3. Applied rewrites50.2%

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{\frac{Om}{Omc} \cdot Om}{Omc}}}{1}}\right) \]
              4. Recombined 2 regimes into one program.
              5. Add Preprocessing

              Alternative 9: 83.0% accurate, 0.7× speedup?

              \[\begin{array}{l} \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 0.0002:\\ \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{Omc - Om \cdot \frac{Om}{Omc}}{1 \cdot Omc}}\right)\\ \end{array} \]
              (FPCore (t l Om Omc)
                :precision binary64
                (if (<=
                   (asin
                    (sqrt
                     (/
                      (- 1.0 (pow (/ Om Omc) 2.0))
                      (+ 1.0 (* 2.0 (pow (/ t (fabs l)) 2.0))))))
                   0.0002)
                (asin (* (fabs l) (sqrt (/ (/ 0.5 t) t))))
                (asin (sqrt (/ (- Omc (* Om (/ Om Omc))) (* 1.0 Omc))))))
              double code(double t, double l, double Om, double Omc) {
              	double tmp;
              	if (asin(sqrt(((1.0 - pow((Om / Omc), 2.0)) / (1.0 + (2.0 * pow((t / fabs(l)), 2.0)))))) <= 0.0002) {
              		tmp = asin((fabs(l) * sqrt(((0.5 / t) / t))));
              	} else {
              		tmp = asin(sqrt(((Omc - (Om * (Om / Omc))) / (1.0 * Omc))));
              	}
              	return tmp;
              }
              
              module fmin_fmax_functions
                  implicit none
                  private
                  public fmax
                  public fmin
              
                  interface fmax
                      module procedure fmax88
                      module procedure fmax44
                      module procedure fmax84
                      module procedure fmax48
                  end interface
                  interface fmin
                      module procedure fmin88
                      module procedure fmin44
                      module procedure fmin84
                      module procedure fmin48
                  end interface
              contains
                  real(8) function fmax88(x, y) result (res)
                      real(8), intent (in) :: x
                      real(8), intent (in) :: y
                      res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                  end function
                  real(4) function fmax44(x, y) result (res)
                      real(4), intent (in) :: x
                      real(4), intent (in) :: y
                      res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                  end function
                  real(8) function fmax84(x, y) result(res)
                      real(8), intent (in) :: x
                      real(4), intent (in) :: y
                      res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                  end function
                  real(8) function fmax48(x, y) result(res)
                      real(4), intent (in) :: x
                      real(8), intent (in) :: y
                      res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                  end function
                  real(8) function fmin88(x, y) result (res)
                      real(8), intent (in) :: x
                      real(8), intent (in) :: y
                      res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                  end function
                  real(4) function fmin44(x, y) result (res)
                      real(4), intent (in) :: x
                      real(4), intent (in) :: y
                      res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                  end function
                  real(8) function fmin84(x, y) result(res)
                      real(8), intent (in) :: x
                      real(4), intent (in) :: y
                      res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                  end function
                  real(8) function fmin48(x, y) result(res)
                      real(4), intent (in) :: x
                      real(8), intent (in) :: y
                      res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                  end function
              end module
              
              real(8) function code(t, l, om, omc)
              use fmin_fmax_functions
                  real(8), intent (in) :: t
                  real(8), intent (in) :: l
                  real(8), intent (in) :: om
                  real(8), intent (in) :: omc
                  real(8) :: tmp
                  if (asin(sqrt(((1.0d0 - ((om / omc) ** 2.0d0)) / (1.0d0 + (2.0d0 * ((t / abs(l)) ** 2.0d0)))))) <= 0.0002d0) then
                      tmp = asin((abs(l) * sqrt(((0.5d0 / t) / t))))
                  else
                      tmp = asin(sqrt(((omc - (om * (om / omc))) / (1.0d0 * omc))))
                  end if
                  code = tmp
              end function
              
              public static double code(double t, double l, double Om, double Omc) {
              	double tmp;
              	if (Math.asin(Math.sqrt(((1.0 - Math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * Math.pow((t / Math.abs(l)), 2.0)))))) <= 0.0002) {
              		tmp = Math.asin((Math.abs(l) * Math.sqrt(((0.5 / t) / t))));
              	} else {
              		tmp = Math.asin(Math.sqrt(((Omc - (Om * (Om / Omc))) / (1.0 * Omc))));
              	}
              	return tmp;
              }
              
              def code(t, l, Om, Omc):
              	tmp = 0
              	if math.asin(math.sqrt(((1.0 - math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * math.pow((t / math.fabs(l)), 2.0)))))) <= 0.0002:
              		tmp = math.asin((math.fabs(l) * math.sqrt(((0.5 / t) / t))))
              	else:
              		tmp = math.asin(math.sqrt(((Omc - (Om * (Om / Omc))) / (1.0 * Omc))))
              	return tmp
              
              function code(t, l, Om, Omc)
              	tmp = 0.0
              	if (asin(sqrt(Float64(Float64(1.0 - (Float64(Om / Omc) ^ 2.0)) / Float64(1.0 + Float64(2.0 * (Float64(t / abs(l)) ^ 2.0)))))) <= 0.0002)
              		tmp = asin(Float64(abs(l) * sqrt(Float64(Float64(0.5 / t) / t))));
              	else
              		tmp = asin(sqrt(Float64(Float64(Omc - Float64(Om * Float64(Om / Omc))) / Float64(1.0 * Omc))));
              	end
              	return tmp
              end
              
              function tmp_2 = code(t, l, Om, Omc)
              	tmp = 0.0;
              	if (asin(sqrt(((1.0 - ((Om / Omc) ^ 2.0)) / (1.0 + (2.0 * ((t / abs(l)) ^ 2.0)))))) <= 0.0002)
              		tmp = asin((abs(l) * sqrt(((0.5 / t) / t))));
              	else
              		tmp = asin(sqrt(((Omc - (Om * (Om / Omc))) / (1.0 * Omc))));
              	end
              	tmp_2 = tmp;
              end
              
              code[t_, l_, Om_, Omc_] := If[LessEqual[N[ArcSin[N[Sqrt[N[(N[(1.0 - N[Power[N[(Om / Omc), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(2.0 * N[Power[N[(t / N[Abs[l], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], 0.0002], N[ArcSin[N[(N[Abs[l], $MachinePrecision] * N[Sqrt[N[(N[(0.5 / t), $MachinePrecision] / t), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcSin[N[Sqrt[N[(N[(Omc - N[(Om * N[(Om / Omc), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 * Omc), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]]
              
              \begin{array}{l}
              \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 0.0002:\\
              \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right)\\
              
              \mathbf{else}:\\
              \;\;\;\;\sin^{-1} \left(\sqrt{\frac{Omc - Om \cdot \frac{Om}{Omc}}{1 \cdot Omc}}\right)\\
              
              
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))))))) < 2.0000000000000001e-4

                1. Initial program 83.6%

                  \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
                2. Taylor expanded in l around 0

                  \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
                3. Step-by-step derivation
                  1. lower-*.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \color{blue}{\sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}}\right) \]
                  2. lower-sqrt.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                  3. lower-*.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                  4. lower-/.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                  5. lower--.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                  6. lower-/.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                  7. lower-pow.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                  8. lower-pow.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                  9. lower-pow.f6421.7%

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                4. Applied rewrites21.7%

                  \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
                5. Taylor expanded in Om around 0

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                6. Step-by-step derivation
                  1. lower-/.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                  2. lower-pow.f6424.4%

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{0.5}{{t}^{2}}}\right) \]
                7. Applied rewrites24.4%

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{0.5}{{t}^{2}}}\right) \]
                8. Step-by-step derivation
                  1. lift-/.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                  2. lift-pow.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                  3. unpow2N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{t \cdot t}}\right) \]
                  4. associate-/r*N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{\frac{1}{2}}{t}}{t}}\right) \]
                  5. lower-/.f64N/A

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{\frac{1}{2}}{t}}{t}}\right) \]
                  6. lower-/.f6424.6%

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right) \]
                9. Applied rewrites24.6%

                  \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right) \]

                if 2.0000000000000001e-4 < (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))))))

                1. Initial program 83.6%

                  \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
                2. Taylor expanded in t around 0

                  \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                3. Step-by-step derivation
                  1. Applied rewrites50.2%

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                  2. Step-by-step derivation
                    1. lift--.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
                    2. sub-flipN/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 + \left(\mathsf{neg}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}}{1}}\right) \]
                    3. +-commutativeN/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\mathsf{neg}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right) + 1}}{1}}\right) \]
                    4. lift-pow.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}\right)\right) + 1}{1}}\right) \]
                    5. unpow2N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)\right) + 1}{1}}\right) \]
                    6. lift-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om}{Omc}} \cdot \frac{Om}{Omc}\right)\right) + 1}{1}}\right) \]
                    7. lift-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}\right)\right) + 1}{1}}\right) \]
                    8. frac-timesN/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om \cdot Om}{Omc \cdot Omc}}\right)\right) + 1}{1}}\right) \]
                    9. unpow2N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}\right)\right) + 1}{1}}\right) \]
                    10. lift-pow.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}\right)\right) + 1}{1}}\right) \]
                    11. unpow2N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{{Om}^{2}}{\color{blue}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                    12. lift-pow.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{{Om}^{2}}{\color{blue}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                    13. lift-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{{Om}^{2}}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                    14. +-commutativeN/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 + \left(\mathsf{neg}\left(\frac{{Om}^{2}}{{Omc}^{2}}\right)\right)}}{1}}\right) \]
                    15. sub-flipN/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 - \frac{{Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                    16. lift-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{{Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                    17. sub-to-fractionN/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                    18. lift-pow.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{\color{blue}{{Omc}^{2}}}}{1}}\right) \]
                    19. unpow2N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{\color{blue}{Omc \cdot Omc}}}{1}}\right) \]
                    20. associate-/r*N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{Omc}}{Omc}}}{1}}\right) \]
                    21. lower-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{Omc}}{Omc}}}{1}}\right) \]
                  3. Applied rewrites25.9%

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}{Omc}}}{1}}\right) \]
                  4. Step-by-step derivation
                    1. lift-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\frac{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}{Omc}}{1}}}\right) \]
                    2. lift-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}{Omc}}}{1}}\right) \]
                    3. associate-/l/N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}{Omc \cdot 1}}}\right) \]
                    4. lower-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}{Omc \cdot 1}}}\right) \]
                    5. lift-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}}{Omc \cdot 1}}\right) \]
                    6. lift--.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{\color{blue}{Omc \cdot Omc - Om \cdot Om}}{Omc}}{Omc \cdot 1}}\right) \]
                    7. lift-*.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{\color{blue}{Omc \cdot Omc} - Om \cdot Om}{Omc}}{Omc \cdot 1}}\right) \]
                    8. sub-to-fraction-revN/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{Omc - \frac{Om \cdot Om}{Omc}}}{Omc \cdot 1}}\right) \]
                    9. lower--.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{Omc - \frac{Om \cdot Om}{Omc}}}{Omc \cdot 1}}\right) \]
                    10. lift-*.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{Omc - \frac{\color{blue}{Om \cdot Om}}{Omc}}{Omc \cdot 1}}\right) \]
                    11. associate-/l*N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{Omc - \color{blue}{Om \cdot \frac{Om}{Omc}}}{Omc \cdot 1}}\right) \]
                    12. lower-*.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{Omc - \color{blue}{Om \cdot \frac{Om}{Omc}}}{Omc \cdot 1}}\right) \]
                    13. lower-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{Omc - Om \cdot \color{blue}{\frac{Om}{Omc}}}{Omc \cdot 1}}\right) \]
                    14. *-commutativeN/A

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{Omc - Om \cdot \frac{Om}{Omc}}{\color{blue}{1 \cdot Omc}}}\right) \]
                    15. lower-*.f6450.2%

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{Omc - Om \cdot \frac{Om}{Omc}}{\color{blue}{1 \cdot Omc}}}\right) \]
                  5. Applied rewrites50.2%

                    \[\leadsto \sin^{-1} \left(\sqrt{\color{blue}{\frac{Omc - Om \cdot \frac{Om}{Omc}}{1 \cdot Omc}}}\right) \]
                4. Recombined 2 regimes into one program.
                5. Add Preprocessing

                Alternative 10: 82.3% accurate, 0.7× speedup?

                \[\begin{array}{l} \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 0.0002:\\ \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{\frac{Omc}{Omc}}{1}}\right)\\ \end{array} \]
                (FPCore (t l Om Omc)
                  :precision binary64
                  (if (<=
                     (asin
                      (sqrt
                       (/
                        (- 1.0 (pow (/ Om Omc) 2.0))
                        (+ 1.0 (* 2.0 (pow (/ t (fabs l)) 2.0))))))
                     0.0002)
                  (asin (* (fabs l) (sqrt (/ (/ 0.5 t) t))))
                  (asin (sqrt (/ (/ Omc Omc) 1.0)))))
                double code(double t, double l, double Om, double Omc) {
                	double tmp;
                	if (asin(sqrt(((1.0 - pow((Om / Omc), 2.0)) / (1.0 + (2.0 * pow((t / fabs(l)), 2.0)))))) <= 0.0002) {
                		tmp = asin((fabs(l) * sqrt(((0.5 / t) / t))));
                	} else {
                		tmp = asin(sqrt(((Omc / Omc) / 1.0)));
                	}
                	return tmp;
                }
                
                module fmin_fmax_functions
                    implicit none
                    private
                    public fmax
                    public fmin
                
                    interface fmax
                        module procedure fmax88
                        module procedure fmax44
                        module procedure fmax84
                        module procedure fmax48
                    end interface
                    interface fmin
                        module procedure fmin88
                        module procedure fmin44
                        module procedure fmin84
                        module procedure fmin48
                    end interface
                contains
                    real(8) function fmax88(x, y) result (res)
                        real(8), intent (in) :: x
                        real(8), intent (in) :: y
                        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                    end function
                    real(4) function fmax44(x, y) result (res)
                        real(4), intent (in) :: x
                        real(4), intent (in) :: y
                        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                    end function
                    real(8) function fmax84(x, y) result(res)
                        real(8), intent (in) :: x
                        real(4), intent (in) :: y
                        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                    end function
                    real(8) function fmax48(x, y) result(res)
                        real(4), intent (in) :: x
                        real(8), intent (in) :: y
                        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                    end function
                    real(8) function fmin88(x, y) result (res)
                        real(8), intent (in) :: x
                        real(8), intent (in) :: y
                        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                    end function
                    real(4) function fmin44(x, y) result (res)
                        real(4), intent (in) :: x
                        real(4), intent (in) :: y
                        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                    end function
                    real(8) function fmin84(x, y) result(res)
                        real(8), intent (in) :: x
                        real(4), intent (in) :: y
                        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                    end function
                    real(8) function fmin48(x, y) result(res)
                        real(4), intent (in) :: x
                        real(8), intent (in) :: y
                        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                    end function
                end module
                
                real(8) function code(t, l, om, omc)
                use fmin_fmax_functions
                    real(8), intent (in) :: t
                    real(8), intent (in) :: l
                    real(8), intent (in) :: om
                    real(8), intent (in) :: omc
                    real(8) :: tmp
                    if (asin(sqrt(((1.0d0 - ((om / omc) ** 2.0d0)) / (1.0d0 + (2.0d0 * ((t / abs(l)) ** 2.0d0)))))) <= 0.0002d0) then
                        tmp = asin((abs(l) * sqrt(((0.5d0 / t) / t))))
                    else
                        tmp = asin(sqrt(((omc / omc) / 1.0d0)))
                    end if
                    code = tmp
                end function
                
                public static double code(double t, double l, double Om, double Omc) {
                	double tmp;
                	if (Math.asin(Math.sqrt(((1.0 - Math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * Math.pow((t / Math.abs(l)), 2.0)))))) <= 0.0002) {
                		tmp = Math.asin((Math.abs(l) * Math.sqrt(((0.5 / t) / t))));
                	} else {
                		tmp = Math.asin(Math.sqrt(((Omc / Omc) / 1.0)));
                	}
                	return tmp;
                }
                
                def code(t, l, Om, Omc):
                	tmp = 0
                	if math.asin(math.sqrt(((1.0 - math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * math.pow((t / math.fabs(l)), 2.0)))))) <= 0.0002:
                		tmp = math.asin((math.fabs(l) * math.sqrt(((0.5 / t) / t))))
                	else:
                		tmp = math.asin(math.sqrt(((Omc / Omc) / 1.0)))
                	return tmp
                
                function code(t, l, Om, Omc)
                	tmp = 0.0
                	if (asin(sqrt(Float64(Float64(1.0 - (Float64(Om / Omc) ^ 2.0)) / Float64(1.0 + Float64(2.0 * (Float64(t / abs(l)) ^ 2.0)))))) <= 0.0002)
                		tmp = asin(Float64(abs(l) * sqrt(Float64(Float64(0.5 / t) / t))));
                	else
                		tmp = asin(sqrt(Float64(Float64(Omc / Omc) / 1.0)));
                	end
                	return tmp
                end
                
                function tmp_2 = code(t, l, Om, Omc)
                	tmp = 0.0;
                	if (asin(sqrt(((1.0 - ((Om / Omc) ^ 2.0)) / (1.0 + (2.0 * ((t / abs(l)) ^ 2.0)))))) <= 0.0002)
                		tmp = asin((abs(l) * sqrt(((0.5 / t) / t))));
                	else
                		tmp = asin(sqrt(((Omc / Omc) / 1.0)));
                	end
                	tmp_2 = tmp;
                end
                
                code[t_, l_, Om_, Omc_] := If[LessEqual[N[ArcSin[N[Sqrt[N[(N[(1.0 - N[Power[N[(Om / Omc), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(2.0 * N[Power[N[(t / N[Abs[l], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], 0.0002], N[ArcSin[N[(N[Abs[l], $MachinePrecision] * N[Sqrt[N[(N[(0.5 / t), $MachinePrecision] / t), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcSin[N[Sqrt[N[(N[(Omc / Omc), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]]
                
                \begin{array}{l}
                \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 0.0002:\\
                \;\;\;\;\sin^{-1} \left(\left|\ell\right| \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right)\\
                
                \mathbf{else}:\\
                \;\;\;\;\sin^{-1} \left(\sqrt{\frac{\frac{Omc}{Omc}}{1}}\right)\\
                
                
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))))))) < 2.0000000000000001e-4

                  1. Initial program 83.6%

                    \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
                  2. Taylor expanded in l around 0

                    \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
                  3. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \color{blue}{\sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}}\right) \]
                    2. lower-sqrt.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                    3. lower-*.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                    4. lower-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                    5. lower--.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                    6. lower-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                    7. lower-pow.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                    8. lower-pow.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                    9. lower-pow.f6421.7%

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                  4. Applied rewrites21.7%

                    \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
                  5. Taylor expanded in Om around 0

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                  6. Step-by-step derivation
                    1. lower-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                    2. lower-pow.f6424.4%

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{0.5}{{t}^{2}}}\right) \]
                  7. Applied rewrites24.4%

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{0.5}{{t}^{2}}}\right) \]
                  8. Step-by-step derivation
                    1. lift-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                    2. lift-pow.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                    3. unpow2N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{t \cdot t}}\right) \]
                    4. associate-/r*N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{\frac{1}{2}}{t}}{t}}\right) \]
                    5. lower-/.f64N/A

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{\frac{1}{2}}{t}}{t}}\right) \]
                    6. lower-/.f6424.6%

                      \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right) \]
                  9. Applied rewrites24.6%

                    \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{0.5}{t}}{t}}\right) \]

                  if 2.0000000000000001e-4 < (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))))))

                  1. Initial program 83.6%

                    \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
                  2. Taylor expanded in t around 0

                    \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                  3. Step-by-step derivation
                    1. Applied rewrites50.2%

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                    2. Step-by-step derivation
                      1. lift--.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
                      2. sub-flipN/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 + \left(\mathsf{neg}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}}{1}}\right) \]
                      3. +-commutativeN/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\mathsf{neg}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right) + 1}}{1}}\right) \]
                      4. lift-pow.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}\right)\right) + 1}{1}}\right) \]
                      5. unpow2N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)\right) + 1}{1}}\right) \]
                      6. lift-/.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om}{Omc}} \cdot \frac{Om}{Omc}\right)\right) + 1}{1}}\right) \]
                      7. lift-/.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}\right)\right) + 1}{1}}\right) \]
                      8. frac-timesN/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om \cdot Om}{Omc \cdot Omc}}\right)\right) + 1}{1}}\right) \]
                      9. unpow2N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}\right)\right) + 1}{1}}\right) \]
                      10. lift-pow.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}\right)\right) + 1}{1}}\right) \]
                      11. unpow2N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{{Om}^{2}}{\color{blue}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                      12. lift-pow.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{{Om}^{2}}{\color{blue}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                      13. lift-/.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{{Om}^{2}}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                      14. +-commutativeN/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 + \left(\mathsf{neg}\left(\frac{{Om}^{2}}{{Omc}^{2}}\right)\right)}}{1}}\right) \]
                      15. sub-flipN/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 - \frac{{Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                      16. lift-/.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{{Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                      17. sub-to-fractionN/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                      18. lift-pow.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{\color{blue}{{Omc}^{2}}}}{1}}\right) \]
                      19. unpow2N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{\color{blue}{Omc \cdot Omc}}}{1}}\right) \]
                      20. associate-/r*N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{Omc}}{Omc}}}{1}}\right) \]
                      21. lower-/.f64N/A

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{Omc}}{Omc}}}{1}}\right) \]
                    3. Applied rewrites25.9%

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}{Omc}}}{1}}\right) \]
                    4. Taylor expanded in Om around 0

                      \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{\color{blue}{Omc}}{Omc}}{1}}\right) \]
                    5. Step-by-step derivation
                      1. Applied rewrites49.6%

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{\color{blue}{Omc}}{Omc}}{1}}\right) \]
                    6. Recombined 2 regimes into one program.
                    7. Add Preprocessing

                    Alternative 11: 81.9% accurate, 0.7× speedup?

                    \[\begin{array}{l} \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 0.0002:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{0.5}{t \cdot t}} \cdot \left|\ell\right|\right)\\ \mathbf{else}:\\ \;\;\;\;\sin^{-1} \left(\sqrt{\frac{\frac{Omc}{Omc}}{1}}\right)\\ \end{array} \]
                    (FPCore (t l Om Omc)
                      :precision binary64
                      (if (<=
                         (asin
                          (sqrt
                           (/
                            (- 1.0 (pow (/ Om Omc) 2.0))
                            (+ 1.0 (* 2.0 (pow (/ t (fabs l)) 2.0))))))
                         0.0002)
                      (asin (* (sqrt (/ 0.5 (* t t))) (fabs l)))
                      (asin (sqrt (/ (/ Omc Omc) 1.0)))))
                    double code(double t, double l, double Om, double Omc) {
                    	double tmp;
                    	if (asin(sqrt(((1.0 - pow((Om / Omc), 2.0)) / (1.0 + (2.0 * pow((t / fabs(l)), 2.0)))))) <= 0.0002) {
                    		tmp = asin((sqrt((0.5 / (t * t))) * fabs(l)));
                    	} else {
                    		tmp = asin(sqrt(((Omc / Omc) / 1.0)));
                    	}
                    	return tmp;
                    }
                    
                    module fmin_fmax_functions
                        implicit none
                        private
                        public fmax
                        public fmin
                    
                        interface fmax
                            module procedure fmax88
                            module procedure fmax44
                            module procedure fmax84
                            module procedure fmax48
                        end interface
                        interface fmin
                            module procedure fmin88
                            module procedure fmin44
                            module procedure fmin84
                            module procedure fmin48
                        end interface
                    contains
                        real(8) function fmax88(x, y) result (res)
                            real(8), intent (in) :: x
                            real(8), intent (in) :: y
                            res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                        end function
                        real(4) function fmax44(x, y) result (res)
                            real(4), intent (in) :: x
                            real(4), intent (in) :: y
                            res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                        end function
                        real(8) function fmax84(x, y) result(res)
                            real(8), intent (in) :: x
                            real(4), intent (in) :: y
                            res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                        end function
                        real(8) function fmax48(x, y) result(res)
                            real(4), intent (in) :: x
                            real(8), intent (in) :: y
                            res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                        end function
                        real(8) function fmin88(x, y) result (res)
                            real(8), intent (in) :: x
                            real(8), intent (in) :: y
                            res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                        end function
                        real(4) function fmin44(x, y) result (res)
                            real(4), intent (in) :: x
                            real(4), intent (in) :: y
                            res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                        end function
                        real(8) function fmin84(x, y) result(res)
                            real(8), intent (in) :: x
                            real(4), intent (in) :: y
                            res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                        end function
                        real(8) function fmin48(x, y) result(res)
                            real(4), intent (in) :: x
                            real(8), intent (in) :: y
                            res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                        end function
                    end module
                    
                    real(8) function code(t, l, om, omc)
                    use fmin_fmax_functions
                        real(8), intent (in) :: t
                        real(8), intent (in) :: l
                        real(8), intent (in) :: om
                        real(8), intent (in) :: omc
                        real(8) :: tmp
                        if (asin(sqrt(((1.0d0 - ((om / omc) ** 2.0d0)) / (1.0d0 + (2.0d0 * ((t / abs(l)) ** 2.0d0)))))) <= 0.0002d0) then
                            tmp = asin((sqrt((0.5d0 / (t * t))) * abs(l)))
                        else
                            tmp = asin(sqrt(((omc / omc) / 1.0d0)))
                        end if
                        code = tmp
                    end function
                    
                    public static double code(double t, double l, double Om, double Omc) {
                    	double tmp;
                    	if (Math.asin(Math.sqrt(((1.0 - Math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * Math.pow((t / Math.abs(l)), 2.0)))))) <= 0.0002) {
                    		tmp = Math.asin((Math.sqrt((0.5 / (t * t))) * Math.abs(l)));
                    	} else {
                    		tmp = Math.asin(Math.sqrt(((Omc / Omc) / 1.0)));
                    	}
                    	return tmp;
                    }
                    
                    def code(t, l, Om, Omc):
                    	tmp = 0
                    	if math.asin(math.sqrt(((1.0 - math.pow((Om / Omc), 2.0)) / (1.0 + (2.0 * math.pow((t / math.fabs(l)), 2.0)))))) <= 0.0002:
                    		tmp = math.asin((math.sqrt((0.5 / (t * t))) * math.fabs(l)))
                    	else:
                    		tmp = math.asin(math.sqrt(((Omc / Omc) / 1.0)))
                    	return tmp
                    
                    function code(t, l, Om, Omc)
                    	tmp = 0.0
                    	if (asin(sqrt(Float64(Float64(1.0 - (Float64(Om / Omc) ^ 2.0)) / Float64(1.0 + Float64(2.0 * (Float64(t / abs(l)) ^ 2.0)))))) <= 0.0002)
                    		tmp = asin(Float64(sqrt(Float64(0.5 / Float64(t * t))) * abs(l)));
                    	else
                    		tmp = asin(sqrt(Float64(Float64(Omc / Omc) / 1.0)));
                    	end
                    	return tmp
                    end
                    
                    function tmp_2 = code(t, l, Om, Omc)
                    	tmp = 0.0;
                    	if (asin(sqrt(((1.0 - ((Om / Omc) ^ 2.0)) / (1.0 + (2.0 * ((t / abs(l)) ^ 2.0)))))) <= 0.0002)
                    		tmp = asin((sqrt((0.5 / (t * t))) * abs(l)));
                    	else
                    		tmp = asin(sqrt(((Omc / Omc) / 1.0)));
                    	end
                    	tmp_2 = tmp;
                    end
                    
                    code[t_, l_, Om_, Omc_] := If[LessEqual[N[ArcSin[N[Sqrt[N[(N[(1.0 - N[Power[N[(Om / Omc), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[(1.0 + N[(2.0 * N[Power[N[(t / N[Abs[l], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision], 0.0002], N[ArcSin[N[(N[Sqrt[N[(0.5 / N[(t * t), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[Abs[l], $MachinePrecision]), $MachinePrecision]], $MachinePrecision], N[ArcSin[N[Sqrt[N[(N[(Omc / Omc), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]]
                    
                    \begin{array}{l}
                    \mathbf{if}\;\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\left|\ell\right|}\right)}^{2}}}\right) \leq 0.0002:\\
                    \;\;\;\;\sin^{-1} \left(\sqrt{\frac{0.5}{t \cdot t}} \cdot \left|\ell\right|\right)\\
                    
                    \mathbf{else}:\\
                    \;\;\;\;\sin^{-1} \left(\sqrt{\frac{\frac{Omc}{Omc}}{1}}\right)\\
                    
                    
                    \end{array}
                    
                    Derivation
                    1. Split input into 2 regimes
                    2. if (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64))))))) < 2.0000000000000001e-4

                      1. Initial program 83.6%

                        \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
                      2. Taylor expanded in l around 0

                        \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
                      3. Step-by-step derivation
                        1. lower-*.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \color{blue}{\sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}}\right) \]
                        2. lower-sqrt.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                        3. lower-*.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                        4. lower-/.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                        5. lower--.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                        6. lower-/.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                        7. lower-pow.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                        8. lower-pow.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{1}{2} \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                        9. lower-pow.f6421.7%

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right) \]
                      4. Applied rewrites21.7%

                        \[\leadsto \sin^{-1} \color{blue}{\left(\ell \cdot \sqrt{0.5 \cdot \frac{1 - \frac{{Om}^{2}}{{Omc}^{2}}}{{t}^{2}}}\right)} \]
                      5. Taylor expanded in Om around 0

                        \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                      6. Step-by-step derivation
                        1. lower-/.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{\frac{1}{2}}{{t}^{2}}}\right) \]
                        2. lower-pow.f6424.4%

                          \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{0.5}{{t}^{2}}}\right) \]
                      7. Applied rewrites24.4%

                        \[\leadsto \sin^{-1} \left(\ell \cdot \sqrt{\frac{0.5}{{t}^{2}}}\right) \]
                      8. Step-by-step derivation
                        1. lift-*.f64N/A

                          \[\leadsto \sin^{-1} \left(\ell \cdot \color{blue}{\sqrt{\frac{\frac{1}{2}}{{t}^{2}}}}\right) \]
                        2. *-commutativeN/A

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1}{2}}{{t}^{2}}} \cdot \color{blue}{\ell}\right) \]
                        3. lower-*.f6424.4%

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{0.5}{{t}^{2}}} \cdot \color{blue}{\ell}\right) \]
                        4. lift-pow.f64N/A

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1}{2}}{{t}^{2}}} \cdot \ell\right) \]
                        5. unpow2N/A

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1}{2}}{t \cdot t}} \cdot \ell\right) \]
                        6. lower-*.f6424.4%

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{0.5}{t \cdot t}} \cdot \ell\right) \]
                      9. Applied rewrites24.4%

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{0.5}{t \cdot t}} \cdot \color{blue}{\ell}\right) \]

                      if 2.0000000000000001e-4 < (asin.f64 (sqrt.f64 (/.f64 (-.f64 #s(literal 1 binary64) (pow.f64 (/.f64 Om Omc) #s(literal 2 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 #s(literal 2 binary64) (pow.f64 (/.f64 t l) #s(literal 2 binary64)))))))

                      1. Initial program 83.6%

                        \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
                      2. Taylor expanded in t around 0

                        \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                      3. Step-by-step derivation
                        1. Applied rewrites50.2%

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                        2. Step-by-step derivation
                          1. lift--.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
                          2. sub-flipN/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 + \left(\mathsf{neg}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}}{1}}\right) \]
                          3. +-commutativeN/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\mathsf{neg}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right) + 1}}{1}}\right) \]
                          4. lift-pow.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}\right)\right) + 1}{1}}\right) \]
                          5. unpow2N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)\right) + 1}{1}}\right) \]
                          6. lift-/.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om}{Omc}} \cdot \frac{Om}{Omc}\right)\right) + 1}{1}}\right) \]
                          7. lift-/.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}\right)\right) + 1}{1}}\right) \]
                          8. frac-timesN/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om \cdot Om}{Omc \cdot Omc}}\right)\right) + 1}{1}}\right) \]
                          9. unpow2N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}\right)\right) + 1}{1}}\right) \]
                          10. lift-pow.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}\right)\right) + 1}{1}}\right) \]
                          11. unpow2N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{{Om}^{2}}{\color{blue}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                          12. lift-pow.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{{Om}^{2}}{\color{blue}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                          13. lift-/.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{{Om}^{2}}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                          14. +-commutativeN/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 + \left(\mathsf{neg}\left(\frac{{Om}^{2}}{{Omc}^{2}}\right)\right)}}{1}}\right) \]
                          15. sub-flipN/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 - \frac{{Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                          16. lift-/.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{{Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                          17. sub-to-fractionN/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                          18. lift-pow.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{\color{blue}{{Omc}^{2}}}}{1}}\right) \]
                          19. unpow2N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{\color{blue}{Omc \cdot Omc}}}{1}}\right) \]
                          20. associate-/r*N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{Omc}}{Omc}}}{1}}\right) \]
                          21. lower-/.f64N/A

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{Omc}}{Omc}}}{1}}\right) \]
                        3. Applied rewrites25.9%

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}{Omc}}}{1}}\right) \]
                        4. Taylor expanded in Om around 0

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{\color{blue}{Omc}}{Omc}}{1}}\right) \]
                        5. Step-by-step derivation
                          1. Applied rewrites49.6%

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{\color{blue}{Omc}}{Omc}}{1}}\right) \]
                        6. Recombined 2 regimes into one program.
                        7. Add Preprocessing

                        Alternative 12: 49.6% accurate, 4.2× speedup?

                        \[\sin^{-1} \left(\sqrt{\frac{\frac{Omc}{Omc}}{1}}\right) \]
                        (FPCore (t l Om Omc)
                          :precision binary64
                          (asin (sqrt (/ (/ Omc Omc) 1.0))))
                        double code(double t, double l, double Om, double Omc) {
                        	return asin(sqrt(((Omc / Omc) / 1.0)));
                        }
                        
                        module fmin_fmax_functions
                            implicit none
                            private
                            public fmax
                            public fmin
                        
                            interface fmax
                                module procedure fmax88
                                module procedure fmax44
                                module procedure fmax84
                                module procedure fmax48
                            end interface
                            interface fmin
                                module procedure fmin88
                                module procedure fmin44
                                module procedure fmin84
                                module procedure fmin48
                            end interface
                        contains
                            real(8) function fmax88(x, y) result (res)
                                real(8), intent (in) :: x
                                real(8), intent (in) :: y
                                res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                            end function
                            real(4) function fmax44(x, y) result (res)
                                real(4), intent (in) :: x
                                real(4), intent (in) :: y
                                res = merge(y, merge(x, max(x, y), y /= y), x /= x)
                            end function
                            real(8) function fmax84(x, y) result(res)
                                real(8), intent (in) :: x
                                real(4), intent (in) :: y
                                res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
                            end function
                            real(8) function fmax48(x, y) result(res)
                                real(4), intent (in) :: x
                                real(8), intent (in) :: y
                                res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
                            end function
                            real(8) function fmin88(x, y) result (res)
                                real(8), intent (in) :: x
                                real(8), intent (in) :: y
                                res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                            end function
                            real(4) function fmin44(x, y) result (res)
                                real(4), intent (in) :: x
                                real(4), intent (in) :: y
                                res = merge(y, merge(x, min(x, y), y /= y), x /= x)
                            end function
                            real(8) function fmin84(x, y) result(res)
                                real(8), intent (in) :: x
                                real(4), intent (in) :: y
                                res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
                            end function
                            real(8) function fmin48(x, y) result(res)
                                real(4), intent (in) :: x
                                real(8), intent (in) :: y
                                res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
                            end function
                        end module
                        
                        real(8) function code(t, l, om, omc)
                        use fmin_fmax_functions
                            real(8), intent (in) :: t
                            real(8), intent (in) :: l
                            real(8), intent (in) :: om
                            real(8), intent (in) :: omc
                            code = asin(sqrt(((omc / omc) / 1.0d0)))
                        end function
                        
                        public static double code(double t, double l, double Om, double Omc) {
                        	return Math.asin(Math.sqrt(((Omc / Omc) / 1.0)));
                        }
                        
                        def code(t, l, Om, Omc):
                        	return math.asin(math.sqrt(((Omc / Omc) / 1.0)))
                        
                        function code(t, l, Om, Omc)
                        	return asin(sqrt(Float64(Float64(Omc / Omc) / 1.0)))
                        end
                        
                        function tmp = code(t, l, Om, Omc)
                        	tmp = asin(sqrt(((Omc / Omc) / 1.0)));
                        end
                        
                        code[t_, l_, Om_, Omc_] := N[ArcSin[N[Sqrt[N[(N[(Omc / Omc), $MachinePrecision] / 1.0), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]
                        
                        \sin^{-1} \left(\sqrt{\frac{\frac{Omc}{Omc}}{1}}\right)
                        
                        Derivation
                        1. Initial program 83.6%

                          \[\sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{1 + 2 \cdot {\left(\frac{t}{\ell}\right)}^{2}}}\right) \]
                        2. Taylor expanded in t around 0

                          \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                        3. Step-by-step derivation
                          1. Applied rewrites50.2%

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - {\left(\frac{Om}{Omc}\right)}^{2}}{\color{blue}{1}}}\right) \]
                          2. Step-by-step derivation
                            1. lift--.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 - {\left(\frac{Om}{Omc}\right)}^{2}}}{1}}\right) \]
                            2. sub-flipN/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 + \left(\mathsf{neg}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right)}}{1}}\right) \]
                            3. +-commutativeN/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\left(\mathsf{neg}\left({\left(\frac{Om}{Omc}\right)}^{2}\right)\right) + 1}}{1}}\right) \]
                            4. lift-pow.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{{\left(\frac{Om}{Omc}\right)}^{2}}\right)\right) + 1}{1}}\right) \]
                            5. unpow2N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om}{Omc} \cdot \frac{Om}{Omc}}\right)\right) + 1}{1}}\right) \]
                            6. lift-/.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om}{Omc}} \cdot \frac{Om}{Omc}\right)\right) + 1}{1}}\right) \]
                            7. lift-/.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{Om}{Omc} \cdot \color{blue}{\frac{Om}{Omc}}\right)\right) + 1}{1}}\right) \]
                            8. frac-timesN/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{Om \cdot Om}{Omc \cdot Omc}}\right)\right) + 1}{1}}\right) \]
                            9. unpow2N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}\right)\right) + 1}{1}}\right) \]
                            10. lift-pow.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{\color{blue}{{Om}^{2}}}{Omc \cdot Omc}\right)\right) + 1}{1}}\right) \]
                            11. unpow2N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{{Om}^{2}}{\color{blue}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                            12. lift-pow.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\frac{{Om}^{2}}{\color{blue}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                            13. lift-/.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\left(\mathsf{neg}\left(\color{blue}{\frac{{Om}^{2}}{{Omc}^{2}}}\right)\right) + 1}{1}}\right) \]
                            14. +-commutativeN/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 + \left(\mathsf{neg}\left(\frac{{Om}^{2}}{{Omc}^{2}}\right)\right)}}{1}}\right) \]
                            15. sub-flipN/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{1 - \frac{{Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                            16. lift-/.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{1 - \color{blue}{\frac{{Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                            17. sub-to-fractionN/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{{Omc}^{2}}}}{1}}\right) \]
                            18. lift-pow.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{\color{blue}{{Omc}^{2}}}}{1}}\right) \]
                            19. unpow2N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{\color{blue}{Omc \cdot Omc}}}{1}}\right) \]
                            20. associate-/r*N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{Omc}}{Omc}}}{1}}\right) \]
                            21. lower-/.f64N/A

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{1 \cdot {Omc}^{2} - {Om}^{2}}{Omc}}{Omc}}}{1}}\right) \]
                          3. Applied rewrites25.9%

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\color{blue}{\frac{\frac{Omc \cdot Omc - Om \cdot Om}{Omc}}{Omc}}}{1}}\right) \]
                          4. Taylor expanded in Om around 0

                            \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{\color{blue}{Omc}}{Omc}}{1}}\right) \]
                          5. Step-by-step derivation
                            1. Applied rewrites49.6%

                              \[\leadsto \sin^{-1} \left(\sqrt{\frac{\frac{\color{blue}{Omc}}{Omc}}{1}}\right) \]
                            2. Add Preprocessing

                            Reproduce

                            ?
                            herbie shell --seed 2025212 
                            (FPCore (t l Om Omc)
                              :name "Toniolo and Linder, Equation (2)"
                              :precision binary64
                              (asin (sqrt (/ (- 1.0 (pow (/ Om Omc) 2.0)) (+ 1.0 (* 2.0 (pow (/ t l) 2.0)))))))