Average Error: 6.4 → 0.1
Time: 2.7s
Precision: binary64
\[e^{\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e}\]
\[\begin{array}{l} \mathbf{if}\;\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e \le 134.953495825740475:\\ \;\;\;\;e^{\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e}\\ \mathbf{else}:\\ \;\;\;\;{\left(e^{log}\right)}^{\left(\left(c + \left(a + b\right)\right) + \left(d + e\right)\right)}\\ \end{array}\]
e^{\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e}
\begin{array}{l}
\mathbf{if}\;\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e \le 134.953495825740475:\\
\;\;\;\;e^{\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e}\\

\mathbf{else}:\\
\;\;\;\;{\left(e^{log}\right)}^{\left(\left(c + \left(a + b\right)\right) + \left(d + e\right)\right)}\\

\end{array}
double code(double log, double a, double b, double c, double d, double e) {
	return ((double) exp(((double) (((double) (((double) (((double) (((double) (log * a)) + ((double) (log * b)))) + ((double) (log * c)))) + ((double) (log * d)))) + ((double) (log * e))))));
}
double code(double log, double a, double b, double c, double d, double e) {
	double VAR;
	if ((((double) (((double) (((double) (((double) (((double) (log * a)) + ((double) (log * b)))) + ((double) (log * c)))) + ((double) (log * d)))) + ((double) (log * e)))) <= 134.95349582574048)) {
		VAR = ((double) exp(((double) (((double) (((double) (((double) (((double) (log * a)) + ((double) (log * b)))) + ((double) (log * c)))) + ((double) (log * d)))) + ((double) (log * e))))));
	} else {
		VAR = ((double) pow(((double) exp(log)), ((double) (((double) (c + ((double) (a + b)))) + ((double) (d + e))))));
	}
	return VAR;
}

Error

Bits error versus log

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus d

Bits error versus e

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (+ (+ (+ (+ (* log a) (* log b)) (* log c)) (* log d)) (* log e)) < 134.953495825740475

    1. Initial program 0.0

      \[e^{\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e}\]

    if 134.953495825740475 < (+ (+ (+ (+ (* log a) (* log b)) (* log c)) (* log d)) (* log e))

    1. Initial program 63.1

      \[e^{\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e}\]
    2. Simplified0.9

      \[\leadsto \color{blue}{{\left(e^{log}\right)}^{\left(\left(c + \left(a + b\right)\right) + \left(d + e\right)\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e \le 134.953495825740475:\\ \;\;\;\;e^{\left(\left(\left(log \cdot a + log \cdot b\right) + log \cdot c\right) + log \cdot d\right) + log \cdot e}\\ \mathbf{else}:\\ \;\;\;\;{\left(e^{log}\right)}^{\left(\left(c + \left(a + b\right)\right) + \left(d + e\right)\right)}\\ \end{array}\]

Reproduce

herbie shell --seed 2020153 
(FPCore (log a b c d e)
  :name "(exp (+ (+ (+ (+ (* log a) (* log b)) (* log c)) (* log d)) (* log e)))"
  :precision binary64
  (exp (+ (+ (+ (+ (* log a) (* log b)) (* log c)) (* log d)) (* log e))))