Average Error: 0.3 → 1.1
Time: 15.5s
Precision: binary64
Cost: 19908
\[ \begin{array}{c}[x, y] = \mathsf{sort}([x, y])\\ \end{array} \]
\[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
\[\begin{array}{l} \mathbf{if}\;t \leq 6.126714057918226 \cdot 10^{-5}:\\ \;\;\;\;\left(a + -0.5\right) \cdot \log t + \left(\log z + \log y\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\log y + a \cdot \log t\right) - t\\ \end{array} \]
(FPCore (x y z t a)
 :precision binary64
 (+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))
(FPCore (x y z t a)
 :precision binary64
 (if (<= t 6.126714057918226e-5)
   (+ (* (+ a -0.5) (log t)) (+ (log z) (log y)))
   (- (+ (log y) (* a (log t))) t)))
double code(double x, double y, double z, double t, double a) {
	return ((log((x + y)) + log(z)) - t) + ((a - 0.5) * log(t));
}
double code(double x, double y, double z, double t, double a) {
	double tmp;
	if (t <= 6.126714057918226e-5) {
		tmp = ((a + -0.5) * log(t)) + (log(z) + log(y));
	} else {
		tmp = (log(y) + (a * log(t))) - t;
	}
	return tmp;
}
real(8) function code(x, y, z, t, a)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    code = ((log((x + y)) + log(z)) - t) + ((a - 0.5d0) * log(t))
end function
real(8) function code(x, y, z, t, a)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    real(8) :: tmp
    if (t <= 6.126714057918226d-5) then
        tmp = ((a + (-0.5d0)) * log(t)) + (log(z) + log(y))
    else
        tmp = (log(y) + (a * log(t))) - t
    end if
    code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
	return ((Math.log((x + y)) + Math.log(z)) - t) + ((a - 0.5) * Math.log(t));
}
public static double code(double x, double y, double z, double t, double a) {
	double tmp;
	if (t <= 6.126714057918226e-5) {
		tmp = ((a + -0.5) * Math.log(t)) + (Math.log(z) + Math.log(y));
	} else {
		tmp = (Math.log(y) + (a * Math.log(t))) - t;
	}
	return tmp;
}
def code(x, y, z, t, a):
	return ((math.log((x + y)) + math.log(z)) - t) + ((a - 0.5) * math.log(t))
def code(x, y, z, t, a):
	tmp = 0
	if t <= 6.126714057918226e-5:
		tmp = ((a + -0.5) * math.log(t)) + (math.log(z) + math.log(y))
	else:
		tmp = (math.log(y) + (a * math.log(t))) - t
	return tmp
function code(x, y, z, t, a)
	return Float64(Float64(Float64(log(Float64(x + y)) + log(z)) - t) + Float64(Float64(a - 0.5) * log(t)))
end
function code(x, y, z, t, a)
	tmp = 0.0
	if (t <= 6.126714057918226e-5)
		tmp = Float64(Float64(Float64(a + -0.5) * log(t)) + Float64(log(z) + log(y)));
	else
		tmp = Float64(Float64(log(y) + Float64(a * log(t))) - t);
	end
	return tmp
end
function tmp = code(x, y, z, t, a)
	tmp = ((log((x + y)) + log(z)) - t) + ((a - 0.5) * log(t));
end
function tmp_2 = code(x, y, z, t, a)
	tmp = 0.0;
	if (t <= 6.126714057918226e-5)
		tmp = ((a + -0.5) * log(t)) + (log(z) + log(y));
	else
		tmp = (log(y) + (a * log(t))) - t;
	end
	tmp_2 = tmp;
