Linear.Quaternion:$ccos from linear-1.19.1.3

Percentage Accurate: 100.0% → 100.0%
Time: 4.1s
Alternatives: 13
Speedup: 1.0×

Specification

?
\[\sin x \cdot \frac{\sinh y}{y} \]
(FPCore (x y)
  :precision binary64
  (* (sin x) (/ (sinh y) y)))
double code(double x, double y) {
	return sin(x) * (sinh(y) / y);
}
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(x, y)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    code = sin(x) * (sinh(y) / y)
end function
public static double code(double x, double y) {
	return Math.sin(x) * (Math.sinh(y) / y);
}
def code(x, y):
	return math.sin(x) * (math.sinh(y) / y)
function code(x, y)
	return Float64(sin(x) * Float64(sinh(y) / y))
end
function tmp = code(x, y)
	tmp = sin(x) * (sinh(y) / y);
end
code[x_, y_] := N[(N[Sin[x], $MachinePrecision] * N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]
\sin x \cdot \frac{\sinh y}{y}

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

\[\sin x \cdot \frac{\sinh y}{y} \]
(FPCore (x y)
  :precision binary64
  (* (sin x) (/ (sinh y) y)))
double code(double x, double y) {
	return sin(x) * (sinh(y) / y);
}
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(x, y)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    code = sin(x) * (sinh(y) / y)
end function
public static double code(double x, double y) {
	return Math.sin(x) * (Math.sinh(y) / y);
}
def code(x, y):
	return math.sin(x) * (math.sinh(y) / y)
function code(x, y)
	return Float64(sin(x) * Float64(sinh(y) / y))
end
function tmp = code(x, y)
	tmp = sin(x) * (sinh(y) / y);
end
code[x_, y_] := N[(N[Sin[x], $MachinePrecision] * N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]
\sin x \cdot \frac{\sinh y}{y}

Alternative 1: 99.9% accurate, 0.9× speedup?

\[\begin{array}{l} \mathbf{if}\;\left|y\right| \leq 5 \cdot 10^{-18}:\\ \;\;\;\;\sin x \cdot 1\\ \mathbf{else}:\\ \;\;\;\;\frac{\sinh \left(\left|y\right|\right) \cdot \sin x}{\left|y\right|}\\ \end{array} \]
(FPCore (x y)
  :precision binary64
  (if (<= (fabs y) 5e-18)
  (* (sin x) 1.0)
  (/ (* (sinh (fabs y)) (sin x)) (fabs y))))
double code(double x, double y) {
	double tmp;
	if (fabs(y) <= 5e-18) {
		tmp = sin(x) * 1.0;
	} else {
		tmp = (sinh(fabs(y)) * sin(x)) / fabs(y);
	}
	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(x, y)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8) :: tmp
    if (abs(y) <= 5d-18) then
        tmp = sin(x) * 1.0d0
    else
        tmp = (sinh(abs(y)) * sin(x)) / abs(y)
    end if
    code = tmp
end function
public static double code(double x, double y) {
	double tmp;
	if (Math.abs(y) <= 5e-18) {
		tmp = Math.sin(x) * 1.0;
	} else {
		tmp = (Math.sinh(Math.abs(y)) * Math.sin(x)) / Math.abs(y);
	}
	return tmp;
}
def code(x, y):
	tmp = 0
	if math.fabs(y) <= 5e-18:
		tmp = math.sin(x) * 1.0
	else:
		tmp = (math.sinh(math.fabs(y)) * math.sin(x)) / math.fabs(y)
	return tmp
function code(x, y)
	tmp = 0.0
	if (abs(y) <= 5e-18)
		tmp = Float64(sin(x) * 1.0);
	else
		tmp = Float64(Float64(sinh(abs(y)) * sin(x)) / abs(y));
	end
	return tmp
end
function tmp_2 = code(x, y)
	tmp = 0.0;
	if (abs(y) <= 5e-18)
		tmp = sin(x) * 1.0;
	else
		tmp = (sinh(abs(y)) * sin(x)) / abs(y);
	end
	tmp_2 = tmp;
end
code[x_, y_] := If[LessEqual[N[Abs[y], $MachinePrecision], 5e-18], N[(N[Sin[x], $MachinePrecision] * 1.0), $MachinePrecision], N[(N[(N[Sinh[N[Abs[y], $MachinePrecision]], $MachinePrecision] * N[Sin[x], $MachinePrecision]), $MachinePrecision] / N[Abs[y], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;\left|y\right| \leq 5 \cdot 10^{-18}:\\
\;\;\;\;\sin x \cdot 1\\

\mathbf{else}:\\
\;\;\;\;\frac{\sinh \left(\left|y\right|\right) \cdot \sin x}{\left|y\right|}\\


\end{array}
Derivation
  1. Split input into 2 regimes
  2. if y < 5.0000000000000004e-18

    1. Initial program 100.0%

      \[\sin x \cdot \frac{\sinh y}{y} \]
    2. Taylor expanded in y around 0

      \[\leadsto \sin x \cdot \color{blue}{1} \]
    3. Step-by-step derivation
      1. Applied rewrites50.7%

        \[\leadsto \sin x \cdot \color{blue}{1} \]

      if 5.0000000000000004e-18 < y

      1. Initial program 100.0%

        \[\sin x \cdot \frac{\sinh y}{y} \]
      2. Step-by-step derivation
        1. lift-*.f64N/A

          \[\leadsto \color{blue}{\sin x \cdot \frac{\sinh y}{y}} \]
        2. lift-/.f64N/A

          \[\leadsto \sin x \cdot \color{blue}{\frac{\sinh y}{y}} \]
        3. associate-*r/N/A

          \[\leadsto \color{blue}{\frac{\sin x \cdot \sinh y}{y}} \]
        4. lower-/.f64N/A

          \[\leadsto \color{blue}{\frac{\sin x \cdot \sinh y}{y}} \]
        5. *-commutativeN/A

          \[\leadsto \frac{\color{blue}{\sinh y \cdot \sin x}}{y} \]
        6. lower-*.f6489.2%

          \[\leadsto \frac{\color{blue}{\sinh y \cdot \sin x}}{y} \]
      3. Applied rewrites89.2%

        \[\leadsto \color{blue}{\frac{\sinh y \cdot \sin x}{y}} \]
    4. Recombined 2 regimes into one program.
    5. Add Preprocessing

    Alternative 2: 99.1% accurate, 0.3× speedup?

    \[\begin{array}{l} t_0 := \sin \left(\left|x\right|\right)\\ t_1 := \frac{\sinh y}{y}\\ t_2 := t\_0 \cdot t\_1\\ \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;t\_2 \leq -\infty:\\ \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot t\_1\\ \mathbf{elif}\;t\_2 \leq 1:\\ \;\;\;\;t\_0 \cdot 1\\ \mathbf{else}:\\ \;\;\;\;\frac{\left|x\right| \cdot \sinh y}{y}\\ \end{array} \end{array} \]
    (FPCore (x y)
      :precision binary64
      (let* ((t_0 (sin (fabs x))) (t_1 (/ (sinh y) y)) (t_2 (* t_0 t_1)))
      (*
       (copysign 1.0 x)
       (if (<= t_2 (- INFINITY))
         (*
          (fma
           (* (fabs x) (fabs x))
           (* -0.16666666666666666 (fabs x))
           (fabs x))
          t_1)
         (if (<= t_2 1.0) (* t_0 1.0) (/ (* (fabs x) (sinh y)) y))))))
    double code(double x, double y) {
    	double t_0 = sin(fabs(x));
    	double t_1 = sinh(y) / y;
    	double t_2 = t_0 * t_1;
    	double tmp;
    	if (t_2 <= -((double) INFINITY)) {
    		tmp = fma((fabs(x) * fabs(x)), (-0.16666666666666666 * fabs(x)), fabs(x)) * t_1;
    	} else if (t_2 <= 1.0) {
    		tmp = t_0 * 1.0;
    	} else {
    		tmp = (fabs(x) * sinh(y)) / y;
    	}
    	return copysign(1.0, x) * tmp;
    }
    
    function code(x, y)
    	t_0 = sin(abs(x))
    	t_1 = Float64(sinh(y) / y)
    	t_2 = Float64(t_0 * t_1)
    	tmp = 0.0
    	if (t_2 <= Float64(-Inf))
    		tmp = Float64(fma(Float64(abs(x) * abs(x)), Float64(-0.16666666666666666 * abs(x)), abs(x)) * t_1);
    	elseif (t_2 <= 1.0)
    		tmp = Float64(t_0 * 1.0);
    	else
    		tmp = Float64(Float64(abs(x) * sinh(y)) / y);
    	end
    	return Float64(copysign(1.0, x) * tmp)
    end
    
    code[x_, y_] := Block[{t$95$0 = N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 * t$95$1), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$2, (-Infinity)], N[(N[(N[(N[Abs[x], $MachinePrecision] * N[Abs[x], $MachinePrecision]), $MachinePrecision] * N[(-0.16666666666666666 * N[Abs[x], $MachinePrecision]), $MachinePrecision] + N[Abs[x], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision], If[LessEqual[t$95$2, 1.0], N[(t$95$0 * 1.0), $MachinePrecision], N[(N[(N[Abs[x], $MachinePrecision] * N[Sinh[y], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]]]), $MachinePrecision]]]]
    
    \begin{array}{l}
    t_0 := \sin \left(\left|x\right|\right)\\
    t_1 := \frac{\sinh y}{y}\\
    t_2 := t\_0 \cdot t\_1\\
    \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
    \mathbf{if}\;t\_2 \leq -\infty:\\
    \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot t\_1\\
    
    \mathbf{elif}\;t\_2 \leq 1:\\
    \;\;\;\;t\_0 \cdot 1\\
    
    \mathbf{else}:\\
    \;\;\;\;\frac{\left|x\right| \cdot \sinh y}{y}\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < -inf.0

      1. Initial program 100.0%

        \[\sin x \cdot \frac{\sinh y}{y} \]
      2. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(x \cdot \left(1 + \frac{-1}{6} \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
      3. Step-by-step derivation
        1. lower-*.f64N/A

          \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
        2. lower-+.f64N/A

          \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
        3. lower-*.f64N/A

          \[\leadsto \left(x \cdot \left(1 + \frac{-1}{6} \cdot \color{blue}{{x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
        4. lower-pow.f6462.9%

          \[\leadsto \left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{\color{blue}{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
      4. Applied rewrites62.9%

        \[\leadsto \color{blue}{\left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
      5. Step-by-step derivation
        1. lift-*.f64N/A

          \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
        2. lift-+.f64N/A

          \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
        3. +-commutativeN/A

          \[\leadsto \left(x \cdot \left(\frac{-1}{6} \cdot {x}^{2} + \color{blue}{1}\right)\right) \cdot \frac{\sinh y}{y} \]
        4. distribute-rgt-inN/A

          \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + \color{blue}{1 \cdot x}\right) \cdot \frac{\sinh y}{y} \]
        5. lift-*.f64N/A

          \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
        6. *-commutativeN/A

          \[\leadsto \left(\left({x}^{2} \cdot \frac{-1}{6}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
        7. associate-*l*N/A

          \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + \color{blue}{1} \cdot x\right) \cdot \frac{\sinh y}{y} \]
        8. *-lft-identityN/A

          \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + x\right) \cdot \frac{\sinh y}{y} \]
        9. lower-fma.f64N/A

          \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6} \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
        10. lift-pow.f64N/A

          \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
        11. unpow2N/A

          \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
        12. lower-*.f64N/A

          \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
        13. lower-*.f6462.9%

          \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot \color{blue}{x}, x\right) \cdot \frac{\sinh y}{y} \]
      6. Applied rewrites62.9%

        \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{-0.16666666666666666 \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]

      if -inf.0 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < 1

      1. Initial program 100.0%

        \[\sin x \cdot \frac{\sinh y}{y} \]
      2. Taylor expanded in y around 0

        \[\leadsto \sin x \cdot \color{blue}{1} \]
      3. Step-by-step derivation
        1. Applied rewrites50.7%

          \[\leadsto \sin x \cdot \color{blue}{1} \]

        if 1 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

        1. Initial program 100.0%

          \[\sin x \cdot \frac{\sinh y}{y} \]
        2. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
        3. Step-by-step derivation
          1. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          2. lower-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          4. lower--.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          5. lower-exp.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          6. lower-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          7. lower-exp.f6440.1%

            \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
        4. Applied rewrites40.1%

          \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
        5. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          2. lift-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
          3. associate-*r/N/A

            \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
          4. lower-/.f64N/A

            \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
          5. *-commutativeN/A

            \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
          6. lift-*.f64N/A

            \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
          7. associate-*l*N/A

            \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
          8. metadata-evalN/A

            \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
          9. mult-flipN/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          10. lift--.f64N/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          11. lift-exp.f64N/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          12. lift-/.f64N/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          13. lift-exp.f64N/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          14. rec-expN/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
          15. sinh-defN/A

            \[\leadsto \frac{x \cdot \sinh y}{y} \]
          16. lift-sinh.f64N/A

            \[\leadsto \frac{x \cdot \sinh y}{y} \]
          17. lower-*.f6451.6%

            \[\leadsto \frac{x \cdot \sinh y}{y} \]
        6. Applied rewrites51.6%

          \[\leadsto \frac{x \cdot \sinh y}{\color{blue}{y}} \]
      4. Recombined 3 regimes into one program.
      5. Add Preprocessing

      Alternative 3: 75.4% accurate, 0.5× speedup?

      \[\begin{array}{l} t_0 := \frac{\sinh y}{y}\\ \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot t\_0 \leq 5 \cdot 10^{-7}:\\ \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot t\_0\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{1}{\sinh y \cdot \left|x\right|} \cdot y}\\ \end{array} \end{array} \]
      (FPCore (x y)
        :precision binary64
        (let* ((t_0 (/ (sinh y) y)))
        (*
         (copysign 1.0 x)
         (if (<= (* (sin (fabs x)) t_0) 5e-7)
           (*
            (fma
             (* (fabs x) (fabs x))
             (* -0.16666666666666666 (fabs x))
             (fabs x))
            t_0)
           (/ 1.0 (* (/ 1.0 (* (sinh y) (fabs x))) y))))))
      double code(double x, double y) {
      	double t_0 = sinh(y) / y;
      	double tmp;
      	if ((sin(fabs(x)) * t_0) <= 5e-7) {
      		tmp = fma((fabs(x) * fabs(x)), (-0.16666666666666666 * fabs(x)), fabs(x)) * t_0;
      	} else {
      		tmp = 1.0 / ((1.0 / (sinh(y) * fabs(x))) * y);
      	}
      	return copysign(1.0, x) * tmp;
      }
      
      function code(x, y)
      	t_0 = Float64(sinh(y) / y)
      	tmp = 0.0
      	if (Float64(sin(abs(x)) * t_0) <= 5e-7)
      		tmp = Float64(fma(Float64(abs(x) * abs(x)), Float64(-0.16666666666666666 * abs(x)), abs(x)) * t_0);
      	else
      		tmp = Float64(1.0 / Float64(Float64(1.0 / Float64(sinh(y) * abs(x))) * y));
      	end
      	return Float64(copysign(1.0, x) * tmp)
      end
      
      code[x_, y_] := Block[{t$95$0 = N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision] * t$95$0), $MachinePrecision], 5e-7], N[(N[(N[(N[Abs[x], $MachinePrecision] * N[Abs[x], $MachinePrecision]), $MachinePrecision] * N[(-0.16666666666666666 * N[Abs[x], $MachinePrecision]), $MachinePrecision] + N[Abs[x], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision], N[(1.0 / N[(N[(1.0 / N[(N[Sinh[y], $MachinePrecision] * N[Abs[x], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * y), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
      
      \begin{array}{l}
      t_0 := \frac{\sinh y}{y}\\
      \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
      \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot t\_0 \leq 5 \cdot 10^{-7}:\\
      \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot t\_0\\
      
      \mathbf{else}:\\
      \;\;\;\;\frac{1}{\frac{1}{\sinh y \cdot \left|x\right|} \cdot y}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < 4.9999999999999998e-7

        1. Initial program 100.0%

          \[\sin x \cdot \frac{\sinh y}{y} \]
        2. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\left(x \cdot \left(1 + \frac{-1}{6} \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
        3. Step-by-step derivation
          1. lower-*.f64N/A

            \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
          2. lower-+.f64N/A

            \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
          3. lower-*.f64N/A

            \[\leadsto \left(x \cdot \left(1 + \frac{-1}{6} \cdot \color{blue}{{x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
          4. lower-pow.f6462.9%

            \[\leadsto \left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{\color{blue}{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
        4. Applied rewrites62.9%

          \[\leadsto \color{blue}{\left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
        5. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
          2. lift-+.f64N/A

            \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
          3. +-commutativeN/A

            \[\leadsto \left(x \cdot \left(\frac{-1}{6} \cdot {x}^{2} + \color{blue}{1}\right)\right) \cdot \frac{\sinh y}{y} \]
          4. distribute-rgt-inN/A

            \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + \color{blue}{1 \cdot x}\right) \cdot \frac{\sinh y}{y} \]
          5. lift-*.f64N/A

            \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
          6. *-commutativeN/A

            \[\leadsto \left(\left({x}^{2} \cdot \frac{-1}{6}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
          7. associate-*l*N/A

            \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + \color{blue}{1} \cdot x\right) \cdot \frac{\sinh y}{y} \]
          8. *-lft-identityN/A

            \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + x\right) \cdot \frac{\sinh y}{y} \]
          9. lower-fma.f64N/A

            \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6} \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
          10. lift-pow.f64N/A

            \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
          11. unpow2N/A

            \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
          12. lower-*.f64N/A

            \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
          13. lower-*.f6462.9%

            \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot \color{blue}{x}, x\right) \cdot \frac{\sinh y}{y} \]
        6. Applied rewrites62.9%

          \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{-0.16666666666666666 \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]

        if 4.9999999999999998e-7 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

        1. Initial program 100.0%

          \[\sin x \cdot \frac{\sinh y}{y} \]
        2. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
        3. Step-by-step derivation
          1. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          2. lower-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          4. lower--.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          5. lower-exp.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          6. lower-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          7. lower-exp.f6440.1%

            \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
        4. Applied rewrites40.1%

          \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
        5. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          2. lift-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
          3. associate-*r/N/A

            \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
          4. div-flipN/A

            \[\leadsto \frac{1}{\color{blue}{\frac{y}{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}}} \]
          5. lower-unsound-/.f64N/A

            \[\leadsto \frac{1}{\color{blue}{\frac{y}{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}}} \]
          6. lower-unsound-/.f64N/A

            \[\leadsto \frac{1}{\frac{y}{\color{blue}{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}}} \]
          7. *-commutativeN/A

            \[\leadsto \frac{1}{\frac{y}{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \color{blue}{\frac{1}{2}}}} \]
          8. lift-*.f64N/A

            \[\leadsto \frac{1}{\frac{y}{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}} \]
          9. associate-*l*N/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \color{blue}{\left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}}} \]
          10. metadata-evalN/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{\color{blue}{2}}\right)}} \]
          11. mult-flipN/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{\color{blue}{2}}}} \]
          12. lift--.f64N/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}} \]
          13. lift-exp.f64N/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}} \]
          14. lift-/.f64N/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}} \]
          15. lift-exp.f64N/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}} \]
          16. rec-expN/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}} \]
          17. sinh-defN/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \sinh y}} \]
          18. lift-sinh.f64N/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \sinh y}} \]
          19. lower-*.f6451.5%

            \[\leadsto \frac{1}{\frac{y}{x \cdot \color{blue}{\sinh y}}} \]
        6. Applied rewrites51.5%

          \[\leadsto \frac{1}{\color{blue}{\frac{y}{x \cdot \sinh y}}} \]
        7. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \frac{1}{\frac{y}{\color{blue}{x \cdot \sinh y}}} \]
          2. mult-flipN/A

            \[\leadsto \frac{1}{y \cdot \color{blue}{\frac{1}{x \cdot \sinh y}}} \]
          3. *-commutativeN/A

            \[\leadsto \frac{1}{\frac{1}{x \cdot \sinh y} \cdot \color{blue}{y}} \]
          4. lower-*.f64N/A

            \[\leadsto \frac{1}{\frac{1}{x \cdot \sinh y} \cdot \color{blue}{y}} \]
          5. lower-/.f6450.9%

            \[\leadsto \frac{1}{\frac{1}{x \cdot \sinh y} \cdot y} \]
          6. lift-*.f64N/A

            \[\leadsto \frac{1}{\frac{1}{x \cdot \sinh y} \cdot y} \]
          7. *-commutativeN/A

            \[\leadsto \frac{1}{\frac{1}{\sinh y \cdot x} \cdot y} \]
          8. lower-*.f6450.9%

            \[\leadsto \frac{1}{\frac{1}{\sinh y \cdot x} \cdot y} \]
        8. Applied rewrites50.9%

          \[\leadsto \frac{1}{\frac{1}{\sinh y \cdot x} \cdot \color{blue}{y}} \]
      3. Recombined 2 regimes into one program.
      4. Add Preprocessing

      Alternative 4: 72.3% accurate, 0.6× speedup?

      \[\begin{array}{l} t_0 := \sinh \left(\left|y\right|\right)\\ \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{t\_0}{\left|y\right|} \leq -0.02:\\ \;\;\;\;0.5 \cdot \frac{\left|x\right| \cdot \left(\left(1 + \left|y\right|\right) - \left(1 + \left|y\right| \cdot \left(0.5 \cdot \left|y\right| - 1\right)\right)\right)}{\left|y\right|}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left|x\right|}{\frac{\left|y\right|}{t\_0}}\\ \end{array} \end{array} \]
      (FPCore (x y)
        :precision binary64
        (let* ((t_0 (sinh (fabs y))))
        (*
         (copysign 1.0 x)
         (if (<= (* (sin (fabs x)) (/ t_0 (fabs y))) -0.02)
           (*
            0.5
            (/
             (*
              (fabs x)
              (-
               (+ 1.0 (fabs y))
               (+ 1.0 (* (fabs y) (- (* 0.5 (fabs y)) 1.0)))))
             (fabs y)))
           (/ (fabs x) (/ (fabs y) t_0))))))
      double code(double x, double y) {
      	double t_0 = sinh(fabs(y));
      	double tmp;
      	if ((sin(fabs(x)) * (t_0 / fabs(y))) <= -0.02) {
      		tmp = 0.5 * ((fabs(x) * ((1.0 + fabs(y)) - (1.0 + (fabs(y) * ((0.5 * fabs(y)) - 1.0))))) / fabs(y));
      	} else {
      		tmp = fabs(x) / (fabs(y) / t_0);
      	}
      	return copysign(1.0, x) * tmp;
      }
      
      public static double code(double x, double y) {
      	double t_0 = Math.sinh(Math.abs(y));
      	double tmp;
      	if ((Math.sin(Math.abs(x)) * (t_0 / Math.abs(y))) <= -0.02) {
      		tmp = 0.5 * ((Math.abs(x) * ((1.0 + Math.abs(y)) - (1.0 + (Math.abs(y) * ((0.5 * Math.abs(y)) - 1.0))))) / Math.abs(y));
      	} else {
      		tmp = Math.abs(x) / (Math.abs(y) / t_0);
      	}
      	return Math.copySign(1.0, x) * tmp;
      }
      
      def code(x, y):
      	t_0 = math.sinh(math.fabs(y))
      	tmp = 0
      	if (math.sin(math.fabs(x)) * (t_0 / math.fabs(y))) <= -0.02:
      		tmp = 0.5 * ((math.fabs(x) * ((1.0 + math.fabs(y)) - (1.0 + (math.fabs(y) * ((0.5 * math.fabs(y)) - 1.0))))) / math.fabs(y))
      	else:
      		tmp = math.fabs(x) / (math.fabs(y) / t_0)
      	return math.copysign(1.0, x) * tmp
      
      function code(x, y)
      	t_0 = sinh(abs(y))
      	tmp = 0.0
      	if (Float64(sin(abs(x)) * Float64(t_0 / abs(y))) <= -0.02)
      		tmp = Float64(0.5 * Float64(Float64(abs(x) * Float64(Float64(1.0 + abs(y)) - Float64(1.0 + Float64(abs(y) * Float64(Float64(0.5 * abs(y)) - 1.0))))) / abs(y)));
      	else
      		tmp = Float64(abs(x) / Float64(abs(y) / t_0));
      	end
      	return Float64(copysign(1.0, x) * tmp)
      end
      
      function tmp_2 = code(x, y)
      	t_0 = sinh(abs(y));
      	tmp = 0.0;
      	if ((sin(abs(x)) * (t_0 / abs(y))) <= -0.02)
      		tmp = 0.5 * ((abs(x) * ((1.0 + abs(y)) - (1.0 + (abs(y) * ((0.5 * abs(y)) - 1.0))))) / abs(y));
      	else
      		tmp = abs(x) / (abs(y) / t_0);
      	end
      	tmp_2 = (sign(x) * abs(1.0)) * tmp;
      end
      
      code[x_, y_] := Block[{t$95$0 = N[Sinh[N[Abs[y], $MachinePrecision]], $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision] * N[(t$95$0 / N[Abs[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], -0.02], N[(0.5 * N[(N[(N[Abs[x], $MachinePrecision] * N[(N[(1.0 + N[Abs[y], $MachinePrecision]), $MachinePrecision] - N[(1.0 + N[(N[Abs[y], $MachinePrecision] * N[(N[(0.5 * N[Abs[y], $MachinePrecision]), $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Abs[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[Abs[x], $MachinePrecision] / N[(N[Abs[y], $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
      
      \begin{array}{l}
      t_0 := \sinh \left(\left|y\right|\right)\\
      \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
      \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{t\_0}{\left|y\right|} \leq -0.02:\\
      \;\;\;\;0.5 \cdot \frac{\left|x\right| \cdot \left(\left(1 + \left|y\right|\right) - \left(1 + \left|y\right| \cdot \left(0.5 \cdot \left|y\right| - 1\right)\right)\right)}{\left|y\right|}\\
      
      \mathbf{else}:\\
      \;\;\;\;\frac{\left|x\right|}{\frac{\left|y\right|}{t\_0}}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < -0.02

        1. Initial program 100.0%

          \[\sin x \cdot \frac{\sinh y}{y} \]
        2. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
        3. Step-by-step derivation
          1. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          2. lower-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          4. lower--.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          5. lower-exp.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          6. lower-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          7. lower-exp.f6440.1%

            \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
        4. Applied rewrites40.1%

          \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
        5. Taylor expanded in y around 0

          \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
        6. Step-by-step derivation
          1. lower-+.f6424.7%

            \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
        7. Applied rewrites24.7%

          \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
        8. Taylor expanded in y around 0

          \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
        9. Step-by-step derivation
          1. lower-+.f649.5%

            \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
        10. Applied rewrites9.5%

          \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
        11. Taylor expanded in y around 0

          \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \left(1 + y \cdot \left(\frac{1}{2} \cdot y - 1\right)\right)\right)}{y} \]
        12. Step-by-step derivation
          1. lower-+.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(\left(1 + y\right) - \left(1 + y \cdot \left(\frac{1}{2} \cdot y - 1\right)\right)\right)}{y} \]
          2. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(\left(1 + y\right) - \left(1 + y \cdot \left(\frac{1}{2} \cdot y - 1\right)\right)\right)}{y} \]
          3. lower--.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(\left(1 + y\right) - \left(1 + y \cdot \left(\frac{1}{2} \cdot y - 1\right)\right)\right)}{y} \]
          4. lower-*.f6418.5%

            \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \left(1 + y \cdot \left(0.5 \cdot y - 1\right)\right)\right)}{y} \]
        13. Applied rewrites18.5%

          \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \left(1 + y \cdot \left(0.5 \cdot y - 1\right)\right)\right)}{y} \]

        if -0.02 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

        1. Initial program 100.0%

          \[\sin x \cdot \frac{\sinh y}{y} \]
        2. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
        3. Step-by-step derivation
          1. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          2. lower-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          4. lower--.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          5. lower-exp.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          6. lower-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          7. lower-exp.f6440.1%

            \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
        4. Applied rewrites40.1%

          \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
        5. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          2. lift-/.f64N/A

            \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
          3. associate-*r/N/A

            \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
          4. *-commutativeN/A

            \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
          5. lift-*.f64N/A

            \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
          6. associate-*l*N/A

            \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
          7. metadata-evalN/A

            \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
          8. mult-flipN/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          9. lift--.f64N/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          10. lift-exp.f64N/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          11. lift-/.f64N/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          12. lift-exp.f64N/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
          13. rec-expN/A

            \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
          14. sinh-defN/A

            \[\leadsto \frac{x \cdot \sinh y}{y} \]
          15. lift-sinh.f64N/A

            \[\leadsto \frac{x \cdot \sinh y}{y} \]
          16. *-commutativeN/A

            \[\leadsto \frac{\sinh y \cdot x}{y} \]
          17. associate-/l*N/A

            \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
          18. mult-flip-revN/A

            \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
          19. lift-/.f64N/A

            \[\leadsto \sinh y \cdot \left(x \cdot \frac{1}{\color{blue}{y}}\right) \]
        6. Applied rewrites50.6%

          \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
        7. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
          2. *-commutativeN/A

            \[\leadsto \frac{x}{y} \cdot \color{blue}{\sinh y} \]
          3. lift-/.f64N/A

            \[\leadsto \frac{x}{y} \cdot \sinh \color{blue}{y} \]
          4. associate-*l/N/A

            \[\leadsto \frac{x \cdot \sinh y}{\color{blue}{y}} \]
          5. lift-*.f64N/A

            \[\leadsto \frac{x \cdot \sinh y}{y} \]
          6. div-flip-revN/A

            \[\leadsto \frac{1}{\color{blue}{\frac{y}{x \cdot \sinh y}}} \]
          7. lift-*.f64N/A

            \[\leadsto \frac{1}{\frac{y}{x \cdot \color{blue}{\sinh y}}} \]
          8. *-commutativeN/A

            \[\leadsto \frac{1}{\frac{y}{\sinh y \cdot \color{blue}{x}}} \]
          9. associate-/r*N/A

            \[\leadsto \frac{1}{\frac{\frac{y}{\sinh y}}{\color{blue}{x}}} \]
          10. div-flip-revN/A

            \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
          11. lower-/.f64N/A

            \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
          12. lower-/.f6462.3%

            \[\leadsto \frac{x}{\frac{y}{\color{blue}{\sinh y}}} \]
        8. Applied rewrites62.3%

          \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
      3. Recombined 2 regimes into one program.
      4. Add Preprocessing

      Alternative 5: 72.1% accurate, 0.6× speedup?

      \[\begin{array}{l} t_0 := \left|x\right| \cdot \left|x\right|\\ \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq -0.02:\\ \;\;\;\;\mathsf{fma}\left(\sqrt{t\_0 \cdot t\_0}, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\ \mathbf{else}:\\ \;\;\;\;\frac{\left|x\right|}{\frac{y}{\sinh y}}\\ \end{array} \end{array} \]
      (FPCore (x y)
        :precision binary64
        (let* ((t_0 (* (fabs x) (fabs x))))
        (*
         (copysign 1.0 x)
         (if (<= (* (sin (fabs x)) (/ (sinh y) y)) -0.02)
           (*
            (fma
             (sqrt (* t_0 t_0))
             (* -0.16666666666666666 (fabs x))
             (fabs x))
            1.0)
           (/ (fabs x) (/ y (sinh y)))))))
      double code(double x, double y) {
      	double t_0 = fabs(x) * fabs(x);
      	double tmp;
      	if ((sin(fabs(x)) * (sinh(y) / y)) <= -0.02) {
      		tmp = fma(sqrt((t_0 * t_0)), (-0.16666666666666666 * fabs(x)), fabs(x)) * 1.0;
      	} else {
      		tmp = fabs(x) / (y / sinh(y));
      	}
      	return copysign(1.0, x) * tmp;
      }
      
      function code(x, y)
      	t_0 = Float64(abs(x) * abs(x))
      	tmp = 0.0
      	if (Float64(sin(abs(x)) * Float64(sinh(y) / y)) <= -0.02)
      		tmp = Float64(fma(sqrt(Float64(t_0 * t_0)), Float64(-0.16666666666666666 * abs(x)), abs(x)) * 1.0);
      	else
      		tmp = Float64(abs(x) / Float64(y / sinh(y)));
      	end
      	return Float64(copysign(1.0, x) * tmp)
      end
      
      code[x_, y_] := Block[{t$95$0 = N[(N[Abs[x], $MachinePrecision] * N[Abs[x], $MachinePrecision]), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision] * N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], -0.02], N[(N[(N[Sqrt[N[(t$95$0 * t$95$0), $MachinePrecision]], $MachinePrecision] * N[(-0.16666666666666666 * N[Abs[x], $MachinePrecision]), $MachinePrecision] + N[Abs[x], $MachinePrecision]), $MachinePrecision] * 1.0), $MachinePrecision], N[(N[Abs[x], $MachinePrecision] / N[(y / N[Sinh[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
      
      \begin{array}{l}
      t_0 := \left|x\right| \cdot \left|x\right|\\
      \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
      \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq -0.02:\\
      \;\;\;\;\mathsf{fma}\left(\sqrt{t\_0 \cdot t\_0}, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\
      
      \mathbf{else}:\\
      \;\;\;\;\frac{\left|x\right|}{\frac{y}{\sinh y}}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < -0.02

        1. Initial program 100.0%

          \[\sin x \cdot \frac{\sinh y}{y} \]
        2. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\left(x \cdot \left(1 + \frac{-1}{6} \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
        3. Step-by-step derivation
          1. lower-*.f64N/A

            \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
          2. lower-+.f64N/A

            \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
          3. lower-*.f64N/A

            \[\leadsto \left(x \cdot \left(1 + \frac{-1}{6} \cdot \color{blue}{{x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
          4. lower-pow.f6462.9%

            \[\leadsto \left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{\color{blue}{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
        4. Applied rewrites62.9%

          \[\leadsto \color{blue}{\left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
        5. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
          2. lift-+.f64N/A

            \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
          3. +-commutativeN/A

            \[\leadsto \left(x \cdot \left(\frac{-1}{6} \cdot {x}^{2} + \color{blue}{1}\right)\right) \cdot \frac{\sinh y}{y} \]
          4. distribute-rgt-inN/A

            \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + \color{blue}{1 \cdot x}\right) \cdot \frac{\sinh y}{y} \]
          5. lift-*.f64N/A

            \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
          6. *-commutativeN/A

            \[\leadsto \left(\left({x}^{2} \cdot \frac{-1}{6}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
          7. associate-*l*N/A

            \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + \color{blue}{1} \cdot x\right) \cdot \frac{\sinh y}{y} \]
          8. *-lft-identityN/A

            \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + x\right) \cdot \frac{\sinh y}{y} \]
          9. lower-fma.f64N/A

            \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6} \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
          10. lift-pow.f64N/A

            \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
          11. unpow2N/A

            \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
          12. lower-*.f64N/A

            \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
          13. lower-*.f6462.9%

            \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot \color{blue}{x}, x\right) \cdot \frac{\sinh y}{y} \]
        6. Applied rewrites62.9%

          \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{-0.16666666666666666 \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
        7. Taylor expanded in y around 0

          \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]
        8. Step-by-step derivation
          1. Applied rewrites33.8%

            \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]
          2. Step-by-step derivation
            1. rem-square-sqrtN/A

              \[\leadsto \mathsf{fma}\left(\sqrt{x \cdot x} \cdot \sqrt{x \cdot x}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot 1 \]
            2. sqrt-unprodN/A

              \[\leadsto \mathsf{fma}\left(\sqrt{\left(x \cdot x\right) \cdot \left(x \cdot x\right)}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot 1 \]
            3. lower-sqrt.f64N/A

              \[\leadsto \mathsf{fma}\left(\sqrt{\left(x \cdot x\right) \cdot \left(x \cdot x\right)}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot 1 \]
            4. lower-*.f6434.8%

              \[\leadsto \mathsf{fma}\left(\sqrt{\left(x \cdot x\right) \cdot \left(x \cdot x\right)}, -0.16666666666666666 \cdot x, x\right) \cdot 1 \]
          3. Applied rewrites34.8%

            \[\leadsto \mathsf{fma}\left(\sqrt{\left(x \cdot x\right) \cdot \left(x \cdot x\right)}, \color{blue}{-0.16666666666666666} \cdot x, x\right) \cdot 1 \]

          if -0.02 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

          1. Initial program 100.0%

            \[\sin x \cdot \frac{\sinh y}{y} \]
          2. Taylor expanded in x around 0

            \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          3. Step-by-step derivation
            1. lower-*.f64N/A

              \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
            2. lower-/.f64N/A

              \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
            3. lower-*.f64N/A

              \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
            4. lower--.f64N/A

              \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
            5. lower-exp.f64N/A

              \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
            6. lower-/.f64N/A

              \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
            7. lower-exp.f6440.1%

              \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
          4. Applied rewrites40.1%

            \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
          5. Step-by-step derivation
            1. lift-*.f64N/A

              \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
            2. lift-/.f64N/A

              \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
            3. associate-*r/N/A

              \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
            4. *-commutativeN/A

              \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
            5. lift-*.f64N/A

              \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
            6. associate-*l*N/A

              \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
            7. metadata-evalN/A

              \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
            8. mult-flipN/A

              \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
            9. lift--.f64N/A

              \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
            10. lift-exp.f64N/A

              \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
            11. lift-/.f64N/A

              \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
            12. lift-exp.f64N/A

              \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
            13. rec-expN/A

              \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
            14. sinh-defN/A

              \[\leadsto \frac{x \cdot \sinh y}{y} \]
            15. lift-sinh.f64N/A

              \[\leadsto \frac{x \cdot \sinh y}{y} \]
            16. *-commutativeN/A

              \[\leadsto \frac{\sinh y \cdot x}{y} \]
            17. associate-/l*N/A

              \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
            18. mult-flip-revN/A

              \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
            19. lift-/.f64N/A

              \[\leadsto \sinh y \cdot \left(x \cdot \frac{1}{\color{blue}{y}}\right) \]
          6. Applied rewrites50.6%

            \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
          7. Step-by-step derivation
            1. lift-*.f64N/A

              \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
            2. *-commutativeN/A

              \[\leadsto \frac{x}{y} \cdot \color{blue}{\sinh y} \]
            3. lift-/.f64N/A

              \[\leadsto \frac{x}{y} \cdot \sinh \color{blue}{y} \]
            4. associate-*l/N/A

              \[\leadsto \frac{x \cdot \sinh y}{\color{blue}{y}} \]
            5. lift-*.f64N/A

              \[\leadsto \frac{x \cdot \sinh y}{y} \]
            6. div-flip-revN/A

              \[\leadsto \frac{1}{\color{blue}{\frac{y}{x \cdot \sinh y}}} \]
            7. lift-*.f64N/A

              \[\leadsto \frac{1}{\frac{y}{x \cdot \color{blue}{\sinh y}}} \]
            8. *-commutativeN/A

              \[\leadsto \frac{1}{\frac{y}{\sinh y \cdot \color{blue}{x}}} \]
            9. associate-/r*N/A

              \[\leadsto \frac{1}{\frac{\frac{y}{\sinh y}}{\color{blue}{x}}} \]
            10. div-flip-revN/A

              \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
            11. lower-/.f64N/A

              \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
            12. lower-/.f6462.3%

              \[\leadsto \frac{x}{\frac{y}{\color{blue}{\sinh y}}} \]
          8. Applied rewrites62.3%

            \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
        9. Recombined 2 regimes into one program.
        10. Add Preprocessing

        Alternative 6: 71.1% accurate, 0.6× speedup?

        \[\mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq -0.02:\\ \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\ \mathbf{else}:\\ \;\;\;\;\frac{\left|x\right|}{\frac{y}{\sinh y}}\\ \end{array} \]
        (FPCore (x y)
          :precision binary64
          (*
         (copysign 1.0 x)
         (if (<= (* (sin (fabs x)) (/ (sinh y) y)) -0.02)
           (*
            (fma
             (* (fabs x) (fabs x))
             (* -0.16666666666666666 (fabs x))
             (fabs x))
            1.0)
           (/ (fabs x) (/ y (sinh y))))))
        double code(double x, double y) {
        	double tmp;
        	if ((sin(fabs(x)) * (sinh(y) / y)) <= -0.02) {
        		tmp = fma((fabs(x) * fabs(x)), (-0.16666666666666666 * fabs(x)), fabs(x)) * 1.0;
        	} else {
        		tmp = fabs(x) / (y / sinh(y));
        	}
        	return copysign(1.0, x) * tmp;
        }
        
        function code(x, y)
        	tmp = 0.0
        	if (Float64(sin(abs(x)) * Float64(sinh(y) / y)) <= -0.02)
        		tmp = Float64(fma(Float64(abs(x) * abs(x)), Float64(-0.16666666666666666 * abs(x)), abs(x)) * 1.0);
        	else
        		tmp = Float64(abs(x) / Float64(y / sinh(y)));
        	end
        	return Float64(copysign(1.0, x) * tmp)
        end
        
        code[x_, y_] := N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision] * N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], -0.02], N[(N[(N[(N[Abs[x], $MachinePrecision] * N[Abs[x], $MachinePrecision]), $MachinePrecision] * N[(-0.16666666666666666 * N[Abs[x], $MachinePrecision]), $MachinePrecision] + N[Abs[x], $MachinePrecision]), $MachinePrecision] * 1.0), $MachinePrecision], N[(N[Abs[x], $MachinePrecision] / N[(y / N[Sinh[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
        
        \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
        \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq -0.02:\\
        \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\
        
        \mathbf{else}:\\
        \;\;\;\;\frac{\left|x\right|}{\frac{y}{\sinh y}}\\
        
        
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < -0.02

          1. Initial program 100.0%

            \[\sin x \cdot \frac{\sinh y}{y} \]
          2. Taylor expanded in x around 0

            \[\leadsto \color{blue}{\left(x \cdot \left(1 + \frac{-1}{6} \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
          3. Step-by-step derivation
            1. lower-*.f64N/A

              \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
            2. lower-+.f64N/A

              \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
            3. lower-*.f64N/A

              \[\leadsto \left(x \cdot \left(1 + \frac{-1}{6} \cdot \color{blue}{{x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
            4. lower-pow.f6462.9%

              \[\leadsto \left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{\color{blue}{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
          4. Applied rewrites62.9%

            \[\leadsto \color{blue}{\left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
          5. Step-by-step derivation
            1. lift-*.f64N/A

              \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
            2. lift-+.f64N/A

              \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
            3. +-commutativeN/A

              \[\leadsto \left(x \cdot \left(\frac{-1}{6} \cdot {x}^{2} + \color{blue}{1}\right)\right) \cdot \frac{\sinh y}{y} \]
            4. distribute-rgt-inN/A

              \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + \color{blue}{1 \cdot x}\right) \cdot \frac{\sinh y}{y} \]
            5. lift-*.f64N/A

              \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
            6. *-commutativeN/A

              \[\leadsto \left(\left({x}^{2} \cdot \frac{-1}{6}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
            7. associate-*l*N/A

              \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + \color{blue}{1} \cdot x\right) \cdot \frac{\sinh y}{y} \]
            8. *-lft-identityN/A

              \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + x\right) \cdot \frac{\sinh y}{y} \]
            9. lower-fma.f64N/A

              \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6} \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
            10. lift-pow.f64N/A

              \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
            11. unpow2N/A

              \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
            12. lower-*.f64N/A

              \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
            13. lower-*.f6462.9%

              \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot \color{blue}{x}, x\right) \cdot \frac{\sinh y}{y} \]
          6. Applied rewrites62.9%

            \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{-0.16666666666666666 \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
          7. Taylor expanded in y around 0

            \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]
          8. Step-by-step derivation
            1. Applied rewrites33.8%

              \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]

            if -0.02 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

            1. Initial program 100.0%

              \[\sin x \cdot \frac{\sinh y}{y} \]
            2. Taylor expanded in x around 0

              \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
            3. Step-by-step derivation
              1. lower-*.f64N/A

                \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
              2. lower-/.f64N/A

                \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
              3. lower-*.f64N/A

                \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
              4. lower--.f64N/A

                \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
              5. lower-exp.f64N/A

                \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
              6. lower-/.f64N/A

                \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
              7. lower-exp.f6440.1%

                \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
            4. Applied rewrites40.1%

              \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
            5. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
              2. lift-/.f64N/A

                \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
              3. associate-*r/N/A

                \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
              4. *-commutativeN/A

                \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
              5. lift-*.f64N/A

                \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
              6. associate-*l*N/A

                \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
              7. metadata-evalN/A

                \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
              8. mult-flipN/A

                \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
              9. lift--.f64N/A

                \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
              10. lift-exp.f64N/A

                \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
              11. lift-/.f64N/A

                \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
              12. lift-exp.f64N/A

                \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
              13. rec-expN/A

                \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
              14. sinh-defN/A

                \[\leadsto \frac{x \cdot \sinh y}{y} \]
              15. lift-sinh.f64N/A

                \[\leadsto \frac{x \cdot \sinh y}{y} \]
              16. *-commutativeN/A

                \[\leadsto \frac{\sinh y \cdot x}{y} \]
              17. associate-/l*N/A

                \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
              18. mult-flip-revN/A

                \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
              19. lift-/.f64N/A

                \[\leadsto \sinh y \cdot \left(x \cdot \frac{1}{\color{blue}{y}}\right) \]
            6. Applied rewrites50.6%

              \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
            7. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
              2. *-commutativeN/A

                \[\leadsto \frac{x}{y} \cdot \color{blue}{\sinh y} \]
              3. lift-/.f64N/A

                \[\leadsto \frac{x}{y} \cdot \sinh \color{blue}{y} \]
              4. associate-*l/N/A

                \[\leadsto \frac{x \cdot \sinh y}{\color{blue}{y}} \]
              5. lift-*.f64N/A

                \[\leadsto \frac{x \cdot \sinh y}{y} \]
              6. div-flip-revN/A

                \[\leadsto \frac{1}{\color{blue}{\frac{y}{x \cdot \sinh y}}} \]
              7. lift-*.f64N/A

                \[\leadsto \frac{1}{\frac{y}{x \cdot \color{blue}{\sinh y}}} \]
              8. *-commutativeN/A

                \[\leadsto \frac{1}{\frac{y}{\sinh y \cdot \color{blue}{x}}} \]
              9. associate-/r*N/A

                \[\leadsto \frac{1}{\frac{\frac{y}{\sinh y}}{\color{blue}{x}}} \]
              10. div-flip-revN/A

                \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
              11. lower-/.f64N/A

                \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
              12. lower-/.f6462.3%

                \[\leadsto \frac{x}{\frac{y}{\color{blue}{\sinh y}}} \]
            8. Applied rewrites62.3%

              \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
          9. Recombined 2 regimes into one program.
          10. Add Preprocessing

          Alternative 7: 70.7% accurate, 0.6× speedup?

          \[\mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq 10^{-12}:\\ \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\ \mathbf{else}:\\ \;\;\;\;\frac{\left|x\right| \cdot \sinh y}{y}\\ \end{array} \]
          (FPCore (x y)
            :precision binary64
            (*
           (copysign 1.0 x)
           (if (<= (* (sin (fabs x)) (/ (sinh y) y)) 1e-12)
             (*
              (fma
               (* (fabs x) (fabs x))
               (* -0.16666666666666666 (fabs x))
               (fabs x))
              1.0)
             (/ (* (fabs x) (sinh y)) y))))
          double code(double x, double y) {
          	double tmp;
          	if ((sin(fabs(x)) * (sinh(y) / y)) <= 1e-12) {
          		tmp = fma((fabs(x) * fabs(x)), (-0.16666666666666666 * fabs(x)), fabs(x)) * 1.0;
          	} else {
          		tmp = (fabs(x) * sinh(y)) / y;
          	}
          	return copysign(1.0, x) * tmp;
          }
          
          function code(x, y)
          	tmp = 0.0
          	if (Float64(sin(abs(x)) * Float64(sinh(y) / y)) <= 1e-12)
          		tmp = Float64(fma(Float64(abs(x) * abs(x)), Float64(-0.16666666666666666 * abs(x)), abs(x)) * 1.0);
          	else
          		tmp = Float64(Float64(abs(x) * sinh(y)) / y);
          	end
          	return Float64(copysign(1.0, x) * tmp)
          end
          
          code[x_, y_] := N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision] * N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], 1e-12], N[(N[(N[(N[Abs[x], $MachinePrecision] * N[Abs[x], $MachinePrecision]), $MachinePrecision] * N[(-0.16666666666666666 * N[Abs[x], $MachinePrecision]), $MachinePrecision] + N[Abs[x], $MachinePrecision]), $MachinePrecision] * 1.0), $MachinePrecision], N[(N[(N[Abs[x], $MachinePrecision] * N[Sinh[y], $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]]), $MachinePrecision]
          
          \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
          \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq 10^{-12}:\\
          \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\
          
          \mathbf{else}:\\
          \;\;\;\;\frac{\left|x\right| \cdot \sinh y}{y}\\
          
          
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < 9.9999999999999998e-13

            1. Initial program 100.0%

              \[\sin x \cdot \frac{\sinh y}{y} \]
            2. Taylor expanded in x around 0

              \[\leadsto \color{blue}{\left(x \cdot \left(1 + \frac{-1}{6} \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
            3. Step-by-step derivation
              1. lower-*.f64N/A

                \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
              2. lower-+.f64N/A

                \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
              3. lower-*.f64N/A

                \[\leadsto \left(x \cdot \left(1 + \frac{-1}{6} \cdot \color{blue}{{x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
              4. lower-pow.f6462.9%

                \[\leadsto \left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{\color{blue}{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
            4. Applied rewrites62.9%

              \[\leadsto \color{blue}{\left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
            5. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
              2. lift-+.f64N/A

                \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
              3. +-commutativeN/A

                \[\leadsto \left(x \cdot \left(\frac{-1}{6} \cdot {x}^{2} + \color{blue}{1}\right)\right) \cdot \frac{\sinh y}{y} \]
              4. distribute-rgt-inN/A

                \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + \color{blue}{1 \cdot x}\right) \cdot \frac{\sinh y}{y} \]
              5. lift-*.f64N/A

                \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
              6. *-commutativeN/A

                \[\leadsto \left(\left({x}^{2} \cdot \frac{-1}{6}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
              7. associate-*l*N/A

                \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + \color{blue}{1} \cdot x\right) \cdot \frac{\sinh y}{y} \]
              8. *-lft-identityN/A

                \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + x\right) \cdot \frac{\sinh y}{y} \]
              9. lower-fma.f64N/A

                \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6} \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
              10. lift-pow.f64N/A

                \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
              11. unpow2N/A

                \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
              12. lower-*.f64N/A

                \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
              13. lower-*.f6462.9%

                \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot \color{blue}{x}, x\right) \cdot \frac{\sinh y}{y} \]
            6. Applied rewrites62.9%

              \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{-0.16666666666666666 \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
            7. Taylor expanded in y around 0

              \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]
            8. Step-by-step derivation
              1. Applied rewrites33.8%

                \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]

              if 9.9999999999999998e-13 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

              1. Initial program 100.0%

                \[\sin x \cdot \frac{\sinh y}{y} \]
              2. Taylor expanded in x around 0

                \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
              3. Step-by-step derivation
                1. lower-*.f64N/A

                  \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                2. lower-/.f64N/A

                  \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                3. lower-*.f64N/A

                  \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                4. lower--.f64N/A

                  \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                5. lower-exp.f64N/A

                  \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                6. lower-/.f64N/A

                  \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                7. lower-exp.f6440.1%

                  \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
              4. Applied rewrites40.1%

                \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
              5. Step-by-step derivation
                1. lift-*.f64N/A

                  \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                2. lift-/.f64N/A

                  \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                3. associate-*r/N/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
                4. lower-/.f64N/A

                  \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
                5. *-commutativeN/A

                  \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                6. lift-*.f64N/A

                  \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                7. associate-*l*N/A

                  \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                8. metadata-evalN/A

                  \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                9. mult-flipN/A

                  \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                10. lift--.f64N/A

                  \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                11. lift-exp.f64N/A

                  \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                12. lift-/.f64N/A

                  \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                13. lift-exp.f64N/A

                  \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                14. rec-expN/A

                  \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
                15. sinh-defN/A

                  \[\leadsto \frac{x \cdot \sinh y}{y} \]
                16. lift-sinh.f64N/A

                  \[\leadsto \frac{x \cdot \sinh y}{y} \]
                17. lower-*.f6451.6%

                  \[\leadsto \frac{x \cdot \sinh y}{y} \]
              6. Applied rewrites51.6%

                \[\leadsto \frac{x \cdot \sinh y}{\color{blue}{y}} \]
            9. Recombined 2 regimes into one program.
            10. Add Preprocessing

            Alternative 8: 59.1% accurate, 0.8× speedup?

            \[\mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \leq 4 \cdot 10^{-281}:\\ \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\ \mathbf{else}:\\ \;\;\;\;\sinh y \cdot \frac{\left|x\right|}{y}\\ \end{array} \]
            (FPCore (x y)
              :precision binary64
              (*
             (copysign 1.0 x)
             (if (<= (sin (fabs x)) 4e-281)
               (*
                (fma
                 (* (fabs x) (fabs x))
                 (* -0.16666666666666666 (fabs x))
                 (fabs x))
                1.0)
               (* (sinh y) (/ (fabs x) y)))))
            double code(double x, double y) {
            	double tmp;
            	if (sin(fabs(x)) <= 4e-281) {
            		tmp = fma((fabs(x) * fabs(x)), (-0.16666666666666666 * fabs(x)), fabs(x)) * 1.0;
            	} else {
            		tmp = sinh(y) * (fabs(x) / y);
            	}
            	return copysign(1.0, x) * tmp;
            }
            
            function code(x, y)
            	tmp = 0.0
            	if (sin(abs(x)) <= 4e-281)
            		tmp = Float64(fma(Float64(abs(x) * abs(x)), Float64(-0.16666666666666666 * abs(x)), abs(x)) * 1.0);
            	else
            		tmp = Float64(sinh(y) * Float64(abs(x) / y));
            	end
            	return Float64(copysign(1.0, x) * tmp)
            end
            
            code[x_, y_] := N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision], 4e-281], N[(N[(N[(N[Abs[x], $MachinePrecision] * N[Abs[x], $MachinePrecision]), $MachinePrecision] * N[(-0.16666666666666666 * N[Abs[x], $MachinePrecision]), $MachinePrecision] + N[Abs[x], $MachinePrecision]), $MachinePrecision] * 1.0), $MachinePrecision], N[(N[Sinh[y], $MachinePrecision] * N[(N[Abs[x], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
            
            \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
            \mathbf{if}\;\sin \left(\left|x\right|\right) \leq 4 \cdot 10^{-281}:\\
            \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\
            
            \mathbf{else}:\\
            \;\;\;\;\sinh y \cdot \frac{\left|x\right|}{y}\\
            
            
            \end{array}
            
            Derivation
            1. Split input into 2 regimes
            2. if (sin.f64 x) < 4.0000000000000001e-281

              1. Initial program 100.0%

                \[\sin x \cdot \frac{\sinh y}{y} \]
              2. Taylor expanded in x around 0

                \[\leadsto \color{blue}{\left(x \cdot \left(1 + \frac{-1}{6} \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
              3. Step-by-step derivation
                1. lower-*.f64N/A

                  \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
                2. lower-+.f64N/A

                  \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
                3. lower-*.f64N/A

                  \[\leadsto \left(x \cdot \left(1 + \frac{-1}{6} \cdot \color{blue}{{x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
                4. lower-pow.f6462.9%

                  \[\leadsto \left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{\color{blue}{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
              4. Applied rewrites62.9%

                \[\leadsto \color{blue}{\left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
              5. Step-by-step derivation
                1. lift-*.f64N/A

                  \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
                2. lift-+.f64N/A

                  \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
                3. +-commutativeN/A

                  \[\leadsto \left(x \cdot \left(\frac{-1}{6} \cdot {x}^{2} + \color{blue}{1}\right)\right) \cdot \frac{\sinh y}{y} \]
                4. distribute-rgt-inN/A

                  \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + \color{blue}{1 \cdot x}\right) \cdot \frac{\sinh y}{y} \]
                5. lift-*.f64N/A

                  \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
                6. *-commutativeN/A

                  \[\leadsto \left(\left({x}^{2} \cdot \frac{-1}{6}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
                7. associate-*l*N/A

                  \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + \color{blue}{1} \cdot x\right) \cdot \frac{\sinh y}{y} \]
                8. *-lft-identityN/A

                  \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + x\right) \cdot \frac{\sinh y}{y} \]
                9. lower-fma.f64N/A

                  \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6} \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
                10. lift-pow.f64N/A

                  \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
                11. unpow2N/A

                  \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
                12. lower-*.f64N/A

                  \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
                13. lower-*.f6462.9%

                  \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot \color{blue}{x}, x\right) \cdot \frac{\sinh y}{y} \]
              6. Applied rewrites62.9%

                \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{-0.16666666666666666 \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
              7. Taylor expanded in y around 0

                \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]
              8. Step-by-step derivation
                1. Applied rewrites33.8%

                  \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]

                if 4.0000000000000001e-281 < (sin.f64 x)

                1. Initial program 100.0%

                  \[\sin x \cdot \frac{\sinh y}{y} \]
                2. Taylor expanded in x around 0

                  \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                3. Step-by-step derivation
                  1. lower-*.f64N/A

                    \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                  2. lower-/.f64N/A

                    \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                  3. lower-*.f64N/A

                    \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                  4. lower--.f64N/A

                    \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                  5. lower-exp.f64N/A

                    \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                  6. lower-/.f64N/A

                    \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                  7. lower-exp.f6440.1%

                    \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                4. Applied rewrites40.1%

                  \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                5. Step-by-step derivation
                  1. lift-*.f64N/A

                    \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                  2. lift-/.f64N/A

                    \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                  3. associate-*r/N/A

                    \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
                  4. *-commutativeN/A

                    \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                  5. lift-*.f64N/A

                    \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                  6. associate-*l*N/A

                    \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                  7. metadata-evalN/A

                    \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                  8. mult-flipN/A

                    \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                  9. lift--.f64N/A

                    \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                  10. lift-exp.f64N/A

                    \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                  11. lift-/.f64N/A

                    \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                  12. lift-exp.f64N/A

                    \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                  13. rec-expN/A

                    \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
                  14. sinh-defN/A

                    \[\leadsto \frac{x \cdot \sinh y}{y} \]
                  15. lift-sinh.f64N/A

                    \[\leadsto \frac{x \cdot \sinh y}{y} \]
                  16. *-commutativeN/A

                    \[\leadsto \frac{\sinh y \cdot x}{y} \]
                  17. associate-/l*N/A

                    \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                  18. mult-flip-revN/A

                    \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
                  19. lift-/.f64N/A

                    \[\leadsto \sinh y \cdot \left(x \cdot \frac{1}{\color{blue}{y}}\right) \]
                6. Applied rewrites50.6%

                  \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
              9. Recombined 2 regimes into one program.
              10. Add Preprocessing

              Alternative 9: 40.6% accurate, 0.7× speedup?

              \[\mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq 10^{-12}:\\ \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\left|x\right| \cdot \left(2 \cdot y\right)}{y}\\ \end{array} \]
              (FPCore (x y)
                :precision binary64
                (*
               (copysign 1.0 x)
               (if (<= (* (sin (fabs x)) (/ (sinh y) y)) 1e-12)
                 (*
                  (fma
                   (* (fabs x) (fabs x))
                   (* -0.16666666666666666 (fabs x))
                   (fabs x))
                  1.0)
                 (* 0.5 (/ (* (fabs x) (* 2.0 y)) y)))))
              double code(double x, double y) {
              	double tmp;
              	if ((sin(fabs(x)) * (sinh(y) / y)) <= 1e-12) {
              		tmp = fma((fabs(x) * fabs(x)), (-0.16666666666666666 * fabs(x)), fabs(x)) * 1.0;
              	} else {
              		tmp = 0.5 * ((fabs(x) * (2.0 * y)) / y);
              	}
              	return copysign(1.0, x) * tmp;
              }
              
              function code(x, y)
              	tmp = 0.0
              	if (Float64(sin(abs(x)) * Float64(sinh(y) / y)) <= 1e-12)
              		tmp = Float64(fma(Float64(abs(x) * abs(x)), Float64(-0.16666666666666666 * abs(x)), abs(x)) * 1.0);
              	else
              		tmp = Float64(0.5 * Float64(Float64(abs(x) * Float64(2.0 * y)) / y));
              	end
              	return Float64(copysign(1.0, x) * tmp)
              end
              
              code[x_, y_] := N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision] * N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], 1e-12], N[(N[(N[(N[Abs[x], $MachinePrecision] * N[Abs[x], $MachinePrecision]), $MachinePrecision] * N[(-0.16666666666666666 * N[Abs[x], $MachinePrecision]), $MachinePrecision] + N[Abs[x], $MachinePrecision]), $MachinePrecision] * 1.0), $MachinePrecision], N[(0.5 * N[(N[(N[Abs[x], $MachinePrecision] * N[(2.0 * y), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
              
              \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
              \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq 10^{-12}:\\
              \;\;\;\;\mathsf{fma}\left(\left|x\right| \cdot \left|x\right|, -0.16666666666666666 \cdot \left|x\right|, \left|x\right|\right) \cdot 1\\
              
              \mathbf{else}:\\
              \;\;\;\;0.5 \cdot \frac{\left|x\right| \cdot \left(2 \cdot y\right)}{y}\\
              
              
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < 9.9999999999999998e-13

                1. Initial program 100.0%

                  \[\sin x \cdot \frac{\sinh y}{y} \]
                2. Taylor expanded in x around 0

                  \[\leadsto \color{blue}{\left(x \cdot \left(1 + \frac{-1}{6} \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
                3. Step-by-step derivation
                  1. lower-*.f64N/A

                    \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
                  2. lower-+.f64N/A

                    \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
                  3. lower-*.f64N/A

                    \[\leadsto \left(x \cdot \left(1 + \frac{-1}{6} \cdot \color{blue}{{x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
                  4. lower-pow.f6462.9%

                    \[\leadsto \left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{\color{blue}{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
                4. Applied rewrites62.9%

                  \[\leadsto \color{blue}{\left(x \cdot \left(1 + -0.16666666666666666 \cdot {x}^{2}\right)\right)} \cdot \frac{\sinh y}{y} \]
                5. Step-by-step derivation
                  1. lift-*.f64N/A

                    \[\leadsto \left(x \cdot \color{blue}{\left(1 + \frac{-1}{6} \cdot {x}^{2}\right)}\right) \cdot \frac{\sinh y}{y} \]
                  2. lift-+.f64N/A

                    \[\leadsto \left(x \cdot \left(1 + \color{blue}{\frac{-1}{6} \cdot {x}^{2}}\right)\right) \cdot \frac{\sinh y}{y} \]
                  3. +-commutativeN/A

                    \[\leadsto \left(x \cdot \left(\frac{-1}{6} \cdot {x}^{2} + \color{blue}{1}\right)\right) \cdot \frac{\sinh y}{y} \]
                  4. distribute-rgt-inN/A

                    \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + \color{blue}{1 \cdot x}\right) \cdot \frac{\sinh y}{y} \]
                  5. lift-*.f64N/A

                    \[\leadsto \left(\left(\frac{-1}{6} \cdot {x}^{2}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
                  6. *-commutativeN/A

                    \[\leadsto \left(\left({x}^{2} \cdot \frac{-1}{6}\right) \cdot x + 1 \cdot x\right) \cdot \frac{\sinh y}{y} \]
                  7. associate-*l*N/A

                    \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + \color{blue}{1} \cdot x\right) \cdot \frac{\sinh y}{y} \]
                  8. *-lft-identityN/A

                    \[\leadsto \left({x}^{2} \cdot \left(\frac{-1}{6} \cdot x\right) + x\right) \cdot \frac{\sinh y}{y} \]
                  9. lower-fma.f64N/A

                    \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6} \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
                  10. lift-pow.f64N/A

                    \[\leadsto \mathsf{fma}\left({x}^{2}, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
                  11. unpow2N/A

                    \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
                  12. lower-*.f64N/A

                    \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{\frac{-1}{6}} \cdot x, x\right) \cdot \frac{\sinh y}{y} \]
                  13. lower-*.f6462.9%

                    \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot \color{blue}{x}, x\right) \cdot \frac{\sinh y}{y} \]
                6. Applied rewrites62.9%

                  \[\leadsto \mathsf{fma}\left(x \cdot x, \color{blue}{-0.16666666666666666 \cdot x}, x\right) \cdot \frac{\sinh y}{y} \]
                7. Taylor expanded in y around 0

                  \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]
                8. Step-by-step derivation
                  1. Applied rewrites33.8%

                    \[\leadsto \mathsf{fma}\left(x \cdot x, -0.16666666666666666 \cdot x, x\right) \cdot \color{blue}{1} \]

                  if 9.9999999999999998e-13 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

                  1. Initial program 100.0%

                    \[\sin x \cdot \frac{\sinh y}{y} \]
                  2. Taylor expanded in x around 0

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                  3. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    2. lower-/.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                    3. lower-*.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    4. lower--.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    5. lower-exp.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    6. lower-/.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    7. lower-exp.f6440.1%

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                  4. Applied rewrites40.1%

                    \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                  5. Taylor expanded in y around 0

                    \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
                  6. Step-by-step derivation
                    1. lower-+.f6424.7%

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
                  7. Applied rewrites24.7%

                    \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
                  8. Taylor expanded in y around 0

                    \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
                  9. Step-by-step derivation
                    1. lower-+.f649.5%

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
                  10. Applied rewrites9.5%

                    \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
                  11. Taylor expanded in y around 0

                    \[\leadsto 0.5 \cdot \frac{x \cdot \left(2 \cdot y\right)}{y} \]
                  12. Step-by-step derivation
                    1. lower-*.f6421.1%

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(2 \cdot y\right)}{y} \]
                  13. Applied rewrites21.1%

                    \[\leadsto 0.5 \cdot \frac{x \cdot \left(2 \cdot y\right)}{y} \]
                9. Recombined 2 regimes into one program.
                10. Add Preprocessing

                Alternative 10: 31.8% accurate, 0.7× speedup?

                \[\mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq 10^{-12}:\\ \;\;\;\;\frac{\left|x\right|}{1}\\ \mathbf{else}:\\ \;\;\;\;0.5 \cdot \frac{\left|x\right| \cdot \left(2 \cdot y\right)}{y}\\ \end{array} \]
                (FPCore (x y)
                  :precision binary64
                  (*
                 (copysign 1.0 x)
                 (if (<= (* (sin (fabs x)) (/ (sinh y) y)) 1e-12)
                   (/ (fabs x) 1.0)
                   (* 0.5 (/ (* (fabs x) (* 2.0 y)) y)))))
                double code(double x, double y) {
                	double tmp;
                	if ((sin(fabs(x)) * (sinh(y) / y)) <= 1e-12) {
                		tmp = fabs(x) / 1.0;
                	} else {
                		tmp = 0.5 * ((fabs(x) * (2.0 * y)) / y);
                	}
                	return copysign(1.0, x) * tmp;
                }
                
                public static double code(double x, double y) {
                	double tmp;
                	if ((Math.sin(Math.abs(x)) * (Math.sinh(y) / y)) <= 1e-12) {
                		tmp = Math.abs(x) / 1.0;
                	} else {
                		tmp = 0.5 * ((Math.abs(x) * (2.0 * y)) / y);
                	}
                	return Math.copySign(1.0, x) * tmp;
                }
                
                def code(x, y):
                	tmp = 0
                	if (math.sin(math.fabs(x)) * (math.sinh(y) / y)) <= 1e-12:
                		tmp = math.fabs(x) / 1.0
                	else:
                		tmp = 0.5 * ((math.fabs(x) * (2.0 * y)) / y)
                	return math.copysign(1.0, x) * tmp
                
                function code(x, y)
                	tmp = 0.0
                	if (Float64(sin(abs(x)) * Float64(sinh(y) / y)) <= 1e-12)
                		tmp = Float64(abs(x) / 1.0);
                	else
                		tmp = Float64(0.5 * Float64(Float64(abs(x) * Float64(2.0 * y)) / y));
                	end
                	return Float64(copysign(1.0, x) * tmp)
                end
                
                function tmp_2 = code(x, y)
                	tmp = 0.0;
                	if ((sin(abs(x)) * (sinh(y) / y)) <= 1e-12)
                		tmp = abs(x) / 1.0;
                	else
                		tmp = 0.5 * ((abs(x) * (2.0 * y)) / y);
                	end
                	tmp_2 = (sign(x) * abs(1.0)) * tmp;
                end
                
                code[x_, y_] := N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision] * N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], 1e-12], N[(N[Abs[x], $MachinePrecision] / 1.0), $MachinePrecision], N[(0.5 * N[(N[(N[Abs[x], $MachinePrecision] * N[(2.0 * y), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
                
                \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
                \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq 10^{-12}:\\
                \;\;\;\;\frac{\left|x\right|}{1}\\
                
                \mathbf{else}:\\
                \;\;\;\;0.5 \cdot \frac{\left|x\right| \cdot \left(2 \cdot y\right)}{y}\\
                
                
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < 9.9999999999999998e-13

                  1. Initial program 100.0%

                    \[\sin x \cdot \frac{\sinh y}{y} \]
                  2. Taylor expanded in x around 0

                    \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                  3. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    2. lower-/.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                    3. lower-*.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    4. lower--.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    5. lower-exp.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    6. lower-/.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    7. lower-exp.f6440.1%

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                  4. Applied rewrites40.1%

                    \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                  5. Step-by-step derivation
                    1. lift-*.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    2. lift-/.f64N/A

                      \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                    3. associate-*r/N/A

                      \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
                    4. *-commutativeN/A

                      \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                    5. lift-*.f64N/A

                      \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                    6. associate-*l*N/A

                      \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                    7. metadata-evalN/A

                      \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                    8. mult-flipN/A

                      \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                    9. lift--.f64N/A

                      \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                    10. lift-exp.f64N/A

                      \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                    11. lift-/.f64N/A

                      \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                    12. lift-exp.f64N/A

                      \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                    13. rec-expN/A

                      \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
                    14. sinh-defN/A

                      \[\leadsto \frac{x \cdot \sinh y}{y} \]
                    15. lift-sinh.f64N/A

                      \[\leadsto \frac{x \cdot \sinh y}{y} \]
                    16. *-commutativeN/A

                      \[\leadsto \frac{\sinh y \cdot x}{y} \]
                    17. associate-/l*N/A

                      \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                    18. mult-flip-revN/A

                      \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
                    19. lift-/.f64N/A

                      \[\leadsto \sinh y \cdot \left(x \cdot \frac{1}{\color{blue}{y}}\right) \]
                  6. Applied rewrites50.6%

                    \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                  7. Step-by-step derivation
                    1. lift-*.f64N/A

                      \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                    2. *-commutativeN/A

                      \[\leadsto \frac{x}{y} \cdot \color{blue}{\sinh y} \]
                    3. lift-/.f64N/A

                      \[\leadsto \frac{x}{y} \cdot \sinh \color{blue}{y} \]
                    4. associate-*l/N/A

                      \[\leadsto \frac{x \cdot \sinh y}{\color{blue}{y}} \]
                    5. lift-*.f64N/A

                      \[\leadsto \frac{x \cdot \sinh y}{y} \]
                    6. div-flip-revN/A

                      \[\leadsto \frac{1}{\color{blue}{\frac{y}{x \cdot \sinh y}}} \]
                    7. lift-*.f64N/A

                      \[\leadsto \frac{1}{\frac{y}{x \cdot \color{blue}{\sinh y}}} \]
                    8. *-commutativeN/A

                      \[\leadsto \frac{1}{\frac{y}{\sinh y \cdot \color{blue}{x}}} \]
                    9. associate-/r*N/A

                      \[\leadsto \frac{1}{\frac{\frac{y}{\sinh y}}{\color{blue}{x}}} \]
                    10. div-flip-revN/A

                      \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                    11. lower-/.f64N/A

                      \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                    12. lower-/.f6462.3%

                      \[\leadsto \frac{x}{\frac{y}{\color{blue}{\sinh y}}} \]
                  8. Applied rewrites62.3%

                    \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                  9. Taylor expanded in y around 0

                    \[\leadsto \frac{x}{1} \]
                  10. Step-by-step derivation
                    1. Applied rewrites26.1%

                      \[\leadsto \frac{x}{1} \]

                    if 9.9999999999999998e-13 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

                    1. Initial program 100.0%

                      \[\sin x \cdot \frac{\sinh y}{y} \]
                    2. Taylor expanded in x around 0

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    3. Step-by-step derivation
                      1. lower-*.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                      2. lower-/.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                      3. lower-*.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      4. lower--.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      5. lower-exp.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      6. lower-/.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      7. lower-exp.f6440.1%

                        \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    4. Applied rewrites40.1%

                      \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    5. Taylor expanded in y around 0

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
                    6. Step-by-step derivation
                      1. lower-+.f6424.7%

                        \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
                    7. Applied rewrites24.7%

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{e^{y}}\right)}{y} \]
                    8. Taylor expanded in y around 0

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
                    9. Step-by-step derivation
                      1. lower-+.f649.5%

                        \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
                    10. Applied rewrites9.5%

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(\left(1 + y\right) - \frac{1}{1 + y}\right)}{y} \]
                    11. Taylor expanded in y around 0

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(2 \cdot y\right)}{y} \]
                    12. Step-by-step derivation
                      1. lower-*.f6421.1%

                        \[\leadsto 0.5 \cdot \frac{x \cdot \left(2 \cdot y\right)}{y} \]
                    13. Applied rewrites21.1%

                      \[\leadsto 0.5 \cdot \frac{x \cdot \left(2 \cdot y\right)}{y} \]
                  11. Recombined 2 regimes into one program.
                  12. Add Preprocessing

                  Alternative 11: 31.8% accurate, 0.7× speedup?

                  \[\mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l} \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq 0.05:\\ \;\;\;\;\frac{\left|x\right|}{1}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{y} \cdot \left(\left|x\right| \cdot y\right)\\ \end{array} \]
                  (FPCore (x y)
                    :precision binary64
                    (*
                   (copysign 1.0 x)
                   (if (<= (* (sin (fabs x)) (/ (sinh y) y)) 0.05)
                     (/ (fabs x) 1.0)
                     (* (/ 1.0 y) (* (fabs x) y)))))
                  double code(double x, double y) {
                  	double tmp;
                  	if ((sin(fabs(x)) * (sinh(y) / y)) <= 0.05) {
                  		tmp = fabs(x) / 1.0;
                  	} else {
                  		tmp = (1.0 / y) * (fabs(x) * y);
                  	}
                  	return copysign(1.0, x) * tmp;
                  }
                  
                  public static double code(double x, double y) {
                  	double tmp;
                  	if ((Math.sin(Math.abs(x)) * (Math.sinh(y) / y)) <= 0.05) {
                  		tmp = Math.abs(x) / 1.0;
                  	} else {
                  		tmp = (1.0 / y) * (Math.abs(x) * y);
                  	}
                  	return Math.copySign(1.0, x) * tmp;
                  }
                  
                  def code(x, y):
                  	tmp = 0
                  	if (math.sin(math.fabs(x)) * (math.sinh(y) / y)) <= 0.05:
                  		tmp = math.fabs(x) / 1.0
                  	else:
                  		tmp = (1.0 / y) * (math.fabs(x) * y)
                  	return math.copysign(1.0, x) * tmp
                  
                  function code(x, y)
                  	tmp = 0.0
                  	if (Float64(sin(abs(x)) * Float64(sinh(y) / y)) <= 0.05)
                  		tmp = Float64(abs(x) / 1.0);
                  	else
                  		tmp = Float64(Float64(1.0 / y) * Float64(abs(x) * y));
                  	end
                  	return Float64(copysign(1.0, x) * tmp)
                  end
                  
                  function tmp_2 = code(x, y)
                  	tmp = 0.0;
                  	if ((sin(abs(x)) * (sinh(y) / y)) <= 0.05)
                  		tmp = abs(x) / 1.0;
                  	else
                  		tmp = (1.0 / y) * (abs(x) * y);
                  	end
                  	tmp_2 = (sign(x) * abs(1.0)) * tmp;
                  end
                  
                  code[x_, y_] := N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[Sin[N[Abs[x], $MachinePrecision]], $MachinePrecision] * N[(N[Sinh[y], $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], 0.05], N[(N[Abs[x], $MachinePrecision] / 1.0), $MachinePrecision], N[(N[(1.0 / y), $MachinePrecision] * N[(N[Abs[x], $MachinePrecision] * y), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
                  
                  \mathsf{copysign}\left(1, x\right) \cdot \begin{array}{l}
                  \mathbf{if}\;\sin \left(\left|x\right|\right) \cdot \frac{\sinh y}{y} \leq 0.05:\\
                  \;\;\;\;\frac{\left|x\right|}{1}\\
                  
                  \mathbf{else}:\\
                  \;\;\;\;\frac{1}{y} \cdot \left(\left|x\right| \cdot y\right)\\
                  
                  
                  \end{array}
                  
                  Derivation
                  1. Split input into 2 regimes
                  2. if (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y)) < 0.050000000000000003

                    1. Initial program 100.0%

                      \[\sin x \cdot \frac{\sinh y}{y} \]
                    2. Taylor expanded in x around 0

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    3. Step-by-step derivation
                      1. lower-*.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                      2. lower-/.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                      3. lower-*.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      4. lower--.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      5. lower-exp.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      6. lower-/.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      7. lower-exp.f6440.1%

                        \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    4. Applied rewrites40.1%

                      \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    5. Step-by-step derivation
                      1. lift-*.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                      2. lift-/.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                      3. associate-*r/N/A

                        \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
                      4. *-commutativeN/A

                        \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                      5. lift-*.f64N/A

                        \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                      6. associate-*l*N/A

                        \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                      7. metadata-evalN/A

                        \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                      8. mult-flipN/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      9. lift--.f64N/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      10. lift-exp.f64N/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      11. lift-/.f64N/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      12. lift-exp.f64N/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      13. rec-expN/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
                      14. sinh-defN/A

                        \[\leadsto \frac{x \cdot \sinh y}{y} \]
                      15. lift-sinh.f64N/A

                        \[\leadsto \frac{x \cdot \sinh y}{y} \]
                      16. *-commutativeN/A

                        \[\leadsto \frac{\sinh y \cdot x}{y} \]
                      17. associate-/l*N/A

                        \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                      18. mult-flip-revN/A

                        \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
                      19. lift-/.f64N/A

                        \[\leadsto \sinh y \cdot \left(x \cdot \frac{1}{\color{blue}{y}}\right) \]
                    6. Applied rewrites50.6%

                      \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                    7. Step-by-step derivation
                      1. lift-*.f64N/A

                        \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                      2. *-commutativeN/A

                        \[\leadsto \frac{x}{y} \cdot \color{blue}{\sinh y} \]
                      3. lift-/.f64N/A

                        \[\leadsto \frac{x}{y} \cdot \sinh \color{blue}{y} \]
                      4. associate-*l/N/A

                        \[\leadsto \frac{x \cdot \sinh y}{\color{blue}{y}} \]
                      5. lift-*.f64N/A

                        \[\leadsto \frac{x \cdot \sinh y}{y} \]
                      6. div-flip-revN/A

                        \[\leadsto \frac{1}{\color{blue}{\frac{y}{x \cdot \sinh y}}} \]
                      7. lift-*.f64N/A

                        \[\leadsto \frac{1}{\frac{y}{x \cdot \color{blue}{\sinh y}}} \]
                      8. *-commutativeN/A

                        \[\leadsto \frac{1}{\frac{y}{\sinh y \cdot \color{blue}{x}}} \]
                      9. associate-/r*N/A

                        \[\leadsto \frac{1}{\frac{\frac{y}{\sinh y}}{\color{blue}{x}}} \]
                      10. div-flip-revN/A

                        \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                      11. lower-/.f64N/A

                        \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                      12. lower-/.f6462.3%

                        \[\leadsto \frac{x}{\frac{y}{\color{blue}{\sinh y}}} \]
                    8. Applied rewrites62.3%

                      \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                    9. Taylor expanded in y around 0

                      \[\leadsto \frac{x}{1} \]
                    10. Step-by-step derivation
                      1. Applied rewrites26.1%

                        \[\leadsto \frac{x}{1} \]

                      if 0.050000000000000003 < (*.f64 (sin.f64 x) (/.f64 (sinh.f64 y) y))

                      1. Initial program 100.0%

                        \[\sin x \cdot \frac{\sinh y}{y} \]
                      2. Taylor expanded in x around 0

                        \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                      3. Step-by-step derivation
                        1. lower-*.f64N/A

                          \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                        2. lower-/.f64N/A

                          \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                        3. lower-*.f64N/A

                          \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                        4. lower--.f64N/A

                          \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                        5. lower-exp.f64N/A

                          \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                        6. lower-/.f64N/A

                          \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                        7. lower-exp.f6440.1%

                          \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      4. Applied rewrites40.1%

                        \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                      5. Step-by-step derivation
                        1. lift-*.f64N/A

                          \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                        2. lift-/.f64N/A

                          \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                        3. associate-*r/N/A

                          \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
                        4. *-commutativeN/A

                          \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                        5. lift-*.f64N/A

                          \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                        6. associate-*l*N/A

                          \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                        7. metadata-evalN/A

                          \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                        8. mult-flipN/A

                          \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                        9. lift--.f64N/A

                          \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                        10. lift-exp.f64N/A

                          \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                        11. lift-/.f64N/A

                          \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                        12. lift-exp.f64N/A

                          \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                        13. rec-expN/A

                          \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
                        14. sinh-defN/A

                          \[\leadsto \frac{x \cdot \sinh y}{y} \]
                        15. lift-sinh.f64N/A

                          \[\leadsto \frac{x \cdot \sinh y}{y} \]
                        16. *-commutativeN/A

                          \[\leadsto \frac{\sinh y \cdot x}{y} \]
                        17. associate-/l*N/A

                          \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                        18. mult-flip-revN/A

                          \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
                        19. lift-/.f64N/A

                          \[\leadsto \sinh y \cdot \left(x \cdot \frac{1}{\color{blue}{y}}\right) \]
                      6. Applied rewrites50.6%

                        \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                      7. Step-by-step derivation
                        1. lift-*.f64N/A

                          \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                        2. lift-/.f64N/A

                          \[\leadsto \sinh y \cdot \frac{x}{\color{blue}{y}} \]
                        3. mult-flipN/A

                          \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
                        4. associate-*r*N/A

                          \[\leadsto \left(\sinh y \cdot x\right) \cdot \color{blue}{\frac{1}{y}} \]
                        5. *-commutativeN/A

                          \[\leadsto \left(x \cdot \sinh y\right) \cdot \frac{\color{blue}{1}}{y} \]
                        6. lift-*.f64N/A

                          \[\leadsto \left(x \cdot \sinh y\right) \cdot \frac{\color{blue}{1}}{y} \]
                        7. *-commutativeN/A

                          \[\leadsto \frac{1}{y} \cdot \color{blue}{\left(x \cdot \sinh y\right)} \]
                        8. lower-*.f64N/A

                          \[\leadsto \frac{1}{y} \cdot \color{blue}{\left(x \cdot \sinh y\right)} \]
                        9. lower-/.f6451.5%

                          \[\leadsto \frac{1}{y} \cdot \left(\color{blue}{x} \cdot \sinh y\right) \]
                        10. lift-*.f64N/A

                          \[\leadsto \frac{1}{y} \cdot \left(x \cdot \color{blue}{\sinh y}\right) \]
                        11. *-commutativeN/A

                          \[\leadsto \frac{1}{y} \cdot \left(\sinh y \cdot \color{blue}{x}\right) \]
                        12. lower-*.f6451.5%

                          \[\leadsto \frac{1}{y} \cdot \left(\sinh y \cdot \color{blue}{x}\right) \]
                      8. Applied rewrites51.5%

                        \[\leadsto \frac{1}{y} \cdot \color{blue}{\left(\sinh y \cdot x\right)} \]
                      9. Taylor expanded in y around 0

                        \[\leadsto \frac{1}{y} \cdot \left(x \cdot \color{blue}{y}\right) \]
                      10. Step-by-step derivation
                        1. lower-*.f6421.0%

                          \[\leadsto \frac{1}{y} \cdot \left(x \cdot y\right) \]
                      11. Applied rewrites21.0%

                        \[\leadsto \frac{1}{y} \cdot \left(x \cdot \color{blue}{y}\right) \]
                    11. Recombined 2 regimes into one program.
                    12. Add Preprocessing

                    Alternative 12: 26.1% accurate, 11.5× speedup?

                    \[\frac{x}{1} \]
                    (FPCore (x y)
                      :precision binary64
                      (/ x 1.0))
                    double code(double x, double y) {
                    	return x / 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(x, y)
                    use fmin_fmax_functions
                        real(8), intent (in) :: x
                        real(8), intent (in) :: y
                        code = x / 1.0d0
                    end function
                    
                    public static double code(double x, double y) {
                    	return x / 1.0;
                    }
                    
                    def code(x, y):
                    	return x / 1.0
                    
                    function code(x, y)
                    	return Float64(x / 1.0)
                    end
                    
                    function tmp = code(x, y)
                    	tmp = x / 1.0;
                    end
                    
                    code[x_, y_] := N[(x / 1.0), $MachinePrecision]
                    
                    \frac{x}{1}
                    
                    Derivation
                    1. Initial program 100.0%

                      \[\sin x \cdot \frac{\sinh y}{y} \]
                    2. Taylor expanded in x around 0

                      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    3. Step-by-step derivation
                      1. lower-*.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                      2. lower-/.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                      3. lower-*.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      4. lower--.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      5. lower-exp.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      6. lower-/.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                      7. lower-exp.f6440.1%

                        \[\leadsto 0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y} \]
                    4. Applied rewrites40.1%

                      \[\leadsto \color{blue}{0.5 \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                    5. Step-by-step derivation
                      1. lift-*.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \color{blue}{\frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{y}} \]
                      2. lift-/.f64N/A

                        \[\leadsto \frac{1}{2} \cdot \frac{x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)}{\color{blue}{y}} \]
                      3. associate-*r/N/A

                        \[\leadsto \frac{\frac{1}{2} \cdot \left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right)}{\color{blue}{y}} \]
                      4. *-commutativeN/A

                        \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                      5. lift-*.f64N/A

                        \[\leadsto \frac{\left(x \cdot \left(e^{y} - \frac{1}{e^{y}}\right)\right) \cdot \frac{1}{2}}{y} \]
                      6. associate-*l*N/A

                        \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                      7. metadata-evalN/A

                        \[\leadsto \frac{x \cdot \left(\left(e^{y} - \frac{1}{e^{y}}\right) \cdot \frac{1}{2}\right)}{y} \]
                      8. mult-flipN/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      9. lift--.f64N/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      10. lift-exp.f64N/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      11. lift-/.f64N/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      12. lift-exp.f64N/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - \frac{1}{e^{y}}}{2}}{y} \]
                      13. rec-expN/A

                        \[\leadsto \frac{x \cdot \frac{e^{y} - e^{\mathsf{neg}\left(y\right)}}{2}}{y} \]
                      14. sinh-defN/A

                        \[\leadsto \frac{x \cdot \sinh y}{y} \]
                      15. lift-sinh.f64N/A

                        \[\leadsto \frac{x \cdot \sinh y}{y} \]
                      16. *-commutativeN/A

                        \[\leadsto \frac{\sinh y \cdot x}{y} \]
                      17. associate-/l*N/A

                        \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                      18. mult-flip-revN/A

                        \[\leadsto \sinh y \cdot \left(x \cdot \color{blue}{\frac{1}{y}}\right) \]
                      19. lift-/.f64N/A

                        \[\leadsto \sinh y \cdot \left(x \cdot \frac{1}{\color{blue}{y}}\right) \]
                    6. Applied rewrites50.6%

                      \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                    7. Step-by-step derivation
                      1. lift-*.f64N/A

                        \[\leadsto \sinh y \cdot \color{blue}{\frac{x}{y}} \]
                      2. *-commutativeN/A

                        \[\leadsto \frac{x}{y} \cdot \color{blue}{\sinh y} \]
                      3. lift-/.f64N/A

                        \[\leadsto \frac{x}{y} \cdot \sinh \color{blue}{y} \]
                      4. associate-*l/N/A

                        \[\leadsto \frac{x \cdot \sinh y}{\color{blue}{y}} \]
                      5. lift-*.f64N/A

                        \[\leadsto \frac{x \cdot \sinh y}{y} \]
                      6. div-flip-revN/A

                        \[\leadsto \frac{1}{\color{blue}{\frac{y}{x \cdot \sinh y}}} \]
                      7. lift-*.f64N/A

                        \[\leadsto \frac{1}{\frac{y}{x \cdot \color{blue}{\sinh y}}} \]
                      8. *-commutativeN/A

                        \[\leadsto \frac{1}{\frac{y}{\sinh y \cdot \color{blue}{x}}} \]
                      9. associate-/r*N/A

                        \[\leadsto \frac{1}{\frac{\frac{y}{\sinh y}}{\color{blue}{x}}} \]
                      10. div-flip-revN/A

                        \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                      11. lower-/.f64N/A

                        \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                      12. lower-/.f6462.3%

                        \[\leadsto \frac{x}{\frac{y}{\color{blue}{\sinh y}}} \]
                    8. Applied rewrites62.3%

                      \[\leadsto \frac{x}{\color{blue}{\frac{y}{\sinh y}}} \]
                    9. Taylor expanded in y around 0

                      \[\leadsto \frac{x}{1} \]
                    10. Step-by-step derivation
                      1. Applied rewrites26.1%

                        \[\leadsto \frac{x}{1} \]
                      2. Add Preprocessing

                      Reproduce

                      ?
                      herbie shell --seed 2025212 
                      (FPCore (x y)
                        :name "Linear.Quaternion:$ccos from linear-1.19.1.3"
                        :precision binary64
                        (* (sin x) (/ (sinh y) y)))