Numeric.SpecFunctions:$slogFactorial from math-functions-0.1.5.2, B

Percentage Accurate: 93.8% → 99.6%
Time: 5.0s
Alternatives: 16
Speedup: 1.2×

Specification

?
\[\begin{array}{l} \\ \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (+
  (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467)
  (/
   (+
    (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)
    0.083333333333333)
   x)))
double code(double x, double y, double z) {
	return ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

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

real(8) function code(x, y, z)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = ((((x - 0.5d0) * log(x)) - x) + 0.91893853320467d0) + ((((((y + 0.0007936500793651d0) * z) - 0.0027777777777778d0) * z) + 0.083333333333333d0) / x)
end function
public static double code(double x, double y, double z) {
	return ((((x - 0.5) * Math.log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
}
def code(x, y, z):
	return ((((x - 0.5) * math.log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x)
function code(x, y, z)
	return Float64(Float64(Float64(Float64(Float64(x - 0.5) * log(x)) - x) + 0.91893853320467) + Float64(Float64(Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x))
end
function tmp = code(x, y, z)
	tmp = ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
end
code[x_, y_, z_] := N[(N[(N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision]), $MachinePrecision] - x), $MachinePrecision] + 0.91893853320467), $MachinePrecision] + N[(N[(N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision] + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}
\end{array}

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

\[\begin{array}{l} \\ \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (+
  (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467)
  (/
   (+
    (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)
    0.083333333333333)
   x)))
double code(double x, double y, double z) {
	return ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

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

real(8) function code(x, y, z)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    code = ((((x - 0.5d0) * log(x)) - x) + 0.91893853320467d0) + ((((((y + 0.0007936500793651d0) * z) - 0.0027777777777778d0) * z) + 0.083333333333333d0) / x)
end function
public static double code(double x, double y, double z) {
	return ((((x - 0.5) * Math.log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
}
def code(x, y, z):
	return ((((x - 0.5) * math.log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x)
function code(x, y, z)
	return Float64(Float64(Float64(Float64(Float64(x - 0.5) * log(x)) - x) + 0.91893853320467) + Float64(Float64(Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x))
end
function tmp = code(x, y, z)
	tmp = ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
end
code[x_, y_, z_] := N[(N[(N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision]), $MachinePrecision] - x), $MachinePrecision] + 0.91893853320467), $MachinePrecision] + N[(N[(N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision] + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}
\end{array}

Alternative 1: 99.6% accurate, 0.9× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq 2.16 \cdot 10^{+15}:\\ \;\;\;\;\left(\mathsf{fma}\left(x - 0.5, \log x, -x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\ \end{array} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (if (<= x 2.16e+15)
   (+
    (+ (fma (- x 0.5) (log x) (- x)) 0.91893853320467)
    (/
     (+
      (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)
      0.083333333333333)
     x))
   (+
    (* (- (- (- (log x))) 1.0) x)
    (* (* (/ (+ y 0.0007936500793651) x) z) z))))
double code(double x, double y, double z) {
	double tmp;
	if (x <= 2.16e+15) {
		tmp = (fma((x - 0.5), log(x), -x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
	} else {
		tmp = ((-(-log(x)) - 1.0) * x) + ((((y + 0.0007936500793651) / x) * z) * z);
	}
	return tmp;
}
function code(x, y, z)
	tmp = 0.0
	if (x <= 2.16e+15)
		tmp = Float64(Float64(fma(Float64(x - 0.5), log(x), Float64(-x)) + 0.91893853320467) + Float64(Float64(Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x));
	else
		tmp = Float64(Float64(Float64(Float64(-Float64(-log(x))) - 1.0) * x) + Float64(Float64(Float64(Float64(y + 0.0007936500793651) / x) * z) * z));
	end
	return tmp
end
code[x_, y_, z_] := If[LessEqual[x, 2.16e+15], N[(N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision] + (-x)), $MachinePrecision] + 0.91893853320467), $MachinePrecision] + N[(N[(N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision] + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision], N[(N[(N[((-(-N[Log[x], $MachinePrecision])) - 1.0), $MachinePrecision] * x), $MachinePrecision] + N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] / x), $MachinePrecision] * z), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x \leq 2.16 \cdot 10^{+15}:\\
\;\;\;\;\left(\mathsf{fma}\left(x - 0.5, \log x, -x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\

\mathbf{else}:\\
\;\;\;\;\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if x < 2.16e15

    1. Initial program 99.7%

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
    2. Step-by-step derivation
      1. lift--.f64N/A

        \[\leadsto \left(\color{blue}{\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right)} + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      2. lift-*.f64N/A

        \[\leadsto \left(\left(\color{blue}{\left(x - \frac{1}{2}\right) \cdot \log x} - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      3. lift--.f64N/A

        \[\leadsto \left(\left(\color{blue}{\left(x - \frac{1}{2}\right)} \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      4. lift-log.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \color{blue}{\log x} - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      5. negate-subN/A

        \[\leadsto \left(\color{blue}{\left(\left(x - \frac{1}{2}\right) \cdot \log x + \left(\mathsf{neg}\left(x\right)\right)\right)} + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      6. lower-fma.f64N/A

        \[\leadsto \left(\color{blue}{\mathsf{fma}\left(x - \frac{1}{2}, \log x, \mathsf{neg}\left(x\right)\right)} + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      7. lift--.f64N/A

        \[\leadsto \left(\mathsf{fma}\left(\color{blue}{x - \frac{1}{2}}, \log x, \mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      8. lift-log.f64N/A

        \[\leadsto \left(\mathsf{fma}\left(x - \frac{1}{2}, \color{blue}{\log x}, \mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      9. lower-neg.f6499.7

        \[\leadsto \left(\mathsf{fma}\left(x - 0.5, \log x, \color{blue}{-x}\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
    3. Applied rewrites99.7%

      \[\leadsto \left(\color{blue}{\mathsf{fma}\left(x - 0.5, \log x, -x\right)} + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]

    if 2.16e15 < x

    1. Initial program 87.3%

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
    2. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
      2. lift-+.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
      3. lift-*.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
      4. lift--.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      5. lift-*.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      6. lift-+.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      7. +-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
      8. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
      9. +-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
      10. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
      11. div-addN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
      12. metadata-evalN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      13. associate-*r/N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      14. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      15. lower-fma.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
      16. lower-/.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      17. associate-/l*N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
    3. Applied rewrites97.5%

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
    4. Taylor expanded in x around inf

      \[\leadsto \color{blue}{x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right)} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
    5. Step-by-step derivation
      1. negate-subN/A

        \[\leadsto x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      2. *-commutativeN/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      3. lower-*.f64N/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      4. lower--.f64N/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      5. mul-1-negN/A

        \[\leadsto \left(\left(\mathsf{neg}\left(\log \left(\frac{1}{x}\right)\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      6. lower-neg.f64N/A

        \[\leadsto \left(\left(-\log \left(\frac{1}{x}\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      7. log-recN/A

        \[\leadsto \left(\left(-\left(\mathsf{neg}\left(\log x\right)\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      8. lower-neg.f64N/A

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      9. lift-log.f6497.6

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right) \]
    6. Applied rewrites97.6%

      \[\leadsto \color{blue}{\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x} + \mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right) \]
    7. Taylor expanded in z around inf

      \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
    8. Applied rewrites99.6%

      \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \color{blue}{\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 2: 99.6% accurate, 0.9× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq 2.16 \cdot 10^{+15}:\\ \;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\ \end{array} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (if (<= x 2.16e+15)
   (+
    (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467)
    (/
     (+
      (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)
      0.083333333333333)
     x))
   (+
    (* (- (- (- (log x))) 1.0) x)
    (* (* (/ (+ y 0.0007936500793651) x) z) z))))
double code(double x, double y, double z) {
	double tmp;
	if (x <= 2.16e+15) {
		tmp = ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
	} else {
		tmp = ((-(-log(x)) - 1.0) * x) + ((((y + 0.0007936500793651) / x) * z) * z);
	}
	return tmp;
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

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

real(8) function code(x, y, z)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8) :: tmp
    if (x <= 2.16d+15) then
        tmp = ((((x - 0.5d0) * log(x)) - x) + 0.91893853320467d0) + ((((((y + 0.0007936500793651d0) * z) - 0.0027777777777778d0) * z) + 0.083333333333333d0) / x)
    else
        tmp = ((-(-log(x)) - 1.0d0) * x) + ((((y + 0.0007936500793651d0) / x) * z) * z)
    end if
    code = tmp
end function
public static double code(double x, double y, double z) {
	double tmp;
	if (x <= 2.16e+15) {
		tmp = ((((x - 0.5) * Math.log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
	} else {
		tmp = ((-(-Math.log(x)) - 1.0) * x) + ((((y + 0.0007936500793651) / x) * z) * z);
	}
	return tmp;
}
def code(x, y, z):
	tmp = 0
	if x <= 2.16e+15:
		tmp = ((((x - 0.5) * math.log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x)
	else:
		tmp = ((-(-math.log(x)) - 1.0) * x) + ((((y + 0.0007936500793651) / x) * z) * z)
	return tmp
function code(x, y, z)
	tmp = 0.0
	if (x <= 2.16e+15)
		tmp = Float64(Float64(Float64(Float64(Float64(x - 0.5) * log(x)) - x) + 0.91893853320467) + Float64(Float64(Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x));
	else
		tmp = Float64(Float64(Float64(Float64(-Float64(-log(x))) - 1.0) * x) + Float64(Float64(Float64(Float64(y + 0.0007936500793651) / x) * z) * z));
	end
	return tmp
end
function tmp_2 = code(x, y, z)
	tmp = 0.0;
	if (x <= 2.16e+15)
		tmp = ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
	else
		tmp = ((-(-log(x)) - 1.0) * x) + ((((y + 0.0007936500793651) / x) * z) * z);
	end
	tmp_2 = tmp;
end
code[x_, y_, z_] := If[LessEqual[x, 2.16e+15], N[(N[(N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision]), $MachinePrecision] - x), $MachinePrecision] + 0.91893853320467), $MachinePrecision] + N[(N[(N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision] + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision], N[(N[(N[((-(-N[Log[x], $MachinePrecision])) - 1.0), $MachinePrecision] * x), $MachinePrecision] + N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] / x), $MachinePrecision] * z), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x \leq 2.16 \cdot 10^{+15}:\\
\;\;\;\;\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\

\mathbf{else}:\\
\;\;\;\;\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if x < 2.16e15

    1. Initial program 99.7%

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]

    if 2.16e15 < x

    1. Initial program 87.3%

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
    2. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
      2. lift-+.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
      3. lift-*.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
      4. lift--.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      5. lift-*.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      6. lift-+.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      7. +-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
      8. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
      9. +-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
      10. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
      11. div-addN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
      12. metadata-evalN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      13. associate-*r/N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      14. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      15. lower-fma.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
      16. lower-/.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      17. associate-/l*N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
    3. Applied rewrites97.5%

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
    4. Taylor expanded in x around inf

      \[\leadsto \color{blue}{x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right)} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
    5. Step-by-step derivation
      1. negate-subN/A

        \[\leadsto x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      2. *-commutativeN/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      3. lower-*.f64N/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      4. lower--.f64N/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      5. mul-1-negN/A

        \[\leadsto \left(\left(\mathsf{neg}\left(\log \left(\frac{1}{x}\right)\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      6. lower-neg.f64N/A

        \[\leadsto \left(\left(-\log \left(\frac{1}{x}\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      7. log-recN/A

        \[\leadsto \left(\left(-\left(\mathsf{neg}\left(\log x\right)\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      8. lower-neg.f64N/A

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      9. lift-log.f6497.6

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right) \]
    6. Applied rewrites97.6%

      \[\leadsto \color{blue}{\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x} + \mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right) \]
    7. Taylor expanded in z around inf

      \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
    8. Applied rewrites99.6%

      \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \color{blue}{\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 3: 98.7% accurate, 1.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq 2.8:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\ \end{array} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (if (<= x 2.8)
   (/
    (fma
     (fma (+ 0.0007936500793651 y) z -0.0027777777777778)
     z
     0.083333333333333)
    x)
   (+
    (* (- (- (- (log x))) 1.0) x)
    (* (* (/ (+ y 0.0007936500793651) x) z) z))))
double code(double x, double y, double z) {
	double tmp;
	if (x <= 2.8) {
		tmp = fma(fma((0.0007936500793651 + y), z, -0.0027777777777778), z, 0.083333333333333) / x;
	} else {
		tmp = ((-(-log(x)) - 1.0) * x) + ((((y + 0.0007936500793651) / x) * z) * z);
	}
	return tmp;
}
function code(x, y, z)
	tmp = 0.0
	if (x <= 2.8)
		tmp = Float64(fma(fma(Float64(0.0007936500793651 + y), z, -0.0027777777777778), z, 0.083333333333333) / x);
	else
		tmp = Float64(Float64(Float64(Float64(-Float64(-log(x))) - 1.0) * x) + Float64(Float64(Float64(Float64(y + 0.0007936500793651) / x) * z) * z));
	end
	return tmp
end
code[x_, y_, z_] := If[LessEqual[x, 2.8], N[(N[(N[(N[(0.0007936500793651 + y), $MachinePrecision] * z + -0.0027777777777778), $MachinePrecision] * z + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision], N[(N[(N[((-(-N[Log[x], $MachinePrecision])) - 1.0), $MachinePrecision] * x), $MachinePrecision] + N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] / x), $MachinePrecision] * z), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x \leq 2.8:\\
\;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}\\

\mathbf{else}:\\
\;\;\;\;\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if x < 2.7999999999999998

    1. Initial program 99.7%

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
    2. Taylor expanded in x around 0

      \[\leadsto \color{blue}{\frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}} \]
    3. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
      2. *-commutativeN/A

        \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
      3. +-commutativeN/A

        \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
      4. +-commutativeN/A

        \[\leadsto \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      5. lower-/.f64N/A

        \[\leadsto \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
      6. lower-fma.f64N/A

        \[\leadsto \frac{\mathsf{fma}\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}, z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      7. negate-subN/A

        \[\leadsto \frac{\mathsf{fma}\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z + \left(\mathsf{neg}\left(\frac{13888888888889}{5000000000000000}\right)\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      8. +-commutativeN/A

        \[\leadsto \frac{\mathsf{fma}\left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z + \left(\mathsf{neg}\left(\frac{13888888888889}{5000000000000000}\right)\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      9. metadata-evalN/A

        \[\leadsto \frac{\mathsf{fma}\left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z + \frac{-13888888888889}{5000000000000000}, z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      10. lower-fma.f64N/A

        \[\leadsto \frac{\mathsf{fma}\left(\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      11. lower-+.f6498.6

        \[\leadsto \frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x} \]
    4. Applied rewrites98.6%

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}} \]

    if 2.7999999999999998 < x

    1. Initial program 87.9%

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
    2. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
      2. lift-+.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
      3. lift-*.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
      4. lift--.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      5. lift-*.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      6. lift-+.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      7. +-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
      8. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
      9. +-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
      10. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
      11. div-addN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
      12. metadata-evalN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      13. associate-*r/N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      14. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      15. lower-fma.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
      16. lower-/.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      17. associate-/l*N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
    3. Applied rewrites97.6%

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
    4. Taylor expanded in x around inf

      \[\leadsto \color{blue}{x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right)} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
    5. Step-by-step derivation
      1. negate-subN/A

        \[\leadsto x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      2. *-commutativeN/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      3. lower-*.f64N/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      4. lower--.f64N/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      5. mul-1-negN/A

        \[\leadsto \left(\left(\mathsf{neg}\left(\log \left(\frac{1}{x}\right)\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      6. lower-neg.f64N/A

        \[\leadsto \left(\left(-\log \left(\frac{1}{x}\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      7. log-recN/A

        \[\leadsto \left(\left(-\left(\mathsf{neg}\left(\log x\right)\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      8. lower-neg.f64N/A

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      9. lift-log.f6496.9

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right) \]
    6. Applied rewrites96.9%

      \[\leadsto \color{blue}{\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x} + \mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right) \]
    7. Taylor expanded in z around inf

      \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
    8. Applied rewrites98.8%

      \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \color{blue}{\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 4: 91.2% accurate, 1.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq 13000000:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{0.0007936500793651}{x} \cdot z\right) \cdot z\\ \end{array} \end{array} \]
(FPCore (x y z)
 :precision binary64
 (if (<= x 13000000.0)
   (/
    (fma
     (fma (+ 0.0007936500793651 y) z -0.0027777777777778)
     z
     0.083333333333333)
    x)
   (+ (* (- (- (- (log x))) 1.0) x) (* (* (/ 0.0007936500793651 x) z) z))))
double code(double x, double y, double z) {
	double tmp;
	if (x <= 13000000.0) {
		tmp = fma(fma((0.0007936500793651 + y), z, -0.0027777777777778), z, 0.083333333333333) / x;
	} else {
		tmp = ((-(-log(x)) - 1.0) * x) + (((0.0007936500793651 / x) * z) * z);
	}
	return tmp;
}
function code(x, y, z)
	tmp = 0.0
	if (x <= 13000000.0)
		tmp = Float64(fma(fma(Float64(0.0007936500793651 + y), z, -0.0027777777777778), z, 0.083333333333333) / x);
	else
		tmp = Float64(Float64(Float64(Float64(-Float64(-log(x))) - 1.0) * x) + Float64(Float64(Float64(0.0007936500793651 / x) * z) * z));
	end
	return tmp
end
code[x_, y_, z_] := If[LessEqual[x, 13000000.0], N[(N[(N[(N[(0.0007936500793651 + y), $MachinePrecision] * z + -0.0027777777777778), $MachinePrecision] * z + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision], N[(N[(N[((-(-N[Log[x], $MachinePrecision])) - 1.0), $MachinePrecision] * x), $MachinePrecision] + N[(N[(N[(0.0007936500793651 / x), $MachinePrecision] * z), $MachinePrecision] * z), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x \leq 13000000:\\
\;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}\\

\mathbf{else}:\\
\;\;\;\;\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{0.0007936500793651}{x} \cdot z\right) \cdot z\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if x < 1.3e7

    1. Initial program 99.7%

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
    2. Taylor expanded in x around 0

      \[\leadsto \color{blue}{\frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}} \]
    3. Step-by-step derivation
      1. *-commutativeN/A

        \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
      2. *-commutativeN/A

        \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
      3. +-commutativeN/A

        \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
      4. +-commutativeN/A

        \[\leadsto \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      5. lower-/.f64N/A

        \[\leadsto \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
      6. lower-fma.f64N/A

        \[\leadsto \frac{\mathsf{fma}\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}, z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      7. negate-subN/A

        \[\leadsto \frac{\mathsf{fma}\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z + \left(\mathsf{neg}\left(\frac{13888888888889}{5000000000000000}\right)\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      8. +-commutativeN/A

        \[\leadsto \frac{\mathsf{fma}\left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z + \left(\mathsf{neg}\left(\frac{13888888888889}{5000000000000000}\right)\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      9. metadata-evalN/A

        \[\leadsto \frac{\mathsf{fma}\left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z + \frac{-13888888888889}{5000000000000000}, z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      10. lower-fma.f64N/A

        \[\leadsto \frac{\mathsf{fma}\left(\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
      11. lower-+.f6497.9

        \[\leadsto \frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x} \]
    4. Applied rewrites97.9%

      \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}} \]

    if 1.3e7 < x

    1. Initial program 87.6%

      \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
    2. Step-by-step derivation
      1. lift-/.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
      2. lift-+.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
      3. lift-*.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
      4. lift--.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      5. lift-*.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      6. lift-+.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
      7. +-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
      8. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
      9. +-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
      10. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
      11. div-addN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
      12. metadata-evalN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      13. associate-*r/N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      14. *-commutativeN/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      15. lower-fma.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
      16. lower-/.f64N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
      17. associate-/l*N/A

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
    3. Applied rewrites97.6%

      \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
    4. Taylor expanded in x around inf

      \[\leadsto \color{blue}{x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right)} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
    5. Step-by-step derivation
      1. negate-subN/A

        \[\leadsto x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      2. *-commutativeN/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      3. lower-*.f64N/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      4. lower--.f64N/A

        \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      5. mul-1-negN/A

        \[\leadsto \left(\left(\mathsf{neg}\left(\log \left(\frac{1}{x}\right)\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      6. lower-neg.f64N/A

        \[\leadsto \left(\left(-\log \left(\frac{1}{x}\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      7. log-recN/A

        \[\leadsto \left(\left(-\left(\mathsf{neg}\left(\log x\right)\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      8. lower-neg.f64N/A

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, z \cdot \frac{\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right)}{x}\right) \]
      9. lift-log.f6497.3

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right) \]
    6. Applied rewrites97.3%

      \[\leadsto \color{blue}{\left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x} + \mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right) \]
    7. Taylor expanded in z around inf

      \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
    8. Applied rewrites99.3%

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

      \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{\frac{7936500793651}{10000000000000000}}{x} \cdot z\right) \cdot z \]
    10. Step-by-step derivation
      1. Applied rewrites84.0%

        \[\leadsto \left(\left(-\left(-\log x\right)\right) - 1\right) \cdot x + \left(\frac{0.0007936500793651}{x} \cdot z\right) \cdot z \]
    11. Recombined 2 regimes into one program.
    12. Add Preprocessing

    Alternative 5: 87.0% accurate, 0.4× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\ \mathbf{if}\;t\_0 \leq -5 \cdot 10^{+245}:\\ \;\;\;\;y \cdot \frac{z \cdot z}{x}\\ \mathbf{elif}\;t\_0 \leq 10^{+305}:\\ \;\;\;\;\left(\mathsf{fma}\left(x - 0.5, \log x, -x\right) + 0.91893853320467\right) + \frac{0.083333333333333}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\ \end{array} \end{array} \]
    (FPCore (x y z)
     :precision binary64
     (let* ((t_0
             (+
              (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467)
              (/
               (+
                (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)
                0.083333333333333)
               x))))
       (if (<= t_0 -5e+245)
         (* y (/ (* z z) x))
         (if (<= t_0 1e+305)
           (+
            (+ (fma (- x 0.5) (log x) (- x)) 0.91893853320467)
            (/ 0.083333333333333 x))
           (* (* (/ (+ y 0.0007936500793651) x) z) z)))))
    double code(double x, double y, double z) {
    	double t_0 = ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
    	double tmp;
    	if (t_0 <= -5e+245) {
    		tmp = y * ((z * z) / x);
    	} else if (t_0 <= 1e+305) {
    		tmp = (fma((x - 0.5), log(x), -x) + 0.91893853320467) + (0.083333333333333 / x);
    	} else {
    		tmp = (((y + 0.0007936500793651) / x) * z) * z;
    	}
    	return tmp;
    }
    
    function code(x, y, z)
    	t_0 = Float64(Float64(Float64(Float64(Float64(x - 0.5) * log(x)) - x) + 0.91893853320467) + Float64(Float64(Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x))
    	tmp = 0.0
    	if (t_0 <= -5e+245)
    		tmp = Float64(y * Float64(Float64(z * z) / x));
    	elseif (t_0 <= 1e+305)
    		tmp = Float64(Float64(fma(Float64(x - 0.5), log(x), Float64(-x)) + 0.91893853320467) + Float64(0.083333333333333 / x));
    	else
    		tmp = Float64(Float64(Float64(Float64(y + 0.0007936500793651) / x) * z) * z);
    	end
    	return tmp
    end
    
    code[x_, y_, z_] := Block[{t$95$0 = N[(N[(N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision]), $MachinePrecision] - x), $MachinePrecision] + 0.91893853320467), $MachinePrecision] + N[(N[(N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision] + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -5e+245], N[(y * N[(N[(z * z), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision] + (-x)), $MachinePrecision] + 0.91893853320467), $MachinePrecision] + N[(0.083333333333333 / x), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] / x), $MachinePrecision] * z), $MachinePrecision] * z), $MachinePrecision]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\
    \mathbf{if}\;t\_0 \leq -5 \cdot 10^{+245}:\\
    \;\;\;\;y \cdot \frac{z \cdot z}{x}\\
    
    \mathbf{elif}\;t\_0 \leq 10^{+305}:\\
    \;\;\;\;\left(\mathsf{fma}\left(x - 0.5, \log x, -x\right) + 0.91893853320467\right) + \frac{0.083333333333333}{x}\\
    
    \mathbf{else}:\\
    \;\;\;\;\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x)) < -5.00000000000000034e245

      1. Initial program 85.6%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Taylor expanded in y around inf

        \[\leadsto \color{blue}{\frac{y \cdot {z}^{2}}{x}} \]
      3. Step-by-step derivation
        1. lower-/.f64N/A

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

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        3. lower-*.f64N/A

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        4. unpow2N/A

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        5. lower-*.f6485.2

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
      4. Applied rewrites85.2%

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

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

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        3. lift-*.f64N/A

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        4. pow2N/A

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        5. *-commutativeN/A

          \[\leadsto \frac{y \cdot {z}^{2}}{x} \]
        6. associate-/l*N/A

          \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        7. lower-*.f64N/A

          \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        8. lower-/.f64N/A

          \[\leadsto y \cdot \frac{{z}^{2}}{\color{blue}{x}} \]
        9. pow2N/A

          \[\leadsto y \cdot \frac{z \cdot z}{x} \]
        10. lift-*.f6489.2

          \[\leadsto y \cdot \frac{z \cdot z}{x} \]
      6. Applied rewrites89.2%

        \[\leadsto y \cdot \color{blue}{\frac{z \cdot z}{x}} \]

      if -5.00000000000000034e245 < (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x)) < 9.9999999999999994e304

      1. Initial program 99.4%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Step-by-step derivation
        1. lift--.f64N/A

          \[\leadsto \left(\color{blue}{\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right)} + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        2. lift-*.f64N/A

          \[\leadsto \left(\left(\color{blue}{\left(x - \frac{1}{2}\right) \cdot \log x} - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        3. lift--.f64N/A

          \[\leadsto \left(\left(\color{blue}{\left(x - \frac{1}{2}\right)} \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        4. lift-log.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \color{blue}{\log x} - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        5. negate-subN/A

          \[\leadsto \left(\color{blue}{\left(\left(x - \frac{1}{2}\right) \cdot \log x + \left(\mathsf{neg}\left(x\right)\right)\right)} + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        6. lower-fma.f64N/A

          \[\leadsto \left(\color{blue}{\mathsf{fma}\left(x - \frac{1}{2}, \log x, \mathsf{neg}\left(x\right)\right)} + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        7. lift--.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\color{blue}{x - \frac{1}{2}}, \log x, \mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        8. lift-log.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(x - \frac{1}{2}, \color{blue}{\log x}, \mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        9. lower-neg.f6499.5

          \[\leadsto \left(\mathsf{fma}\left(x - 0.5, \log x, \color{blue}{-x}\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      3. Applied rewrites99.5%

        \[\leadsto \left(\color{blue}{\mathsf{fma}\left(x - 0.5, \log x, -x\right)} + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      4. Taylor expanded in z around 0

        \[\leadsto \left(\mathsf{fma}\left(x - \frac{1}{2}, \log x, -x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000}}}{x} \]
      5. Applied rewrites85.9%

        \[\leadsto \left(\mathsf{fma}\left(x - 0.5, \log x, -x\right) + 0.91893853320467\right) + \frac{\color{blue}{0.083333333333333}}{x} \]

      if 9.9999999999999994e304 < (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x))

      1. Initial program 84.7%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Step-by-step derivation
        1. lift-/.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
        2. lift-+.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
        3. lift-*.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
        4. lift--.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        5. lift-*.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        6. lift-+.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        7. +-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
        8. *-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
        9. +-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
        10. *-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
        11. div-addN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
        12. metadata-evalN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
        13. associate-*r/N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
        14. *-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
        15. lower-fma.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
        16. lower-/.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
        17. associate-/l*N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
      3. Applied rewrites98.2%

        \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
      4. Taylor expanded in z around inf

        \[\leadsto \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
      5. Applied rewrites83.7%

        \[\leadsto \color{blue}{\frac{y + 0.0007936500793651}{x} \cdot \left(z \cdot z\right)} \]
      6. Applied rewrites88.6%

        \[\leadsto \color{blue}{\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z} \]
    3. Recombined 3 regimes into one program.
    4. Add Preprocessing

    Alternative 6: 87.0% accurate, 0.4× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\ \mathbf{if}\;t\_0 \leq -5 \cdot 10^{+245}:\\ \;\;\;\;y \cdot \frac{z \cdot z}{x}\\ \mathbf{elif}\;t\_0 \leq 10^{+305}:\\ \;\;\;\;\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + \left(0.91893853320467 - x\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\ \end{array} \end{array} \]
    (FPCore (x y z)
     :precision binary64
     (let* ((t_0
             (+
              (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467)
              (/
               (+
                (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)
                0.083333333333333)
               x))))
       (if (<= t_0 -5e+245)
         (* y (/ (* z z) x))
         (if (<= t_0 1e+305)
           (+
            (fma (log x) (- x 0.5) (/ 0.083333333333333 x))
            (- 0.91893853320467 x))
           (* (* (/ (+ y 0.0007936500793651) x) z) z)))))
    double code(double x, double y, double z) {
    	double t_0 = ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
    	double tmp;
    	if (t_0 <= -5e+245) {
    		tmp = y * ((z * z) / x);
    	} else if (t_0 <= 1e+305) {
    		tmp = fma(log(x), (x - 0.5), (0.083333333333333 / x)) + (0.91893853320467 - x);
    	} else {
    		tmp = (((y + 0.0007936500793651) / x) * z) * z;
    	}
    	return tmp;
    }
    
    function code(x, y, z)
    	t_0 = Float64(Float64(Float64(Float64(Float64(x - 0.5) * log(x)) - x) + 0.91893853320467) + Float64(Float64(Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x))
    	tmp = 0.0
    	if (t_0 <= -5e+245)
    		tmp = Float64(y * Float64(Float64(z * z) / x));
    	elseif (t_0 <= 1e+305)
    		tmp = Float64(fma(log(x), Float64(x - 0.5), Float64(0.083333333333333 / x)) + Float64(0.91893853320467 - x));
    	else
    		tmp = Float64(Float64(Float64(Float64(y + 0.0007936500793651) / x) * z) * z);
    	end
    	return tmp
    end
    
    code[x_, y_, z_] := Block[{t$95$0 = N[(N[(N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision]), $MachinePrecision] - x), $MachinePrecision] + 0.91893853320467), $MachinePrecision] + N[(N[(N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision] + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -5e+245], N[(y * N[(N[(z * z), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(N[(N[Log[x], $MachinePrecision] * N[(x - 0.5), $MachinePrecision] + N[(0.083333333333333 / x), $MachinePrecision]), $MachinePrecision] + N[(0.91893853320467 - x), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] / x), $MachinePrecision] * z), $MachinePrecision] * z), $MachinePrecision]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\
    \mathbf{if}\;t\_0 \leq -5 \cdot 10^{+245}:\\
    \;\;\;\;y \cdot \frac{z \cdot z}{x}\\
    
    \mathbf{elif}\;t\_0 \leq 10^{+305}:\\
    \;\;\;\;\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + \left(0.91893853320467 - x\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x)) < -5.00000000000000034e245

      1. Initial program 85.6%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Taylor expanded in y around inf

        \[\leadsto \color{blue}{\frac{y \cdot {z}^{2}}{x}} \]
      3. Step-by-step derivation
        1. lower-/.f64N/A

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

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        3. lower-*.f64N/A

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        4. unpow2N/A

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        5. lower-*.f6485.2

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
      4. Applied rewrites85.2%

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

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

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        3. lift-*.f64N/A

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        4. pow2N/A

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        5. *-commutativeN/A

          \[\leadsto \frac{y \cdot {z}^{2}}{x} \]
        6. associate-/l*N/A

          \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        7. lower-*.f64N/A

          \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        8. lower-/.f64N/A

          \[\leadsto y \cdot \frac{{z}^{2}}{\color{blue}{x}} \]
        9. pow2N/A

          \[\leadsto y \cdot \frac{z \cdot z}{x} \]
        10. lift-*.f6489.2

          \[\leadsto y \cdot \frac{z \cdot z}{x} \]
      6. Applied rewrites89.2%

        \[\leadsto y \cdot \color{blue}{\frac{z \cdot z}{x}} \]

      if -5.00000000000000034e245 < (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x)) < 9.9999999999999994e304

      1. Initial program 99.4%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Taylor expanded in z around 0

        \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
      3. Step-by-step derivation
        1. lower--.f64N/A

          \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
        2. +-commutativeN/A

          \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        3. lower-+.f64N/A

          \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        4. +-commutativeN/A

          \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        5. lower-fma.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        6. lift-log.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        7. lift--.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        8. associate-*r/N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        9. metadata-evalN/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        10. lower-/.f6485.8

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
      4. Applied rewrites85.8%

        \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
      5. Step-by-step derivation
        1. lift--.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - \color{blue}{x} \]
        2. lift-+.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        3. lift--.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        4. lift-/.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        5. lift-fma.f64N/A

          \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        6. lift-log.f64N/A

          \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        7. associate--l+N/A

          \[\leadsto \left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \color{blue}{\left(\frac{91893853320467}{100000000000000} - x\right)} \]
        8. metadata-evalN/A

          \[\leadsto \left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \left(\frac{91893853320467}{100000000000000} - x\right) \]
        9. associate-*r/N/A

          \[\leadsto \left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \left(\frac{91893853320467}{100000000000000} - x\right) \]
        10. +-commutativeN/A

          \[\leadsto \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \left(\color{blue}{\frac{91893853320467}{100000000000000}} - x\right) \]
        11. lower-+.f64N/A

          \[\leadsto \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \color{blue}{\left(\frac{91893853320467}{100000000000000} - x\right)} \]
      6. Applied rewrites85.8%

        \[\leadsto \mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + \color{blue}{\left(0.91893853320467 - x\right)} \]

      if 9.9999999999999994e304 < (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x))

      1. Initial program 84.7%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Step-by-step derivation
        1. lift-/.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
        2. lift-+.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
        3. lift-*.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
        4. lift--.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        5. lift-*.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        6. lift-+.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
        7. +-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
        8. *-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
        9. +-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
        10. *-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
        11. div-addN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
        12. metadata-evalN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
        13. associate-*r/N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
        14. *-commutativeN/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
        15. lower-fma.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
        16. lower-/.f64N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
        17. associate-/l*N/A

          \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
      3. Applied rewrites98.2%

        \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
      4. Taylor expanded in z around inf

        \[\leadsto \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
      5. Applied rewrites83.7%

        \[\leadsto \color{blue}{\frac{y + 0.0007936500793651}{x} \cdot \left(z \cdot z\right)} \]
      6. Applied rewrites88.6%

        \[\leadsto \color{blue}{\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z} \]
    3. Recombined 3 regimes into one program.
    4. Add Preprocessing

    Alternative 7: 86.2% accurate, 0.4× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\ \mathbf{if}\;t\_0 \leq -5 \cdot 10^{+245}:\\ \;\;\;\;y \cdot \frac{z \cdot z}{x}\\ \mathbf{elif}\;t\_0 \leq 10^{+305}:\\ \;\;\;\;\mathsf{fma}\left(x - 0.5, \log x, -x\right) + \frac{0.083333333333333}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\ \end{array} \end{array} \]
    (FPCore (x y z)
     :precision binary64
     (let* ((t_0
             (+
              (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467)
              (/
               (+
                (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)
                0.083333333333333)
               x))))
       (if (<= t_0 -5e+245)
         (* y (/ (* z z) x))
         (if (<= t_0 1e+305)
           (+ (fma (- x 0.5) (log x) (- x)) (/ 0.083333333333333 x))
           (* (* (/ (+ y 0.0007936500793651) x) z) z)))))
    double code(double x, double y, double z) {
    	double t_0 = ((((x - 0.5) * log(x)) - x) + 0.91893853320467) + ((((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x);
    	double tmp;
    	if (t_0 <= -5e+245) {
    		tmp = y * ((z * z) / x);
    	} else if (t_0 <= 1e+305) {
    		tmp = fma((x - 0.5), log(x), -x) + (0.083333333333333 / x);
    	} else {
    		tmp = (((y + 0.0007936500793651) / x) * z) * z;
    	}
    	return tmp;
    }
    
    function code(x, y, z)
    	t_0 = Float64(Float64(Float64(Float64(Float64(x - 0.5) * log(x)) - x) + 0.91893853320467) + Float64(Float64(Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333) / x))
    	tmp = 0.0
    	if (t_0 <= -5e+245)
    		tmp = Float64(y * Float64(Float64(z * z) / x));
    	elseif (t_0 <= 1e+305)
    		tmp = Float64(fma(Float64(x - 0.5), log(x), Float64(-x)) + Float64(0.083333333333333 / x));
    	else
    		tmp = Float64(Float64(Float64(Float64(y + 0.0007936500793651) / x) * z) * z);
    	end
    	return tmp
    end
    
    code[x_, y_, z_] := Block[{t$95$0 = N[(N[(N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision]), $MachinePrecision] - x), $MachinePrecision] + 0.91893853320467), $MachinePrecision] + N[(N[(N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision] + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, -5e+245], N[(y * N[(N[(z * z), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 1e+305], N[(N[(N[(x - 0.5), $MachinePrecision] * N[Log[x], $MachinePrecision] + (-x)), $MachinePrecision] + N[(0.083333333333333 / x), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] / x), $MachinePrecision] * z), $MachinePrecision] * z), $MachinePrecision]]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x}\\
    \mathbf{if}\;t\_0 \leq -5 \cdot 10^{+245}:\\
    \;\;\;\;y \cdot \frac{z \cdot z}{x}\\
    
    \mathbf{elif}\;t\_0 \leq 10^{+305}:\\
    \;\;\;\;\mathsf{fma}\left(x - 0.5, \log x, -x\right) + \frac{0.083333333333333}{x}\\
    
    \mathbf{else}:\\
    \;\;\;\;\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 3 regimes
    2. if (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x)) < -5.00000000000000034e245

      1. Initial program 85.6%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Taylor expanded in y around inf

        \[\leadsto \color{blue}{\frac{y \cdot {z}^{2}}{x}} \]
      3. Step-by-step derivation
        1. lower-/.f64N/A

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

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        3. lower-*.f64N/A

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        4. unpow2N/A

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        5. lower-*.f6485.2

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
      4. Applied rewrites85.2%

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

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

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        3. lift-*.f64N/A

          \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        4. pow2N/A

          \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
        5. *-commutativeN/A

          \[\leadsto \frac{y \cdot {z}^{2}}{x} \]
        6. associate-/l*N/A

          \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        7. lower-*.f64N/A

          \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        8. lower-/.f64N/A

          \[\leadsto y \cdot \frac{{z}^{2}}{\color{blue}{x}} \]
        9. pow2N/A

          \[\leadsto y \cdot \frac{z \cdot z}{x} \]
        10. lift-*.f6489.2

          \[\leadsto y \cdot \frac{z \cdot z}{x} \]
      6. Applied rewrites89.2%

        \[\leadsto y \cdot \color{blue}{\frac{z \cdot z}{x}} \]

      if -5.00000000000000034e245 < (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x)) < 9.9999999999999994e304

      1. Initial program 99.4%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Taylor expanded in z around 0

        \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000}}}{x} \]
      3. Step-by-step derivation
        1. Applied rewrites85.8%

          \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\color{blue}{0.083333333333333}}{x} \]
        2. Step-by-step derivation
          1. lift-+.f64N/A

            \[\leadsto \color{blue}{\left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right)} + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          2. lift--.f64N/A

            \[\leadsto \left(\color{blue}{\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right)} + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \left(\left(\color{blue}{\left(x - \frac{1}{2}\right) \cdot \log x} - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          4. lift--.f64N/A

            \[\leadsto \left(\left(\color{blue}{\left(x - \frac{1}{2}\right)} \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          5. lift-log.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \color{blue}{\log x} - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          6. negate-subN/A

            \[\leadsto \left(\color{blue}{\left(\left(x - \frac{1}{2}\right) \cdot \log x + \left(\mathsf{neg}\left(x\right)\right)\right)} + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          7. associate-+l+N/A

            \[\leadsto \color{blue}{\left(\left(x - \frac{1}{2}\right) \cdot \log x + \left(\left(\mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}\right)\right)} + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          8. lower-fma.f64N/A

            \[\leadsto \color{blue}{\mathsf{fma}\left(x - \frac{1}{2}, \log x, \left(\mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}\right)} + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          9. lift--.f64N/A

            \[\leadsto \mathsf{fma}\left(\color{blue}{x - \frac{1}{2}}, \log x, \left(\mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          10. lift-log.f64N/A

            \[\leadsto \mathsf{fma}\left(x - \frac{1}{2}, \color{blue}{\log x}, \left(\mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          11. lower-+.f64N/A

            \[\leadsto \mathsf{fma}\left(x - \frac{1}{2}, \log x, \color{blue}{\left(\mathsf{neg}\left(x\right)\right) + \frac{91893853320467}{100000000000000}}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          12. lower-neg.f6485.9

            \[\leadsto \mathsf{fma}\left(x - 0.5, \log x, \color{blue}{\left(-x\right)} + 0.91893853320467\right) + \frac{0.083333333333333}{x} \]
        3. Applied rewrites85.9%

          \[\leadsto \color{blue}{\mathsf{fma}\left(x - 0.5, \log x, \left(-x\right) + 0.91893853320467\right)} + \frac{0.083333333333333}{x} \]
        4. Taylor expanded in x around inf

          \[\leadsto \mathsf{fma}\left(x - \frac{1}{2}, \log x, \color{blue}{-1 \cdot x}\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
        5. Step-by-step derivation
          1. mul-1-negN/A

            \[\leadsto \mathsf{fma}\left(x - \frac{1}{2}, \log x, \mathsf{neg}\left(x\right)\right) + \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          2. lift-neg.f6484.6

            \[\leadsto \mathsf{fma}\left(x - 0.5, \log x, -x\right) + \frac{0.083333333333333}{x} \]
        6. Applied rewrites84.6%

          \[\leadsto \mathsf{fma}\left(x - 0.5, \log x, \color{blue}{-x}\right) + \frac{0.083333333333333}{x} \]

        if 9.9999999999999994e304 < (+.f64 (+.f64 (-.f64 (*.f64 (-.f64 x #s(literal 1/2 binary64)) (log.f64 x)) x) #s(literal 91893853320467/100000000000000 binary64)) (/.f64 (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) x))

        1. Initial program 84.7%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
          2. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
          4. lift--.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          5. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          6. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          7. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
          8. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
          9. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          10. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          11. div-addN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          12. metadata-evalN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          13. associate-*r/N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          14. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          15. lower-fma.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          16. lower-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          17. associate-/l*N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
        3. Applied rewrites98.2%

          \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
        4. Taylor expanded in z around inf

          \[\leadsto \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
        5. Applied rewrites83.7%

          \[\leadsto \color{blue}{\frac{y + 0.0007936500793651}{x} \cdot \left(z \cdot z\right)} \]
        6. Applied rewrites88.6%

          \[\leadsto \color{blue}{\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z} \]
      4. Recombined 3 regimes into one program.
      5. Add Preprocessing

      Alternative 8: 84.6% accurate, 1.8× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x \leq 500000000000:\\ \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}\\ \mathbf{else}:\\ \;\;\;\;\left(\log x - 1\right) \cdot x\\ \end{array} \end{array} \]
      (FPCore (x y z)
       :precision binary64
       (if (<= x 500000000000.0)
         (/
          (fma
           (fma (+ 0.0007936500793651 y) z -0.0027777777777778)
           z
           0.083333333333333)
          x)
         (* (- (log x) 1.0) x)))
      double code(double x, double y, double z) {
      	double tmp;
      	if (x <= 500000000000.0) {
      		tmp = fma(fma((0.0007936500793651 + y), z, -0.0027777777777778), z, 0.083333333333333) / x;
      	} else {
      		tmp = (log(x) - 1.0) * x;
      	}
      	return tmp;
      }
      
      function code(x, y, z)
      	tmp = 0.0
      	if (x <= 500000000000.0)
      		tmp = Float64(fma(fma(Float64(0.0007936500793651 + y), z, -0.0027777777777778), z, 0.083333333333333) / x);
      	else
      		tmp = Float64(Float64(log(x) - 1.0) * x);
      	end
      	return tmp
      end
      
      code[x_, y_, z_] := If[LessEqual[x, 500000000000.0], N[(N[(N[(N[(0.0007936500793651 + y), $MachinePrecision] * z + -0.0027777777777778), $MachinePrecision] * z + 0.083333333333333), $MachinePrecision] / x), $MachinePrecision], N[(N[(N[Log[x], $MachinePrecision] - 1.0), $MachinePrecision] * x), $MachinePrecision]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      \mathbf{if}\;x \leq 500000000000:\\
      \;\;\;\;\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}\\
      
      \mathbf{else}:\\
      \;\;\;\;\left(\log x - 1\right) \cdot x\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if x < 5e11

        1. Initial program 99.7%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}} \]
        3. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
          2. *-commutativeN/A

            \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
          3. +-commutativeN/A

            \[\leadsto \frac{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}{x} \]
          4. +-commutativeN/A

            \[\leadsto \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          5. lower-/.f64N/A

            \[\leadsto \frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
          6. lower-fma.f64N/A

            \[\leadsto \frac{\mathsf{fma}\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}, z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
          7. negate-subN/A

            \[\leadsto \frac{\mathsf{fma}\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z + \left(\mathsf{neg}\left(\frac{13888888888889}{5000000000000000}\right)\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
          8. +-commutativeN/A

            \[\leadsto \frac{\mathsf{fma}\left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z + \left(\mathsf{neg}\left(\frac{13888888888889}{5000000000000000}\right)\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
          9. metadata-evalN/A

            \[\leadsto \frac{\mathsf{fma}\left(\left(\frac{7936500793651}{10000000000000000} + y\right) \cdot z + \frac{-13888888888889}{5000000000000000}, z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
          10. lower-fma.f64N/A

            \[\leadsto \frac{\mathsf{fma}\left(\mathsf{fma}\left(\frac{7936500793651}{10000000000000000} + y, z, \frac{-13888888888889}{5000000000000000}\right), z, \frac{83333333333333}{1000000000000000}\right)}{x} \]
          11. lower-+.f6497.2

            \[\leadsto \frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x} \]
        4. Applied rewrites97.2%

          \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right), z, 0.083333333333333\right)}{x}} \]

        if 5e11 < x

        1. Initial program 87.4%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in x around inf

          \[\leadsto \color{blue}{x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right)} \]
        3. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} \]
          2. log-pow-revN/A

            \[\leadsto \left(\log \left({\left(\frac{1}{x}\right)}^{-1}\right) - 1\right) \cdot x \]
          3. inv-powN/A

            \[\leadsto \left(\log \left({\left({x}^{-1}\right)}^{-1}\right) - 1\right) \cdot x \]
          4. pow-powN/A

            \[\leadsto \left(\log \left({x}^{\left(-1 \cdot -1\right)}\right) - 1\right) \cdot x \]
          5. metadata-evalN/A

            \[\leadsto \left(\log \left({x}^{1}\right) - 1\right) \cdot x \]
          6. unpow1N/A

            \[\leadsto \left(\log x - 1\right) \cdot x \]
          7. lower-*.f64N/A

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

            \[\leadsto \left(\log x - 1\right) \cdot x \]
          9. lift-log.f6470.8

            \[\leadsto \left(\log x - 1\right) \cdot x \]
        4. Applied rewrites70.8%

          \[\leadsto \color{blue}{\left(\log x - 1\right) \cdot x} \]
      3. Recombined 2 regimes into one program.
      4. Add Preprocessing

      Alternative 9: 64.6% accurate, 0.5× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\ t_1 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z\\ t_2 := \log x \cdot x - x\\ \mathbf{if}\;t\_1 \leq -5 \cdot 10^{+197}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq -5 \cdot 10^{-201}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-18}:\\ \;\;\;\;\frac{0.083333333333333}{x}\\ \mathbf{elif}\;t\_1 \leq 10^{+107}:\\ \;\;\;\;t\_2\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (x y z)
       :precision binary64
       (let* ((t_0 (* (* (/ (+ y 0.0007936500793651) x) z) z))
              (t_1 (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z))
              (t_2 (- (* (log x) x) x)))
         (if (<= t_1 -5e+197)
           t_0
           (if (<= t_1 -5e-201)
             t_2
             (if (<= t_1 5e-18)
               (/ 0.083333333333333 x)
               (if (<= t_1 1e+107) t_2 t_0))))))
      double code(double x, double y, double z) {
      	double t_0 = (((y + 0.0007936500793651) / x) * z) * z;
      	double t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	double t_2 = (log(x) * x) - x;
      	double tmp;
      	if (t_1 <= -5e+197) {
      		tmp = t_0;
      	} else if (t_1 <= -5e-201) {
      		tmp = t_2;
      	} else if (t_1 <= 5e-18) {
      		tmp = 0.083333333333333 / x;
      	} else if (t_1 <= 1e+107) {
      		tmp = t_2;
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      module fmin_fmax_functions
          implicit none
          private
          public fmax
          public fmin
      
          interface fmax
              module procedure fmax88
              module procedure fmax44
              module procedure fmax84
              module procedure fmax48
          end interface
          interface fmin
              module procedure fmin88
              module procedure fmin44
              module procedure fmin84
              module procedure fmin48
          end interface
      contains
          real(8) function fmax88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(4) function fmax44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(8) function fmax84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmax48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
          end function
          real(8) function fmin88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(4) function fmin44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(8) function fmin84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmin48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
          end function
      end module
      
      real(8) function code(x, y, z)
      use fmin_fmax_functions
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          real(8) :: t_0
          real(8) :: t_1
          real(8) :: t_2
          real(8) :: tmp
          t_0 = (((y + 0.0007936500793651d0) / x) * z) * z
          t_1 = (((y + 0.0007936500793651d0) * z) - 0.0027777777777778d0) * z
          t_2 = (log(x) * x) - x
          if (t_1 <= (-5d+197)) then
              tmp = t_0
          else if (t_1 <= (-5d-201)) then
              tmp = t_2
          else if (t_1 <= 5d-18) then
              tmp = 0.083333333333333d0 / x
          else if (t_1 <= 1d+107) then
              tmp = t_2
          else
              tmp = t_0
          end if
          code = tmp
      end function
      
      public static double code(double x, double y, double z) {
      	double t_0 = (((y + 0.0007936500793651) / x) * z) * z;
      	double t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	double t_2 = (Math.log(x) * x) - x;
      	double tmp;
      	if (t_1 <= -5e+197) {
      		tmp = t_0;
      	} else if (t_1 <= -5e-201) {
      		tmp = t_2;
      	} else if (t_1 <= 5e-18) {
      		tmp = 0.083333333333333 / x;
      	} else if (t_1 <= 1e+107) {
      		tmp = t_2;
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      def code(x, y, z):
      	t_0 = (((y + 0.0007936500793651) / x) * z) * z
      	t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z
      	t_2 = (math.log(x) * x) - x
      	tmp = 0
      	if t_1 <= -5e+197:
      		tmp = t_0
      	elif t_1 <= -5e-201:
      		tmp = t_2
      	elif t_1 <= 5e-18:
      		tmp = 0.083333333333333 / x
      	elif t_1 <= 1e+107:
      		tmp = t_2
      	else:
      		tmp = t_0
      	return tmp
      
      function code(x, y, z)
      	t_0 = Float64(Float64(Float64(Float64(y + 0.0007936500793651) / x) * z) * z)
      	t_1 = Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z)
      	t_2 = Float64(Float64(log(x) * x) - x)
      	tmp = 0.0
      	if (t_1 <= -5e+197)
      		tmp = t_0;
      	elseif (t_1 <= -5e-201)
      		tmp = t_2;
      	elseif (t_1 <= 5e-18)
      		tmp = Float64(0.083333333333333 / x);
      	elseif (t_1 <= 1e+107)
      		tmp = t_2;
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      function tmp_2 = code(x, y, z)
      	t_0 = (((y + 0.0007936500793651) / x) * z) * z;
      	t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	t_2 = (log(x) * x) - x;
      	tmp = 0.0;
      	if (t_1 <= -5e+197)
      		tmp = t_0;
      	elseif (t_1 <= -5e-201)
      		tmp = t_2;
      	elseif (t_1 <= 5e-18)
      		tmp = 0.083333333333333 / x;
      	elseif (t_1 <= 1e+107)
      		tmp = t_2;
      	else
      		tmp = t_0;
      	end
      	tmp_2 = tmp;
      end
      
      code[x_, y_, z_] := Block[{t$95$0 = N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] / x), $MachinePrecision] * z), $MachinePrecision] * z), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[Log[x], $MachinePrecision] * x), $MachinePrecision] - x), $MachinePrecision]}, If[LessEqual[t$95$1, -5e+197], t$95$0, If[LessEqual[t$95$1, -5e-201], t$95$2, If[LessEqual[t$95$1, 5e-18], N[(0.083333333333333 / x), $MachinePrecision], If[LessEqual[t$95$1, 1e+107], t$95$2, t$95$0]]]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z\\
      t_1 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z\\
      t_2 := \log x \cdot x - x\\
      \mathbf{if}\;t\_1 \leq -5 \cdot 10^{+197}:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;t\_1 \leq -5 \cdot 10^{-201}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-18}:\\
      \;\;\;\;\frac{0.083333333333333}{x}\\
      
      \mathbf{elif}\;t\_1 \leq 10^{+107}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < -5.00000000000000009e197 or 9.9999999999999997e106 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z)

        1. Initial program 87.0%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
          2. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
          4. lift--.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          5. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          6. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          7. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
          8. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
          9. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          10. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          11. div-addN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          12. metadata-evalN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          13. associate-*r/N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          14. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          15. lower-fma.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          16. lower-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          17. associate-/l*N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
        3. Applied rewrites97.5%

          \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
        4. Taylor expanded in z around inf

          \[\leadsto \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
        5. Applied rewrites79.1%

          \[\leadsto \color{blue}{\frac{y + 0.0007936500793651}{x} \cdot \left(z \cdot z\right)} \]
        6. Applied rewrites82.5%

          \[\leadsto \color{blue}{\left(\frac{y + 0.0007936500793651}{x} \cdot z\right) \cdot z} \]

        if -5.00000000000000009e197 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < -4.9999999999999999e-201 or 5.00000000000000036e-18 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < 9.9999999999999997e106

        1. Initial program 99.5%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in z around 0

          \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
          2. +-commutativeN/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          3. lower-+.f64N/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          4. +-commutativeN/A

            \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          6. lift-log.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          7. lift--.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          8. associate-*r/N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          9. metadata-evalN/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          10. lower-/.f6476.1

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
        4. Applied rewrites76.1%

          \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
        5. Taylor expanded in x around inf

          \[\leadsto -1 \cdot \left(x \cdot \log \left(\frac{1}{x}\right)\right) - x \]
        6. Step-by-step derivation
          1. associate-*r*N/A

            \[\leadsto \left(-1 \cdot x\right) \cdot \log \left(\frac{1}{x}\right) - x \]
          2. mul-1-negN/A

            \[\leadsto \left(\mathsf{neg}\left(x\right)\right) \cdot \log \left(\frac{1}{x}\right) - x \]
          3. lift-neg.f64N/A

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

            \[\leadsto \left(-x\right) \cdot \log \left(\frac{1}{x}\right) - x \]
          5. log-recN/A

            \[\leadsto \left(-x\right) \cdot \left(\mathsf{neg}\left(\log x\right)\right) - x \]
          6. lower-neg.f64N/A

            \[\leadsto \left(-x\right) \cdot \left(-\log x\right) - x \]
          7. lift-log.f6448.1

            \[\leadsto \left(-x\right) \cdot \left(-\log x\right) - x \]
        7. Applied rewrites48.1%

          \[\leadsto \left(-x\right) \cdot \left(-\log x\right) - x \]
        8. Taylor expanded in x around 0

          \[\leadsto x \cdot \log x - x \]
        9. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \log x \cdot x - x \]
          2. lower-*.f64N/A

            \[\leadsto \log x \cdot x - x \]
          3. lift-log.f6448.1

            \[\leadsto \log x \cdot x - x \]
        10. Applied rewrites48.1%

          \[\leadsto \log x \cdot x - x \]

        if -4.9999999999999999e-201 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < 5.00000000000000036e-18

        1. Initial program 99.4%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in z around 0

          \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
          2. +-commutativeN/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          3. lower-+.f64N/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          4. +-commutativeN/A

            \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          6. lift-log.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          7. lift--.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          8. associate-*r/N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          9. metadata-evalN/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          10. lower-/.f6499.4

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
        4. Applied rewrites99.4%

          \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
        5. Taylor expanded in x around 0

          \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
        6. Step-by-step derivation
          1. lift-/.f6451.2

            \[\leadsto \frac{0.083333333333333}{x} \]
        7. Applied rewrites51.2%

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

      Alternative 10: 58.9% accurate, 0.5× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{z \cdot z}{x}\\ t_1 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z\\ t_2 := \log x \cdot x - x\\ \mathbf{if}\;t\_1 \leq -5 \cdot 10^{+197}:\\ \;\;\;\;y \cdot t\_0\\ \mathbf{elif}\;t\_1 \leq -5 \cdot 10^{-201}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-18}:\\ \;\;\;\;\frac{0.083333333333333}{x}\\ \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+209}:\\ \;\;\;\;t\_2\\ \mathbf{else}:\\ \;\;\;\;t\_0 \cdot 0.0007936500793651\\ \end{array} \end{array} \]
      (FPCore (x y z)
       :precision binary64
       (let* ((t_0 (/ (* z z) x))
              (t_1 (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z))
              (t_2 (- (* (log x) x) x)))
         (if (<= t_1 -5e+197)
           (* y t_0)
           (if (<= t_1 -5e-201)
             t_2
             (if (<= t_1 5e-18)
               (/ 0.083333333333333 x)
               (if (<= t_1 5e+209) t_2 (* t_0 0.0007936500793651)))))))
      double code(double x, double y, double z) {
      	double t_0 = (z * z) / x;
      	double t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	double t_2 = (log(x) * x) - x;
      	double tmp;
      	if (t_1 <= -5e+197) {
      		tmp = y * t_0;
      	} else if (t_1 <= -5e-201) {
      		tmp = t_2;
      	} else if (t_1 <= 5e-18) {
      		tmp = 0.083333333333333 / x;
      	} else if (t_1 <= 5e+209) {
      		tmp = t_2;
      	} else {
      		tmp = t_0 * 0.0007936500793651;
      	}
      	return tmp;
      }
      
      module fmin_fmax_functions
          implicit none
          private
          public fmax
          public fmin
      
          interface fmax
              module procedure fmax88
              module procedure fmax44
              module procedure fmax84
              module procedure fmax48
          end interface
          interface fmin
              module procedure fmin88
              module procedure fmin44
              module procedure fmin84
              module procedure fmin48
          end interface
      contains
          real(8) function fmax88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(4) function fmax44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(8) function fmax84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmax48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
          end function
          real(8) function fmin88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(4) function fmin44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(8) function fmin84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmin48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
          end function
      end module
      
      real(8) function code(x, y, z)
      use fmin_fmax_functions
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          real(8) :: t_0
          real(8) :: t_1
          real(8) :: t_2
          real(8) :: tmp
          t_0 = (z * z) / x
          t_1 = (((y + 0.0007936500793651d0) * z) - 0.0027777777777778d0) * z
          t_2 = (log(x) * x) - x
          if (t_1 <= (-5d+197)) then
              tmp = y * t_0
          else if (t_1 <= (-5d-201)) then
              tmp = t_2
          else if (t_1 <= 5d-18) then
              tmp = 0.083333333333333d0 / x
          else if (t_1 <= 5d+209) then
              tmp = t_2
          else
              tmp = t_0 * 0.0007936500793651d0
          end if
          code = tmp
      end function
      
      public static double code(double x, double y, double z) {
      	double t_0 = (z * z) / x;
      	double t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	double t_2 = (Math.log(x) * x) - x;
      	double tmp;
      	if (t_1 <= -5e+197) {
      		tmp = y * t_0;
      	} else if (t_1 <= -5e-201) {
      		tmp = t_2;
      	} else if (t_1 <= 5e-18) {
      		tmp = 0.083333333333333 / x;
      	} else if (t_1 <= 5e+209) {
      		tmp = t_2;
      	} else {
      		tmp = t_0 * 0.0007936500793651;
      	}
      	return tmp;
      }
      
      def code(x, y, z):
      	t_0 = (z * z) / x
      	t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z
      	t_2 = (math.log(x) * x) - x
      	tmp = 0
      	if t_1 <= -5e+197:
      		tmp = y * t_0
      	elif t_1 <= -5e-201:
      		tmp = t_2
      	elif t_1 <= 5e-18:
      		tmp = 0.083333333333333 / x
      	elif t_1 <= 5e+209:
      		tmp = t_2
      	else:
      		tmp = t_0 * 0.0007936500793651
      	return tmp
      
      function code(x, y, z)
      	t_0 = Float64(Float64(z * z) / x)
      	t_1 = Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z)
      	t_2 = Float64(Float64(log(x) * x) - x)
      	tmp = 0.0
      	if (t_1 <= -5e+197)
      		tmp = Float64(y * t_0);
      	elseif (t_1 <= -5e-201)
      		tmp = t_2;
      	elseif (t_1 <= 5e-18)
      		tmp = Float64(0.083333333333333 / x);
      	elseif (t_1 <= 5e+209)
      		tmp = t_2;
      	else
      		tmp = Float64(t_0 * 0.0007936500793651);
      	end
      	return tmp
      end
      
      function tmp_2 = code(x, y, z)
      	t_0 = (z * z) / x;
      	t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	t_2 = (log(x) * x) - x;
      	tmp = 0.0;
      	if (t_1 <= -5e+197)
      		tmp = y * t_0;
      	elseif (t_1 <= -5e-201)
      		tmp = t_2;
      	elseif (t_1 <= 5e-18)
      		tmp = 0.083333333333333 / x;
      	elseif (t_1 <= 5e+209)
      		tmp = t_2;
      	else
      		tmp = t_0 * 0.0007936500793651;
      	end
      	tmp_2 = tmp;
      end
      
      code[x_, y_, z_] := Block[{t$95$0 = N[(N[(z * z), $MachinePrecision] / x), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[Log[x], $MachinePrecision] * x), $MachinePrecision] - x), $MachinePrecision]}, If[LessEqual[t$95$1, -5e+197], N[(y * t$95$0), $MachinePrecision], If[LessEqual[t$95$1, -5e-201], t$95$2, If[LessEqual[t$95$1, 5e-18], N[(0.083333333333333 / x), $MachinePrecision], If[LessEqual[t$95$1, 5e+209], t$95$2, N[(t$95$0 * 0.0007936500793651), $MachinePrecision]]]]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \frac{z \cdot z}{x}\\
      t_1 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z\\
      t_2 := \log x \cdot x - x\\
      \mathbf{if}\;t\_1 \leq -5 \cdot 10^{+197}:\\
      \;\;\;\;y \cdot t\_0\\
      
      \mathbf{elif}\;t\_1 \leq -5 \cdot 10^{-201}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-18}:\\
      \;\;\;\;\frac{0.083333333333333}{x}\\
      
      \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+209}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0 \cdot 0.0007936500793651\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 4 regimes
      2. if (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < -5.00000000000000009e197

        1. Initial program 85.0%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in y around inf

          \[\leadsto \color{blue}{\frac{y \cdot {z}^{2}}{x}} \]
        3. Step-by-step derivation
          1. lower-/.f64N/A

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

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          4. unpow2N/A

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          5. lower-*.f6479.5

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        4. Applied rewrites79.5%

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

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

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          4. pow2N/A

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          5. *-commutativeN/A

            \[\leadsto \frac{y \cdot {z}^{2}}{x} \]
          6. associate-/l*N/A

            \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
          7. lower-*.f64N/A

            \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
          8. lower-/.f64N/A

            \[\leadsto y \cdot \frac{{z}^{2}}{\color{blue}{x}} \]
          9. pow2N/A

            \[\leadsto y \cdot \frac{z \cdot z}{x} \]
          10. lift-*.f6483.5

            \[\leadsto y \cdot \frac{z \cdot z}{x} \]
        6. Applied rewrites83.5%

          \[\leadsto y \cdot \color{blue}{\frac{z \cdot z}{x}} \]

        if -5.00000000000000009e197 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < -4.9999999999999999e-201 or 5.00000000000000036e-18 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < 4.99999999999999964e209

        1. Initial program 99.5%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in z around 0

          \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
          2. +-commutativeN/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          3. lower-+.f64N/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          4. +-commutativeN/A

            \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          6. lift-log.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          7. lift--.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          8. associate-*r/N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          9. metadata-evalN/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          10. lower-/.f6469.0

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
        4. Applied rewrites69.0%

          \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
        5. Taylor expanded in x around inf

          \[\leadsto -1 \cdot \left(x \cdot \log \left(\frac{1}{x}\right)\right) - x \]
        6. Step-by-step derivation
          1. associate-*r*N/A

            \[\leadsto \left(-1 \cdot x\right) \cdot \log \left(\frac{1}{x}\right) - x \]
          2. mul-1-negN/A

            \[\leadsto \left(\mathsf{neg}\left(x\right)\right) \cdot \log \left(\frac{1}{x}\right) - x \]
          3. lift-neg.f64N/A

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

            \[\leadsto \left(-x\right) \cdot \log \left(\frac{1}{x}\right) - x \]
          5. log-recN/A

            \[\leadsto \left(-x\right) \cdot \left(\mathsf{neg}\left(\log x\right)\right) - x \]
          6. lower-neg.f64N/A

            \[\leadsto \left(-x\right) \cdot \left(-\log x\right) - x \]
          7. lift-log.f6445.9

            \[\leadsto \left(-x\right) \cdot \left(-\log x\right) - x \]
        7. Applied rewrites45.9%

          \[\leadsto \left(-x\right) \cdot \left(-\log x\right) - x \]
        8. Taylor expanded in x around 0

          \[\leadsto x \cdot \log x - x \]
        9. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \log x \cdot x - x \]
          2. lower-*.f64N/A

            \[\leadsto \log x \cdot x - x \]
          3. lift-log.f6445.9

            \[\leadsto \log x \cdot x - x \]
        10. Applied rewrites45.9%

          \[\leadsto \log x \cdot x - x \]

        if -4.9999999999999999e-201 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < 5.00000000000000036e-18

        1. Initial program 99.4%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in z around 0

          \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
          2. +-commutativeN/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          3. lower-+.f64N/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          4. +-commutativeN/A

            \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          6. lift-log.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          7. lift--.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          8. associate-*r/N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          9. metadata-evalN/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          10. lower-/.f6499.4

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
        4. Applied rewrites99.4%

          \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
        5. Taylor expanded in x around 0

          \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
        6. Step-by-step derivation
          1. lift-/.f6451.2

            \[\leadsto \frac{0.083333333333333}{x} \]
        7. Applied rewrites51.2%

          \[\leadsto \frac{0.083333333333333}{\color{blue}{x}} \]

        if 4.99999999999999964e209 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z)

        1. Initial program 85.2%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
          2. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
          4. lift--.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          5. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          6. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          7. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
          8. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
          9. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          10. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          11. div-addN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          12. metadata-evalN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          13. associate-*r/N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          14. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          15. lower-fma.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          16. lower-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          17. associate-/l*N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
        3. Applied rewrites98.3%

          \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
        4. Taylor expanded in z around inf

          \[\leadsto \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
        5. Applied rewrites80.7%

          \[\leadsto \color{blue}{\frac{y + 0.0007936500793651}{x} \cdot \left(z \cdot z\right)} \]
        6. Taylor expanded in y around 0

          \[\leadsto \frac{7936500793651}{10000000000000000} \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          2. lower-*.f64N/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          3. lower-/.f64N/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          4. pow2N/A

            \[\leadsto \frac{z \cdot z}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          5. lift-*.f6471.0

            \[\leadsto \frac{z \cdot z}{x} \cdot 0.0007936500793651 \]
        8. Applied rewrites71.0%

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

      Alternative 11: 58.8% accurate, 0.5× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{z \cdot z}{x}\\ t_1 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z\\ t_2 := \left(\log x - 1\right) \cdot x\\ \mathbf{if}\;t\_1 \leq -5 \cdot 10^{+197}:\\ \;\;\;\;y \cdot t\_0\\ \mathbf{elif}\;t\_1 \leq -5 \cdot 10^{-201}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-18}:\\ \;\;\;\;\frac{0.083333333333333}{x}\\ \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+209}:\\ \;\;\;\;t\_2\\ \mathbf{else}:\\ \;\;\;\;t\_0 \cdot 0.0007936500793651\\ \end{array} \end{array} \]
      (FPCore (x y z)
       :precision binary64
       (let* ((t_0 (/ (* z z) x))
              (t_1 (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z))
              (t_2 (* (- (log x) 1.0) x)))
         (if (<= t_1 -5e+197)
           (* y t_0)
           (if (<= t_1 -5e-201)
             t_2
             (if (<= t_1 5e-18)
               (/ 0.083333333333333 x)
               (if (<= t_1 5e+209) t_2 (* t_0 0.0007936500793651)))))))
      double code(double x, double y, double z) {
      	double t_0 = (z * z) / x;
      	double t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	double t_2 = (log(x) - 1.0) * x;
      	double tmp;
      	if (t_1 <= -5e+197) {
      		tmp = y * t_0;
      	} else if (t_1 <= -5e-201) {
      		tmp = t_2;
      	} else if (t_1 <= 5e-18) {
      		tmp = 0.083333333333333 / x;
      	} else if (t_1 <= 5e+209) {
      		tmp = t_2;
      	} else {
      		tmp = t_0 * 0.0007936500793651;
      	}
      	return tmp;
      }
      
      module fmin_fmax_functions
          implicit none
          private
          public fmax
          public fmin
      
          interface fmax
              module procedure fmax88
              module procedure fmax44
              module procedure fmax84
              module procedure fmax48
          end interface
          interface fmin
              module procedure fmin88
              module procedure fmin44
              module procedure fmin84
              module procedure fmin48
          end interface
      contains
          real(8) function fmax88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(4) function fmax44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(8) function fmax84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmax48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
          end function
          real(8) function fmin88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(4) function fmin44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(8) function fmin84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmin48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
          end function
      end module
      
      real(8) function code(x, y, z)
      use fmin_fmax_functions
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          real(8) :: t_0
          real(8) :: t_1
          real(8) :: t_2
          real(8) :: tmp
          t_0 = (z * z) / x
          t_1 = (((y + 0.0007936500793651d0) * z) - 0.0027777777777778d0) * z
          t_2 = (log(x) - 1.0d0) * x
          if (t_1 <= (-5d+197)) then
              tmp = y * t_0
          else if (t_1 <= (-5d-201)) then
              tmp = t_2
          else if (t_1 <= 5d-18) then
              tmp = 0.083333333333333d0 / x
          else if (t_1 <= 5d+209) then
              tmp = t_2
          else
              tmp = t_0 * 0.0007936500793651d0
          end if
          code = tmp
      end function
      
      public static double code(double x, double y, double z) {
      	double t_0 = (z * z) / x;
      	double t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	double t_2 = (Math.log(x) - 1.0) * x;
      	double tmp;
      	if (t_1 <= -5e+197) {
      		tmp = y * t_0;
      	} else if (t_1 <= -5e-201) {
      		tmp = t_2;
      	} else if (t_1 <= 5e-18) {
      		tmp = 0.083333333333333 / x;
      	} else if (t_1 <= 5e+209) {
      		tmp = t_2;
      	} else {
      		tmp = t_0 * 0.0007936500793651;
      	}
      	return tmp;
      }
      
      def code(x, y, z):
      	t_0 = (z * z) / x
      	t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z
      	t_2 = (math.log(x) - 1.0) * x
      	tmp = 0
      	if t_1 <= -5e+197:
      		tmp = y * t_0
      	elif t_1 <= -5e-201:
      		tmp = t_2
      	elif t_1 <= 5e-18:
      		tmp = 0.083333333333333 / x
      	elif t_1 <= 5e+209:
      		tmp = t_2
      	else:
      		tmp = t_0 * 0.0007936500793651
      	return tmp
      
      function code(x, y, z)
      	t_0 = Float64(Float64(z * z) / x)
      	t_1 = Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z)
      	t_2 = Float64(Float64(log(x) - 1.0) * x)
      	tmp = 0.0
      	if (t_1 <= -5e+197)
      		tmp = Float64(y * t_0);
      	elseif (t_1 <= -5e-201)
      		tmp = t_2;
      	elseif (t_1 <= 5e-18)
      		tmp = Float64(0.083333333333333 / x);
      	elseif (t_1 <= 5e+209)
      		tmp = t_2;
      	else
      		tmp = Float64(t_0 * 0.0007936500793651);
      	end
      	return tmp
      end
      
      function tmp_2 = code(x, y, z)
      	t_0 = (z * z) / x;
      	t_1 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	t_2 = (log(x) - 1.0) * x;
      	tmp = 0.0;
      	if (t_1 <= -5e+197)
      		tmp = y * t_0;
      	elseif (t_1 <= -5e-201)
      		tmp = t_2;
      	elseif (t_1 <= 5e-18)
      		tmp = 0.083333333333333 / x;
      	elseif (t_1 <= 5e+209)
      		tmp = t_2;
      	else
      		tmp = t_0 * 0.0007936500793651;
      	end
      	tmp_2 = tmp;
      end
      
      code[x_, y_, z_] := Block[{t$95$0 = N[(N[(z * z), $MachinePrecision] / x), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[Log[x], $MachinePrecision] - 1.0), $MachinePrecision] * x), $MachinePrecision]}, If[LessEqual[t$95$1, -5e+197], N[(y * t$95$0), $MachinePrecision], If[LessEqual[t$95$1, -5e-201], t$95$2, If[LessEqual[t$95$1, 5e-18], N[(0.083333333333333 / x), $MachinePrecision], If[LessEqual[t$95$1, 5e+209], t$95$2, N[(t$95$0 * 0.0007936500793651), $MachinePrecision]]]]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \frac{z \cdot z}{x}\\
      t_1 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z\\
      t_2 := \left(\log x - 1\right) \cdot x\\
      \mathbf{if}\;t\_1 \leq -5 \cdot 10^{+197}:\\
      \;\;\;\;y \cdot t\_0\\
      
      \mathbf{elif}\;t\_1 \leq -5 \cdot 10^{-201}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{-18}:\\
      \;\;\;\;\frac{0.083333333333333}{x}\\
      
      \mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+209}:\\
      \;\;\;\;t\_2\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0 \cdot 0.0007936500793651\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 4 regimes
      2. if (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < -5.00000000000000009e197

        1. Initial program 85.0%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in y around inf

          \[\leadsto \color{blue}{\frac{y \cdot {z}^{2}}{x}} \]
        3. Step-by-step derivation
          1. lower-/.f64N/A

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

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          4. unpow2N/A

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          5. lower-*.f6479.5

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        4. Applied rewrites79.5%

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

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

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          4. pow2N/A

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          5. *-commutativeN/A

            \[\leadsto \frac{y \cdot {z}^{2}}{x} \]
          6. associate-/l*N/A

            \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
          7. lower-*.f64N/A

            \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
          8. lower-/.f64N/A

            \[\leadsto y \cdot \frac{{z}^{2}}{\color{blue}{x}} \]
          9. pow2N/A

            \[\leadsto y \cdot \frac{z \cdot z}{x} \]
          10. lift-*.f6483.5

            \[\leadsto y \cdot \frac{z \cdot z}{x} \]
        6. Applied rewrites83.5%

          \[\leadsto y \cdot \color{blue}{\frac{z \cdot z}{x}} \]

        if -5.00000000000000009e197 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < -4.9999999999999999e-201 or 5.00000000000000036e-18 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < 4.99999999999999964e209

        1. Initial program 99.5%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in x around inf

          \[\leadsto \color{blue}{x \cdot \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right)} \]
        3. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \left(-1 \cdot \log \left(\frac{1}{x}\right) - 1\right) \cdot \color{blue}{x} \]
          2. log-pow-revN/A

            \[\leadsto \left(\log \left({\left(\frac{1}{x}\right)}^{-1}\right) - 1\right) \cdot x \]
          3. inv-powN/A

            \[\leadsto \left(\log \left({\left({x}^{-1}\right)}^{-1}\right) - 1\right) \cdot x \]
          4. pow-powN/A

            \[\leadsto \left(\log \left({x}^{\left(-1 \cdot -1\right)}\right) - 1\right) \cdot x \]
          5. metadata-evalN/A

            \[\leadsto \left(\log \left({x}^{1}\right) - 1\right) \cdot x \]
          6. unpow1N/A

            \[\leadsto \left(\log x - 1\right) \cdot x \]
          7. lower-*.f64N/A

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

            \[\leadsto \left(\log x - 1\right) \cdot x \]
          9. lift-log.f6445.9

            \[\leadsto \left(\log x - 1\right) \cdot x \]
        4. Applied rewrites45.9%

          \[\leadsto \color{blue}{\left(\log x - 1\right) \cdot x} \]

        if -4.9999999999999999e-201 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < 5.00000000000000036e-18

        1. Initial program 99.4%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in z around 0

          \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
          2. +-commutativeN/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          3. lower-+.f64N/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          4. +-commutativeN/A

            \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          6. lift-log.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          7. lift--.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          8. associate-*r/N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          9. metadata-evalN/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          10. lower-/.f6499.4

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
        4. Applied rewrites99.4%

          \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
        5. Taylor expanded in x around 0

          \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
        6. Step-by-step derivation
          1. lift-/.f6451.2

            \[\leadsto \frac{0.083333333333333}{x} \]
        7. Applied rewrites51.2%

          \[\leadsto \frac{0.083333333333333}{\color{blue}{x}} \]

        if 4.99999999999999964e209 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z)

        1. Initial program 85.2%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
          2. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
          4. lift--.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          5. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          6. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          7. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
          8. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
          9. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          10. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          11. div-addN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          12. metadata-evalN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          13. associate-*r/N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          14. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          15. lower-fma.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          16. lower-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          17. associate-/l*N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
        3. Applied rewrites98.3%

          \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
        4. Taylor expanded in z around inf

          \[\leadsto \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
        5. Applied rewrites80.7%

          \[\leadsto \color{blue}{\frac{y + 0.0007936500793651}{x} \cdot \left(z \cdot z\right)} \]
        6. Taylor expanded in y around 0

          \[\leadsto \frac{7936500793651}{10000000000000000} \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          2. lower-*.f64N/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          3. lower-/.f64N/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          4. pow2N/A

            \[\leadsto \frac{z \cdot z}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          5. lift-*.f6471.0

            \[\leadsto \frac{z \cdot z}{x} \cdot 0.0007936500793651 \]
        8. Applied rewrites71.0%

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

      Alternative 12: 58.3% accurate, 0.9× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z\\ t_1 := \frac{z \cdot z}{x}\\ \mathbf{if}\;t\_0 \leq -1 \cdot 10^{+55}:\\ \;\;\;\;y \cdot t\_1\\ \mathbf{elif}\;t\_0 \leq 5 \cdot 10^{+15}:\\ \;\;\;\;\frac{1}{x} \cdot 0.083333333333333\\ \mathbf{else}:\\ \;\;\;\;t\_1 \cdot 0.0007936500793651\\ \end{array} \end{array} \]
      (FPCore (x y z)
       :precision binary64
       (let* ((t_0 (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z))
              (t_1 (/ (* z z) x)))
         (if (<= t_0 -1e+55)
           (* y t_1)
           (if (<= t_0 5e+15)
             (* (/ 1.0 x) 0.083333333333333)
             (* t_1 0.0007936500793651)))))
      double code(double x, double y, double z) {
      	double t_0 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	double t_1 = (z * z) / x;
      	double tmp;
      	if (t_0 <= -1e+55) {
      		tmp = y * t_1;
      	} else if (t_0 <= 5e+15) {
      		tmp = (1.0 / x) * 0.083333333333333;
      	} else {
      		tmp = t_1 * 0.0007936500793651;
      	}
      	return tmp;
      }
      
      module fmin_fmax_functions
          implicit none
          private
          public fmax
          public fmin
      
          interface fmax
              module procedure fmax88
              module procedure fmax44
              module procedure fmax84
              module procedure fmax48
          end interface
          interface fmin
              module procedure fmin88
              module procedure fmin44
              module procedure fmin84
              module procedure fmin48
          end interface
      contains
          real(8) function fmax88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(4) function fmax44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(8) function fmax84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmax48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
          end function
          real(8) function fmin88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(4) function fmin44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(8) function fmin84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmin48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
          end function
      end module
      
      real(8) function code(x, y, z)
      use fmin_fmax_functions
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          real(8) :: t_0
          real(8) :: t_1
          real(8) :: tmp
          t_0 = (((y + 0.0007936500793651d0) * z) - 0.0027777777777778d0) * z
          t_1 = (z * z) / x
          if (t_0 <= (-1d+55)) then
              tmp = y * t_1
          else if (t_0 <= 5d+15) then
              tmp = (1.0d0 / x) * 0.083333333333333d0
          else
              tmp = t_1 * 0.0007936500793651d0
          end if
          code = tmp
      end function
      
      public static double code(double x, double y, double z) {
      	double t_0 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	double t_1 = (z * z) / x;
      	double tmp;
      	if (t_0 <= -1e+55) {
      		tmp = y * t_1;
      	} else if (t_0 <= 5e+15) {
      		tmp = (1.0 / x) * 0.083333333333333;
      	} else {
      		tmp = t_1 * 0.0007936500793651;
      	}
      	return tmp;
      }
      
      def code(x, y, z):
      	t_0 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z
      	t_1 = (z * z) / x
      	tmp = 0
      	if t_0 <= -1e+55:
      		tmp = y * t_1
      	elif t_0 <= 5e+15:
      		tmp = (1.0 / x) * 0.083333333333333
      	else:
      		tmp = t_1 * 0.0007936500793651
      	return tmp
      
      function code(x, y, z)
      	t_0 = Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z)
      	t_1 = Float64(Float64(z * z) / x)
      	tmp = 0.0
      	if (t_0 <= -1e+55)
      		tmp = Float64(y * t_1);
      	elseif (t_0 <= 5e+15)
      		tmp = Float64(Float64(1.0 / x) * 0.083333333333333);
      	else
      		tmp = Float64(t_1 * 0.0007936500793651);
      	end
      	return tmp
      end
      
      function tmp_2 = code(x, y, z)
      	t_0 = (((y + 0.0007936500793651) * z) - 0.0027777777777778) * z;
      	t_1 = (z * z) / x;
      	tmp = 0.0;
      	if (t_0 <= -1e+55)
      		tmp = y * t_1;
      	elseif (t_0 <= 5e+15)
      		tmp = (1.0 / x) * 0.083333333333333;
      	else
      		tmp = t_1 * 0.0007936500793651;
      	end
      	tmp_2 = tmp;
      end
      
      code[x_, y_, z_] := Block[{t$95$0 = N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision]}, Block[{t$95$1 = N[(N[(z * z), $MachinePrecision] / x), $MachinePrecision]}, If[LessEqual[t$95$0, -1e+55], N[(y * t$95$1), $MachinePrecision], If[LessEqual[t$95$0, 5e+15], N[(N[(1.0 / x), $MachinePrecision] * 0.083333333333333), $MachinePrecision], N[(t$95$1 * 0.0007936500793651), $MachinePrecision]]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z\\
      t_1 := \frac{z \cdot z}{x}\\
      \mathbf{if}\;t\_0 \leq -1 \cdot 10^{+55}:\\
      \;\;\;\;y \cdot t\_1\\
      
      \mathbf{elif}\;t\_0 \leq 5 \cdot 10^{+15}:\\
      \;\;\;\;\frac{1}{x} \cdot 0.083333333333333\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_1 \cdot 0.0007936500793651\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < -1.00000000000000001e55

        1. Initial program 88.0%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in y around inf

          \[\leadsto \color{blue}{\frac{y \cdot {z}^{2}}{x}} \]
        3. Step-by-step derivation
          1. lower-/.f64N/A

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

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          4. unpow2N/A

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          5. lower-*.f6475.0

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        4. Applied rewrites75.0%

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

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

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          4. pow2N/A

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          5. *-commutativeN/A

            \[\leadsto \frac{y \cdot {z}^{2}}{x} \]
          6. associate-/l*N/A

            \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
          7. lower-*.f64N/A

            \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
          8. lower-/.f64N/A

            \[\leadsto y \cdot \frac{{z}^{2}}{\color{blue}{x}} \]
          9. pow2N/A

            \[\leadsto y \cdot \frac{z \cdot z}{x} \]
          10. lift-*.f6478.2

            \[\leadsto y \cdot \frac{z \cdot z}{x} \]
        6. Applied rewrites78.2%

          \[\leadsto y \cdot \color{blue}{\frac{z \cdot z}{x}} \]

        if -1.00000000000000001e55 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) < 5e15

        1. Initial program 99.4%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in z around 0

          \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
          2. +-commutativeN/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          3. lower-+.f64N/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          4. +-commutativeN/A

            \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          6. lift-log.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          7. lift--.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          8. associate-*r/N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          9. metadata-evalN/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          10. lower-/.f6496.7

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
        4. Applied rewrites96.7%

          \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
        5. Taylor expanded in x around 0

          \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
        6. Step-by-step derivation
          1. lift-/.f6448.1

            \[\leadsto \frac{0.083333333333333}{x} \]
        7. Applied rewrites48.1%

          \[\leadsto \frac{0.083333333333333}{\color{blue}{x}} \]
        8. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          2. metadata-evalN/A

            \[\leadsto \frac{1 \cdot \frac{83333333333333}{1000000000000000}}{x} \]
          3. associate-*l/N/A

            \[\leadsto \frac{1}{x} \cdot \frac{83333333333333}{1000000000000000} \]
          4. lower-*.f64N/A

            \[\leadsto \frac{1}{x} \cdot \frac{83333333333333}{1000000000000000} \]
          5. lift-/.f6448.1

            \[\leadsto \frac{1}{x} \cdot 0.083333333333333 \]
        9. Applied rewrites48.1%

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

        if 5e15 < (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z)

        1. Initial program 89.3%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\frac{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x}} \]
          2. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z} + \frac{83333333333333}{1000000000000000}}{x} \]
          4. lift--.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)} \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          5. lift-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z} - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          6. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          7. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\color{blue}{\frac{83333333333333}{1000000000000000} + \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z}}{x} \]
          8. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + \color{blue}{z \cdot \left(\left(y + \frac{7936500793651}{10000000000000000}\right) \cdot z - \frac{13888888888889}{5000000000000000}\right)}}{x} \]
          9. +-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{\left(\frac{7936500793651}{10000000000000000} + y\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          10. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\frac{83333333333333}{1000000000000000} + z \cdot \left(\color{blue}{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right)} - \frac{13888888888889}{5000000000000000}\right)}{x} \]
          11. div-addN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\left(\frac{\frac{83333333333333}{1000000000000000}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          12. metadata-evalN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\frac{\color{blue}{\frac{83333333333333}{1000000000000000} \cdot 1}}{x} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          13. associate-*r/N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          14. *-commutativeN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \left(\color{blue}{\frac{1}{x} \cdot \frac{83333333333333}{1000000000000000}} + \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          15. lower-fma.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right)} \]
          16. lower-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\color{blue}{\frac{1}{x}}, \frac{83333333333333}{1000000000000000}, \frac{z \cdot \left(z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}\right)}{x}\right) \]
          17. associate-/l*N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \mathsf{fma}\left(\frac{1}{x}, \frac{83333333333333}{1000000000000000}, \color{blue}{z \cdot \frac{z \cdot \left(\frac{7936500793651}{10000000000000000} + y\right) - \frac{13888888888889}{5000000000000000}}{x}}\right) \]
        3. Applied rewrites98.3%

          \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \color{blue}{\mathsf{fma}\left(\frac{1}{x}, 0.083333333333333, z \cdot \frac{\mathsf{fma}\left(0.0007936500793651 + y, z, -0.0027777777777778\right)}{x}\right)} \]
        4. Taylor expanded in z around inf

          \[\leadsto \color{blue}{{z}^{2} \cdot \left(\frac{7936500793651}{10000000000000000} \cdot \frac{1}{x} + \frac{y}{x}\right)} \]
        5. Applied rewrites74.0%

          \[\leadsto \color{blue}{\frac{y + 0.0007936500793651}{x} \cdot \left(z \cdot z\right)} \]
        6. Taylor expanded in y around 0

          \[\leadsto \frac{7936500793651}{10000000000000000} \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          2. lower-*.f64N/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          3. lower-/.f64N/A

            \[\leadsto \frac{{z}^{2}}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          4. pow2N/A

            \[\leadsto \frac{z \cdot z}{x} \cdot \frac{7936500793651}{10000000000000000} \]
          5. lift-*.f6463.0

            \[\leadsto \frac{z \cdot z}{x} \cdot 0.0007936500793651 \]
        8. Applied rewrites63.0%

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

      Alternative 13: 51.9% accurate, 0.8× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := y \cdot \frac{z \cdot z}{x}\\ t_1 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333\\ \mathbf{if}\;t\_1 \leq -1 \cdot 10^{+55}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+67}:\\ \;\;\;\;\frac{1}{x} \cdot 0.083333333333333\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (x y z)
       :precision binary64
       (let* ((t_0 (* y (/ (* z z) x)))
              (t_1
               (+
                (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z)
                0.083333333333333)))
         (if (<= t_1 -1e+55)
           t_0
           (if (<= t_1 2e+67) (* (/ 1.0 x) 0.083333333333333) t_0))))
      double code(double x, double y, double z) {
      	double t_0 = y * ((z * z) / x);
      	double t_1 = ((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333;
      	double tmp;
      	if (t_1 <= -1e+55) {
      		tmp = t_0;
      	} else if (t_1 <= 2e+67) {
      		tmp = (1.0 / x) * 0.083333333333333;
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      module fmin_fmax_functions
          implicit none
          private
          public fmax
          public fmin
      
          interface fmax
              module procedure fmax88
              module procedure fmax44
              module procedure fmax84
              module procedure fmax48
          end interface
          interface fmin
              module procedure fmin88
              module procedure fmin44
              module procedure fmin84
              module procedure fmin48
          end interface
      contains
          real(8) function fmax88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(4) function fmax44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(8) function fmax84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmax48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
          end function
          real(8) function fmin88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(4) function fmin44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(8) function fmin84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmin48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
          end function
      end module
      
      real(8) function code(x, y, z)
      use fmin_fmax_functions
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          real(8) :: t_0
          real(8) :: t_1
          real(8) :: tmp
          t_0 = y * ((z * z) / x)
          t_1 = ((((y + 0.0007936500793651d0) * z) - 0.0027777777777778d0) * z) + 0.083333333333333d0
          if (t_1 <= (-1d+55)) then
              tmp = t_0
          else if (t_1 <= 2d+67) then
              tmp = (1.0d0 / x) * 0.083333333333333d0
          else
              tmp = t_0
          end if
          code = tmp
      end function
      
      public static double code(double x, double y, double z) {
      	double t_0 = y * ((z * z) / x);
      	double t_1 = ((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333;
      	double tmp;
      	if (t_1 <= -1e+55) {
      		tmp = t_0;
      	} else if (t_1 <= 2e+67) {
      		tmp = (1.0 / x) * 0.083333333333333;
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      def code(x, y, z):
      	t_0 = y * ((z * z) / x)
      	t_1 = ((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333
      	tmp = 0
      	if t_1 <= -1e+55:
      		tmp = t_0
      	elif t_1 <= 2e+67:
      		tmp = (1.0 / x) * 0.083333333333333
      	else:
      		tmp = t_0
      	return tmp
      
      function code(x, y, z)
      	t_0 = Float64(y * Float64(Float64(z * z) / x))
      	t_1 = Float64(Float64(Float64(Float64(Float64(y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333)
      	tmp = 0.0
      	if (t_1 <= -1e+55)
      		tmp = t_0;
      	elseif (t_1 <= 2e+67)
      		tmp = Float64(Float64(1.0 / x) * 0.083333333333333);
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      function tmp_2 = code(x, y, z)
      	t_0 = y * ((z * z) / x);
      	t_1 = ((((y + 0.0007936500793651) * z) - 0.0027777777777778) * z) + 0.083333333333333;
      	tmp = 0.0;
      	if (t_1 <= -1e+55)
      		tmp = t_0;
      	elseif (t_1 <= 2e+67)
      		tmp = (1.0 / x) * 0.083333333333333;
      	else
      		tmp = t_0;
      	end
      	tmp_2 = tmp;
      end
      
      code[x_, y_, z_] := Block[{t$95$0 = N[(y * N[(N[(z * z), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(N[(y + 0.0007936500793651), $MachinePrecision] * z), $MachinePrecision] - 0.0027777777777778), $MachinePrecision] * z), $MachinePrecision] + 0.083333333333333), $MachinePrecision]}, If[LessEqual[t$95$1, -1e+55], t$95$0, If[LessEqual[t$95$1, 2e+67], N[(N[(1.0 / x), $MachinePrecision] * 0.083333333333333), $MachinePrecision], t$95$0]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := y \cdot \frac{z \cdot z}{x}\\
      t_1 := \left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333\\
      \mathbf{if}\;t\_1 \leq -1 \cdot 10^{+55}:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+67}:\\
      \;\;\;\;\frac{1}{x} \cdot 0.083333333333333\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) < -1.00000000000000001e55 or 1.99999999999999997e67 < (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64))

        1. Initial program 88.3%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in y around inf

          \[\leadsto \color{blue}{\frac{y \cdot {z}^{2}}{x}} \]
        3. Step-by-step derivation
          1. lower-/.f64N/A

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

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          4. unpow2N/A

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          5. lower-*.f6454.7

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
        4. Applied rewrites54.7%

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

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

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          3. lift-*.f64N/A

            \[\leadsto \frac{\left(z \cdot z\right) \cdot y}{x} \]
          4. pow2N/A

            \[\leadsto \frac{{z}^{2} \cdot y}{x} \]
          5. *-commutativeN/A

            \[\leadsto \frac{y \cdot {z}^{2}}{x} \]
          6. associate-/l*N/A

            \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
          7. lower-*.f64N/A

            \[\leadsto y \cdot \color{blue}{\frac{{z}^{2}}{x}} \]
          8. lower-/.f64N/A

            \[\leadsto y \cdot \frac{{z}^{2}}{\color{blue}{x}} \]
          9. pow2N/A

            \[\leadsto y \cdot \frac{z \cdot z}{x} \]
          10. lift-*.f6458.2

            \[\leadsto y \cdot \frac{z \cdot z}{x} \]
        6. Applied rewrites58.2%

          \[\leadsto y \cdot \color{blue}{\frac{z \cdot z}{x}} \]

        if -1.00000000000000001e55 < (+.f64 (*.f64 (-.f64 (*.f64 (+.f64 y #s(literal 7936500793651/10000000000000000 binary64)) z) #s(literal 13888888888889/5000000000000000 binary64)) z) #s(literal 83333333333333/1000000000000000 binary64)) < 1.99999999999999997e67

        1. Initial program 99.5%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in z around 0

          \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
          2. +-commutativeN/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          3. lower-+.f64N/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          4. +-commutativeN/A

            \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          6. lift-log.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          7. lift--.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          8. associate-*r/N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          9. metadata-evalN/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          10. lower-/.f6493.5

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
        4. Applied rewrites93.5%

          \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
        5. Taylor expanded in x around 0

          \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
        6. Step-by-step derivation
          1. lift-/.f6445.5

            \[\leadsto \frac{0.083333333333333}{x} \]
        7. Applied rewrites45.5%

          \[\leadsto \frac{0.083333333333333}{\color{blue}{x}} \]
        8. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          2. metadata-evalN/A

            \[\leadsto \frac{1 \cdot \frac{83333333333333}{1000000000000000}}{x} \]
          3. associate-*l/N/A

            \[\leadsto \frac{1}{x} \cdot \frac{83333333333333}{1000000000000000} \]
          4. lower-*.f64N/A

            \[\leadsto \frac{1}{x} \cdot \frac{83333333333333}{1000000000000000} \]
          5. lift-/.f6445.5

            \[\leadsto \frac{1}{x} \cdot 0.083333333333333 \]
        9. Applied rewrites45.5%

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

      Alternative 14: 29.6% accurate, 2.5× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{z}{x} \cdot -0.0027777777777778\\ \mathbf{if}\;z \leq -1.65 \cdot 10^{-11}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;z \leq 7 \cdot 10^{+76}:\\ \;\;\;\;\frac{1}{x} \cdot 0.083333333333333\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (x y z)
       :precision binary64
       (let* ((t_0 (* (/ z x) -0.0027777777777778)))
         (if (<= z -1.65e-11)
           t_0
           (if (<= z 7e+76) (* (/ 1.0 x) 0.083333333333333) t_0))))
      double code(double x, double y, double z) {
      	double t_0 = (z / x) * -0.0027777777777778;
      	double tmp;
      	if (z <= -1.65e-11) {
      		tmp = t_0;
      	} else if (z <= 7e+76) {
      		tmp = (1.0 / x) * 0.083333333333333;
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      module fmin_fmax_functions
          implicit none
          private
          public fmax
          public fmin
      
          interface fmax
              module procedure fmax88
              module procedure fmax44
              module procedure fmax84
              module procedure fmax48
          end interface
          interface fmin
              module procedure fmin88
              module procedure fmin44
              module procedure fmin84
              module procedure fmin48
          end interface
      contains
          real(8) function fmax88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(4) function fmax44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(8) function fmax84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmax48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
          end function
          real(8) function fmin88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(4) function fmin44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(8) function fmin84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmin48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
          end function
      end module
      
      real(8) function code(x, y, z)
      use fmin_fmax_functions
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          real(8) :: t_0
          real(8) :: tmp
          t_0 = (z / x) * (-0.0027777777777778d0)
          if (z <= (-1.65d-11)) then
              tmp = t_0
          else if (z <= 7d+76) then
              tmp = (1.0d0 / x) * 0.083333333333333d0
          else
              tmp = t_0
          end if
          code = tmp
      end function
      
      public static double code(double x, double y, double z) {
      	double t_0 = (z / x) * -0.0027777777777778;
      	double tmp;
      	if (z <= -1.65e-11) {
      		tmp = t_0;
      	} else if (z <= 7e+76) {
      		tmp = (1.0 / x) * 0.083333333333333;
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      def code(x, y, z):
      	t_0 = (z / x) * -0.0027777777777778
      	tmp = 0
      	if z <= -1.65e-11:
      		tmp = t_0
      	elif z <= 7e+76:
      		tmp = (1.0 / x) * 0.083333333333333
      	else:
      		tmp = t_0
      	return tmp
      
      function code(x, y, z)
      	t_0 = Float64(Float64(z / x) * -0.0027777777777778)
      	tmp = 0.0
      	if (z <= -1.65e-11)
      		tmp = t_0;
      	elseif (z <= 7e+76)
      		tmp = Float64(Float64(1.0 / x) * 0.083333333333333);
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      function tmp_2 = code(x, y, z)
      	t_0 = (z / x) * -0.0027777777777778;
      	tmp = 0.0;
      	if (z <= -1.65e-11)
      		tmp = t_0;
      	elseif (z <= 7e+76)
      		tmp = (1.0 / x) * 0.083333333333333;
      	else
      		tmp = t_0;
      	end
      	tmp_2 = tmp;
      end
      
      code[x_, y_, z_] := Block[{t$95$0 = N[(N[(z / x), $MachinePrecision] * -0.0027777777777778), $MachinePrecision]}, If[LessEqual[z, -1.65e-11], t$95$0, If[LessEqual[z, 7e+76], N[(N[(1.0 / x), $MachinePrecision] * 0.083333333333333), $MachinePrecision], t$95$0]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \frac{z}{x} \cdot -0.0027777777777778\\
      \mathbf{if}\;z \leq -1.65 \cdot 10^{-11}:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;z \leq 7 \cdot 10^{+76}:\\
      \;\;\;\;\frac{1}{x} \cdot 0.083333333333333\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if z < -1.6500000000000001e-11 or 7.00000000000000001e76 < z

        1. Initial program 87.4%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Step-by-step derivation
          1. lift-+.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\left(y + \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          2. flip3-+N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\frac{{y}^{3} + {\frac{7936500793651}{10000000000000000}}^{3}}{y \cdot y + \left(\frac{7936500793651}{10000000000000000} \cdot \frac{7936500793651}{10000000000000000} - y \cdot \frac{7936500793651}{10000000000000000}\right)}} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          3. lower-/.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\color{blue}{\frac{{y}^{3} + {\frac{7936500793651}{10000000000000000}}^{3}}{y \cdot y + \left(\frac{7936500793651}{10000000000000000} \cdot \frac{7936500793651}{10000000000000000} - y \cdot \frac{7936500793651}{10000000000000000}\right)}} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          4. unpow3N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\frac{\color{blue}{\left(y \cdot y\right) \cdot y} + {\frac{7936500793651}{10000000000000000}}^{3}}{y \cdot y + \left(\frac{7936500793651}{10000000000000000} \cdot \frac{7936500793651}{10000000000000000} - y \cdot \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\frac{\color{blue}{\mathsf{fma}\left(y \cdot y, y, {\frac{7936500793651}{10000000000000000}}^{3}\right)}}{y \cdot y + \left(\frac{7936500793651}{10000000000000000} \cdot \frac{7936500793651}{10000000000000000} - y \cdot \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          6. lower-*.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\frac{\mathsf{fma}\left(\color{blue}{y \cdot y}, y, {\frac{7936500793651}{10000000000000000}}^{3}\right)}{y \cdot y + \left(\frac{7936500793651}{10000000000000000} \cdot \frac{7936500793651}{10000000000000000} - y \cdot \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          7. metadata-evalN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\frac{\mathsf{fma}\left(y \cdot y, y, \color{blue}{\frac{499904667923684346908081313317095473451}{1000000000000000000000000000000000000000000000000}}\right)}{y \cdot y + \left(\frac{7936500793651}{10000000000000000} \cdot \frac{7936500793651}{10000000000000000} - y \cdot \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          8. lower-fma.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\frac{\mathsf{fma}\left(y \cdot y, y, \frac{499904667923684346908081313317095473451}{1000000000000000000000000000000000000000000000000}\right)}{\color{blue}{\mathsf{fma}\left(y, y, \frac{7936500793651}{10000000000000000} \cdot \frac{7936500793651}{10000000000000000} - y \cdot \frac{7936500793651}{10000000000000000}\right)}} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          9. lower--.f64N/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\frac{\mathsf{fma}\left(y \cdot y, y, \frac{499904667923684346908081313317095473451}{1000000000000000000000000000000000000000000000000}\right)}{\mathsf{fma}\left(y, y, \color{blue}{\frac{7936500793651}{10000000000000000} \cdot \frac{7936500793651}{10000000000000000} - y \cdot \frac{7936500793651}{10000000000000000}}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          10. metadata-evalN/A

            \[\leadsto \left(\left(\left(x - \frac{1}{2}\right) \cdot \log x - x\right) + \frac{91893853320467}{100000000000000}\right) + \frac{\left(\frac{\mathsf{fma}\left(y \cdot y, y, \frac{499904667923684346908081313317095473451}{1000000000000000000000000000000000000000000000000}\right)}{\mathsf{fma}\left(y, y, \color{blue}{\frac{62988044847622952881909801}{100000000000000000000000000000000}} - y \cdot \frac{7936500793651}{10000000000000000}\right)} \cdot z - \frac{13888888888889}{5000000000000000}\right) \cdot z + \frac{83333333333333}{1000000000000000}}{x} \]
          11. lower-*.f6464.1

            \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\frac{\mathsf{fma}\left(y \cdot y, y, 4.999046679236843 \cdot 10^{-10}\right)}{\mathsf{fma}\left(y, y, 6.298804484762296 \cdot 10^{-7} - \color{blue}{y \cdot 0.0007936500793651}\right)} \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        3. Applied rewrites64.1%

          \[\leadsto \left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\color{blue}{\frac{\mathsf{fma}\left(y \cdot y, y, 4.999046679236843 \cdot 10^{-10}\right)}{\mathsf{fma}\left(y, y, 6.298804484762296 \cdot 10^{-7} - y \cdot 0.0007936500793651\right)}} \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        4. Taylor expanded in z around inf

          \[\leadsto \color{blue}{{z}^{2} \cdot \left(\left(\frac{499904667923684346908081313317095473451}{1000000000000000000000000000000000000000000000000} \cdot \frac{1}{x \cdot \left(\left(\frac{62988044847622952881909801}{100000000000000000000000000000000} + {y}^{2}\right) - \frac{7936500793651}{10000000000000000} \cdot y\right)} + \frac{{y}^{3}}{x \cdot \left(\left(\frac{62988044847622952881909801}{100000000000000000000000000000000} + {y}^{2}\right) - \frac{7936500793651}{10000000000000000} \cdot y\right)}\right) - \frac{13888888888889}{5000000000000000} \cdot \frac{1}{x \cdot z}\right)} \]
        5. Applied rewrites52.3%

          \[\leadsto \color{blue}{\left(\frac{\mathsf{fma}\left(y \cdot y, y, 4.999046679236843 \cdot 10^{-10}\right)}{\mathsf{fma}\left(y, y, \mathsf{fma}\left(-0.0007936500793651, y, 6.298804484762296 \cdot 10^{-7}\right)\right) \cdot x} - \frac{0.0027777777777778}{z \cdot x}\right) \cdot \left(z \cdot z\right)} \]
        6. Taylor expanded in z around 0

          \[\leadsto \frac{-13888888888889}{5000000000000000} \cdot \color{blue}{\frac{z}{x}} \]
        7. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \frac{z}{x} \cdot \frac{-13888888888889}{5000000000000000} \]
          2. lower-*.f64N/A

            \[\leadsto \frac{z}{x} \cdot \frac{-13888888888889}{5000000000000000} \]
          3. lower-/.f6415.9

            \[\leadsto \frac{z}{x} \cdot -0.0027777777777778 \]
        8. Applied rewrites15.9%

          \[\leadsto \frac{z}{x} \cdot \color{blue}{-0.0027777777777778} \]

        if -1.6500000000000001e-11 < z < 7.00000000000000001e76

        1. Initial program 98.8%

          \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
        2. Taylor expanded in z around 0

          \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
          2. +-commutativeN/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          3. lower-+.f64N/A

            \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          4. +-commutativeN/A

            \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          5. lower-fma.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          6. lift-log.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          7. lift--.f64N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          8. associate-*r/N/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          9. metadata-evalN/A

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
          10. lower-/.f6486.7

            \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
        4. Applied rewrites86.7%

          \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
        5. Taylor expanded in x around 0

          \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
        6. Step-by-step derivation
          1. lift-/.f6440.4

            \[\leadsto \frac{0.083333333333333}{x} \]
        7. Applied rewrites40.4%

          \[\leadsto \frac{0.083333333333333}{\color{blue}{x}} \]
        8. Step-by-step derivation
          1. lift-/.f64N/A

            \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{x} \]
          2. metadata-evalN/A

            \[\leadsto \frac{1 \cdot \frac{83333333333333}{1000000000000000}}{x} \]
          3. associate-*l/N/A

            \[\leadsto \frac{1}{x} \cdot \frac{83333333333333}{1000000000000000} \]
          4. lower-*.f64N/A

            \[\leadsto \frac{1}{x} \cdot \frac{83333333333333}{1000000000000000} \]
          5. lift-/.f6440.3

            \[\leadsto \frac{1}{x} \cdot 0.083333333333333 \]
        9. Applied rewrites40.3%

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

      Alternative 15: 24.2% accurate, 5.2× speedup?

      \[\begin{array}{l} \\ \frac{1}{x} \cdot 0.083333333333333 \end{array} \]
      (FPCore (x y z) :precision binary64 (* (/ 1.0 x) 0.083333333333333))
      double code(double x, double y, double z) {
      	return (1.0 / x) * 0.083333333333333;
      }
      
      module fmin_fmax_functions
          implicit none
          private
          public fmax
          public fmin
      
          interface fmax
              module procedure fmax88
              module procedure fmax44
              module procedure fmax84
              module procedure fmax48
          end interface
          interface fmin
              module procedure fmin88
              module procedure fmin44
              module procedure fmin84
              module procedure fmin48
          end interface
      contains
          real(8) function fmax88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(4) function fmax44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(8) function fmax84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmax48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
          end function
          real(8) function fmin88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(4) function fmin44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(8) function fmin84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmin48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
          end function
      end module
      
      real(8) function code(x, y, z)
      use fmin_fmax_functions
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          code = (1.0d0 / x) * 0.083333333333333d0
      end function
      
      public static double code(double x, double y, double z) {
      	return (1.0 / x) * 0.083333333333333;
      }
      
      def code(x, y, z):
      	return (1.0 / x) * 0.083333333333333
      
      function code(x, y, z)
      	return Float64(Float64(1.0 / x) * 0.083333333333333)
      end
      
      function tmp = code(x, y, z)
      	tmp = (1.0 / x) * 0.083333333333333;
      end
      
      code[x_, y_, z_] := N[(N[(1.0 / x), $MachinePrecision] * 0.083333333333333), $MachinePrecision]
      
      \begin{array}{l}
      
      \\
      \frac{1}{x} \cdot 0.083333333333333
      \end{array}
      
      Derivation
      1. Initial program 93.8%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Taylor expanded in z around 0

        \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
      3. Step-by-step derivation
        1. lower--.f64N/A

          \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
        2. +-commutativeN/A

          \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        3. lower-+.f64N/A

          \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        4. +-commutativeN/A

          \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        5. lower-fma.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        6. lift-log.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        7. lift--.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        8. associate-*r/N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        9. metadata-evalN/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        10. lower-/.f6457.8

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
      4. Applied rewrites57.8%

        \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
      5. Taylor expanded in x around 0

        \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
      6. Step-by-step derivation
        1. lift-/.f6424.2

          \[\leadsto \frac{0.083333333333333}{x} \]
      7. Applied rewrites24.2%

        \[\leadsto \frac{0.083333333333333}{\color{blue}{x}} \]
      8. Step-by-step derivation
        1. lift-/.f64N/A

          \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{x} \]
        2. metadata-evalN/A

          \[\leadsto \frac{1 \cdot \frac{83333333333333}{1000000000000000}}{x} \]
        3. associate-*l/N/A

          \[\leadsto \frac{1}{x} \cdot \frac{83333333333333}{1000000000000000} \]
        4. lower-*.f64N/A

          \[\leadsto \frac{1}{x} \cdot \frac{83333333333333}{1000000000000000} \]
        5. lift-/.f6424.1

          \[\leadsto \frac{1}{x} \cdot 0.083333333333333 \]
      9. Applied rewrites24.1%

        \[\leadsto \frac{1}{x} \cdot 0.083333333333333 \]
      10. Add Preprocessing

      Alternative 16: 24.1% accurate, 8.7× speedup?

      \[\begin{array}{l} \\ \frac{0.083333333333333}{x} \end{array} \]
      (FPCore (x y z) :precision binary64 (/ 0.083333333333333 x))
      double code(double x, double y, double z) {
      	return 0.083333333333333 / x;
      }
      
      module fmin_fmax_functions
          implicit none
          private
          public fmax
          public fmin
      
          interface fmax
              module procedure fmax88
              module procedure fmax44
              module procedure fmax84
              module procedure fmax48
          end interface
          interface fmin
              module procedure fmin88
              module procedure fmin44
              module procedure fmin84
              module procedure fmin48
          end interface
      contains
          real(8) function fmax88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(4) function fmax44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, max(x, y), y /= y), x /= x)
          end function
          real(8) function fmax84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmax48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
          end function
          real(8) function fmin88(x, y) result (res)
              real(8), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(4) function fmin44(x, y) result (res)
              real(4), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(y, merge(x, min(x, y), y /= y), x /= x)
          end function
          real(8) function fmin84(x, y) result(res)
              real(8), intent (in) :: x
              real(4), intent (in) :: y
              res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
          end function
          real(8) function fmin48(x, y) result(res)
              real(4), intent (in) :: x
              real(8), intent (in) :: y
              res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
          end function
      end module
      
      real(8) function code(x, y, z)
      use fmin_fmax_functions
          real(8), intent (in) :: x
          real(8), intent (in) :: y
          real(8), intent (in) :: z
          code = 0.083333333333333d0 / x
      end function
      
      public static double code(double x, double y, double z) {
      	return 0.083333333333333 / x;
      }
      
      def code(x, y, z):
      	return 0.083333333333333 / x
      
      function code(x, y, z)
      	return Float64(0.083333333333333 / x)
      end
      
      function tmp = code(x, y, z)
      	tmp = 0.083333333333333 / x;
      end
      
      code[x_, y_, z_] := N[(0.083333333333333 / x), $MachinePrecision]
      
      \begin{array}{l}
      
      \\
      \frac{0.083333333333333}{x}
      \end{array}
      
      Derivation
      1. Initial program 93.8%

        \[\left(\left(\left(x - 0.5\right) \cdot \log x - x\right) + 0.91893853320467\right) + \frac{\left(\left(y + 0.0007936500793651\right) \cdot z - 0.0027777777777778\right) \cdot z + 0.083333333333333}{x} \]
      2. Taylor expanded in z around 0

        \[\leadsto \color{blue}{\left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - x} \]
      3. Step-by-step derivation
        1. lower--.f64N/A

          \[\leadsto \left(\frac{91893853320467}{100000000000000} + \left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right)\right) - \color{blue}{x} \]
        2. +-commutativeN/A

          \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        3. lower-+.f64N/A

          \[\leadsto \left(\left(\frac{83333333333333}{1000000000000000} \cdot \frac{1}{x} + \log x \cdot \left(x - \frac{1}{2}\right)\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        4. +-commutativeN/A

          \[\leadsto \left(\left(\log x \cdot \left(x - \frac{1}{2}\right) + \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        5. lower-fma.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        6. lift-log.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        7. lift--.f64N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{83333333333333}{1000000000000000} \cdot \frac{1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        8. associate-*r/N/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000} \cdot 1}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        9. metadata-evalN/A

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - \frac{1}{2}, \frac{\frac{83333333333333}{1000000000000000}}{x}\right) + \frac{91893853320467}{100000000000000}\right) - x \]
        10. lower-/.f6457.8

          \[\leadsto \left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x \]
      4. Applied rewrites57.8%

        \[\leadsto \color{blue}{\left(\mathsf{fma}\left(\log x, x - 0.5, \frac{0.083333333333333}{x}\right) + 0.91893853320467\right) - x} \]
      5. Taylor expanded in x around 0

        \[\leadsto \frac{\frac{83333333333333}{1000000000000000}}{\color{blue}{x}} \]
      6. Step-by-step derivation
        1. lift-/.f6424.2

          \[\leadsto \frac{0.083333333333333}{x} \]
      7. Applied rewrites24.2%

        \[\leadsto \frac{0.083333333333333}{\color{blue}{x}} \]
      8. Add Preprocessing

      Reproduce

      ?
      herbie shell --seed 2025110 
      (FPCore (x y z)
        :name "Numeric.SpecFunctions:$slogFactorial from math-functions-0.1.5.2, B"
        :precision binary64
        (+ (+ (- (* (- x 0.5) (log x)) x) 0.91893853320467) (/ (+ (* (- (* (+ y 0.0007936500793651) z) 0.0027777777777778) z) 0.083333333333333) x)))