end
code[x_, y_, z_, t_, a_] := N[(N[(N[(N[Log[N[(x + y), $MachinePrecision]], $MachinePrecision] + N[Log[z], $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision] + N[(N[(a - 0.5), $MachinePrecision] * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[x_, y_, z_, t_, a_] := If[LessEqual[t, 6.126714057918226e-5], N[(N[(N[(a + -0.5), $MachinePrecision] * N[Log[t], $MachinePrecision]), $MachinePrecision] + N[(N[Log[z], $MachinePrecision] + N[Log[y], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[Log[y], $MachinePrecision] + N[(a * N[Log[t], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t), $MachinePrecision]]
\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t
\begin{array}{l}
\mathbf{if}\;t \leq 6.126714057918226 \cdot 10^{-5}:\\
\;\;\;\;\left(a + -0.5\right) \cdot \log t + \left(\log z + \log y\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\log y + a \cdot \log t\right) - t\\


\end{array}

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.3
Target0.3
Herbie1.1
\[\log \left(x + y\right) + \left(\left(\log z - t\right) + \left(a - 0.5\right) \cdot \log t\right) \]

Derivation

  1. Split input into 2 regimes
  2. if t < 6.12671405791822551e-5

    1. Initial program 0.4

      \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
    2. Simplified0.4

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

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

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

    if 6.12671405791822551e-5 < t

    1. Initial program 0.1

      \[\left(\left(\log \left(x + y\right) + \log z\right) - t\right) + \left(a - 0.5\right) \cdot \log t \]
    2. Simplified0.1

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \leq 6.126714057918226 \cdot 10^{-5}:\\ \;\;\;\;\left(a + -0.5\right) \cdot \log t + \left(\log z + \log y\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\log y + a \cdot \log t\right) - t\\ \end{array} \]

Alternatives

Alternative 1
Error1.2
Cost20296
\[\begin{array}{l} t_1 := \left(\log y + a \cdot \log t\right) - t\\ \mathbf{if}\;a + -0.5 \leq -100:\\ \;\;\;\;t_1\\ \mathbf{elif}\;a + -0.5 \leq -0.4:\\ \;\;\;\;\left(\log z + \left(\log y + \log t \cdot -0.5\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 2
Error9.7
Cost13640
\[\begin{array}{l} t_1 := \left(\log y + a \cdot \log t\right) - t\\ \mathbf{if}\;a \leq -3.7893840640516216 \cdot 10^{-105}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;a \leq 0.00010347438292788441:\\ \;\;\;\;\left(\log t \cdot -0.5 + \log \left(z \cdot y\right)\right) - t\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 3
Error8.5
Cost13636
\[\begin{array}{l} \mathbf{if}\;t \leq 238.85490719413673:\\ \;\;\;\;\left(a + -0.5\right) \cdot \log t + \left(\log \left(z \cdot y\right) - t\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\log y + a \cdot \log t\right) - t\\ \end{array} \]
Alternative 4
Error8.6
Cost13508
\[\begin{array}{l} \mathbf{if}\;t \leq 6.126714057918226 \cdot 10^{-5}:\\ \;\;\;\;\left(a + -0.5\right) \cdot \log t + \log \left(z \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\log y + a \cdot \log t\right) - t\\ \end{array} \]
Alternative 5
Error14.6
Cost13380
\[\begin{array}{l} t_1 := a \cdot \log t\\ \mathbf{if}\;t \leq 238.85490719413673:\\ \;\;\;\;t_1 + \log \left(y + x\right)\\ \mathbf{else}:\\ \;\;\;\;t_1 - t\\ \end{array} \]
Alternative 6
Error14.6
Cost13248
\[\left(\log y + a \cdot \log t\right) - t \]
Alternative 7
Error14.7
Cost6984
\[\begin{array}{l} t_1 := a \cdot \log t - t\\ \mathbf{if}\;a \leq -107.57076510053805:\\ \;\;\;\;t_1\\ \mathbf{elif}\;a \leq 3.4460976767038304 \cdot 10^{-9}:\\ \;\;\;\;\log \left(y + x\right) - t\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 8
Error24.5
Cost6856
\[\begin{array}{l} t_1 := a \cdot \log t\\ \mathbf{if}\;a \leq -1.453785109841861 \cdot 10^{+27}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;a \leq 51.12978886715562:\\ \;\;\;\;-t\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 9
Error16.6
Cost6720
\[a \cdot \log t - t \]
Alternative 10
Error39.7
Cost128
\[-t \]

Error

Reproduce

herbie shell --seed 2022228 
(FPCore (x y z t a)
  :name "Numeric.SpecFunctions:logGammaL from math-functions-0.1.5.2"
  :precision binary64

  :herbie-target
  (+ (log (+ x y)) (+ (- (log z) t) (* (- a 0.5) (log t))))

  (+ (- (+ (log (+ x y)) (log z)) t) (* (- a 0.5) (log t))))