Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2

Percentage Accurate: 99.6% → 99.6%
Time: 17.4s
Alternatives: 17
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \end{array} \]
(FPCore (x y z t a)
 :precision binary64
 (+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))
double code(double x, double y, double z, double t, double a) {
	return ((log((x + y)) + log(z)) - t) + ((a - 0.5) * log(t));
}
real(8) function code(x, y, z, t, a)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    code = ((log((x + y)) + log(z)) - t) + ((a - 0.5d0) * log(t))
end function
public static double code(double x, double y, double z, double t, double a) {
	return ((Math.log((x + y)) + Math.log(z)) - t) + ((a - 0.5) * Math.log(t));
}
def code(x, y, z, t, a):
	return ((math.log((x + y)) + math.log(z)) - t) + ((a - 0.5) * math.log(t))
function code(x, y, z, t, a)
	return Float64(Float64(Float64(log(Float64(x + y)) + log(z)) - t) + Float64(Float64(a - 0.5) * log(t)))
end
function tmp = code(x, y, z, t, a)
	tmp = ((log((x + y)) + log(z)) - t) + ((a - 0.5) * log(t));
end
code[x_, y_, z_, t_, a_] := N[(N[(N[(N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision] + N[Log[z], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision] + N[(N[(a - 0.5), $MachinePrecision] * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

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

Accuracy vs Speed?

Herbie found 17 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: 99.6% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \end{array} \]
(FPCore (x y z t a)
 :precision binary64
 (+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))
double code(double x, double y, double z, double t, double a) {
	return ((log((x + y)) + log(z)) - t) + ((a - 0.5) * log(t));
}
real(8) function code(x, y, z, t, a)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    code = ((log((x + y)) + log(z)) - t) + ((a - 0.5d0) * log(t))
end function
public static double code(double x, double y, double z, double t, double a) {
	return ((Math.log((x + y)) + Math.log(z)) - t) + ((a - 0.5) * Math.log(t));
}
def code(x, y, z, t, a):
	return ((math.log((x + y)) + math.log(z)) - t) + ((a - 0.5) * math.log(t))
function code(x, y, z, t, a)
	return Float64(Float64(Float64(log(Float64(x + y)) + log(z)) - t) + Float64(Float64(a - 0.5) * log(t)))
end
function tmp = code(x, y, z, t, a)
	tmp = ((log((x + y)) + log(z)) - t) + ((a - 0.5) * log(t));
end
code[x_, y_, z_, t_, a_] := N[(N[(N[(N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision] + N[Log[z], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision] + N[(N[(a - 0.5), $MachinePrecision] * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\end{array}

Alternative 1: 99.6% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \end{array} \]
(FPCore (x y z t a)
 :precision binary64
 (+ (fma (+ a -0.5) (log t) (log z)) (- (log (+ x y)) t)))
double code(double x, double y, double z, double t, double a) {
	return fma((a + -0.5), log(t), log(z)) + (log((x + y)) - t);
}
function code(x, y, z, t, a)
	return Float64(fma(Float64(a + -0.5), log(t), log(z)) + Float64(log(Float64(x + y)) - t))
end
code[x_, y_, z_, t_, a_] := N[(N[(N[(a + -0.5), $MachinePrecision] * N[Log[t], $MachinePrecision] + N[Log[z], $MachinePrecision]), $MachinePrecision] + N[(N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision] - t), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right)
\end{array}
Derivation
  1. Initial program 99.5%

    \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. +-commutativeN/A

      \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
    2. +-commutativeN/A

      \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \left(\color{blue}{\left(\log z + \log \left(x + y\right)\right)} - t\right) \]
    3. associate--l+N/A

      \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \color{blue}{\left(\log z + \left(\log \left(x + y\right) - t\right)\right)} \]
    4. associate-+r+N/A

      \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
    5. +-lowering-+.f64N/A

      \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
    6. accelerator-lowering-fma.f64N/A

      \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \log z\right)} + \left(\log \left(x + y\right) - t\right) \]
    7. sub-negN/A

      \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
    8. +-lowering-+.f64N/A

      \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
    9. metadata-evalN/A

      \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
    10. log-lowering-log.f64N/A

      \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
    11. log-lowering-log.f64N/A

      \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log z}\right) + \left(\log \left(x + y\right) - t\right) \]
    12. --lowering--.f64N/A

      \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \color{blue}{\left(\log \left(x + y\right) - t\right)} \]
    13. log-lowering-log.f64N/A

      \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \left(\color{blue}{\log \left(x + y\right)} - t\right) \]
    14. +-lowering-+.f6499.5

      \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \color{blue}{\left(x + y\right)} - t\right) \]
  4. Applied egg-rr99.5%

    \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
  5. Add Preprocessing

Alternative 2: 88.0% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_1 := \log \left(x + y\right)\\ t_2 := \left(\left(\log z + t\_1\right) - t\right) + \log t \cdot \left(a - 0.5\right)\\ \mathbf{if}\;t\_2 \leq -20000:\\ \;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\ \mathbf{elif}\;t\_2 \leq 870:\\ \;\;\;\;\mathsf{fma}\left(-0.5, \log t, \log \left(z \cdot \left(x + y\right)\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \end{array} \]
(FPCore (x y z t a)
 :precision binary64
 (let* ((t_1 (log (+ x y)))
        (t_2 (+ (- (+ (log z) t_1) t) (* (log t) (- a 0.5)))))
   (if (<= t_2 -20000.0)
     (+ (- t_1 t) (* a (log t)))
     (if (<= t_2 870.0)
       (- (fma -0.5 (log t) (log (* z (+ x y)))) t)
       (+ (log y) (fma (log t) (+ a -0.5) (- t)))))))
double code(double x, double y, double z, double t, double a) {
	double t_1 = log((x + y));
	double t_2 = ((log(z) + t_1) - t) + (log(t) * (a - 0.5));
	double tmp;
	if (t_2 <= -20000.0) {
		tmp = (t_1 - t) + (a * log(t));
	} else if (t_2 <= 870.0) {
		tmp = fma(-0.5, log(t), log((z * (x + y)))) - t;
	} else {
		tmp = log(y) + fma(log(t), (a + -0.5), -t);
	}
	return tmp;
}
function code(x, y, z, t, a)
	t_1 = log(Float64(x + y))
	t_2 = Float64(Float64(Float64(log(z) + t_1) - t) + Float64(log(t) * Float64(a - 0.5)))
	tmp = 0.0
	if (t_2 <= -20000.0)
		tmp = Float64(Float64(t_1 - t) + Float64(a * log(t)));
	elseif (t_2 <= 870.0)
		tmp = Float64(fma(-0.5, log(t), log(Float64(z * Float64(x + y)))) - t);
	else
		tmp = Float64(log(y) + fma(log(t), Float64(a + -0.5), Float64(-t)));
	end
	return tmp
end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[Log[z], $MachinePrecision] + t$95$1), $MachinePrecision] - t), $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a - 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, -20000.0], N[(N[(t$95$1 - t), $MachinePrecision] + N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 870.0], N[(N[(-0.5 * N[Log[t], $MachinePrecision] + N[Log[N[(z * N[(x + y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + (-t)), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_1 := \log \left(x + y\right)\\
t_2 := \left(\left(\log z + t\_1\right) - t\right) + \log t \cdot \left(a - 0.5\right)\\
\mathbf{if}\;t\_2 \leq -20000:\\
\;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\

\mathbf{elif}\;t\_2 \leq 870:\\
\;\;\;\;\mathsf{fma}\left(-0.5, \log t, \log \left(z \cdot \left(x + y\right)\right)\right) - t\\

\mathbf{else}:\\
\;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t))) < -2e4

    1. Initial program 99.8%

      \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
      2. +-commutativeN/A

        \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \left(\color{blue}{\left(\log z + \log \left(x + y\right)\right)} - t\right) \]
      3. associate--l+N/A

        \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \color{blue}{\left(\log z + \left(\log \left(x + y\right) - t\right)\right)} \]
      4. associate-+r+N/A

        \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
      5. +-lowering-+.f64N/A

        \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
      6. accelerator-lowering-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \log z\right)} + \left(\log \left(x + y\right) - t\right) \]
      7. sub-negN/A

        \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
      8. +-lowering-+.f64N/A

        \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
      9. metadata-evalN/A

        \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
      10. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
      11. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log z}\right) + \left(\log \left(x + y\right) - t\right) \]
      12. --lowering--.f64N/A

        \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \color{blue}{\left(\log \left(x + y\right) - t\right)} \]
      13. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \left(\color{blue}{\log \left(x + y\right)} - t\right) \]
      14. +-lowering-+.f6499.8

        \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \color{blue}{\left(x + y\right)} - t\right) \]
    4. Applied egg-rr99.8%

      \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
    5. Taylor expanded in a around inf

      \[\leadsto \color{blue}{a \cdot \log t} + \left(\log \left(x + y\right) - t\right) \]
    6. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
      2. *-lowering-*.f64N/A

        \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
      3. log-lowering-log.f6498.6

        \[\leadsto \color{blue}{\log t} \cdot a + \left(\log \left(x + y\right) - t\right) \]
    7. Simplified98.6%

      \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]

    if -2e4 < (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t))) < 870

    1. Initial program 98.6%

      \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
      2. flip--N/A

        \[\leadsto \color{blue}{\frac{a \cdot a - \frac{1}{2} \cdot \frac{1}{2}}{a + \frac{1}{2}}} \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right) \]
      3. associate-*l/N/A

        \[\leadsto \color{blue}{\frac{\left(a \cdot a - \frac{1}{2} \cdot \frac{1}{2}\right) \cdot \log t}{a + \frac{1}{2}}} + \left(\left(\log \left(x + y\right) + \log z\right) - t\right) \]
      4. div-invN/A

        \[\leadsto \color{blue}{\left(\left(a \cdot a - \frac{1}{2} \cdot \frac{1}{2}\right) \cdot \log t\right) \cdot \frac{1}{a + \frac{1}{2}}} + \left(\left(\log \left(x + y\right) + \log z\right) - t\right) \]
      5. accelerator-lowering-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(\left(a \cdot a - \frac{1}{2} \cdot \frac{1}{2}\right) \cdot \log t, \frac{1}{a + \frac{1}{2}}, \left(\log \left(x + y\right) + \log z\right) - t\right)} \]
      6. *-lowering-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\color{blue}{\left(a \cdot a - \frac{1}{2} \cdot \frac{1}{2}\right) \cdot \log t}, \frac{1}{a + \frac{1}{2}}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
      7. sub-negN/A

        \[\leadsto \mathsf{fma}\left(\color{blue}{\left(a \cdot a + \left(\mathsf{neg}\left(\frac{1}{2} \cdot \frac{1}{2}\right)\right)\right)} \cdot \log t, \frac{1}{a + \frac{1}{2}}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
      8. accelerator-lowering-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\color{blue}{\mathsf{fma}\left(a, a, \mathsf{neg}\left(\frac{1}{2} \cdot \frac{1}{2}\right)\right)} \cdot \log t, \frac{1}{a + \frac{1}{2}}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
      9. metadata-evalN/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \mathsf{neg}\left(\color{blue}{\frac{1}{4}}\right)\right) \cdot \log t, \frac{1}{a + \frac{1}{2}}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
      10. metadata-evalN/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \color{blue}{\frac{-1}{4}}\right) \cdot \log t, \frac{1}{a + \frac{1}{2}}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
      11. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \frac{-1}{4}\right) \cdot \color{blue}{\log t}, \frac{1}{a + \frac{1}{2}}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
      12. /-lowering-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \frac{-1}{4}\right) \cdot \log t, \color{blue}{\frac{1}{a + \frac{1}{2}}}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
      13. +-lowering-+.f64N/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \frac{-1}{4}\right) \cdot \log t, \frac{1}{\color{blue}{a + \frac{1}{2}}}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
      14. --lowering--.f64N/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \frac{-1}{4}\right) \cdot \log t, \frac{1}{a + \frac{1}{2}}, \color{blue}{\left(\log \left(x + y\right) + \log z\right) - t}\right) \]
      15. sum-logN/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \frac{-1}{4}\right) \cdot \log t, \frac{1}{a + \frac{1}{2}}, \color{blue}{\log \left(\left(x + y\right) \cdot z\right)} - t\right) \]
      16. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \frac{-1}{4}\right) \cdot \log t, \frac{1}{a + \frac{1}{2}}, \color{blue}{\log \left(\left(x + y\right) \cdot z\right)} - t\right) \]
      17. *-lowering-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, \frac{-1}{4}\right) \cdot \log t, \frac{1}{a + \frac{1}{2}}, \log \color{blue}{\left(\left(x + y\right) \cdot z\right)} - t\right) \]
      18. +-lowering-+.f6492.2

        \[\leadsto \mathsf{fma}\left(\mathsf{fma}\left(a, a, -0.25\right) \cdot \log t, \frac{1}{a + 0.5}, \log \left(\color{blue}{\left(x + y\right)} \cdot z\right) - t\right) \]
    4. Applied egg-rr92.2%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{fma}\left(a, a, -0.25\right) \cdot \log t, \frac{1}{a + 0.5}, \log \left(\left(x + y\right) \cdot z\right) - t\right)} \]
    5. Taylor expanded in a around 0

      \[\leadsto \color{blue}{\left(\log \left(z \cdot \left(x + y\right)\right) + \frac{-1}{2} \cdot \log t\right) - t} \]
    6. Step-by-step derivation
      1. --lowering--.f64N/A

        \[\leadsto \color{blue}{\left(\log \left(z \cdot \left(x + y\right)\right) + \frac{-1}{2} \cdot \log t\right) - t} \]
      2. +-commutativeN/A

        \[\leadsto \color{blue}{\left(\frac{-1}{2} \cdot \log t + \log \left(z \cdot \left(x + y\right)\right)\right)} - t \]
      3. accelerator-lowering-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{-1}{2}, \log t, \log \left(z \cdot \left(x + y\right)\right)\right)} - t \]
      4. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{-1}{2}, \color{blue}{\log t}, \log \left(z \cdot \left(x + y\right)\right)\right) - t \]
      5. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{-1}{2}, \log t, \color{blue}{\log \left(z \cdot \left(x + y\right)\right)}\right) - t \]
      6. *-lowering-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{-1}{2}, \log t, \log \color{blue}{\left(z \cdot \left(x + y\right)\right)}\right) - t \]
      7. +-lowering-+.f6488.4

        \[\leadsto \mathsf{fma}\left(-0.5, \log t, \log \left(z \cdot \color{blue}{\left(x + y\right)}\right)\right) - t \]
    7. Simplified88.4%

      \[\leadsto \color{blue}{\mathsf{fma}\left(-0.5, \log t, \log \left(z \cdot \left(x + y\right)\right)\right) - t} \]

    if 870 < (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t)))

    1. Initial program 99.7%

      \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
    2. Add Preprocessing
    3. Taylor expanded in x around 0

      \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
    4. Step-by-step derivation
      1. associate--l+N/A

        \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
      2. +-lowering-+.f64N/A

        \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
      3. log-lowering-log.f64N/A

        \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
      4. +-commutativeN/A

        \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
      5. associate--l+N/A

        \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
      6. accelerator-lowering-fma.f64N/A

        \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
      7. log-lowering-log.f64N/A

        \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
      8. sub-negN/A

        \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
      9. metadata-evalN/A

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
      10. +-lowering-+.f64N/A

        \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
      11. --lowering--.f64N/A

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
      12. log-lowering-log.f6469.5

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
    5. Simplified69.5%

      \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
    6. Taylor expanded in t around inf

      \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{-1 \cdot t}\right) \]
    7. Step-by-step derivation
      1. mul-1-negN/A

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\mathsf{neg}\left(t\right)}\right) \]
      2. neg-lowering-neg.f6462.1

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
    8. Simplified62.1%

      \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
  3. Recombined 3 regimes into one program.
  4. Final simplification88.3%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq -20000:\\ \;\;\;\;\left(\log \left(x + y\right) - t\right) + a \cdot \log t\\ \mathbf{elif}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq 870:\\ \;\;\;\;\mathsf{fma}\left(-0.5, \log t, \log \left(z \cdot \left(x + y\right)\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 3: 79.7% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_1 := \log \left(x + y\right)\\ t_2 := \left(\left(\log z + t\_1\right) - t\right) + \log t \cdot \left(a - 0.5\right)\\ \mathbf{if}\;t\_2 \leq -20000:\\ \;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\ \mathbf{elif}\;t\_2 \leq 870:\\ \;\;\;\;\mathsf{fma}\left(\log t, -0.5, \log \left(z \cdot y\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \end{array} \]
(FPCore (x y z t a)
 :precision binary64
 (let* ((t_1 (log (+ x y)))
        (t_2 (+ (- (+ (log z) t_1) t) (* (log t) (- a 0.5)))))
   (if (<= t_2 -20000.0)
     (+ (- t_1 t) (* a (log t)))
     (if (<= t_2 870.0)
       (- (fma (log t) -0.5 (log (* z y))) t)
       (+ (log y) (fma (log t) (+ a -0.5) (- t)))))))
double code(double x, double y, double z, double t, double a) {
	double t_1 = log((x + y));
	double t_2 = ((log(z) + t_1) - t) + (log(t) * (a - 0.5));
	double tmp;
	if (t_2 <= -20000.0) {
		tmp = (t_1 - t) + (a * log(t));
	} else if (t_2 <= 870.0) {
		tmp = fma(log(t), -0.5, log((z * y))) - t;
	} else {
		tmp = log(y) + fma(log(t), (a + -0.5), -t);
	}
	return tmp;
}
function code(x, y, z, t, a)
	t_1 = log(Float64(x + y))
	t_2 = Float64(Float64(Float64(log(z) + t_1) - t) + Float64(log(t) * Float64(a - 0.5)))
	tmp = 0.0
	if (t_2 <= -20000.0)
		tmp = Float64(Float64(t_1 - t) + Float64(a * log(t)));
	elseif (t_2 <= 870.0)
		tmp = Float64(fma(log(t), -0.5, log(Float64(z * y))) - t);
	else
		tmp = Float64(log(y) + fma(log(t), Float64(a + -0.5), Float64(-t)));
	end
	return tmp
end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[Log[z], $MachinePrecision] + t$95$1), $MachinePrecision] - t), $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a - 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, -20000.0], N[(N[(t$95$1 - t), $MachinePrecision] + N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 870.0], N[(N[(N[Log[t], $MachinePrecision] * -0.5 + N[Log[N[(z * y), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + (-t)), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_1 := \log \left(x + y\right)\\
t_2 := \left(\left(\log z + t\_1\right) - t\right) + \log t \cdot \left(a - 0.5\right)\\
\mathbf{if}\;t\_2 \leq -20000:\\
\;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\

\mathbf{elif}\;t\_2 \leq 870:\\
\;\;\;\;\mathsf{fma}\left(\log t, -0.5, \log \left(z \cdot y\right)\right) - t\\

\mathbf{else}:\\
\;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t))) < -2e4

    1. Initial program 99.8%

      \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
      2. +-commutativeN/A

        \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \left(\color{blue}{\left(\log z + \log \left(x + y\right)\right)} - t\right) \]
      3. associate--l+N/A

        \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \color{blue}{\left(\log z + \left(\log \left(x + y\right) - t\right)\right)} \]
      4. associate-+r+N/A

        \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
      5. +-lowering-+.f64N/A

        \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
      6. accelerator-lowering-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \log z\right)} + \left(\log \left(x + y\right) - t\right) \]
      7. sub-negN/A

        \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
      8. +-lowering-+.f64N/A

        \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
      9. metadata-evalN/A

        \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
      10. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
      11. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log z}\right) + \left(\log \left(x + y\right) - t\right) \]
      12. --lowering--.f64N/A

        \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \color{blue}{\left(\log \left(x + y\right) - t\right)} \]
      13. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \left(\color{blue}{\log \left(x + y\right)} - t\right) \]
      14. +-lowering-+.f6499.8

        \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \color{blue}{\left(x + y\right)} - t\right) \]
    4. Applied egg-rr99.8%

      \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
    5. Taylor expanded in a around inf

      \[\leadsto \color{blue}{a \cdot \log t} + \left(\log \left(x + y\right) - t\right) \]
    6. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
      2. *-lowering-*.f64N/A

        \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
      3. log-lowering-log.f6498.6

        \[\leadsto \color{blue}{\log t} \cdot a + \left(\log \left(x + y\right) - t\right) \]
    7. Simplified98.6%

      \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]

    if -2e4 < (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t))) < 870

    1. Initial program 98.6%

      \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. flip-+N/A

        \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      2. /-lowering-/.f64N/A

        \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      3. difference-of-squaresN/A

        \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      4. *-lowering-*.f64N/A

        \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      5. sum-logN/A

        \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      6. log-lowering-log.f64N/A

        \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      7. *-lowering-*.f64N/A

        \[\leadsto \left(\frac{\log \color{blue}{\left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      8. +-lowering-+.f64N/A

        \[\leadsto \left(\frac{\log \left(\color{blue}{\left(x + y\right)} \cdot z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      9. diff-logN/A

        \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      10. log-lowering-log.f64N/A

        \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      11. /-lowering-/.f64N/A

        \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \color{blue}{\left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      12. +-lowering-+.f64N/A

        \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{\color{blue}{x + y}}{z}\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      13. diff-logN/A

        \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      14. log-lowering-log.f64N/A

        \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      15. /-lowering-/.f64N/A

        \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \color{blue}{\left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
      16. +-lowering-+.f6460.2

        \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{\color{blue}{x + y}}{z}\right)} - t\right) + \left(a - 0.5\right) \cdot \log t \]
    4. Applied egg-rr60.2%

      \[\leadsto \left(\color{blue}{\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - 0.5\right) \cdot \log t \]
    5. Taylor expanded in x around 0

      \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
    6. Step-by-step derivation
      1. --lowering--.f64N/A

        \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
      2. +-commutativeN/A

        \[\leadsto \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log \left(y \cdot z\right)\right)} - t \]
      3. accelerator-lowering-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log \left(y \cdot z\right)\right)} - t \]
      4. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log \left(y \cdot z\right)\right) - t \]
      5. sub-negN/A

        \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log \left(y \cdot z\right)\right) - t \]
      6. metadata-evalN/A

        \[\leadsto \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
      7. +-lowering-+.f64N/A

        \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
      8. log-lowering-log.f64N/A

        \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log \left(y \cdot z\right)}\right) - t \]
      9. *-commutativeN/A

        \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
      10. *-lowering-*.f6445.2

        \[\leadsto \mathsf{fma}\left(\log t, a + -0.5, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
    7. Simplified45.2%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a + -0.5, \log \left(z \cdot y\right)\right) - t} \]
    8. Taylor expanded in a around 0

      \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{\frac{-1}{2}}, \log \left(z \cdot y\right)\right) - t \]
    9. Step-by-step derivation
      1. Simplified44.2%

        \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{-0.5}, \log \left(z \cdot y\right)\right) - t \]

      if 870 < (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t)))

      1. Initial program 99.7%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
      4. Step-by-step derivation
        1. associate--l+N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        3. log-lowering-log.f64N/A

          \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
        4. +-commutativeN/A

          \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
        5. associate--l+N/A

          \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
        7. log-lowering-log.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
        8. sub-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
        10. +-lowering-+.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
        11. --lowering--.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
        12. log-lowering-log.f6469.5

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
      5. Simplified69.5%

        \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
      6. Taylor expanded in t around inf

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{-1 \cdot t}\right) \]
      7. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\mathsf{neg}\left(t\right)}\right) \]
        2. neg-lowering-neg.f6462.1

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
      8. Simplified62.1%

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
    10. Recombined 3 regimes into one program.
    11. Final simplification78.6%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq -20000:\\ \;\;\;\;\left(\log \left(x + y\right) - t\right) + a \cdot \log t\\ \mathbf{elif}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq 870:\\ \;\;\;\;\mathsf{fma}\left(\log t, -0.5, \log \left(z \cdot y\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \]
    12. Add Preprocessing

    Alternative 4: 76.6% accurate, 0.4× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_1 := \left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right)\\ t_2 := a \cdot \log t - t\\ \mathbf{if}\;t\_1 \leq -10000:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;t\_1 \leq 2000:\\ \;\;\;\;\log y - t\\ \mathbf{else}:\\ \;\;\;\;t\_2\\ \end{array} \end{array} \]
    (FPCore (x y z t a)
     :precision binary64
     (let* ((t_1 (+ (- (+ (log z) (log (+ x y))) t) (* (log t) (- a 0.5))))
            (t_2 (- (* a (log t)) t)))
       (if (<= t_1 -10000.0) t_2 (if (<= t_1 2000.0) (- (log y) t) t_2))))
    double code(double x, double y, double z, double t, double a) {
    	double t_1 = ((log(z) + log((x + y))) - t) + (log(t) * (a - 0.5));
    	double t_2 = (a * log(t)) - t;
    	double tmp;
    	if (t_1 <= -10000.0) {
    		tmp = t_2;
    	} else if (t_1 <= 2000.0) {
    		tmp = log(y) - t;
    	} else {
    		tmp = t_2;
    	}
    	return tmp;
    }
    
    real(8) function code(x, y, z, t, a)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        real(8), intent (in) :: z
        real(8), intent (in) :: t
        real(8), intent (in) :: a
        real(8) :: t_1
        real(8) :: t_2
        real(8) :: tmp
        t_1 = ((log(z) + log((x + y))) - t) + (log(t) * (a - 0.5d0))
        t_2 = (a * log(t)) - t
        if (t_1 <= (-10000.0d0)) then
            tmp = t_2
        else if (t_1 <= 2000.0d0) then
            tmp = log(y) - t
        else
            tmp = t_2
        end if
        code = tmp
    end function
    
    public static double code(double x, double y, double z, double t, double a) {
    	double t_1 = ((Math.log(z) + Math.log((x + y))) - t) + (Math.log(t) * (a - 0.5));
    	double t_2 = (a * Math.log(t)) - t;
    	double tmp;
    	if (t_1 <= -10000.0) {
    		tmp = t_2;
    	} else if (t_1 <= 2000.0) {
    		tmp = Math.log(y) - t;
    	} else {
    		tmp = t_2;
    	}
    	return tmp;
    }
    
    def code(x, y, z, t, a):
    	t_1 = ((math.log(z) + math.log((x + y))) - t) + (math.log(t) * (a - 0.5))
    	t_2 = (a * math.log(t)) - t
    	tmp = 0
    	if t_1 <= -10000.0:
    		tmp = t_2
    	elif t_1 <= 2000.0:
    		tmp = math.log(y) - t
    	else:
    		tmp = t_2
    	return tmp
    
    function code(x, y, z, t, a)
    	t_1 = Float64(Float64(Float64(log(z) + log(Float64(x + y))) - t) + Float64(log(t) * Float64(a - 0.5)))
    	t_2 = Float64(Float64(a * log(t)) - t)
    	tmp = 0.0
    	if (t_1 <= -10000.0)
    		tmp = t_2;
    	elseif (t_1 <= 2000.0)
    		tmp = Float64(log(y) - t);
    	else
    		tmp = t_2;
    	end
    	return tmp
    end
    
    function tmp_2 = code(x, y, z, t, a)
    	t_1 = ((log(z) + log((x + y))) - t) + (log(t) * (a - 0.5));
    	t_2 = (a * log(t)) - t;
    	tmp = 0.0;
    	if (t_1 <= -10000.0)
    		tmp = t_2;
    	elseif (t_1 <= 2000.0)
    		tmp = log(y) - t;
    	else
    		tmp = t_2;
    	end
    	tmp_2 = tmp;
    end
    
    code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(N[(N[Log[z], $MachinePrecision] + N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a - 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision]}, If[LessEqual[t$95$1, -10000.0], t$95$2, If[LessEqual[t$95$1, 2000.0], N[(N[Log[y], $MachinePrecision] - t), $MachinePrecision], t$95$2]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_1 := \left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right)\\
    t_2 := a \cdot \log t - t\\
    \mathbf{if}\;t\_1 \leq -10000:\\
    \;\;\;\;t\_2\\
    
    \mathbf{elif}\;t\_1 \leq 2000:\\
    \;\;\;\;\log y - t\\
    
    \mathbf{else}:\\
    \;\;\;\;t\_2\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t))) < -1e4 or 2e3 < (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t)))

      1. Initial program 99.8%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. flip-+N/A

          \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        2. /-lowering-/.f64N/A

          \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        3. difference-of-squaresN/A

          \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        4. *-lowering-*.f64N/A

          \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        5. sum-logN/A

          \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        6. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        7. *-lowering-*.f64N/A

          \[\leadsto \left(\frac{\log \color{blue}{\left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        8. +-lowering-+.f64N/A

          \[\leadsto \left(\frac{\log \left(\color{blue}{\left(x + y\right)} \cdot z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        9. diff-logN/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        10. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        11. /-lowering-/.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \color{blue}{\left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        12. +-lowering-+.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{\color{blue}{x + y}}{z}\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        13. diff-logN/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        14. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        15. /-lowering-/.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \color{blue}{\left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        16. +-lowering-+.f6450.2

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{\color{blue}{x + y}}{z}\right)} - t\right) + \left(a - 0.5\right) \cdot \log t \]
      4. Applied egg-rr50.2%

        \[\leadsto \left(\color{blue}{\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - 0.5\right) \cdot \log t \]
      5. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
      6. Step-by-step derivation
        1. --lowering--.f64N/A

          \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
        2. +-commutativeN/A

          \[\leadsto \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log \left(y \cdot z\right)\right)} - t \]
        3. accelerator-lowering-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log \left(y \cdot z\right)\right)} - t \]
        4. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log \left(y \cdot z\right)\right) - t \]
        5. sub-negN/A

          \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log \left(y \cdot z\right)\right) - t \]
        6. metadata-evalN/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
        7. +-lowering-+.f64N/A

          \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
        8. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log \left(y \cdot z\right)}\right) - t \]
        9. *-commutativeN/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
        10. *-lowering-*.f6463.3

          \[\leadsto \mathsf{fma}\left(\log t, a + -0.5, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
      7. Simplified63.3%

        \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a + -0.5, \log \left(z \cdot y\right)\right) - t} \]
      8. Taylor expanded in a around inf

        \[\leadsto \color{blue}{a \cdot \log t} - t \]
      9. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \color{blue}{\log t \cdot a} - t \]
        2. *-lowering-*.f64N/A

          \[\leadsto \color{blue}{\log t \cdot a} - t \]
        3. log-lowering-log.f6498.5

          \[\leadsto \color{blue}{\log t} \cdot a - t \]
      10. Simplified98.5%

        \[\leadsto \color{blue}{\log t \cdot a} - t \]

      if -1e4 < (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t))) < 2e3

      1. Initial program 98.8%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
      4. Step-by-step derivation
        1. associate--l+N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        3. log-lowering-log.f64N/A

          \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
        4. +-commutativeN/A

          \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
        5. associate--l+N/A

          \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
        7. log-lowering-log.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
        8. sub-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
        10. +-lowering-+.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
        11. --lowering--.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
        12. log-lowering-log.f6450.4

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
      5. Simplified50.4%

        \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
      6. Taylor expanded in t around inf

        \[\leadsto \log y + \color{blue}{-1 \cdot t} \]
      7. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \log y + \color{blue}{\left(\mathsf{neg}\left(t\right)\right)} \]
        2. neg-lowering-neg.f649.9

          \[\leadsto \log y + \color{blue}{\left(-t\right)} \]
      8. Simplified9.9%

        \[\leadsto \log y + \color{blue}{\left(-t\right)} \]
    3. Recombined 2 regimes into one program.
    4. Final simplification75.3%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq -10000:\\ \;\;\;\;a \cdot \log t - t\\ \mathbf{elif}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq 2000:\\ \;\;\;\;\log y - t\\ \mathbf{else}:\\ \;\;\;\;a \cdot \log t - t\\ \end{array} \]
    5. Add Preprocessing

    Alternative 5: 90.1% accurate, 0.5× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_1 := \log \left(x + y\right)\\ t_2 := \log z + t\_1\\ \mathbf{if}\;t\_2 \leq -720:\\ \;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\ \mathbf{elif}\;t\_2 \leq 695:\\ \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, \log \left(z \cdot \left(x + y\right)\right) - t\right)\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \end{array} \]
    (FPCore (x y z t a)
     :precision binary64
     (let* ((t_1 (log (+ x y))) (t_2 (+ (log z) t_1)))
       (if (<= t_2 -720.0)
         (+ (- t_1 t) (* a (log t)))
         (if (<= t_2 695.0)
           (fma (+ a -0.5) (log t) (- (log (* z (+ x y))) t))
           (+ (log y) (fma (log t) (+ a -0.5) (- t)))))))
    double code(double x, double y, double z, double t, double a) {
    	double t_1 = log((x + y));
    	double t_2 = log(z) + t_1;
    	double tmp;
    	if (t_2 <= -720.0) {
    		tmp = (t_1 - t) + (a * log(t));
    	} else if (t_2 <= 695.0) {
    		tmp = fma((a + -0.5), log(t), (log((z * (x + y))) - t));
    	} else {
    		tmp = log(y) + fma(log(t), (a + -0.5), -t);
    	}
    	return tmp;
    }
    
    function code(x, y, z, t, a)
    	t_1 = log(Float64(x + y))
    	t_2 = Float64(log(z) + t_1)
    	tmp = 0.0
    	if (t_2 <= -720.0)
    		tmp = Float64(Float64(t_1 - t) + Float64(a * log(t)));
    	elseif (t_2 <= 695.0)
    		tmp = fma(Float64(a + -0.5), log(t), Float64(log(Float64(z * Float64(x + y))) - t));
    	else
    		tmp = Float64(log(y) + fma(log(t), Float64(a + -0.5), Float64(-t)));
    	end
    	return tmp
    end
    
    code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[Log[z], $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[t$95$2, -720.0], N[(N[(t$95$1 - t), $MachinePrecision] + N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 695.0], N[(N[(a + -0.5), $MachinePrecision] * N[Log[t], $MachinePrecision] + N[(N[Log[N[(z * N[(x + y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - t), $MachinePrecision]), $MachinePrecision], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + (-t)), $MachinePrecision]), $MachinePrecision]]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_1 := \log \left(x + y\right)\\
    t_2 := \log z + t\_1\\
    \mathbf{if}\;t\_2 \leq -720:\\
    \;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\
    
    \mathbf{elif}\;t\_2 \leq 695:\\
    \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, \log \left(z \cdot \left(x + y\right)\right) - t\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) < -720

      1. Initial program 99.7%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. +-commutativeN/A

          \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
        2. +-commutativeN/A

          \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \left(\color{blue}{\left(\log z + \log \left(x + y\right)\right)} - t\right) \]
        3. associate--l+N/A

          \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \color{blue}{\left(\log z + \left(\log \left(x + y\right) - t\right)\right)} \]
        4. associate-+r+N/A

          \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
        5. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \log z\right)} + \left(\log \left(x + y\right) - t\right) \]
        7. sub-negN/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        8. +-lowering-+.f64N/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        10. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        11. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log z}\right) + \left(\log \left(x + y\right) - t\right) \]
        12. --lowering--.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \color{blue}{\left(\log \left(x + y\right) - t\right)} \]
        13. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \left(\color{blue}{\log \left(x + y\right)} - t\right) \]
        14. +-lowering-+.f6499.7

          \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \color{blue}{\left(x + y\right)} - t\right) \]
      4. Applied egg-rr99.7%

        \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
      5. Taylor expanded in a around inf

        \[\leadsto \color{blue}{a \cdot \log t} + \left(\log \left(x + y\right) - t\right) \]
      6. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
        2. *-lowering-*.f64N/A

          \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
        3. log-lowering-log.f6491.8

          \[\leadsto \color{blue}{\log t} \cdot a + \left(\log \left(x + y\right) - t\right) \]
      7. Simplified91.8%

        \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]

      if -720 < (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) < 695

      1. Initial program 99.4%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. +-commutativeN/A

          \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
        2. accelerator-lowering-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \left(\log \left(x + y\right) + \log z\right) - t\right)} \]
        3. sub-negN/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
        4. +-lowering-+.f64N/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
        5. metadata-evalN/A

          \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
        6. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \left(\log \left(x + y\right) + \log z\right) - t\right) \]
        7. --lowering--.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\left(\log \left(x + y\right) + \log z\right) - t}\right) \]
        8. sum-logN/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log \left(\left(x + y\right) \cdot z\right)} - t\right) \]
        9. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log \left(\left(x + y\right) \cdot z\right)} - t\right) \]
        10. *-lowering-*.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log \color{blue}{\left(\left(x + y\right) \cdot z\right)} - t\right) \]
        11. +-lowering-+.f6499.6

          \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log \left(\color{blue}{\left(x + y\right)} \cdot z\right) - t\right) \]
      4. Applied egg-rr99.6%

        \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log \left(\left(x + y\right) \cdot z\right) - t\right)} \]

      if 695 < (+.f64 (log.f64 (+.f64 x y)) (log.f64 z))

      1. Initial program 99.8%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
      4. Step-by-step derivation
        1. associate--l+N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        3. log-lowering-log.f64N/A

          \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
        4. +-commutativeN/A

          \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
        5. associate--l+N/A

          \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
        7. log-lowering-log.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
        8. sub-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
        10. +-lowering-+.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
        11. --lowering--.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
        12. log-lowering-log.f6474.6

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
      5. Simplified74.6%

        \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
      6. Taylor expanded in t around inf

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{-1 \cdot t}\right) \]
      7. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\mathsf{neg}\left(t\right)}\right) \]
        2. neg-lowering-neg.f6461.7

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
      8. Simplified61.7%

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
    3. Recombined 3 regimes into one program.
    4. Final simplification91.3%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\log z + \log \left(x + y\right) \leq -720:\\ \;\;\;\;\left(\log \left(x + y\right) - t\right) + a \cdot \log t\\ \mathbf{elif}\;\log z + \log \left(x + y\right) \leq 695:\\ \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, \log \left(z \cdot \left(x + y\right)\right) - t\right)\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \]
    5. Add Preprocessing

    Alternative 6: 90.1% accurate, 0.5× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_1 := \log \left(x + y\right)\\ t_2 := \log z + t\_1\\ \mathbf{if}\;t\_2 \leq -720:\\ \;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\ \mathbf{elif}\;t\_2 \leq 695:\\ \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, \log \left(z \cdot \left(x + y\right)\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \end{array} \]
    (FPCore (x y z t a)
     :precision binary64
     (let* ((t_1 (log (+ x y))) (t_2 (+ (log z) t_1)))
       (if (<= t_2 -720.0)
         (+ (- t_1 t) (* a (log t)))
         (if (<= t_2 695.0)
           (- (fma (+ a -0.5) (log t) (log (* z (+ x y)))) t)
           (+ (log y) (fma (log t) (+ a -0.5) (- t)))))))
    double code(double x, double y, double z, double t, double a) {
    	double t_1 = log((x + y));
    	double t_2 = log(z) + t_1;
    	double tmp;
    	if (t_2 <= -720.0) {
    		tmp = (t_1 - t) + (a * log(t));
    	} else if (t_2 <= 695.0) {
    		tmp = fma((a + -0.5), log(t), log((z * (x + y)))) - t;
    	} else {
    		tmp = log(y) + fma(log(t), (a + -0.5), -t);
    	}
    	return tmp;
    }
    
    function code(x, y, z, t, a)
    	t_1 = log(Float64(x + y))
    	t_2 = Float64(log(z) + t_1)
    	tmp = 0.0
    	if (t_2 <= -720.0)
    		tmp = Float64(Float64(t_1 - t) + Float64(a * log(t)));
    	elseif (t_2 <= 695.0)
    		tmp = Float64(fma(Float64(a + -0.5), log(t), log(Float64(z * Float64(x + y)))) - t);
    	else
    		tmp = Float64(log(y) + fma(log(t), Float64(a + -0.5), Float64(-t)));
    	end
    	return tmp
    end
    
    code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[Log[z], $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[t$95$2, -720.0], N[(N[(t$95$1 - t), $MachinePrecision] + N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 695.0], N[(N[(N[(a + -0.5), $MachinePrecision] * N[Log[t], $MachinePrecision] + N[Log[N[(z * N[(x + y), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + (-t)), $MachinePrecision]), $MachinePrecision]]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_1 := \log \left(x + y\right)\\
    t_2 := \log z + t\_1\\
    \mathbf{if}\;t\_2 \leq -720:\\
    \;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\
    
    \mathbf{elif}\;t\_2 \leq 695:\\
    \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, \log \left(z \cdot \left(x + y\right)\right)\right) - t\\
    
    \mathbf{else}:\\
    \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) < -720

      1. Initial program 99.7%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. +-commutativeN/A

          \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
        2. +-commutativeN/A

          \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \left(\color{blue}{\left(\log z + \log \left(x + y\right)\right)} - t\right) \]
        3. associate--l+N/A

          \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \color{blue}{\left(\log z + \left(\log \left(x + y\right) - t\right)\right)} \]
        4. associate-+r+N/A

          \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
        5. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \log z\right)} + \left(\log \left(x + y\right) - t\right) \]
        7. sub-negN/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        8. +-lowering-+.f64N/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        10. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        11. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log z}\right) + \left(\log \left(x + y\right) - t\right) \]
        12. --lowering--.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \color{blue}{\left(\log \left(x + y\right) - t\right)} \]
        13. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \left(\color{blue}{\log \left(x + y\right)} - t\right) \]
        14. +-lowering-+.f6499.7

          \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \color{blue}{\left(x + y\right)} - t\right) \]
      4. Applied egg-rr99.7%

        \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
      5. Taylor expanded in a around inf

        \[\leadsto \color{blue}{a \cdot \log t} + \left(\log \left(x + y\right) - t\right) \]
      6. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
        2. *-lowering-*.f64N/A

          \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
        3. log-lowering-log.f6491.8

          \[\leadsto \color{blue}{\log t} \cdot a + \left(\log \left(x + y\right) - t\right) \]
      7. Simplified91.8%

        \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]

      if -720 < (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) < 695

      1. Initial program 99.4%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. +-commutativeN/A

          \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
        2. associate-+r-N/A

          \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \left(\log \left(x + y\right) + \log z\right)\right) - t} \]
        3. --lowering--.f64N/A

          \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \left(\log \left(x + y\right) + \log z\right)\right) - t} \]
        4. accelerator-lowering-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \log \left(x + y\right) + \log z\right)} - t \]
        5. sub-negN/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log \left(x + y\right) + \log z\right) - t \]
        6. +-lowering-+.f64N/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log \left(x + y\right) + \log z\right) - t \]
        7. metadata-evalN/A

          \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \log \left(x + y\right) + \log z\right) - t \]
        8. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \log \left(x + y\right) + \log z\right) - t \]
        9. sum-logN/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log \left(\left(x + y\right) \cdot z\right)}\right) - t \]
        10. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log \left(\left(x + y\right) \cdot z\right)}\right) - t \]
        11. *-lowering-*.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log \color{blue}{\left(\left(x + y\right) \cdot z\right)}\right) - t \]
        12. +-lowering-+.f6499.6

          \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log \left(\color{blue}{\left(x + y\right)} \cdot z\right)\right) - t \]
      4. Applied egg-rr99.6%

        \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log \left(\left(x + y\right) \cdot z\right)\right) - t} \]

      if 695 < (+.f64 (log.f64 (+.f64 x y)) (log.f64 z))

      1. Initial program 99.8%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
      4. Step-by-step derivation
        1. associate--l+N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        3. log-lowering-log.f64N/A

          \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
        4. +-commutativeN/A

          \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
        5. associate--l+N/A

          \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
        7. log-lowering-log.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
        8. sub-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
        10. +-lowering-+.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
        11. --lowering--.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
        12. log-lowering-log.f6474.6

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
      5. Simplified74.6%

        \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
      6. Taylor expanded in t around inf

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{-1 \cdot t}\right) \]
      7. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\mathsf{neg}\left(t\right)}\right) \]
        2. neg-lowering-neg.f6461.7

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
      8. Simplified61.7%

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
    3. Recombined 3 regimes into one program.
    4. Final simplification91.3%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\log z + \log \left(x + y\right) \leq -720:\\ \;\;\;\;\left(\log \left(x + y\right) - t\right) + a \cdot \log t\\ \mathbf{elif}\;\log z + \log \left(x + y\right) \leq 695:\\ \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, \log \left(z \cdot \left(x + y\right)\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \]
    5. Add Preprocessing

    Alternative 7: 65.2% accurate, 0.5× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_1 := \log \left(x + y\right)\\ t_2 := \log z + t\_1\\ \mathbf{if}\;t\_2 \leq -720:\\ \;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\ \mathbf{elif}\;t\_2 \leq 695:\\ \;\;\;\;\mathsf{fma}\left(\log t, a + -0.5, \log \left(z \cdot y\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \end{array} \]
    (FPCore (x y z t a)
     :precision binary64
     (let* ((t_1 (log (+ x y))) (t_2 (+ (log z) t_1)))
       (if (<= t_2 -720.0)
         (+ (- t_1 t) (* a (log t)))
         (if (<= t_2 695.0)
           (- (fma (log t) (+ a -0.5) (log (* z y))) t)
           (+ (log y) (fma (log t) (+ a -0.5) (- t)))))))
    double code(double x, double y, double z, double t, double a) {
    	double t_1 = log((x + y));
    	double t_2 = log(z) + t_1;
    	double tmp;
    	if (t_2 <= -720.0) {
    		tmp = (t_1 - t) + (a * log(t));
    	} else if (t_2 <= 695.0) {
    		tmp = fma(log(t), (a + -0.5), log((z * y))) - t;
    	} else {
    		tmp = log(y) + fma(log(t), (a + -0.5), -t);
    	}
    	return tmp;
    }
    
    function code(x, y, z, t, a)
    	t_1 = log(Float64(x + y))
    	t_2 = Float64(log(z) + t_1)
    	tmp = 0.0
    	if (t_2 <= -720.0)
    		tmp = Float64(Float64(t_1 - t) + Float64(a * log(t)));
    	elseif (t_2 <= 695.0)
    		tmp = Float64(fma(log(t), Float64(a + -0.5), log(Float64(z * y))) - t);
    	else
    		tmp = Float64(log(y) + fma(log(t), Float64(a + -0.5), Float64(-t)));
    	end
    	return tmp
    end
    
    code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[Log[z], $MachinePrecision] + t$95$1), $MachinePrecision]}, If[LessEqual[t$95$2, -720.0], N[(N[(t$95$1 - t), $MachinePrecision] + N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 695.0], N[(N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + N[Log[N[(z * y), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + (-t)), $MachinePrecision]), $MachinePrecision]]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_1 := \log \left(x + y\right)\\
    t_2 := \log z + t\_1\\
    \mathbf{if}\;t\_2 \leq -720:\\
    \;\;\;\;\left(t\_1 - t\right) + a \cdot \log t\\
    
    \mathbf{elif}\;t\_2 \leq 695:\\
    \;\;\;\;\mathsf{fma}\left(\log t, a + -0.5, \log \left(z \cdot y\right)\right) - t\\
    
    \mathbf{else}:\\
    \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) < -720

      1. Initial program 99.7%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. +-commutativeN/A

          \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
        2. +-commutativeN/A

          \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \left(\color{blue}{\left(\log z + \log \left(x + y\right)\right)} - t\right) \]
        3. associate--l+N/A

          \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \color{blue}{\left(\log z + \left(\log \left(x + y\right) - t\right)\right)} \]
        4. associate-+r+N/A

          \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
        5. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \log z\right)} + \left(\log \left(x + y\right) - t\right) \]
        7. sub-negN/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        8. +-lowering-+.f64N/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        10. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
        11. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log z}\right) + \left(\log \left(x + y\right) - t\right) \]
        12. --lowering--.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \color{blue}{\left(\log \left(x + y\right) - t\right)} \]
        13. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \left(\color{blue}{\log \left(x + y\right)} - t\right) \]
        14. +-lowering-+.f6499.7

          \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \color{blue}{\left(x + y\right)} - t\right) \]
      4. Applied egg-rr99.7%

        \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
      5. Taylor expanded in a around inf

        \[\leadsto \color{blue}{a \cdot \log t} + \left(\log \left(x + y\right) - t\right) \]
      6. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
        2. *-lowering-*.f64N/A

          \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
        3. log-lowering-log.f6491.8

          \[\leadsto \color{blue}{\log t} \cdot a + \left(\log \left(x + y\right) - t\right) \]
      7. Simplified91.8%

        \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]

      if -720 < (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) < 695

      1. Initial program 99.4%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. flip-+N/A

          \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        2. /-lowering-/.f64N/A

          \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        3. difference-of-squaresN/A

          \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        4. *-lowering-*.f64N/A

          \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        5. sum-logN/A

          \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        6. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        7. *-lowering-*.f64N/A

          \[\leadsto \left(\frac{\log \color{blue}{\left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        8. +-lowering-+.f64N/A

          \[\leadsto \left(\frac{\log \left(\color{blue}{\left(x + y\right)} \cdot z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        9. diff-logN/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        10. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        11. /-lowering-/.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \color{blue}{\left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        12. +-lowering-+.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{\color{blue}{x + y}}{z}\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        13. diff-logN/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        14. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        15. /-lowering-/.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \color{blue}{\left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        16. +-lowering-+.f6464.8

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{\color{blue}{x + y}}{z}\right)} - t\right) + \left(a - 0.5\right) \cdot \log t \]
      4. Applied egg-rr64.8%

        \[\leadsto \left(\color{blue}{\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - 0.5\right) \cdot \log t \]
      5. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
      6. Step-by-step derivation
        1. --lowering--.f64N/A

          \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
        2. +-commutativeN/A

          \[\leadsto \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log \left(y \cdot z\right)\right)} - t \]
        3. accelerator-lowering-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log \left(y \cdot z\right)\right)} - t \]
        4. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log \left(y \cdot z\right)\right) - t \]
        5. sub-negN/A

          \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log \left(y \cdot z\right)\right) - t \]
        6. metadata-evalN/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
        7. +-lowering-+.f64N/A

          \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
        8. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log \left(y \cdot z\right)}\right) - t \]
        9. *-commutativeN/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
        10. *-lowering-*.f6467.9

          \[\leadsto \mathsf{fma}\left(\log t, a + -0.5, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
      7. Simplified67.9%

        \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a + -0.5, \log \left(z \cdot y\right)\right) - t} \]

      if 695 < (+.f64 (log.f64 (+.f64 x y)) (log.f64 z))

      1. Initial program 99.8%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
      4. Step-by-step derivation
        1. associate--l+N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        3. log-lowering-log.f64N/A

          \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
        4. +-commutativeN/A

          \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
        5. associate--l+N/A

          \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
        7. log-lowering-log.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
        8. sub-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
        10. +-lowering-+.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
        11. --lowering--.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
        12. log-lowering-log.f6474.6

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
      5. Simplified74.6%

        \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
      6. Taylor expanded in t around inf

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{-1 \cdot t}\right) \]
      7. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\mathsf{neg}\left(t\right)}\right) \]
        2. neg-lowering-neg.f6461.7

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
      8. Simplified61.7%

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
    3. Recombined 3 regimes into one program.
    4. Final simplification67.5%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\log z + \log \left(x + y\right) \leq -720:\\ \;\;\;\;\left(\log \left(x + y\right) - t\right) + a \cdot \log t\\ \mathbf{elif}\;\log z + \log \left(x + y\right) \leq 695:\\ \;\;\;\;\mathsf{fma}\left(\log t, a + -0.5, \log \left(z \cdot y\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \end{array} \]
    5. Add Preprocessing

    Alternative 8: 77.5% accurate, 0.7× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq -1:\\ \;\;\;\;a \cdot \log t - t\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, t\right)\\ \end{array} \end{array} \]
    (FPCore (x y z t a)
     :precision binary64
     (if (<= (+ (- (+ (log z) (log (+ x y))) t) (* (log t) (- a 0.5))) -1.0)
       (- (* a (log t)) t)
       (fma (+ a -0.5) (log t) t)))
    double code(double x, double y, double z, double t, double a) {
    	double tmp;
    	if ((((log(z) + log((x + y))) - t) + (log(t) * (a - 0.5))) <= -1.0) {
    		tmp = (a * log(t)) - t;
    	} else {
    		tmp = fma((a + -0.5), log(t), t);
    	}
    	return tmp;
    }
    
    function code(x, y, z, t, a)
    	tmp = 0.0
    	if (Float64(Float64(Float64(log(z) + log(Float64(x + y))) - t) + Float64(log(t) * Float64(a - 0.5))) <= -1.0)
    		tmp = Float64(Float64(a * log(t)) - t);
    	else
    		tmp = fma(Float64(a + -0.5), log(t), t);
    	end
    	return tmp
    end
    
    code[x_, y_, z_, t_, a_] := If[LessEqual[N[(N[(N[(N[Log[z], $MachinePrecision] + N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a - 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], -1.0], N[(N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision], N[(N[(a + -0.5), $MachinePrecision] * N[Log[t], $MachinePrecision] + t), $MachinePrecision]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    \mathbf{if}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq -1:\\
    \;\;\;\;a \cdot \log t - t\\
    
    \mathbf{else}:\\
    \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, t\right)\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t))) < -1

      1. Initial program 99.7%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. flip-+N/A

          \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        2. /-lowering-/.f64N/A

          \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        3. difference-of-squaresN/A

          \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        4. *-lowering-*.f64N/A

          \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        5. sum-logN/A

          \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        6. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        7. *-lowering-*.f64N/A

          \[\leadsto \left(\frac{\log \color{blue}{\left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        8. +-lowering-+.f64N/A

          \[\leadsto \left(\frac{\log \left(\color{blue}{\left(x + y\right)} \cdot z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        9. diff-logN/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        10. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        11. /-lowering-/.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \color{blue}{\left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        12. +-lowering-+.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{\color{blue}{x + y}}{z}\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        13. diff-logN/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        14. log-lowering-log.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        15. /-lowering-/.f64N/A

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \color{blue}{\left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
        16. +-lowering-+.f6450.5

          \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{\color{blue}{x + y}}{z}\right)} - t\right) + \left(a - 0.5\right) \cdot \log t \]
      4. Applied egg-rr50.5%

        \[\leadsto \left(\color{blue}{\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - 0.5\right) \cdot \log t \]
      5. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
      6. Step-by-step derivation
        1. --lowering--.f64N/A

          \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
        2. +-commutativeN/A

          \[\leadsto \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log \left(y \cdot z\right)\right)} - t \]
        3. accelerator-lowering-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log \left(y \cdot z\right)\right)} - t \]
        4. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log \left(y \cdot z\right)\right) - t \]
        5. sub-negN/A

          \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log \left(y \cdot z\right)\right) - t \]
        6. metadata-evalN/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
        7. +-lowering-+.f64N/A

          \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
        8. log-lowering-log.f64N/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log \left(y \cdot z\right)}\right) - t \]
        9. *-commutativeN/A

          \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
        10. *-lowering-*.f6463.9

          \[\leadsto \mathsf{fma}\left(\log t, a + -0.5, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
      7. Simplified63.9%

        \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a + -0.5, \log \left(z \cdot y\right)\right) - t} \]
      8. Taylor expanded in a around inf

        \[\leadsto \color{blue}{a \cdot \log t} - t \]
      9. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \color{blue}{\log t \cdot a} - t \]
        2. *-lowering-*.f64N/A

          \[\leadsto \color{blue}{\log t \cdot a} - t \]
        3. log-lowering-log.f6489.6

          \[\leadsto \color{blue}{\log t} \cdot a - t \]
      10. Simplified89.6%

        \[\leadsto \color{blue}{\log t \cdot a} - t \]

      if -1 < (+.f64 (-.f64 (+.f64 (log.f64 (+.f64 x y)) (log.f64 z)) t) (*.f64 (-.f64 a #s(literal 1/2 binary64)) (log.f64 t)))

      1. Initial program 99.3%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \color{blue}{\log t \cdot \left(a - \frac{1}{2}\right)} \]
        2. flip--N/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \log t \cdot \color{blue}{\frac{a \cdot a - \frac{1}{2} \cdot \frac{1}{2}}{a + \frac{1}{2}}} \]
        3. clear-numN/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \log t \cdot \color{blue}{\frac{1}{\frac{a + \frac{1}{2}}{a \cdot a - \frac{1}{2} \cdot \frac{1}{2}}}} \]
        4. un-div-invN/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \color{blue}{\frac{\log t}{\frac{a + \frac{1}{2}}{a \cdot a - \frac{1}{2} \cdot \frac{1}{2}}}} \]
        5. /-lowering-/.f64N/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \color{blue}{\frac{\log t}{\frac{a + \frac{1}{2}}{a \cdot a - \frac{1}{2} \cdot \frac{1}{2}}}} \]
        6. log-lowering-log.f64N/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \frac{\color{blue}{\log t}}{\frac{a + \frac{1}{2}}{a \cdot a - \frac{1}{2} \cdot \frac{1}{2}}} \]
        7. clear-numN/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \frac{\log t}{\color{blue}{\frac{1}{\frac{a \cdot a - \frac{1}{2} \cdot \frac{1}{2}}{a + \frac{1}{2}}}}} \]
        8. flip--N/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \frac{\log t}{\frac{1}{\color{blue}{a - \frac{1}{2}}}} \]
        9. /-lowering-/.f64N/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \frac{\log t}{\color{blue}{\frac{1}{a - \frac{1}{2}}}} \]
        10. sub-negN/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \frac{\log t}{\frac{1}{\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}}} \]
        11. +-lowering-+.f64N/A

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \frac{\log t}{\frac{1}{\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}}} \]
        12. metadata-eval99.1

          \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \frac{\log t}{\frac{1}{a + \color{blue}{-0.5}}} \]
      4. Applied egg-rr99.1%

        \[\leadsto \left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \color{blue}{\frac{\log t}{\frac{1}{a + -0.5}}} \]
      5. Taylor expanded in t around inf

        \[\leadsto \color{blue}{-1 \cdot t} + \frac{\log t}{\frac{1}{a + \frac{-1}{2}}} \]
      6. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \color{blue}{\left(\mathsf{neg}\left(t\right)\right)} + \frac{\log t}{\frac{1}{a + \frac{-1}{2}}} \]
        2. neg-lowering-neg.f6455.4

          \[\leadsto \color{blue}{\left(-t\right)} + \frac{\log t}{\frac{1}{a + -0.5}} \]
      7. Simplified55.4%

        \[\leadsto \color{blue}{\left(-t\right)} + \frac{\log t}{\frac{1}{a + -0.5}} \]
      8. Step-by-step derivation
        1. +-commutativeN/A

          \[\leadsto \color{blue}{\frac{\log t}{\frac{1}{a + \frac{-1}{2}}} + \left(\mathsf{neg}\left(t\right)\right)} \]
        2. associate-/r/N/A

          \[\leadsto \color{blue}{\frac{\log t}{1} \cdot \left(a + \frac{-1}{2}\right)} + \left(\mathsf{neg}\left(t\right)\right) \]
        3. /-rgt-identityN/A

          \[\leadsto \color{blue}{\log t} \cdot \left(a + \frac{-1}{2}\right) + \left(\mathsf{neg}\left(t\right)\right) \]
        4. *-commutativeN/A

          \[\leadsto \color{blue}{\left(a + \frac{-1}{2}\right) \cdot \log t} + \left(\mathsf{neg}\left(t\right)\right) \]
        5. /-rgt-identityN/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\color{blue}{\frac{t}{1}}\right)\right) \]
        6. /-rgt-identityN/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\color{blue}{t}\right)\right) \]
        7. unpow1N/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\color{blue}{{t}^{1}}\right)\right) \]
        8. metadata-evalN/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left({t}^{\color{blue}{\left(4 - 3\right)}}\right)\right) \]
        9. metadata-evalN/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left({t}^{\left(\color{blue}{\left(2 + 2\right)} - 3\right)}\right)\right) \]
        10. pow-divN/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\color{blue}{\frac{{t}^{\left(2 + 2\right)}}{{t}^{3}}}\right)\right) \]
        11. pow-prod-upN/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\frac{\color{blue}{{t}^{2} \cdot {t}^{2}}}{{t}^{3}}\right)\right) \]
        12. pow2N/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\frac{\color{blue}{\left(t \cdot t\right)} \cdot {t}^{2}}{{t}^{3}}\right)\right) \]
        13. pow2N/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\frac{\left(t \cdot t\right) \cdot \color{blue}{\left(t \cdot t\right)}}{{t}^{3}}\right)\right) \]
        14. associate-*r*N/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\frac{\color{blue}{t \cdot \left(t \cdot \left(t \cdot t\right)\right)}}{{t}^{3}}\right)\right) \]
        15. pow3N/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\frac{t \cdot \left(t \cdot \left(t \cdot t\right)\right)}{\color{blue}{\left(t \cdot t\right) \cdot t}}\right)\right) \]
        16. associate-/l/N/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\color{blue}{\frac{\frac{t \cdot \left(t \cdot \left(t \cdot t\right)\right)}{t}}{t \cdot t}}\right)\right) \]
        17. un-div-invN/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \left(\mathsf{neg}\left(\frac{\color{blue}{\left(t \cdot \left(t \cdot \left(t \cdot t\right)\right)\right) \cdot \frac{1}{t}}}{t \cdot t}\right)\right) \]
        18. distribute-frac-neg2N/A

          \[\leadsto \left(a + \frac{-1}{2}\right) \cdot \log t + \color{blue}{\frac{\left(t \cdot \left(t \cdot \left(t \cdot t\right)\right)\right) \cdot \frac{1}{t}}{\mathsf{neg}\left(t \cdot t\right)}} \]
      9. Applied egg-rr55.0%

        \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, t\right)} \]
    3. Recombined 2 regimes into one program.
    4. Final simplification76.5%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\log z + \log \left(x + y\right)\right) - t\right) + \log t \cdot \left(a - 0.5\right) \leq -1:\\ \;\;\;\;a \cdot \log t - t\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(a + -0.5, \log t, t\right)\\ \end{array} \]
    5. Add Preprocessing

    Alternative 9: 75.1% accurate, 1.0× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;a - 0.5 \leq -5 \cdot 10^{+18}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \mathbf{elif}\;a - 0.5 \leq -0.1:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, -0.5, \log z - t\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\log \left(x + y\right) - t\right) + a \cdot \log t\\ \end{array} \end{array} \]
    (FPCore (x y z t a)
     :precision binary64
     (if (<= (- a 0.5) -5e+18)
       (+ (log y) (fma (log t) (+ a -0.5) (- t)))
       (if (<= (- a 0.5) -0.1)
         (+ (log y) (fma (log t) -0.5 (- (log z) t)))
         (+ (- (log (+ x y)) t) (* a (log t))))))
    double code(double x, double y, double z, double t, double a) {
    	double tmp;
    	if ((a - 0.5) <= -5e+18) {
    		tmp = log(y) + fma(log(t), (a + -0.5), -t);
    	} else if ((a - 0.5) <= -0.1) {
    		tmp = log(y) + fma(log(t), -0.5, (log(z) - t));
    	} else {
    		tmp = (log((x + y)) - t) + (a * log(t));
    	}
    	return tmp;
    }
    
    function code(x, y, z, t, a)
    	tmp = 0.0
    	if (Float64(a - 0.5) <= -5e+18)
    		tmp = Float64(log(y) + fma(log(t), Float64(a + -0.5), Float64(-t)));
    	elseif (Float64(a - 0.5) <= -0.1)
    		tmp = Float64(log(y) + fma(log(t), -0.5, Float64(log(z) - t)));
    	else
    		tmp = Float64(Float64(log(Float64(x + y)) - t) + Float64(a * log(t)));
    	end
    	return tmp
    end
    
    code[x_, y_, z_, t_, a_] := If[LessEqual[N[(a - 0.5), $MachinePrecision], -5e+18], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + (-t)), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(a - 0.5), $MachinePrecision], -0.1], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * -0.5 + N[(N[Log[z], $MachinePrecision] - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision] - t), $MachinePrecision] + N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    \mathbf{if}\;a - 0.5 \leq -5 \cdot 10^{+18}:\\
    \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\
    
    \mathbf{elif}\;a - 0.5 \leq -0.1:\\
    \;\;\;\;\log y + \mathsf{fma}\left(\log t, -0.5, \log z - t\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;\left(\log \left(x + y\right) - t\right) + a \cdot \log t\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (-.f64 a #s(literal 1/2 binary64)) < -5e18

      1. Initial program 99.7%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
      4. Step-by-step derivation
        1. associate--l+N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        3. log-lowering-log.f64N/A

          \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
        4. +-commutativeN/A

          \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
        5. associate--l+N/A

          \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
        7. log-lowering-log.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
        8. sub-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
        10. +-lowering-+.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
        11. --lowering--.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
        12. log-lowering-log.f6468.0

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
      5. Simplified68.0%

        \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
      6. Taylor expanded in t around inf

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{-1 \cdot t}\right) \]
      7. Step-by-step derivation
        1. mul-1-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\mathsf{neg}\left(t\right)}\right) \]
        2. neg-lowering-neg.f6468.0

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
      8. Simplified68.0%

        \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]

      if -5e18 < (-.f64 a #s(literal 1/2 binary64)) < -0.10000000000000001

      1. Initial program 99.3%

        \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
      2. Add Preprocessing
      3. Taylor expanded in x around 0

        \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
      4. Step-by-step derivation
        1. associate--l+N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        2. +-lowering-+.f64N/A

          \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
        3. log-lowering-log.f64N/A

          \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
        4. +-commutativeN/A

          \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
        5. associate--l+N/A

          \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
        6. accelerator-lowering-fma.f64N/A

          \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
        7. log-lowering-log.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
        8. sub-negN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
        9. metadata-evalN/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
        10. +-lowering-+.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
        11. --lowering--.f64N/A

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
        12. log-lowering-log.f6465.3

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
      5. Simplified65.3%

        \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
      6. Taylor expanded in a around 0

        \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
      7. Step-by-step derivation
        1. Simplified64.3%

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{-0.5}, \log z - t\right) \]

        if -0.10000000000000001 < (-.f64 a #s(literal 1/2 binary64))

        1. Initial program 99.7%

          \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
        2. Add Preprocessing
        3. Step-by-step derivation
          1. +-commutativeN/A

            \[\leadsto \color{blue}{\left(a - \frac{1}{2}\right) \cdot \log t + \left(\left(\log \left(x + y\right) + \log z\right) - t\right)} \]
          2. +-commutativeN/A

            \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \left(\color{blue}{\left(\log z + \log \left(x + y\right)\right)} - t\right) \]
          3. associate--l+N/A

            \[\leadsto \left(a - \frac{1}{2}\right) \cdot \log t + \color{blue}{\left(\log z + \left(\log \left(x + y\right) - t\right)\right)} \]
          4. associate-+r+N/A

            \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
          5. +-lowering-+.f64N/A

            \[\leadsto \color{blue}{\left(\left(a - \frac{1}{2}\right) \cdot \log t + \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
          6. accelerator-lowering-fma.f64N/A

            \[\leadsto \color{blue}{\mathsf{fma}\left(a - \frac{1}{2}, \log t, \log z\right)} + \left(\log \left(x + y\right) - t\right) \]
          7. sub-negN/A

            \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
          8. +-lowering-+.f64N/A

            \[\leadsto \mathsf{fma}\left(\color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
          9. metadata-evalN/A

            \[\leadsto \mathsf{fma}\left(a + \color{blue}{\frac{-1}{2}}, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
          10. log-lowering-log.f64N/A

            \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \color{blue}{\log t}, \log z\right) + \left(\log \left(x + y\right) - t\right) \]
          11. log-lowering-log.f64N/A

            \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \color{blue}{\log z}\right) + \left(\log \left(x + y\right) - t\right) \]
          12. --lowering--.f64N/A

            \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \color{blue}{\left(\log \left(x + y\right) - t\right)} \]
          13. log-lowering-log.f64N/A

            \[\leadsto \mathsf{fma}\left(a + \frac{-1}{2}, \log t, \log z\right) + \left(\color{blue}{\log \left(x + y\right)} - t\right) \]
          14. +-lowering-+.f6499.7

            \[\leadsto \mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \color{blue}{\left(x + y\right)} - t\right) \]
        4. Applied egg-rr99.7%

          \[\leadsto \color{blue}{\mathsf{fma}\left(a + -0.5, \log t, \log z\right) + \left(\log \left(x + y\right) - t\right)} \]
        5. Taylor expanded in a around inf

          \[\leadsto \color{blue}{a \cdot \log t} + \left(\log \left(x + y\right) - t\right) \]
        6. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
          2. *-lowering-*.f64N/A

            \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
          3. log-lowering-log.f6498.8

            \[\leadsto \color{blue}{\log t} \cdot a + \left(\log \left(x + y\right) - t\right) \]
        7. Simplified98.8%

          \[\leadsto \color{blue}{\log t \cdot a} + \left(\log \left(x + y\right) - t\right) \]
      8. Recombined 3 regimes into one program.
      9. Final simplification74.7%

        \[\leadsto \begin{array}{l} \mathbf{if}\;a - 0.5 \leq -5 \cdot 10^{+18}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)\\ \mathbf{elif}\;a - 0.5 \leq -0.1:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, -0.5, \log z - t\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\log \left(x + y\right) - t\right) + a \cdot \log t\\ \end{array} \]
      10. Add Preprocessing

      Alternative 10: 81.0% accurate, 1.0× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;t \leq 3.1 \cdot 10^{-6}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z\right)\\ \mathbf{elif}\;t \leq 14500:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, -0.5, \log z - t\right)\\ \mathbf{else}:\\ \;\;\;\;a \cdot \log t - t\\ \end{array} \end{array} \]
      (FPCore (x y z t a)
       :precision binary64
       (if (<= t 3.1e-6)
         (+ (log y) (fma (log t) (+ a -0.5) (log z)))
         (if (<= t 14500.0)
           (+ (log y) (fma (log t) -0.5 (- (log z) t)))
           (- (* a (log t)) t))))
      double code(double x, double y, double z, double t, double a) {
      	double tmp;
      	if (t <= 3.1e-6) {
      		tmp = log(y) + fma(log(t), (a + -0.5), log(z));
      	} else if (t <= 14500.0) {
      		tmp = log(y) + fma(log(t), -0.5, (log(z) - t));
      	} else {
      		tmp = (a * log(t)) - t;
      	}
      	return tmp;
      }
      
      function code(x, y, z, t, a)
      	tmp = 0.0
      	if (t <= 3.1e-6)
      		tmp = Float64(log(y) + fma(log(t), Float64(a + -0.5), log(z)));
      	elseif (t <= 14500.0)
      		tmp = Float64(log(y) + fma(log(t), -0.5, Float64(log(z) - t)));
      	else
      		tmp = Float64(Float64(a * log(t)) - t);
      	end
      	return tmp
      end
      
      code[x_, y_, z_, t_, a_] := If[LessEqual[t, 3.1e-6], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + N[Log[z], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t, 14500.0], N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * -0.5 + N[(N[Log[z], $MachinePrecision] - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      \mathbf{if}\;t \leq 3.1 \cdot 10^{-6}:\\
      \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z\right)\\
      
      \mathbf{elif}\;t \leq 14500:\\
      \;\;\;\;\log y + \mathsf{fma}\left(\log t, -0.5, \log z - t\right)\\
      
      \mathbf{else}:\\
      \;\;\;\;a \cdot \log t - t\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if t < 3.1e-6

        1. Initial program 99.3%

          \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
        2. Add Preprocessing
        3. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
        4. Step-by-step derivation
          1. associate--l+N/A

            \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
          2. +-lowering-+.f64N/A

            \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
          3. log-lowering-log.f64N/A

            \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
          4. +-commutativeN/A

            \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
          5. associate--l+N/A

            \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
          6. accelerator-lowering-fma.f64N/A

            \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
          7. log-lowering-log.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
          8. sub-negN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
          9. metadata-evalN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
          10. +-lowering-+.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
          11. --lowering--.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
          12. log-lowering-log.f6463.8

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
        5. Simplified63.8%

          \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
        6. Taylor expanded in t around 0

          \[\leadsto \color{blue}{\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)} \]
        7. Step-by-step derivation
          1. +-lowering-+.f64N/A

            \[\leadsto \color{blue}{\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)} \]
          2. log-lowering-log.f64N/A

            \[\leadsto \color{blue}{\log y} + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) \]
          3. +-commutativeN/A

            \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} \]
          4. accelerator-lowering-fma.f64N/A

            \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z\right)} \]
          5. log-lowering-log.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z\right) \]
          6. sub-negN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z\right) \]
          7. metadata-evalN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z\right) \]
          8. +-lowering-+.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z\right) \]
          9. log-lowering-log.f6463.6

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z}\right) \]
        8. Simplified63.6%

          \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z\right)} \]

        if 3.1e-6 < t < 14500

        1. Initial program 97.0%

          \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
        2. Add Preprocessing
        3. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
        4. Step-by-step derivation
          1. associate--l+N/A

            \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
          2. +-lowering-+.f64N/A

            \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
          3. log-lowering-log.f64N/A

            \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
          4. +-commutativeN/A

            \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
          5. associate--l+N/A

            \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
          6. accelerator-lowering-fma.f64N/A

            \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
          7. log-lowering-log.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
          8. sub-negN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
          9. metadata-evalN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
          10. +-lowering-+.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
          11. --lowering--.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
          12. log-lowering-log.f6483.1

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
        5. Simplified83.1%

          \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
        6. Taylor expanded in a around 0

          \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
        7. Step-by-step derivation
          1. Simplified83.1%

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{-0.5}, \log z - t\right) \]

          if 14500 < t

          1. Initial program 99.9%

            \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
          2. Add Preprocessing
          3. Step-by-step derivation
            1. flip-+N/A

              \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            2. /-lowering-/.f64N/A

              \[\leadsto \left(\color{blue}{\frac{\log \left(x + y\right) \cdot \log \left(x + y\right) - \log z \cdot \log z}{\log \left(x + y\right) - \log z}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            3. difference-of-squaresN/A

              \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            4. *-lowering-*.f64N/A

              \[\leadsto \left(\frac{\color{blue}{\left(\log \left(x + y\right) + \log z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            5. sum-logN/A

              \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            6. log-lowering-log.f64N/A

              \[\leadsto \left(\frac{\color{blue}{\log \left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            7. *-lowering-*.f64N/A

              \[\leadsto \left(\frac{\log \color{blue}{\left(\left(x + y\right) \cdot z\right)} \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            8. +-lowering-+.f64N/A

              \[\leadsto \left(\frac{\log \left(\color{blue}{\left(x + y\right)} \cdot z\right) \cdot \left(\log \left(x + y\right) - \log z\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            9. diff-logN/A

              \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            10. log-lowering-log.f64N/A

              \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \color{blue}{\log \left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            11. /-lowering-/.f64N/A

              \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \color{blue}{\left(\frac{x + y}{z}\right)}}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            12. +-lowering-+.f64N/A

              \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{\color{blue}{x + y}}{z}\right)}{\log \left(x + y\right) - \log z} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            13. diff-logN/A

              \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            14. log-lowering-log.f64N/A

              \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\color{blue}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            15. /-lowering-/.f64N/A

              \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \color{blue}{\left(\frac{x + y}{z}\right)}} - t\right) + \left(a - \frac{1}{2}\right) \cdot \log t \]
            16. +-lowering-+.f6448.8

              \[\leadsto \left(\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{\color{blue}{x + y}}{z}\right)} - t\right) + \left(a - 0.5\right) \cdot \log t \]
          4. Applied egg-rr48.8%

            \[\leadsto \left(\color{blue}{\frac{\log \left(\left(x + y\right) \cdot z\right) \cdot \log \left(\frac{x + y}{z}\right)}{\log \left(\frac{x + y}{z}\right)}} - t\right) + \left(a - 0.5\right) \cdot \log t \]
          5. Taylor expanded in x around 0

            \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
          6. Step-by-step derivation
            1. --lowering--.f64N/A

              \[\leadsto \color{blue}{\left(\log \left(y \cdot z\right) + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t} \]
            2. +-commutativeN/A

              \[\leadsto \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log \left(y \cdot z\right)\right)} - t \]
            3. accelerator-lowering-fma.f64N/A

              \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log \left(y \cdot z\right)\right)} - t \]
            4. log-lowering-log.f64N/A

              \[\leadsto \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log \left(y \cdot z\right)\right) - t \]
            5. sub-negN/A

              \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log \left(y \cdot z\right)\right) - t \]
            6. metadata-evalN/A

              \[\leadsto \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
            7. +-lowering-+.f64N/A

              \[\leadsto \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log \left(y \cdot z\right)\right) - t \]
            8. log-lowering-log.f64N/A

              \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log \left(y \cdot z\right)}\right) - t \]
            9. *-commutativeN/A

              \[\leadsto \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
            10. *-lowering-*.f6466.3

              \[\leadsto \mathsf{fma}\left(\log t, a + -0.5, \log \color{blue}{\left(z \cdot y\right)}\right) - t \]
          7. Simplified66.3%

            \[\leadsto \color{blue}{\mathsf{fma}\left(\log t, a + -0.5, \log \left(z \cdot y\right)\right) - t} \]
          8. Taylor expanded in a around inf

            \[\leadsto \color{blue}{a \cdot \log t} - t \]
          9. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \color{blue}{\log t \cdot a} - t \]
            2. *-lowering-*.f64N/A

              \[\leadsto \color{blue}{\log t \cdot a} - t \]
            3. log-lowering-log.f6499.0

              \[\leadsto \color{blue}{\log t} \cdot a - t \]
          10. Simplified99.0%

            \[\leadsto \color{blue}{\log t \cdot a} - t \]
        8. Recombined 3 regimes into one program.
        9. Final simplification81.3%

          \[\leadsto \begin{array}{l} \mathbf{if}\;t \leq 3.1 \cdot 10^{-6}:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z\right)\\ \mathbf{elif}\;t \leq 14500:\\ \;\;\;\;\log y + \mathsf{fma}\left(\log t, -0.5, \log z - t\right)\\ \mathbf{else}:\\ \;\;\;\;a \cdot \log t - t\\ \end{array} \]
        10. Add Preprocessing

        Alternative 11: 69.9% accurate, 1.0× speedup?

        \[\begin{array}{l} \\ \log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right) \end{array} \]
        (FPCore (x y z t a)
         :precision binary64
         (+ (log y) (fma (log t) (+ a -0.5) (- (log z) t))))
        double code(double x, double y, double z, double t, double a) {
        	return log(y) + fma(log(t), (a + -0.5), (log(z) - t));
        }
        
        function code(x, y, z, t, a)
        	return Float64(log(y) + fma(log(t), Float64(a + -0.5), Float64(log(z) - t)))
        end
        
        code[x_, y_, z_, t_, a_] := N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + N[(N[Log[z], $MachinePrecision] - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
        
        \begin{array}{l}
        
        \\
        \log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)
        \end{array}
        
        Derivation
        1. Initial program 99.5%

          \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
        2. Add Preprocessing
        3. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
        4. Step-by-step derivation
          1. associate--l+N/A

            \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
          2. +-lowering-+.f64N/A

            \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
          3. log-lowering-log.f64N/A

            \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
          4. +-commutativeN/A

            \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
          5. associate--l+N/A

            \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
          6. accelerator-lowering-fma.f64N/A

            \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
          7. log-lowering-log.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
          8. sub-negN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
          9. metadata-evalN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
          10. +-lowering-+.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
          11. --lowering--.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
          12. log-lowering-log.f6471.1

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
        5. Simplified71.1%

          \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
        6. Add Preprocessing

        Alternative 12: 58.9% accurate, 1.5× speedup?

        \[\begin{array}{l} \\ \log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right) \end{array} \]
        (FPCore (x y z t a)
         :precision binary64
         (+ (log y) (fma (log t) (+ a -0.5) (- t))))
        double code(double x, double y, double z, double t, double a) {
        	return log(y) + fma(log(t), (a + -0.5), -t);
        }
        
        function code(x, y, z, t, a)
        	return Float64(log(y) + fma(log(t), Float64(a + -0.5), Float64(-t)))
        end
        
        code[x_, y_, z_, t_, a_] := N[(N[Log[y], $MachinePrecision] + N[(N[Log[t], $MachinePrecision] * N[(a + -0.5), $MachinePrecision] + (-t)), $MachinePrecision]), $MachinePrecision]
        
        \begin{array}{l}
        
        \\
        \log y + \mathsf{fma}\left(\log t, a + -0.5, -t\right)
        \end{array}
        
        Derivation
        1. Initial program 99.5%

          \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
        2. Add Preprocessing
        3. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
        4. Step-by-step derivation
          1. associate--l+N/A

            \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
          2. +-lowering-+.f64N/A

            \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
          3. log-lowering-log.f64N/A

            \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
          4. +-commutativeN/A

            \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
          5. associate--l+N/A

            \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
          6. accelerator-lowering-fma.f64N/A

            \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
          7. log-lowering-log.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
          8. sub-negN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
          9. metadata-evalN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
          10. +-lowering-+.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
          11. --lowering--.f64N/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
          12. log-lowering-log.f6471.1

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
        5. Simplified71.1%

          \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
        6. Taylor expanded in t around inf

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{-1 \cdot t}\right) \]
        7. Step-by-step derivation
          1. mul-1-negN/A

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\mathsf{neg}\left(t\right)}\right) \]
          2. neg-lowering-neg.f6460.0

            \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
        8. Simplified60.0%

          \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{-t}\right) \]
        9. Add Preprocessing

        Alternative 13: 58.2% accurate, 2.7× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} t_1 := a \cdot \log t\\ \mathbf{if}\;a \leq -1.75 \cdot 10^{+32}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;a \leq 4.2 \cdot 10^{+15}:\\ \;\;\;\;\log y - t\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
        (FPCore (x y z t a)
         :precision binary64
         (let* ((t_1 (* a (log t))))
           (if (<= a -1.75e+32) t_1 (if (<= a 4.2e+15) (- (log y) t) t_1))))
        double code(double x, double y, double z, double t, double a) {
        	double t_1 = a * log(t);
        	double tmp;
        	if (a <= -1.75e+32) {
        		tmp = t_1;
        	} else if (a <= 4.2e+15) {
        		tmp = log(y) - t;
        	} else {
        		tmp = t_1;
        	}
        	return tmp;
        }
        
        real(8) function code(x, y, z, t, a)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            real(8), intent (in) :: z
            real(8), intent (in) :: t
            real(8), intent (in) :: a
            real(8) :: t_1
            real(8) :: tmp
            t_1 = a * log(t)
            if (a <= (-1.75d+32)) then
                tmp = t_1
            else if (a <= 4.2d+15) then
                tmp = log(y) - t
            else
                tmp = t_1
            end if
            code = tmp
        end function
        
        public static double code(double x, double y, double z, double t, double a) {
        	double t_1 = a * Math.log(t);
        	double tmp;
        	if (a <= -1.75e+32) {
        		tmp = t_1;
        	} else if (a <= 4.2e+15) {
        		tmp = Math.log(y) - t;
        	} else {
        		tmp = t_1;
        	}
        	return tmp;
        }
        
        def code(x, y, z, t, a):
        	t_1 = a * math.log(t)
        	tmp = 0
        	if a <= -1.75e+32:
        		tmp = t_1
        	elif a <= 4.2e+15:
        		tmp = math.log(y) - t
        	else:
        		tmp = t_1
        	return tmp
        
        function code(x, y, z, t, a)
        	t_1 = Float64(a * log(t))
        	tmp = 0.0
        	if (a <= -1.75e+32)
        		tmp = t_1;
        	elseif (a <= 4.2e+15)
        		tmp = Float64(log(y) - t);
        	else
        		tmp = t_1;
        	end
        	return tmp
        end
        
        function tmp_2 = code(x, y, z, t, a)
        	t_1 = a * log(t);
        	tmp = 0.0;
        	if (a <= -1.75e+32)
        		tmp = t_1;
        	elseif (a <= 4.2e+15)
        		tmp = log(y) - t;
        	else
        		tmp = t_1;
        	end
        	tmp_2 = tmp;
        end
        
        code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[a, -1.75e+32], t$95$1, If[LessEqual[a, 4.2e+15], N[(N[Log[y], $MachinePrecision] - t), $MachinePrecision], t$95$1]]]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        t_1 := a \cdot \log t\\
        \mathbf{if}\;a \leq -1.75 \cdot 10^{+32}:\\
        \;\;\;\;t\_1\\
        
        \mathbf{elif}\;a \leq 4.2 \cdot 10^{+15}:\\
        \;\;\;\;\log y - t\\
        
        \mathbf{else}:\\
        \;\;\;\;t\_1\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if a < -1.75e32 or 4.2e15 < a

          1. Initial program 99.7%

            \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
          2. Add Preprocessing
          3. Taylor expanded in a around inf

            \[\leadsto \color{blue}{a \cdot \log t} \]
          4. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \color{blue}{\log t \cdot a} \]
            2. *-lowering-*.f64N/A

              \[\leadsto \color{blue}{\log t \cdot a} \]
            3. log-lowering-log.f6474.4

              \[\leadsto \color{blue}{\log t} \cdot a \]
          5. Simplified74.4%

            \[\leadsto \color{blue}{\log t \cdot a} \]

          if -1.75e32 < a < 4.2e15

          1. Initial program 99.3%

            \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
          2. Add Preprocessing
          3. Taylor expanded in x around 0

            \[\leadsto \color{blue}{\left(\log y + \left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right)\right) - t} \]
          4. Step-by-step derivation
            1. associate--l+N/A

              \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
            2. +-lowering-+.f64N/A

              \[\leadsto \color{blue}{\log y + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right)} \]
            3. log-lowering-log.f64N/A

              \[\leadsto \color{blue}{\log y} + \left(\left(\log z + \log t \cdot \left(a - \frac{1}{2}\right)\right) - t\right) \]
            4. +-commutativeN/A

              \[\leadsto \log y + \left(\color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \log z\right)} - t\right) \]
            5. associate--l+N/A

              \[\leadsto \log y + \color{blue}{\left(\log t \cdot \left(a - \frac{1}{2}\right) + \left(\log z - t\right)\right)} \]
            6. accelerator-lowering-fma.f64N/A

              \[\leadsto \log y + \color{blue}{\mathsf{fma}\left(\log t, a - \frac{1}{2}, \log z - t\right)} \]
            7. log-lowering-log.f64N/A

              \[\leadsto \log y + \mathsf{fma}\left(\color{blue}{\log t}, a - \frac{1}{2}, \log z - t\right) \]
            8. sub-negN/A

              \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \left(\mathsf{neg}\left(\frac{1}{2}\right)\right)}, \log z - t\right) \]
            9. metadata-evalN/A

              \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \color{blue}{\frac{-1}{2}}, \log z - t\right) \]
            10. +-lowering-+.f64N/A

              \[\leadsto \log y + \mathsf{fma}\left(\log t, \color{blue}{a + \frac{-1}{2}}, \log z - t\right) \]
            11. --lowering--.f64N/A

              \[\leadsto \log y + \mathsf{fma}\left(\log t, a + \frac{-1}{2}, \color{blue}{\log z - t}\right) \]
            12. log-lowering-log.f6466.4

              \[\leadsto \log y + \mathsf{fma}\left(\log t, a + -0.5, \color{blue}{\log z} - t\right) \]
          5. Simplified66.4%

            \[\leadsto \color{blue}{\log y + \mathsf{fma}\left(\log t, a + -0.5, \log z - t\right)} \]
          6. Taylor expanded in t around inf

            \[\leadsto \log y + \color{blue}{-1 \cdot t} \]
          7. Step-by-step derivation
            1. mul-1-negN/A

              \[\leadsto \log y + \color{blue}{\left(\mathsf{neg}\left(t\right)\right)} \]
            2. neg-lowering-neg.f6442.0

              \[\leadsto \log y + \color{blue}{\left(-t\right)} \]
          8. Simplified42.0%

            \[\leadsto \log y + \color{blue}{\left(-t\right)} \]
        3. Recombined 2 regimes into one program.
        4. Final simplification58.7%

          \[\leadsto \begin{array}{l} \mathbf{if}\;a \leq -1.75 \cdot 10^{+32}:\\ \;\;\;\;a \cdot \log t\\ \mathbf{elif}\;a \leq 4.2 \cdot 10^{+15}:\\ \;\;\;\;\log y - t\\ \mathbf{else}:\\ \;\;\;\;a \cdot \log t\\ \end{array} \]
        5. Add Preprocessing

        Alternative 14: 63.3% accurate, 2.9× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;t \leq 8.5 \cdot 10^{+14}:\\ \;\;\;\;a \cdot \log t\\ \mathbf{else}:\\ \;\;\;\;-t\\ \end{array} \end{array} \]
        (FPCore (x y z t a)
         :precision binary64
         (if (<= t 8.5e+14) (* a (log t)) (- t)))
        double code(double x, double y, double z, double t, double a) {
        	double tmp;
        	if (t <= 8.5e+14) {
        		tmp = a * log(t);
        	} else {
        		tmp = -t;
        	}
        	return tmp;
        }
        
        real(8) function code(x, y, z, t, a)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            real(8), intent (in) :: z
            real(8), intent (in) :: t
            real(8), intent (in) :: a
            real(8) :: tmp
            if (t <= 8.5d+14) then
                tmp = a * log(t)
            else
                tmp = -t
            end if
            code = tmp
        end function
        
        public static double code(double x, double y, double z, double t, double a) {
        	double tmp;
        	if (t <= 8.5e+14) {
        		tmp = a * Math.log(t);
        	} else {
        		tmp = -t;
        	}
        	return tmp;
        }
        
        def code(x, y, z, t, a):
        	tmp = 0
        	if t <= 8.5e+14:
        		tmp = a * math.log(t)
        	else:
        		tmp = -t
        	return tmp
        
        function code(x, y, z, t, a)
        	tmp = 0.0
        	if (t <= 8.5e+14)
        		tmp = Float64(a * log(t));
        	else
        		tmp = Float64(-t);
        	end
        	return tmp
        end
        
        function tmp_2 = code(x, y, z, t, a)
        	tmp = 0.0;
        	if (t <= 8.5e+14)
        		tmp = a * log(t);
        	else
        		tmp = -t;
        	end
        	tmp_2 = tmp;
        end
        
        code[x_, y_, z_, t_, a_] := If[LessEqual[t, 8.5e+14], N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision], (-t)]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        \mathbf{if}\;t \leq 8.5 \cdot 10^{+14}:\\
        \;\;\;\;a \cdot \log t\\
        
        \mathbf{else}:\\
        \;\;\;\;-t\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 2 regimes
        2. if t < 8.5e14

          1. Initial program 99.2%

            \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
          2. Add Preprocessing
          3. Taylor expanded in a around inf

            \[\leadsto \color{blue}{a \cdot \log t} \]
          4. Step-by-step derivation
            1. *-commutativeN/A

              \[\leadsto \color{blue}{\log t \cdot a} \]
            2. *-lowering-*.f64N/A

              \[\leadsto \color{blue}{\log t \cdot a} \]
            3. log-lowering-log.f6451.1

              \[\leadsto \color{blue}{\log t} \cdot a \]
          5. Simplified51.1%

            \[\leadsto \color{blue}{\log t \cdot a} \]

          if 8.5e14 < t

          1. Initial program 99.9%

            \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
          2. Add Preprocessing
          3. Taylor expanded in t around inf

            \[\leadsto \color{blue}{-1 \cdot t} \]
          4. Step-by-step derivation
            1. mul-1-negN/A

              \[\leadsto \color{blue}{\mathsf{neg}\left(t\right)} \]
            2. neg-lowering-neg.f6475.1

              \[\leadsto \color{blue}{-t} \]
          5. Simplified75.1%

            \[\leadsto \color{blue}{-t} \]
        3. Recombined 2 regimes into one program.
        4. Final simplification61.8%

          \[\leadsto \begin{array}{l} \mathbf{if}\;t \leq 8.5 \cdot 10^{+14}:\\ \;\;\;\;a \cdot \log t\\ \mathbf{else}:\\ \;\;\;\;-t\\ \end{array} \]
        5. Add Preprocessing

        Alternative 15: 77.5% accurate, 2.9× speedup?

        \[\begin{array}{l} \\ \log t \cdot \left(a - 0.5\right) - t \end{array} \]
        (FPCore (x y z t a) :precision binary64 (- (* (log t) (- a 0.5)) t))
        double code(double x, double y, double z, double t, double a) {
        	return (log(t) * (a - 0.5)) - t;
        }
        
        real(8) function code(x, y, z, t, a)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            real(8), intent (in) :: z
            real(8), intent (in) :: t
            real(8), intent (in) :: a
            code = (log(t) * (a - 0.5d0)) - t
        end function
        
        public static double code(double x, double y, double z, double t, double a) {
        	return (Math.log(t) * (a - 0.5)) - t;
        }
        
        def code(x, y, z, t, a):
        	return (math.log(t) * (a - 0.5)) - t
        
        function code(x, y, z, t, a)
        	return Float64(Float64(log(t) * Float64(a - 0.5)) - t)
        end
        
        function tmp = code(x, y, z, t, a)
        	tmp = (log(t) * (a - 0.5)) - t;
        end
        
        code[x_, y_, z_, t_, a_] := N[(N[(N[Log[t], $MachinePrecision] * N[(a - 0.5), $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision]
        
        \begin{array}{l}
        
        \\
        \log t \cdot \left(a - 0.5\right) - t
        \end{array}
        
        Derivation
        1. Initial program 99.5%

          \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
        2. Add Preprocessing
        3. Taylor expanded in t around inf

          \[\leadsto \color{blue}{-1 \cdot t} + \left(a - \frac{1}{2}\right) \cdot \log t \]
        4. Step-by-step derivation
          1. mul-1-negN/A

            \[\leadsto \color{blue}{\left(\mathsf{neg}\left(t\right)\right)} + \left(a - \frac{1}{2}\right) \cdot \log t \]
          2. neg-lowering-neg.f6476.4

            \[\leadsto \color{blue}{\left(-t\right)} + \left(a - 0.5\right) \cdot \log t \]
        5. Simplified76.4%

          \[\leadsto \color{blue}{\left(-t\right)} + \left(a - 0.5\right) \cdot \log t \]
        6. Final simplification76.4%

          \[\leadsto \log t \cdot \left(a - 0.5\right) - t \]
        7. Add Preprocessing

        Alternative 16: 38.8% accurate, 107.0× speedup?

        \[\begin{array}{l} \\ -t \end{array} \]
        (FPCore (x y z t a) :precision binary64 (- t))
        double code(double x, double y, double z, double t, double a) {
        	return -t;
        }
        
        real(8) function code(x, y, z, t, a)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            real(8), intent (in) :: z
            real(8), intent (in) :: t
            real(8), intent (in) :: a
            code = -t
        end function
        
        public static double code(double x, double y, double z, double t, double a) {
        	return -t;
        }
        
        def code(x, y, z, t, a):
        	return -t
        
        function code(x, y, z, t, a)
        	return Float64(-t)
        end
        
        function tmp = code(x, y, z, t, a)
        	tmp = -t;
        end
        
        code[x_, y_, z_, t_, a_] := (-t)
        
        \begin{array}{l}
        
        \\
        -t
        \end{array}
        
        Derivation
        1. Initial program 99.5%

          \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
        2. Add Preprocessing
        3. Taylor expanded in t around inf

          \[\leadsto \color{blue}{-1 \cdot t} \]
        4. Step-by-step derivation
          1. mul-1-negN/A

            \[\leadsto \color{blue}{\mathsf{neg}\left(t\right)} \]
          2. neg-lowering-neg.f6435.9

            \[\leadsto \color{blue}{-t} \]
        5. Simplified35.9%

          \[\leadsto \color{blue}{-t} \]
        6. Add Preprocessing

        Alternative 17: 2.4% accurate, 321.0× speedup?

        \[\begin{array}{l} \\ t \end{array} \]
        (FPCore (x y z t a) :precision binary64 t)
        double code(double x, double y, double z, double t, double a) {
        	return t;
        }
        
        real(8) function code(x, y, z, t, a)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            real(8), intent (in) :: z
            real(8), intent (in) :: t
            real(8), intent (in) :: a
            code = t
        end function
        
        public static double code(double x, double y, double z, double t, double a) {
        	return t;
        }
        
        def code(x, y, z, t, a):
        	return t
        
        function code(x, y, z, t, a)
        	return t
        end
        
        function tmp = code(x, y, z, t, a)
        	tmp = t;
        end
        
        code[x_, y_, z_, t_, a_] := t
        
        \begin{array}{l}
        
        \\
        t
        \end{array}
        
        Derivation
        1. Initial program 99.5%

          \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
        2. Add Preprocessing
        3. Taylor expanded in t around inf

          \[\leadsto \color{blue}{-1 \cdot t} \]
        4. Step-by-step derivation
          1. mul-1-negN/A

            \[\leadsto \color{blue}{\mathsf{neg}\left(t\right)} \]
          2. neg-lowering-neg.f6435.9

            \[\leadsto \color{blue}{-t} \]
        5. Simplified35.9%

          \[\leadsto \color{blue}{-t} \]
        6. Step-by-step derivation
          1. neg-sub0N/A

            \[\leadsto \color{blue}{0 - t} \]
          2. flip--N/A

            \[\leadsto \color{blue}{\frac{0 \cdot 0 - t \cdot t}{0 + t}} \]
          3. /-lowering-/.f64N/A

            \[\leadsto \color{blue}{\frac{0 \cdot 0 - t \cdot t}{0 + t}} \]
          4. metadata-evalN/A

            \[\leadsto \frac{\color{blue}{0} - t \cdot t}{0 + t} \]
          5. --lowering--.f64N/A

            \[\leadsto \frac{\color{blue}{0 - t \cdot t}}{0 + t} \]
          6. *-lowering-*.f64N/A

            \[\leadsto \frac{0 - \color{blue}{t \cdot t}}{0 + t} \]
          7. +-lowering-+.f6413.5

            \[\leadsto \frac{0 - t \cdot t}{\color{blue}{0 + t}} \]
        7. Applied egg-rr13.5%

          \[\leadsto \color{blue}{\frac{0 - t \cdot t}{0 + t}} \]
        8. Step-by-step derivation
          1. +-lft-identityN/A

            \[\leadsto \frac{0 - t \cdot t}{\color{blue}{t}} \]
          2. flip--N/A

            \[\leadsto \frac{\color{blue}{\frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{0 + t \cdot t}}}{t} \]
          3. +-lft-identityN/A

            \[\leadsto \frac{\frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\color{blue}{t \cdot t}}}{t} \]
          4. associate-/l/N/A

            \[\leadsto \color{blue}{\frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{t \cdot \left(t \cdot t\right)}} \]
          5. cube-multN/A

            \[\leadsto \frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\color{blue}{{t}^{3}}} \]
          6. sqr-powN/A

            \[\leadsto \frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\color{blue}{{t}^{\left(\frac{3}{2}\right)} \cdot {t}^{\left(\frac{3}{2}\right)}}} \]
          7. unpow-prod-downN/A

            \[\leadsto \frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\color{blue}{{\left(t \cdot t\right)}^{\left(\frac{3}{2}\right)}}} \]
          8. sqr-negN/A

            \[\leadsto \frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{{\color{blue}{\left(\left(\mathsf{neg}\left(t\right)\right) \cdot \left(\mathsf{neg}\left(t\right)\right)\right)}}^{\left(\frac{3}{2}\right)}} \]
          9. unpow-prod-downN/A

            \[\leadsto \frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\color{blue}{{\left(\mathsf{neg}\left(t\right)\right)}^{\left(\frac{3}{2}\right)} \cdot {\left(\mathsf{neg}\left(t\right)\right)}^{\left(\frac{3}{2}\right)}}} \]
          10. sqr-powN/A

            \[\leadsto \frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\color{blue}{{\left(\mathsf{neg}\left(t\right)\right)}^{3}}} \]
          11. cube-multN/A

            \[\leadsto \frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\color{blue}{\left(\mathsf{neg}\left(t\right)\right) \cdot \left(\left(\mathsf{neg}\left(t\right)\right) \cdot \left(\mathsf{neg}\left(t\right)\right)\right)}} \]
          12. sqr-negN/A

            \[\leadsto \frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\left(\mathsf{neg}\left(t\right)\right) \cdot \color{blue}{\left(t \cdot t\right)}} \]
          13. associate-/l/N/A

            \[\leadsto \color{blue}{\frac{\frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{t \cdot t}}{\mathsf{neg}\left(t\right)}} \]
          14. +-lft-identityN/A

            \[\leadsto \frac{\frac{0 \cdot 0 - \left(t \cdot t\right) \cdot \left(t \cdot t\right)}{\color{blue}{0 + t \cdot t}}}{\mathsf{neg}\left(t\right)} \]
          15. flip--N/A

            \[\leadsto \frac{\color{blue}{0 - t \cdot t}}{\mathsf{neg}\left(t\right)} \]
          16. metadata-evalN/A

            \[\leadsto \frac{\color{blue}{0 \cdot 0} - t \cdot t}{\mathsf{neg}\left(t\right)} \]
          17. neg-sub0N/A

            \[\leadsto \frac{0 \cdot 0 - t \cdot t}{\color{blue}{0 - t}} \]
        9. Applied egg-rr2.6%

          \[\leadsto \color{blue}{t} \]
        10. Add Preprocessing

        Developer Target 1: 99.6% accurate, 1.0× speedup?

        \[\begin{array}{l} \\ \log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - 0.5\right) \cdot \log t\right) \end{array} \]
        (FPCore (x y z t a)
         :precision binary64
         (+ (log (+ x y)) (+ (- (log z) t) (* (- a 0.5) (log t)))))
        double code(double x, double y, double z, double t, double a) {
        	return log((x + y)) + ((log(z) - t) + ((a - 0.5) * log(t)));
        }
        
        real(8) function code(x, y, z, t, a)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            real(8), intent (in) :: z
            real(8), intent (in) :: t
            real(8), intent (in) :: a
            code = log((x + y)) + ((log(z) - t) + ((a - 0.5d0) * log(t)))
        end function
        
        public static double code(double x, double y, double z, double t, double a) {
        	return Math.log((x + y)) + ((Math.log(z) - t) + ((a - 0.5) * Math.log(t)));
        }
        
        def code(x, y, z, t, a):
        	return math.log((x + y)) + ((math.log(z) - t) + ((a - 0.5) * math.log(t)))
        
        function code(x, y, z, t, a)
        	return Float64(log(Float64(x + y)) + Float64(Float64(log(z) - t) + Float64(Float64(a - 0.5) * log(t))))
        end
        
        function tmp = code(x, y, z, t, a)
        	tmp = log((x + y)) + ((log(z) - t) + ((a - 0.5) * log(t)));
        end
        
        code[x_, y_, z_, t_, a_] := N[(N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision] + N[(N[(N[Log[z], $MachinePrecision] - t), $MachinePrecision] + N[(N[(a - 0.5), $MachinePrecision] * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
        
        \begin{array}{l}
        
        \\
        \log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - 0.5\right) \cdot \log t\right)
        \end{array}
        

        Reproduce

        ?
        herbie shell --seed 2024205 
        (FPCore (x y z t a)
          :name "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2"
          :precision binary64
        
          :alt
          (! :herbie-platform default (+ (log (+ x y)) (+ (- (log z) t) (* (- a 1/2) (log t)))))
        
          (+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))