Rosa's FloatVsDoubleBenchmark

Percentage Accurate: 69.6% → 93.0%
Time: 1.4min
Alternatives: 27
Speedup: 1.6×

Specification

?
\[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(3 \cdot x1\right) \cdot x1\\ t_1 := x1 \cdot x1 + 1\\ t_2 := \frac{\left(t_0 + 2 \cdot x2\right) - x1}{t_1}\\ x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot t_2\right) \cdot \left(t_2 - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right)\right) \cdot t_1 + t_0 \cdot t_2\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(t_0 - 2 \cdot x2\right) - x1}{t_1}\right) \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* (* 3.0 x1) x1))
        (t_1 (+ (* x1 x1) 1.0))
        (t_2 (/ (- (+ t_0 (* 2.0 x2)) x1) t_1)))
   (+
    x1
    (+
     (+
      (+
       (+
        (*
         (+
          (* (* (* 2.0 x1) t_2) (- t_2 3.0))
          (* (* x1 x1) (- (* 4.0 t_2) 6.0)))
         t_1)
        (* t_0 t_2))
       (* (* x1 x1) x1))
      x1)
     (* 3.0 (/ (- (- t_0 (* 2.0 x2)) x1) t_1))))))
double code(double x1, double x2) {
	double t_0 = (3.0 * x1) * x1;
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = ((t_0 + (2.0 * x2)) - x1) / t_1;
	return x1 + (((((((((2.0 * x1) * t_2) * (t_2 - 3.0)) + ((x1 * x1) * ((4.0 * t_2) - 6.0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0 * (((t_0 - (2.0 * x2)) - x1) / t_1)));
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    t_0 = (3.0d0 * x1) * x1
    t_1 = (x1 * x1) + 1.0d0
    t_2 = ((t_0 + (2.0d0 * x2)) - x1) / t_1
    code = x1 + (((((((((2.0d0 * x1) * t_2) * (t_2 - 3.0d0)) + ((x1 * x1) * ((4.0d0 * t_2) - 6.0d0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0d0 * (((t_0 - (2.0d0 * x2)) - x1) / t_1)))
end function
public static double code(double x1, double x2) {
	double t_0 = (3.0 * x1) * x1;
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = ((t_0 + (2.0 * x2)) - x1) / t_1;
	return x1 + (((((((((2.0 * x1) * t_2) * (t_2 - 3.0)) + ((x1 * x1) * ((4.0 * t_2) - 6.0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0 * (((t_0 - (2.0 * x2)) - x1) / t_1)));
}
def code(x1, x2):
	t_0 = (3.0 * x1) * x1
	t_1 = (x1 * x1) + 1.0
	t_2 = ((t_0 + (2.0 * x2)) - x1) / t_1
	return x1 + (((((((((2.0 * x1) * t_2) * (t_2 - 3.0)) + ((x1 * x1) * ((4.0 * t_2) - 6.0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0 * (((t_0 - (2.0 * x2)) - x1) / t_1)))
function code(x1, x2)
	t_0 = Float64(Float64(3.0 * x1) * x1)
	t_1 = Float64(Float64(x1 * x1) + 1.0)
	t_2 = Float64(Float64(Float64(t_0 + Float64(2.0 * x2)) - x1) / t_1)
	return Float64(x1 + Float64(Float64(Float64(Float64(Float64(Float64(Float64(Float64(Float64(2.0 * x1) * t_2) * Float64(t_2 - 3.0)) + Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_2) - 6.0))) * t_1) + Float64(t_0 * t_2)) + Float64(Float64(x1 * x1) * x1)) + x1) + Float64(3.0 * Float64(Float64(Float64(t_0 - Float64(2.0 * x2)) - x1) / t_1))))
end
function tmp = code(x1, x2)
	t_0 = (3.0 * x1) * x1;
	t_1 = (x1 * x1) + 1.0;
	t_2 = ((t_0 + (2.0 * x2)) - x1) / t_1;
	tmp = x1 + (((((((((2.0 * x1) * t_2) * (t_2 - 3.0)) + ((x1 * x1) * ((4.0 * t_2) - 6.0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0 * (((t_0 - (2.0 * x2)) - x1) / t_1)));
end
code[x1_, x2_] := Block[{t$95$0 = N[(N[(3.0 * x1), $MachinePrecision] * x1), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(t$95$0 + N[(2.0 * x2), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]}, N[(x1 + N[(N[(N[(N[(N[(N[(N[(N[(N[(2.0 * x1), $MachinePrecision] * t$95$2), $MachinePrecision] * N[(t$95$2 - 3.0), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$2), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision] + N[(t$95$0 * t$95$2), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * x1), $MachinePrecision] * x1), $MachinePrecision]), $MachinePrecision] + x1), $MachinePrecision] + N[(3.0 * N[(N[(N[(t$95$0 - N[(2.0 * x2), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \left(3 \cdot x1\right) \cdot x1\\
t_1 := x1 \cdot x1 + 1\\
t_2 := \frac{\left(t_0 + 2 \cdot x2\right) - x1}{t_1}\\
x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot t_2\right) \cdot \left(t_2 - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right)\right) \cdot t_1 + t_0 \cdot t_2\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(t_0 - 2 \cdot x2\right) - x1}{t_1}\right)
\end{array}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

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

Accuracy vs Speed?

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

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(3 \cdot x1\right) \cdot x1\\ t_1 := x1 \cdot x1 + 1\\ t_2 := \frac{\left(t_0 + 2 \cdot x2\right) - x1}{t_1}\\ x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot t_2\right) \cdot \left(t_2 - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right)\right) \cdot t_1 + t_0 \cdot t_2\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(t_0 - 2 \cdot x2\right) - x1}{t_1}\right) \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* (* 3.0 x1) x1))
        (t_1 (+ (* x1 x1) 1.0))
        (t_2 (/ (- (+ t_0 (* 2.0 x2)) x1) t_1)))
   (+
    x1
    (+
     (+
      (+
       (+
        (*
         (+
          (* (* (* 2.0 x1) t_2) (- t_2 3.0))
          (* (* x1 x1) (- (* 4.0 t_2) 6.0)))
         t_1)
        (* t_0 t_2))
       (* (* x1 x1) x1))
      x1)
     (* 3.0 (/ (- (- t_0 (* 2.0 x2)) x1) t_1))))))
double code(double x1, double x2) {
	double t_0 = (3.0 * x1) * x1;
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = ((t_0 + (2.0 * x2)) - x1) / t_1;
	return x1 + (((((((((2.0 * x1) * t_2) * (t_2 - 3.0)) + ((x1 * x1) * ((4.0 * t_2) - 6.0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0 * (((t_0 - (2.0 * x2)) - x1) / t_1)));
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    t_0 = (3.0d0 * x1) * x1
    t_1 = (x1 * x1) + 1.0d0
    t_2 = ((t_0 + (2.0d0 * x2)) - x1) / t_1
    code = x1 + (((((((((2.0d0 * x1) * t_2) * (t_2 - 3.0d0)) + ((x1 * x1) * ((4.0d0 * t_2) - 6.0d0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0d0 * (((t_0 - (2.0d0 * x2)) - x1) / t_1)))
end function
public static double code(double x1, double x2) {
	double t_0 = (3.0 * x1) * x1;
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = ((t_0 + (2.0 * x2)) - x1) / t_1;
	return x1 + (((((((((2.0 * x1) * t_2) * (t_2 - 3.0)) + ((x1 * x1) * ((4.0 * t_2) - 6.0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0 * (((t_0 - (2.0 * x2)) - x1) / t_1)));
}
def code(x1, x2):
	t_0 = (3.0 * x1) * x1
	t_1 = (x1 * x1) + 1.0
	t_2 = ((t_0 + (2.0 * x2)) - x1) / t_1
	return x1 + (((((((((2.0 * x1) * t_2) * (t_2 - 3.0)) + ((x1 * x1) * ((4.0 * t_2) - 6.0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0 * (((t_0 - (2.0 * x2)) - x1) / t_1)))
function code(x1, x2)
	t_0 = Float64(Float64(3.0 * x1) * x1)
	t_1 = Float64(Float64(x1 * x1) + 1.0)
	t_2 = Float64(Float64(Float64(t_0 + Float64(2.0 * x2)) - x1) / t_1)
	return Float64(x1 + Float64(Float64(Float64(Float64(Float64(Float64(Float64(Float64(Float64(2.0 * x1) * t_2) * Float64(t_2 - 3.0)) + Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_2) - 6.0))) * t_1) + Float64(t_0 * t_2)) + Float64(Float64(x1 * x1) * x1)) + x1) + Float64(3.0 * Float64(Float64(Float64(t_0 - Float64(2.0 * x2)) - x1) / t_1))))
end
function tmp = code(x1, x2)
	t_0 = (3.0 * x1) * x1;
	t_1 = (x1 * x1) + 1.0;
	t_2 = ((t_0 + (2.0 * x2)) - x1) / t_1;
	tmp = x1 + (((((((((2.0 * x1) * t_2) * (t_2 - 3.0)) + ((x1 * x1) * ((4.0 * t_2) - 6.0))) * t_1) + (t_0 * t_2)) + ((x1 * x1) * x1)) + x1) + (3.0 * (((t_0 - (2.0 * x2)) - x1) / t_1)));
end
code[x1_, x2_] := Block[{t$95$0 = N[(N[(3.0 * x1), $MachinePrecision] * x1), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(t$95$0 + N[(2.0 * x2), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]}, N[(x1 + N[(N[(N[(N[(N[(N[(N[(N[(N[(2.0 * x1), $MachinePrecision] * t$95$2), $MachinePrecision] * N[(t$95$2 - 3.0), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$2), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision] + N[(t$95$0 * t$95$2), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * x1), $MachinePrecision] * x1), $MachinePrecision]), $MachinePrecision] + x1), $MachinePrecision] + N[(3.0 * N[(N[(N[(t$95$0 - N[(2.0 * x2), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \left(3 \cdot x1\right) \cdot x1\\
t_1 := x1 \cdot x1 + 1\\
t_2 := \frac{\left(t_0 + 2 \cdot x2\right) - x1}{t_1}\\
x1 + \left(\left(\left(\left(\left(\left(\left(2 \cdot x1\right) \cdot t_2\right) \cdot \left(t_2 - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right)\right) \cdot t_1 + t_0 \cdot t_2\right) + \left(x1 \cdot x1\right) \cdot x1\right) + x1\right) + 3 \cdot \frac{\left(t_0 - 2 \cdot x2\right) - x1}{t_1}\right)
\end{array}
\end{array}

Alternative 1: 93.0% accurate, 0.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot 3\right)\\ t_1 := \sqrt{\mathsf{fma}\left(x1, x1, 1\right)}\\ t_2 := x1 \cdot x1 + 1\\ t_3 := \frac{\left(x2 \cdot 2 + t_0\right) - x1}{t_2}\\ \mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \sqrt{{\left(\mathsf{fma}\left(2, x2, -3\right) \cdot \left(x1 \cdot x2\right)\right)}^{2}}\right) + 9\right)\\ \mathbf{elif}\;x1 \leq -1.45 \cdot 10^{+44}:\\ \;\;\;\;x1 + \mathsf{fma}\left(3, \frac{3 \cdot \left(x1 \cdot x1\right) - \mathsf{fma}\left(2, x2, x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \left(\left(x1 \cdot 3\right) \cdot \frac{\mathsf{fma}\left(x1, x1 \cdot 3, x2 \cdot 2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(x1, x1, 1\right) \cdot \left(x1 + x1 \cdot \left(\left(\frac{-4 \cdot \left(3 - x2 \cdot 2\right) - 6}{x1} + x1 \cdot 6\right) - 4\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 2 \cdot 10^{+125}:\\ \;\;\;\;x1 + \left(\left(x1 + \left(\left(t_2 \cdot \left(\left(\left(x1 \cdot 2\right) \cdot t_3\right) \cdot \left(\frac{1}{t_1} \cdot \frac{\mathsf{fma}\left(3, {x1}^{2}, x2 \cdot 2 - x1\right)}{t_1} - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_3 - 6\right)\right) + t_0 \cdot t_3\right) + x1 \cdot \left(x1 \cdot x1\right)\right)\right) + 3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_2}\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + 3 \cdot \mathsf{fma}\left(-2, x2, \mathsf{fma}\left(-1, x1, {x1}^{2} \cdot \left(x1 + \left(3 + x2 \cdot 2\right)\right)\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 3.0)))
        (t_1 (sqrt (fma x1 x1 1.0)))
        (t_2 (+ (* x1 x1) 1.0))
        (t_3 (/ (- (+ (* x2 2.0) t_0) x1) t_2)))
   (if (<= x1 -1.34e+154)
     (+
      x1
      (+ (+ x1 (* 4.0 (sqrt (pow (* (fma 2.0 x2 -3.0) (* x1 x2)) 2.0)))) 9.0))
     (if (<= x1 -1.45e+44)
       (+
        x1
        (fma
         3.0
         (/ (- (* 3.0 (* x1 x1)) (fma 2.0 x2 x1)) (fma x1 x1 1.0))
         (+
          (*
           x1
           (*
            (* x1 3.0)
            (/ (- (fma x1 (* x1 3.0) (* x2 2.0)) x1) (fma x1 x1 1.0))))
          (*
           (fma x1 x1 1.0)
           (+
            x1
            (*
             x1
             (-
              (+ (/ (- (* -4.0 (- 3.0 (* x2 2.0))) 6.0) x1) (* x1 6.0))
              4.0)))))))
       (if (<= x1 2e+125)
         (+
          x1
          (+
           (+
            x1
            (+
             (+
              (*
               t_2
               (+
                (*
                 (* (* x1 2.0) t_3)
                 (-
                  (*
                   (/ 1.0 t_1)
                   (/ (fma 3.0 (pow x1 2.0) (- (* x2 2.0) x1)) t_1))
                  3.0))
                (* (* x1 x1) (- (* 4.0 t_3) 6.0))))
              (* t_0 t_3))
             (* x1 (* x1 x1))))
           (* 3.0 (/ (- (- t_0 (* x2 2.0)) x1) t_2))))
         (+
          x1
          (+
           (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))
           (*
            3.0
            (fma
             -2.0
             x2
             (fma -1.0 x1 (* (pow x1 2.0) (+ x1 (+ 3.0 (* x2 2.0))))))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * 3.0);
	double t_1 = sqrt(fma(x1, x1, 1.0));
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = (((x2 * 2.0) + t_0) - x1) / t_2;
	double tmp;
	if (x1 <= -1.34e+154) {
		tmp = x1 + ((x1 + (4.0 * sqrt(pow((fma(2.0, x2, -3.0) * (x1 * x2)), 2.0)))) + 9.0);
	} else if (x1 <= -1.45e+44) {
		tmp = x1 + fma(3.0, (((3.0 * (x1 * x1)) - fma(2.0, x2, x1)) / fma(x1, x1, 1.0)), ((x1 * ((x1 * 3.0) * ((fma(x1, (x1 * 3.0), (x2 * 2.0)) - x1) / fma(x1, x1, 1.0)))) + (fma(x1, x1, 1.0) * (x1 + (x1 * (((((-4.0 * (3.0 - (x2 * 2.0))) - 6.0) / x1) + (x1 * 6.0)) - 4.0))))));
	} else if (x1 <= 2e+125) {
		tmp = x1 + ((x1 + (((t_2 * ((((x1 * 2.0) * t_3) * (((1.0 / t_1) * (fma(3.0, pow(x1, 2.0), ((x2 * 2.0) - x1)) / t_1)) - 3.0)) + ((x1 * x1) * ((4.0 * t_3) - 6.0)))) + (t_0 * t_3)) + (x1 * (x1 * x1)))) + (3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_2)));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (3.0 * fma(-2.0, x2, fma(-1.0, x1, (pow(x1, 2.0) * (x1 + (3.0 + (x2 * 2.0))))))));
	}
	return tmp;
}
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * 3.0))
	t_1 = sqrt(fma(x1, x1, 1.0))
	t_2 = Float64(Float64(x1 * x1) + 1.0)
	t_3 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_0) - x1) / t_2)
	tmp = 0.0
	if (x1 <= -1.34e+154)
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * sqrt((Float64(fma(2.0, x2, -3.0) * Float64(x1 * x2)) ^ 2.0)))) + 9.0));
	elseif (x1 <= -1.45e+44)
		tmp = Float64(x1 + fma(3.0, Float64(Float64(Float64(3.0 * Float64(x1 * x1)) - fma(2.0, x2, x1)) / fma(x1, x1, 1.0)), Float64(Float64(x1 * Float64(Float64(x1 * 3.0) * Float64(Float64(fma(x1, Float64(x1 * 3.0), Float64(x2 * 2.0)) - x1) / fma(x1, x1, 1.0)))) + Float64(fma(x1, x1, 1.0) * Float64(x1 + Float64(x1 * Float64(Float64(Float64(Float64(Float64(-4.0 * Float64(3.0 - Float64(x2 * 2.0))) - 6.0) / x1) + Float64(x1 * 6.0)) - 4.0)))))));
	elseif (x1 <= 2e+125)
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(Float64(Float64(t_2 * Float64(Float64(Float64(Float64(x1 * 2.0) * t_3) * Float64(Float64(Float64(1.0 / t_1) * Float64(fma(3.0, (x1 ^ 2.0), Float64(Float64(x2 * 2.0) - x1)) / t_1)) - 3.0)) + Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_3) - 6.0)))) + Float64(t_0 * t_3)) + Float64(x1 * Float64(x1 * x1)))) + Float64(3.0 * Float64(Float64(Float64(t_0 - Float64(x2 * 2.0)) - x1) / t_2))));
	else
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0))))) + Float64(3.0 * fma(-2.0, x2, fma(-1.0, x1, Float64((x1 ^ 2.0) * Float64(x1 + Float64(3.0 + Float64(x2 * 2.0)))))))));
	end
	return tmp
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Sqrt[N[(x1 * x1 + 1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$0), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]}, If[LessEqual[x1, -1.34e+154], N[(x1 + N[(N[(x1 + N[(4.0 * N[Sqrt[N[Power[N[(N[(2.0 * x2 + -3.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 9.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1.45e+44], N[(x1 + N[(3.0 * N[(N[(N[(3.0 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] - N[(2.0 * x2 + x1), $MachinePrecision]), $MachinePrecision] / N[(x1 * x1 + 1.0), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * N[(N[(x1 * 3.0), $MachinePrecision] * N[(N[(N[(x1 * N[(x1 * 3.0), $MachinePrecision] + N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / N[(x1 * x1 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * x1 + 1.0), $MachinePrecision] * N[(x1 + N[(x1 * N[(N[(N[(N[(N[(-4.0 * N[(3.0 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 6.0), $MachinePrecision] / x1), $MachinePrecision] + N[(x1 * 6.0), $MachinePrecision]), $MachinePrecision] - 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 2e+125], N[(x1 + N[(N[(x1 + N[(N[(N[(t$95$2 * N[(N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$3), $MachinePrecision] * N[(N[(N[(1.0 / t$95$1), $MachinePrecision] * N[(N[(3.0 * N[Power[x1, 2.0], $MachinePrecision] + N[(N[(x2 * 2.0), $MachinePrecision] - x1), $MachinePrecision]), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$3), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$0 * t$95$3), $MachinePrecision]), $MachinePrecision] + N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(3.0 * N[(N[(N[(t$95$0 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(3.0 * N[(-2.0 * x2 + N[(-1.0 * x1 + N[(N[Power[x1, 2.0], $MachinePrecision] * N[(x1 + N[(3.0 + N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot 3\right)\\
t_1 := \sqrt{\mathsf{fma}\left(x1, x1, 1\right)}\\
t_2 := x1 \cdot x1 + 1\\
t_3 := \frac{\left(x2 \cdot 2 + t_0\right) - x1}{t_2}\\
\mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \sqrt{{\left(\mathsf{fma}\left(2, x2, -3\right) \cdot \left(x1 \cdot x2\right)\right)}^{2}}\right) + 9\right)\\

\mathbf{elif}\;x1 \leq -1.45 \cdot 10^{+44}:\\
\;\;\;\;x1 + \mathsf{fma}\left(3, \frac{3 \cdot \left(x1 \cdot x1\right) - \mathsf{fma}\left(2, x2, x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \left(\left(x1 \cdot 3\right) \cdot \frac{\mathsf{fma}\left(x1, x1 \cdot 3, x2 \cdot 2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(x1, x1, 1\right) \cdot \left(x1 + x1 \cdot \left(\left(\frac{-4 \cdot \left(3 - x2 \cdot 2\right) - 6}{x1} + x1 \cdot 6\right) - 4\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 2 \cdot 10^{+125}:\\
\;\;\;\;x1 + \left(\left(x1 + \left(\left(t_2 \cdot \left(\left(\left(x1 \cdot 2\right) \cdot t_3\right) \cdot \left(\frac{1}{t_1} \cdot \frac{\mathsf{fma}\left(3, {x1}^{2}, x2 \cdot 2 - x1\right)}{t_1} - 3\right) + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_3 - 6\right)\right) + t_0 \cdot t_3\right) + x1 \cdot \left(x1 \cdot x1\right)\right)\right) + 3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_2}\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + 3 \cdot \mathsf{fma}\left(-2, x2, \mathsf{fma}\left(-1, x1, {x1}^{2} \cdot \left(x1 + \left(3 + x2 \cdot 2\right)\right)\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 2: 93.0% accurate, 0.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot 3\right)\\ t_1 := x1 \cdot x1 + 1\\ t_2 := \frac{\left(x2 \cdot 2 + t_0\right) - x1}{t_1}\\ \mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \sqrt{{\left(\mathsf{fma}\left(2, x2, -3\right) \cdot \left(x1 \cdot x2\right)\right)}^{2}}\right) + 9\right)\\ \mathbf{elif}\;x1 \leq -1.45 \cdot 10^{+44}:\\ \;\;\;\;x1 + \mathsf{fma}\left(3, \frac{3 \cdot \left(x1 \cdot x1\right) - \mathsf{fma}\left(2, x2, x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \left(\left(x1 \cdot 3\right) \cdot \frac{\mathsf{fma}\left(x1, x1 \cdot 3, x2 \cdot 2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(x1, x1, 1\right) \cdot \left(x1 + x1 \cdot \left(\left(\frac{-4 \cdot \left(3 - x2 \cdot 2\right) - 6}{x1} + x1 \cdot 6\right) - 4\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 10^{+126}:\\ \;\;\;\;x1 + \left(3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_0 \cdot t_2 + t_1 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + 3 \cdot \mathsf{fma}\left(-2, x2, \mathsf{fma}\left(-1, x1, {x1}^{2} \cdot \left(x1 + \left(3 + x2 \cdot 2\right)\right)\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 3.0)))
        (t_1 (+ (* x1 x1) 1.0))
        (t_2 (/ (- (+ (* x2 2.0) t_0) x1) t_1)))
   (if (<= x1 -1.34e+154)
     (+
      x1
      (+ (+ x1 (* 4.0 (sqrt (pow (* (fma 2.0 x2 -3.0) (* x1 x2)) 2.0)))) 9.0))
     (if (<= x1 -1.45e+44)
       (+
        x1
        (fma
         3.0
         (/ (- (* 3.0 (* x1 x1)) (fma 2.0 x2 x1)) (fma x1 x1 1.0))
         (+
          (*
           x1
           (*
            (* x1 3.0)
            (/ (- (fma x1 (* x1 3.0) (* x2 2.0)) x1) (fma x1 x1 1.0))))
          (*
           (fma x1 x1 1.0)
           (+
            x1
            (*
             x1
             (-
              (+ (/ (- (* -4.0 (- 3.0 (* x2 2.0))) 6.0) x1) (* x1 6.0))
              4.0)))))))
       (if (<= x1 1e+126)
         (+
          x1
          (+
           (* 3.0 (/ (- (- t_0 (* x2 2.0)) x1) t_1))
           (+
            x1
            (+
             (* x1 (* x1 x1))
             (+
              (* t_0 t_2)
              (*
               t_1
               (+
                (* (* x1 x1) (- (* 4.0 t_2) 6.0))
                (* (* (* x1 2.0) t_2) (- t_2 3.0)))))))))
         (+
          x1
          (+
           (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))
           (*
            3.0
            (fma
             -2.0
             x2
             (fma -1.0 x1 (* (pow x1 2.0) (+ x1 (+ 3.0 (* x2 2.0))))))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * 3.0);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = (((x2 * 2.0) + t_0) - x1) / t_1;
	double tmp;
	if (x1 <= -1.34e+154) {
		tmp = x1 + ((x1 + (4.0 * sqrt(pow((fma(2.0, x2, -3.0) * (x1 * x2)), 2.0)))) + 9.0);
	} else if (x1 <= -1.45e+44) {
		tmp = x1 + fma(3.0, (((3.0 * (x1 * x1)) - fma(2.0, x2, x1)) / fma(x1, x1, 1.0)), ((x1 * ((x1 * 3.0) * ((fma(x1, (x1 * 3.0), (x2 * 2.0)) - x1) / fma(x1, x1, 1.0)))) + (fma(x1, x1, 1.0) * (x1 + (x1 * (((((-4.0 * (3.0 - (x2 * 2.0))) - 6.0) / x1) + (x1 * 6.0)) - 4.0))))));
	} else if (x1 <= 1e+126) {
		tmp = x1 + ((3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_2) + (t_1 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0))))))));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (3.0 * fma(-2.0, x2, fma(-1.0, x1, (pow(x1, 2.0) * (x1 + (3.0 + (x2 * 2.0))))))));
	}
	return tmp;
}
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * 3.0))
	t_1 = Float64(Float64(x1 * x1) + 1.0)
	t_2 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_0) - x1) / t_1)
	tmp = 0.0
	if (x1 <= -1.34e+154)
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * sqrt((Float64(fma(2.0, x2, -3.0) * Float64(x1 * x2)) ^ 2.0)))) + 9.0));
	elseif (x1 <= -1.45e+44)
		tmp = Float64(x1 + fma(3.0, Float64(Float64(Float64(3.0 * Float64(x1 * x1)) - fma(2.0, x2, x1)) / fma(x1, x1, 1.0)), Float64(Float64(x1 * Float64(Float64(x1 * 3.0) * Float64(Float64(fma(x1, Float64(x1 * 3.0), Float64(x2 * 2.0)) - x1) / fma(x1, x1, 1.0)))) + Float64(fma(x1, x1, 1.0) * Float64(x1 + Float64(x1 * Float64(Float64(Float64(Float64(Float64(-4.0 * Float64(3.0 - Float64(x2 * 2.0))) - 6.0) / x1) + Float64(x1 * 6.0)) - 4.0)))))));
	elseif (x1 <= 1e+126)
		tmp = Float64(x1 + Float64(Float64(3.0 * Float64(Float64(Float64(t_0 - Float64(x2 * 2.0)) - x1) / t_1)) + Float64(x1 + Float64(Float64(x1 * Float64(x1 * x1)) + Float64(Float64(t_0 * t_2) + Float64(t_1 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_2) - 6.0)) + Float64(Float64(Float64(x1 * 2.0) * t_2) * Float64(t_2 - 3.0)))))))));
	else
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0))))) + Float64(3.0 * fma(-2.0, x2, fma(-1.0, x1, Float64((x1 ^ 2.0) * Float64(x1 + Float64(3.0 + Float64(x2 * 2.0)))))))));
	end
	return tmp
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$0), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]}, If[LessEqual[x1, -1.34e+154], N[(x1 + N[(N[(x1 + N[(4.0 * N[Sqrt[N[Power[N[(N[(2.0 * x2 + -3.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 9.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1.45e+44], N[(x1 + N[(3.0 * N[(N[(N[(3.0 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] - N[(2.0 * x2 + x1), $MachinePrecision]), $MachinePrecision] / N[(x1 * x1 + 1.0), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * N[(N[(x1 * 3.0), $MachinePrecision] * N[(N[(N[(x1 * N[(x1 * 3.0), $MachinePrecision] + N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / N[(x1 * x1 + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * x1 + 1.0), $MachinePrecision] * N[(x1 + N[(x1 * N[(N[(N[(N[(N[(-4.0 * N[(3.0 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 6.0), $MachinePrecision] / x1), $MachinePrecision] + N[(x1 * 6.0), $MachinePrecision]), $MachinePrecision] - 4.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1e+126], N[(x1 + N[(N[(3.0 * N[(N[(N[(t$95$0 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision] + N[(x1 + N[(N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$0 * t$95$2), $MachinePrecision] + N[(t$95$1 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$2), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$2), $MachinePrecision] * N[(t$95$2 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(3.0 * N[(-2.0 * x2 + N[(-1.0 * x1 + N[(N[Power[x1, 2.0], $MachinePrecision] * N[(x1 + N[(3.0 + N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot 3\right)\\
t_1 := x1 \cdot x1 + 1\\
t_2 := \frac{\left(x2 \cdot 2 + t_0\right) - x1}{t_1}\\
\mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \sqrt{{\left(\mathsf{fma}\left(2, x2, -3\right) \cdot \left(x1 \cdot x2\right)\right)}^{2}}\right) + 9\right)\\

\mathbf{elif}\;x1 \leq -1.45 \cdot 10^{+44}:\\
\;\;\;\;x1 + \mathsf{fma}\left(3, \frac{3 \cdot \left(x1 \cdot x1\right) - \mathsf{fma}\left(2, x2, x1\right)}{\mathsf{fma}\left(x1, x1, 1\right)}, x1 \cdot \left(\left(x1 \cdot 3\right) \cdot \frac{\mathsf{fma}\left(x1, x1 \cdot 3, x2 \cdot 2\right) - x1}{\mathsf{fma}\left(x1, x1, 1\right)}\right) + \mathsf{fma}\left(x1, x1, 1\right) \cdot \left(x1 + x1 \cdot \left(\left(\frac{-4 \cdot \left(3 - x2 \cdot 2\right) - 6}{x1} + x1 \cdot 6\right) - 4\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 10^{+126}:\\
\;\;\;\;x1 + \left(3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_0 \cdot t_2 + t_1 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + 3 \cdot \mathsf{fma}\left(-2, x2, \mathsf{fma}\left(-1, x1, {x1}^{2} \cdot \left(x1 + \left(3 + x2 \cdot 2\right)\right)\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 3: 93.2% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot x1 + 1\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_0}\\ t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_0}\\ \mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \sqrt{{\left(\mathsf{fma}\left(2, x2, -3\right) \cdot \left(x1 \cdot x2\right)\right)}^{2}}\right) + 9\right)\\ \mathbf{elif}\;x1 \leq -5 \cdot 10^{+102}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + 6 \cdot {x1}^{4}\right)\right)\\ \mathbf{elif}\;x1 \leq 2 \cdot 10^{+125}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_1 \cdot t_2 + t_0 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + 3 \cdot \mathsf{fma}\left(-2, x2, \mathsf{fma}\left(-1, x1, {x1}^{2} \cdot \left(x1 + \left(3 + x2 \cdot 2\right)\right)\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (+ (* x1 x1) 1.0))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (/ (- (+ (* x2 2.0) t_1) x1) t_0))
        (t_3 (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_0))))
   (if (<= x1 -1.34e+154)
     (+
      x1
      (+ (+ x1 (* 4.0 (sqrt (pow (* (fma 2.0 x2 -3.0) (* x1 x2)) 2.0)))) 9.0))
     (if (<= x1 -5e+102)
       (+ x1 (+ t_3 (+ x1 (* 6.0 (pow x1 4.0)))))
       (if (<= x1 2e+125)
         (+
          x1
          (+
           t_3
           (+
            x1
            (+
             (* x1 (* x1 x1))
             (+
              (* t_1 t_2)
              (*
               t_0
               (+
                (* (* x1 x1) (- (* 4.0 t_2) 6.0))
                (* (* (* x1 2.0) t_2) (- t_2 3.0)))))))))
         (+
          x1
          (+
           (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))
           (*
            3.0
            (fma
             -2.0
             x2
             (fma -1.0 x1 (* (pow x1 2.0) (+ x1 (+ 3.0 (* x2 2.0))))))))))))))
double code(double x1, double x2) {
	double t_0 = (x1 * x1) + 1.0;
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (((x2 * 2.0) + t_1) - x1) / t_0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_0);
	double tmp;
	if (x1 <= -1.34e+154) {
		tmp = x1 + ((x1 + (4.0 * sqrt(pow((fma(2.0, x2, -3.0) * (x1 * x2)), 2.0)))) + 9.0);
	} else if (x1 <= -5e+102) {
		tmp = x1 + (t_3 + (x1 + (6.0 * pow(x1, 4.0))));
	} else if (x1 <= 2e+125) {
		tmp = x1 + (t_3 + (x1 + ((x1 * (x1 * x1)) + ((t_1 * t_2) + (t_0 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0))))))));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (3.0 * fma(-2.0, x2, fma(-1.0, x1, (pow(x1, 2.0) * (x1 + (3.0 + (x2 * 2.0))))))));
	}
	return tmp;
}
function code(x1, x2)
	t_0 = Float64(Float64(x1 * x1) + 1.0)
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_0)
	t_3 = Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_0))
	tmp = 0.0
	if (x1 <= -1.34e+154)
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * sqrt((Float64(fma(2.0, x2, -3.0) * Float64(x1 * x2)) ^ 2.0)))) + 9.0));
	elseif (x1 <= -5e+102)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(6.0 * (x1 ^ 4.0)))));
	elseif (x1 <= 2e+125)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(Float64(x1 * Float64(x1 * x1)) + Float64(Float64(t_1 * t_2) + Float64(t_0 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_2) - 6.0)) + Float64(Float64(Float64(x1 * 2.0) * t_2) * Float64(t_2 - 3.0)))))))));
	else
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0))))) + Float64(3.0 * fma(-2.0, x2, fma(-1.0, x1, Float64((x1 ^ 2.0) * Float64(x1 + Float64(3.0 + Float64(x2 * 2.0)))))))));
	end
	return tmp
end
code[x1_, x2_] := Block[{t$95$0 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$0), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -1.34e+154], N[(x1 + N[(N[(x1 + N[(4.0 * N[Sqrt[N[Power[N[(N[(2.0 * x2 + -3.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 9.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -5e+102], N[(x1 + N[(t$95$3 + N[(x1 + N[(6.0 * N[Power[x1, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 2e+125], N[(x1 + N[(t$95$3 + N[(x1 + N[(N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$1 * t$95$2), $MachinePrecision] + N[(t$95$0 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$2), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$2), $MachinePrecision] * N[(t$95$2 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(3.0 * N[(-2.0 * x2 + N[(-1.0 * x1 + N[(N[Power[x1, 2.0], $MachinePrecision] * N[(x1 + N[(3.0 + N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot x1 + 1\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_0}\\
t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_0}\\
\mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \sqrt{{\left(\mathsf{fma}\left(2, x2, -3\right) \cdot \left(x1 \cdot x2\right)\right)}^{2}}\right) + 9\right)\\

\mathbf{elif}\;x1 \leq -5 \cdot 10^{+102}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + 6 \cdot {x1}^{4}\right)\right)\\

\mathbf{elif}\;x1 \leq 2 \cdot 10^{+125}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_1 \cdot t_2 + t_0 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + 3 \cdot \mathsf{fma}\left(-2, x2, \mathsf{fma}\left(-1, x1, {x1}^{2} \cdot \left(x1 + \left(3 + x2 \cdot 2\right)\right)\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 4: 91.1% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot x1 + 1\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_0}\\ t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_0}\\ \mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \sqrt{{\left(\mathsf{fma}\left(2, x2, -3\right) \cdot \left(x1 \cdot x2\right)\right)}^{2}}\right) + 9\right)\\ \mathbf{elif}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + 6 \cdot {x1}^{4}\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_1 \cdot t_2 + t_0 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + \left(x2 \cdot -6 + \left(x1 \cdot -3 + 3 \cdot \left({x1}^{2} \cdot \left(3 - x2 \cdot -2\right)\right)\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (+ (* x1 x1) 1.0))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (/ (- (+ (* x2 2.0) t_1) x1) t_0))
        (t_3 (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_0))))
   (if (<= x1 -1.34e+154)
     (+
      x1
      (+ (+ x1 (* 4.0 (sqrt (pow (* (fma 2.0 x2 -3.0) (* x1 x2)) 2.0)))) 9.0))
     (if (<= x1 -5.8e+102)
       (+ x1 (+ t_3 (+ x1 (* 6.0 (pow x1 4.0)))))
       (if (<= x1 1.4e+154)
         (+
          x1
          (+
           t_3
           (+
            x1
            (+
             (* x1 (* x1 x1))
             (+
              (* t_1 t_2)
              (*
               t_0
               (+
                (* (* x1 x1) (- (* 4.0 t_2) 6.0))
                (* (* (* x1 2.0) t_2) (- t_2 3.0)))))))))
         (+
          x1
          (+
           (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))
           (+
            (* x2 -6.0)
            (+
             (* x1 -3.0)
             (* 3.0 (* (pow x1 2.0) (- 3.0 (* x2 -2.0)))))))))))))
double code(double x1, double x2) {
	double t_0 = (x1 * x1) + 1.0;
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (((x2 * 2.0) + t_1) - x1) / t_0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_0);
	double tmp;
	if (x1 <= -1.34e+154) {
		tmp = x1 + ((x1 + (4.0 * sqrt(pow((fma(2.0, x2, -3.0) * (x1 * x2)), 2.0)))) + 9.0);
	} else if (x1 <= -5.8e+102) {
		tmp = x1 + (t_3 + (x1 + (6.0 * pow(x1, 4.0))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_3 + (x1 + ((x1 * (x1 * x1)) + ((t_1 * t_2) + (t_0 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0))))))));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + ((x1 * -3.0) + (3.0 * (pow(x1, 2.0) * (3.0 - (x2 * -2.0)))))));
	}
	return tmp;
}
function code(x1, x2)
	t_0 = Float64(Float64(x1 * x1) + 1.0)
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_0)
	t_3 = Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_0))
	tmp = 0.0
	if (x1 <= -1.34e+154)
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * sqrt((Float64(fma(2.0, x2, -3.0) * Float64(x1 * x2)) ^ 2.0)))) + 9.0));
	elseif (x1 <= -5.8e+102)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(6.0 * (x1 ^ 4.0)))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(Float64(x1 * Float64(x1 * x1)) + Float64(Float64(t_1 * t_2) + Float64(t_0 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_2) - 6.0)) + Float64(Float64(Float64(x1 * 2.0) * t_2) * Float64(t_2 - 3.0)))))))));
	else
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0))))) + Float64(Float64(x2 * -6.0) + Float64(Float64(x1 * -3.0) + Float64(3.0 * Float64((x1 ^ 2.0) * Float64(3.0 - Float64(x2 * -2.0))))))));
	end
	return tmp
end
code[x1_, x2_] := Block[{t$95$0 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$0), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -1.34e+154], N[(x1 + N[(N[(x1 + N[(4.0 * N[Sqrt[N[Power[N[(N[(2.0 * x2 + -3.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 9.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -5.8e+102], N[(x1 + N[(t$95$3 + N[(x1 + N[(6.0 * N[Power[x1, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(t$95$3 + N[(x1 + N[(N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$1 * t$95$2), $MachinePrecision] + N[(t$95$0 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$2), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$2), $MachinePrecision] * N[(t$95$2 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(x2 * -6.0), $MachinePrecision] + N[(N[(x1 * -3.0), $MachinePrecision] + N[(3.0 * N[(N[Power[x1, 2.0], $MachinePrecision] * N[(3.0 - N[(x2 * -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot x1 + 1\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_0}\\
t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_0}\\
\mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \sqrt{{\left(\mathsf{fma}\left(2, x2, -3\right) \cdot \left(x1 \cdot x2\right)\right)}^{2}}\right) + 9\right)\\

\mathbf{elif}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + 6 \cdot {x1}^{4}\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_1 \cdot t_2 + t_0 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + \left(x2 \cdot -6 + \left(x1 \cdot -3 + 3 \cdot \left({x1}^{2} \cdot \left(3 - x2 \cdot -2\right)\right)\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 5: 89.7% accurate, 0.9× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + \left(x2 \cdot -6 + \left(x1 \cdot -3 + 3 \cdot \left({x1}^{2} \cdot \left(3 - x2 \cdot -2\right)\right)\right)\right)\right)\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := x1 \cdot x1 + 1\\ t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\ t_4 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2}\\ \mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;x1 \leq -5 \cdot 10^{+102}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + 6 \cdot {x1}^{4}\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_1 \cdot t_4 + t_2 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_4\right) \cdot \left(t_4 - 3\right)\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;t_0\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0
         (+
          x1
          (+
           (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))
           (+
            (* x2 -6.0)
            (+ (* x1 -3.0) (* 3.0 (* (pow x1 2.0) (- 3.0 (* x2 -2.0)))))))))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (+ (* x1 x1) 1.0))
        (t_3 (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_2)))
        (t_4 (/ (- (+ (* x2 2.0) t_1) x1) t_2)))
   (if (<= x1 -1.34e+154)
     t_0
     (if (<= x1 -5e+102)
       (+ x1 (+ t_3 (+ x1 (* 6.0 (pow x1 4.0)))))
       (if (<= x1 1.4e+154)
         (+
          x1
          (+
           t_3
           (+
            x1
            (+
             (* x1 (* x1 x1))
             (+
              (* t_1 t_4)
              (*
               t_2
               (+
                (* (* x1 x1) (- (* 4.0 t_4) 6.0))
                (* (* (* x1 2.0) t_4) (- t_4 3.0)))))))))
         t_0)))))
double code(double x1, double x2) {
	double t_0 = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + ((x1 * -3.0) + (3.0 * (pow(x1, 2.0) * (3.0 - (x2 * -2.0)))))));
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	double tmp;
	if (x1 <= -1.34e+154) {
		tmp = t_0;
	} else if (x1 <= -5e+102) {
		tmp = x1 + (t_3 + (x1 + (6.0 * pow(x1, 4.0))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_3 + (x1 + ((x1 * (x1 * x1)) + ((t_1 * t_4) + (t_2 * (((x1 * x1) * ((4.0 * t_4) - 6.0)) + (((x1 * 2.0) * t_4) * (t_4 - 3.0))))))));
	} else {
		tmp = t_0;
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: tmp
    t_0 = x1 + ((x1 + (4.0d0 * (x1 * (x2 * ((x2 * 2.0d0) - 3.0d0))))) + ((x2 * (-6.0d0)) + ((x1 * (-3.0d0)) + (3.0d0 * ((x1 ** 2.0d0) * (3.0d0 - (x2 * (-2.0d0))))))))
    t_1 = x1 * (x1 * 3.0d0)
    t_2 = (x1 * x1) + 1.0d0
    t_3 = 3.0d0 * (((t_1 - (x2 * 2.0d0)) - x1) / t_2)
    t_4 = (((x2 * 2.0d0) + t_1) - x1) / t_2
    if (x1 <= (-1.34d+154)) then
        tmp = t_0
    else if (x1 <= (-5d+102)) then
        tmp = x1 + (t_3 + (x1 + (6.0d0 * (x1 ** 4.0d0))))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + (t_3 + (x1 + ((x1 * (x1 * x1)) + ((t_1 * t_4) + (t_2 * (((x1 * x1) * ((4.0d0 * t_4) - 6.0d0)) + (((x1 * 2.0d0) * t_4) * (t_4 - 3.0d0))))))))
    else
        tmp = t_0
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + ((x1 * -3.0) + (3.0 * (Math.pow(x1, 2.0) * (3.0 - (x2 * -2.0)))))));
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	double tmp;
	if (x1 <= -1.34e+154) {
		tmp = t_0;
	} else if (x1 <= -5e+102) {
		tmp = x1 + (t_3 + (x1 + (6.0 * Math.pow(x1, 4.0))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_3 + (x1 + ((x1 * (x1 * x1)) + ((t_1 * t_4) + (t_2 * (((x1 * x1) * ((4.0 * t_4) - 6.0)) + (((x1 * 2.0) * t_4) * (t_4 - 3.0))))))));
	} else {
		tmp = t_0;
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + ((x1 * -3.0) + (3.0 * (math.pow(x1, 2.0) * (3.0 - (x2 * -2.0)))))))
	t_1 = x1 * (x1 * 3.0)
	t_2 = (x1 * x1) + 1.0
	t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2)
	t_4 = (((x2 * 2.0) + t_1) - x1) / t_2
	tmp = 0
	if x1 <= -1.34e+154:
		tmp = t_0
	elif x1 <= -5e+102:
		tmp = x1 + (t_3 + (x1 + (6.0 * math.pow(x1, 4.0))))
	elif x1 <= 1.4e+154:
		tmp = x1 + (t_3 + (x1 + ((x1 * (x1 * x1)) + ((t_1 * t_4) + (t_2 * (((x1 * x1) * ((4.0 * t_4) - 6.0)) + (((x1 * 2.0) * t_4) * (t_4 - 3.0))))))))
	else:
		tmp = t_0
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0))))) + Float64(Float64(x2 * -6.0) + Float64(Float64(x1 * -3.0) + Float64(3.0 * Float64((x1 ^ 2.0) * Float64(3.0 - Float64(x2 * -2.0))))))))
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(x1 * x1) + 1.0)
	t_3 = Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_2))
	t_4 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_2)
	tmp = 0.0
	if (x1 <= -1.34e+154)
		tmp = t_0;
	elseif (x1 <= -5e+102)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(6.0 * (x1 ^ 4.0)))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(Float64(x1 * Float64(x1 * x1)) + Float64(Float64(t_1 * t_4) + Float64(t_2 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_4) - 6.0)) + Float64(Float64(Float64(x1 * 2.0) * t_4) * Float64(t_4 - 3.0)))))))));
	else
		tmp = t_0;
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + ((x1 * -3.0) + (3.0 * ((x1 ^ 2.0) * (3.0 - (x2 * -2.0)))))));
	t_1 = x1 * (x1 * 3.0);
	t_2 = (x1 * x1) + 1.0;
	t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	tmp = 0.0;
	if (x1 <= -1.34e+154)
		tmp = t_0;
	elseif (x1 <= -5e+102)
		tmp = x1 + (t_3 + (x1 + (6.0 * (x1 ^ 4.0))));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + (t_3 + (x1 + ((x1 * (x1 * x1)) + ((t_1 * t_4) + (t_2 * (((x1 * x1) * ((4.0 * t_4) - 6.0)) + (((x1 * 2.0) * t_4) * (t_4 - 3.0))))))));
	else
		tmp = t_0;
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 + N[(N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(x2 * -6.0), $MachinePrecision] + N[(N[(x1 * -3.0), $MachinePrecision] + N[(3.0 * N[(N[Power[x1, 2.0], $MachinePrecision] * N[(3.0 - N[(x2 * -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]}, If[LessEqual[x1, -1.34e+154], t$95$0, If[LessEqual[x1, -5e+102], N[(x1 + N[(t$95$3 + N[(x1 + N[(6.0 * N[Power[x1, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(t$95$3 + N[(x1 + N[(N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$1 * t$95$4), $MachinePrecision] + N[(t$95$2 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$4), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$4), $MachinePrecision] * N[(t$95$4 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + \left(x2 \cdot -6 + \left(x1 \cdot -3 + 3 \cdot \left({x1}^{2} \cdot \left(3 - x2 \cdot -2\right)\right)\right)\right)\right)\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := x1 \cdot x1 + 1\\
t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\
t_4 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2}\\
\mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\
\;\;\;\;t_0\\

\mathbf{elif}\;x1 \leq -5 \cdot 10^{+102}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + 6 \cdot {x1}^{4}\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_1 \cdot t_4 + t_2 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_4\right) \cdot \left(t_4 - 3\right)\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;t_0\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 6: 82.2% accurate, 0.9× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot 3\right)\\ t_1 := x1 \cdot x1 + 1\\ t_2 := 3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_1}\\ t_3 := \frac{\left(x2 \cdot 2 + t_0\right) - x1}{t_1}\\ \mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;x1 + \left(t_2 + \left(x1 + 6 \cdot {x1}^{4}\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(t_2 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_0 \cdot t_3 + t_1 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_3 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_3\right) \cdot \left(t_3 - 3\right)\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 3.0)))
        (t_1 (+ (* x1 x1) 1.0))
        (t_2 (* 3.0 (/ (- (- t_0 (* x2 2.0)) x1) t_1)))
        (t_3 (/ (- (+ (* x2 2.0) t_0) x1) t_1)))
   (if (<= x1 -1.34e+154)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -5.8e+102)
       (+ x1 (+ t_2 (+ x1 (* 6.0 (pow x1 4.0)))))
       (if (<= x1 1.4e+154)
         (+
          x1
          (+
           t_2
           (+
            x1
            (+
             (* x1 (* x1 x1))
             (+
              (* t_0 t_3)
              (*
               t_1
               (+
                (* (* x1 x1) (- (* 4.0 t_3) 6.0))
                (* (* (* x1 2.0) t_3) (- t_3 3.0)))))))))
         (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * 3.0);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = 3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1);
	double t_3 = (((x2 * 2.0) + t_0) - x1) / t_1;
	double tmp;
	if (x1 <= -1.34e+154) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -5.8e+102) {
		tmp = x1 + (t_2 + (x1 + (6.0 * pow(x1, 4.0))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_3) + (t_1 * (((x1 * x1) * ((4.0 * t_3) - 6.0)) + (((x1 * 2.0) * t_3) * (t_3 - 3.0))))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: tmp
    t_0 = x1 * (x1 * 3.0d0)
    t_1 = (x1 * x1) + 1.0d0
    t_2 = 3.0d0 * (((t_0 - (x2 * 2.0d0)) - x1) / t_1)
    t_3 = (((x2 * 2.0d0) + t_0) - x1) / t_1
    if (x1 <= (-1.34d+154)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-5.8d+102)) then
        tmp = x1 + (t_2 + (x1 + (6.0d0 * (x1 ** 4.0d0))))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_3) + (t_1 * (((x1 * x1) * ((4.0d0 * t_3) - 6.0d0)) + (((x1 * 2.0d0) * t_3) * (t_3 - 3.0d0))))))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * 3.0);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = 3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1);
	double t_3 = (((x2 * 2.0) + t_0) - x1) / t_1;
	double tmp;
	if (x1 <= -1.34e+154) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -5.8e+102) {
		tmp = x1 + (t_2 + (x1 + (6.0 * Math.pow(x1, 4.0))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_3) + (t_1 * (((x1 * x1) * ((4.0 * t_3) - 6.0)) + (((x1 * 2.0) * t_3) * (t_3 - 3.0))))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * 3.0)
	t_1 = (x1 * x1) + 1.0
	t_2 = 3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1)
	t_3 = (((x2 * 2.0) + t_0) - x1) / t_1
	tmp = 0
	if x1 <= -1.34e+154:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -5.8e+102:
		tmp = x1 + (t_2 + (x1 + (6.0 * math.pow(x1, 4.0))))
	elif x1 <= 1.4e+154:
		tmp = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_3) + (t_1 * (((x1 * x1) * ((4.0 * t_3) - 6.0)) + (((x1 * 2.0) * t_3) * (t_3 - 3.0))))))))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * 3.0))
	t_1 = Float64(Float64(x1 * x1) + 1.0)
	t_2 = Float64(3.0 * Float64(Float64(Float64(t_0 - Float64(x2 * 2.0)) - x1) / t_1))
	t_3 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_0) - x1) / t_1)
	tmp = 0.0
	if (x1 <= -1.34e+154)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -5.8e+102)
		tmp = Float64(x1 + Float64(t_2 + Float64(x1 + Float64(6.0 * (x1 ^ 4.0)))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(t_2 + Float64(x1 + Float64(Float64(x1 * Float64(x1 * x1)) + Float64(Float64(t_0 * t_3) + Float64(t_1 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_3) - 6.0)) + Float64(Float64(Float64(x1 * 2.0) * t_3) * Float64(t_3 - 3.0)))))))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * 3.0);
	t_1 = (x1 * x1) + 1.0;
	t_2 = 3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1);
	t_3 = (((x2 * 2.0) + t_0) - x1) / t_1;
	tmp = 0.0;
	if (x1 <= -1.34e+154)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -5.8e+102)
		tmp = x1 + (t_2 + (x1 + (6.0 * (x1 ^ 4.0))));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_3) + (t_1 * (((x1 * x1) * ((4.0 * t_3) - 6.0)) + (((x1 * 2.0) * t_3) * (t_3 - 3.0))))))));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(3.0 * N[(N[(N[(t$95$0 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$0), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]}, If[LessEqual[x1, -1.34e+154], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -5.8e+102], N[(x1 + N[(t$95$2 + N[(x1 + N[(6.0 * N[Power[x1, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(t$95$2 + N[(x1 + N[(N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$0 * t$95$3), $MachinePrecision] + N[(t$95$1 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$3), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$3), $MachinePrecision] * N[(t$95$3 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot 3\right)\\
t_1 := x1 \cdot x1 + 1\\
t_2 := 3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_1}\\
t_3 := \frac{\left(x2 \cdot 2 + t_0\right) - x1}{t_1}\\
\mathbf{if}\;x1 \leq -1.34 \cdot 10^{+154}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;x1 + \left(t_2 + \left(x1 + 6 \cdot {x1}^{4}\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(t_2 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_0 \cdot t_3 + t_1 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_3 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_3\right) \cdot \left(t_3 - 3\right)\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 7: 78.7% accurate, 0.9× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot 3\right)\\ t_1 := x1 \cdot x1 + 1\\ t_2 := \frac{\left(x2 \cdot 2 + t_0\right) - x1}{t_1}\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_0 \cdot t_2 + t_1 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 3.0)))
        (t_1 (+ (* x1 x1) 1.0))
        (t_2 (/ (- (+ (* x2 2.0) t_0) x1) t_1)))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 1.4e+154)
       (+
        x1
        (+
         (* 3.0 (/ (- (- t_0 (* x2 2.0)) x1) t_1))
         (+
          x1
          (+
           (* x1 (* x1 x1))
           (+
            (* t_0 t_2)
            (*
             t_1
             (+
              (* (* x1 x1) (- (* 4.0 t_2) 6.0))
              (* (* (* x1 2.0) t_2) (- t_2 3.0)))))))))
       (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0)))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * 3.0);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = (((x2 * 2.0) + t_0) - x1) / t_1;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + ((3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_2) + (t_1 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0))))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: tmp
    t_0 = x1 * (x1 * 3.0d0)
    t_1 = (x1 * x1) + 1.0d0
    t_2 = (((x2 * 2.0d0) + t_0) - x1) / t_1
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + ((3.0d0 * (((t_0 - (x2 * 2.0d0)) - x1) / t_1)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_2) + (t_1 * (((x1 * x1) * ((4.0d0 * t_2) - 6.0d0)) + (((x1 * 2.0d0) * t_2) * (t_2 - 3.0d0))))))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * 3.0);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = (((x2 * 2.0) + t_0) - x1) / t_1;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + ((3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_2) + (t_1 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0))))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * 3.0)
	t_1 = (x1 * x1) + 1.0
	t_2 = (((x2 * 2.0) + t_0) - x1) / t_1
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= 1.4e+154:
		tmp = x1 + ((3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_2) + (t_1 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0))))))))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * 3.0))
	t_1 = Float64(Float64(x1 * x1) + 1.0)
	t_2 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_0) - x1) / t_1)
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(Float64(3.0 * Float64(Float64(Float64(t_0 - Float64(x2 * 2.0)) - x1) / t_1)) + Float64(x1 + Float64(Float64(x1 * Float64(x1 * x1)) + Float64(Float64(t_0 * t_2) + Float64(t_1 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_2) - 6.0)) + Float64(Float64(Float64(x1 * 2.0) * t_2) * Float64(t_2 - 3.0)))))))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * 3.0);
	t_1 = (x1 * x1) + 1.0;
	t_2 = (((x2 * 2.0) + t_0) - x1) / t_1;
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + ((3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * t_2) + (t_1 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0))))))));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$0), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(N[(3.0 * N[(N[(N[(t$95$0 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision] + N[(x1 + N[(N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$0 * t$95$2), $MachinePrecision] + N[(t$95$1 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$2), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$2), $MachinePrecision] * N[(t$95$2 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot 3\right)\\
t_1 := x1 \cdot x1 + 1\\
t_2 := \frac{\left(x2 \cdot 2 + t_0\right) - x1}{t_1}\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_1} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_0 \cdot t_2 + t_1 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 8: 76.2% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := x1 \cdot x1 + 1\\ t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\ t_4 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2}\\ t_5 := t_1 \cdot t_4\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -2.2 \cdot 10^{+15}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_5 + t_2 \cdot \left(x1 \cdot 2 + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\right)\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_5 + t_2 \cdot \left(\left(\left(x1 \cdot 2\right) \cdot t_4\right) \cdot \left(t_4 - 3\right) + \left(x1 \cdot x1\right) \cdot 6\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (+ (* x1 x1) 1.0))
        (t_3 (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_2)))
        (t_4 (/ (- (+ (* x2 2.0) t_1) x1) t_2))
        (t_5 (* t_1 t_4)))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -2.2e+15)
       (+
        x1
        (+
         t_3
         (+
          x1
          (+
           t_0
           (+ t_5 (* t_2 (+ (* x1 2.0) (* (* x1 x1) (- (* 4.0 t_4) 6.0)))))))))
       (if (<= x1 1.4e+154)
         (+
          x1
          (+
           t_3
           (+
            x1
            (+
             t_0
             (+
              t_5
              (*
               t_2
               (+ (* (* (* x1 2.0) t_4) (- t_4 3.0)) (* (* x1 x1) 6.0))))))))
         (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	double t_5 = t_1 * t_4;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -2.2e+15) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0) + ((x1 * x1) * ((4.0 * t_4) - 6.0))))))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((((x1 * 2.0) * t_4) * (t_4 - 3.0)) + ((x1 * x1) * 6.0)))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: t_5
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = x1 * (x1 * 3.0d0)
    t_2 = (x1 * x1) + 1.0d0
    t_3 = 3.0d0 * (((t_1 - (x2 * 2.0d0)) - x1) / t_2)
    t_4 = (((x2 * 2.0d0) + t_1) - x1) / t_2
    t_5 = t_1 * t_4
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-2.2d+15)) then
        tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0d0) + ((x1 * x1) * ((4.0d0 * t_4) - 6.0d0))))))))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((((x1 * 2.0d0) * t_4) * (t_4 - 3.0d0)) + ((x1 * x1) * 6.0d0)))))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	double t_5 = t_1 * t_4;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -2.2e+15) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0) + ((x1 * x1) * ((4.0 * t_4) - 6.0))))))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((((x1 * 2.0) * t_4) * (t_4 - 3.0)) + ((x1 * x1) * 6.0)))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = x1 * (x1 * 3.0)
	t_2 = (x1 * x1) + 1.0
	t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2)
	t_4 = (((x2 * 2.0) + t_1) - x1) / t_2
	t_5 = t_1 * t_4
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -2.2e+15:
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0) + ((x1 * x1) * ((4.0 * t_4) - 6.0))))))))
	elif x1 <= 1.4e+154:
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((((x1 * 2.0) * t_4) * (t_4 - 3.0)) + ((x1 * x1) * 6.0)))))))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(x1 * x1) + 1.0)
	t_3 = Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_2))
	t_4 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_2)
	t_5 = Float64(t_1 * t_4)
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -2.2e+15)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(t_5 + Float64(t_2 * Float64(Float64(x1 * 2.0) + Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_4) - 6.0)))))))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(t_5 + Float64(t_2 * Float64(Float64(Float64(Float64(x1 * 2.0) * t_4) * Float64(t_4 - 3.0)) + Float64(Float64(x1 * x1) * 6.0))))))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = x1 * (x1 * 3.0);
	t_2 = (x1 * x1) + 1.0;
	t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	t_5 = t_1 * t_4;
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -2.2e+15)
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0) + ((x1 * x1) * ((4.0 * t_4) - 6.0))))))));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((((x1 * 2.0) * t_4) * (t_4 - 3.0)) + ((x1 * x1) * 6.0)))))));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$1 * t$95$4), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -2.2e+15], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(t$95$5 + N[(t$95$2 * N[(N[(x1 * 2.0), $MachinePrecision] + N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$4), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(t$95$5 + N[(t$95$2 * N[(N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$4), $MachinePrecision] * N[(t$95$4 - 3.0), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * x1), $MachinePrecision] * 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := x1 \cdot x1 + 1\\
t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\
t_4 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2}\\
t_5 := t_1 \cdot t_4\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -2.2 \cdot 10^{+15}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_5 + t_2 \cdot \left(x1 \cdot 2 + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\right)\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_5 + t_2 \cdot \left(\left(\left(x1 \cdot 2\right) \cdot t_4\right) \cdot \left(t_4 - 3\right) + \left(x1 \cdot x1\right) \cdot 6\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 9: 78.1% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot x1 + 1\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_0}\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_0} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_0 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right) + 3 \cdot t_1\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (+ (* x1 x1) 1.0))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (/ (- (+ (* x2 2.0) t_1) x1) t_0)))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 1.4e+154)
       (+
        x1
        (+
         (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_0))
         (+
          x1
          (+
           (* x1 (* x1 x1))
           (+
            (*
             t_0
             (+
              (* (* x1 x1) (- (* 4.0 t_2) 6.0))
              (* (* (* x1 2.0) t_2) (- t_2 3.0))))
            (* 3.0 t_1))))))
       (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0)))))))))
double code(double x1, double x2) {
	double t_0 = (x1 * x1) + 1.0;
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (((x2 * 2.0) + t_1) - x1) / t_0;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + ((3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_0)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0)))) + (3.0 * t_1)))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: tmp
    t_0 = (x1 * x1) + 1.0d0
    t_1 = x1 * (x1 * 3.0d0)
    t_2 = (((x2 * 2.0d0) + t_1) - x1) / t_0
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + ((3.0d0 * (((t_1 - (x2 * 2.0d0)) - x1) / t_0)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * (((x1 * x1) * ((4.0d0 * t_2) - 6.0d0)) + (((x1 * 2.0d0) * t_2) * (t_2 - 3.0d0)))) + (3.0d0 * t_1)))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = (x1 * x1) + 1.0;
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (((x2 * 2.0) + t_1) - x1) / t_0;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + ((3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_0)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0)))) + (3.0 * t_1)))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = (x1 * x1) + 1.0
	t_1 = x1 * (x1 * 3.0)
	t_2 = (((x2 * 2.0) + t_1) - x1) / t_0
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= 1.4e+154:
		tmp = x1 + ((3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_0)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0)))) + (3.0 * t_1)))))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(Float64(x1 * x1) + 1.0)
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_0)
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_0)) + Float64(x1 + Float64(Float64(x1 * Float64(x1 * x1)) + Float64(Float64(t_0 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_2) - 6.0)) + Float64(Float64(Float64(x1 * 2.0) * t_2) * Float64(t_2 - 3.0)))) + Float64(3.0 * t_1))))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = (x1 * x1) + 1.0;
	t_1 = x1 * (x1 * 3.0);
	t_2 = (((x2 * 2.0) + t_1) - x1) / t_0;
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + ((3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_0)) + (x1 + ((x1 * (x1 * x1)) + ((t_0 * (((x1 * x1) * ((4.0 * t_2) - 6.0)) + (((x1 * 2.0) * t_2) * (t_2 - 3.0)))) + (3.0 * t_1)))));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$0), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision] + N[(x1 + N[(N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$0 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$2), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(x1 * 2.0), $MachinePrecision] * t$95$2), $MachinePrecision] * N[(t$95$2 - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(3.0 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot x1 + 1\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_0}\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_0} + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(t_0 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_2 - 6\right) + \left(\left(x1 \cdot 2\right) \cdot t_2\right) \cdot \left(t_2 - 3\right)\right) + 3 \cdot t_1\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 10: 74.5% accurate, 1.1× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x1 \cdot x1 + 1\\ t_2 := x1 \cdot \left(x1 \cdot 3\right)\\ t_3 := 3 \cdot \frac{\left(t_2 - x2 \cdot 2\right) - x1}{t_1}\\ t_4 := \frac{\left(x2 \cdot 2 + t_2\right) - x1}{t_1}\\ t_5 := \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -5.5 \cdot 10^{+19}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_2 \cdot t_4 + t_1 \cdot \left(x1 \cdot 2 + t_5\right)\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 9.5 \cdot 10^{+139}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(3 \cdot t_2 + t_1 \cdot \left(t_5 + \left(t_4 - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \left(x2 \cdot 2 - x1\right)\right)\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (+ (* x1 x1) 1.0))
        (t_2 (* x1 (* x1 3.0)))
        (t_3 (* 3.0 (/ (- (- t_2 (* x2 2.0)) x1) t_1)))
        (t_4 (/ (- (+ (* x2 2.0) t_2) x1) t_1))
        (t_5 (* (* x1 x1) (- (* 4.0 t_4) 6.0))))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -5.5e+19)
       (+ x1 (+ t_3 (+ x1 (+ t_0 (+ (* t_2 t_4) (* t_1 (+ (* x1 2.0) t_5)))))))
       (if (<= x1 9.5e+139)
         (+
          x1
          (+
           t_3
           (+
            x1
            (+
             t_0
             (+
              (* 3.0 t_2)
              (*
               t_1
               (+ t_5 (* (- t_4 3.0) (* (* x1 2.0) (- (* x2 2.0) x1))))))))))
         (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = x1 * (x1 * 3.0);
	double t_3 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_1);
	double t_4 = (((x2 * 2.0) + t_2) - x1) / t_1;
	double t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -5.5e+19) {
		tmp = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0) + t_5))))));
	} else if (x1 <= 9.5e+139) {
		tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0 * t_2) + (t_1 * (t_5 + ((t_4 - 3.0) * ((x1 * 2.0) * ((x2 * 2.0) - x1)))))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: t_5
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = (x1 * x1) + 1.0d0
    t_2 = x1 * (x1 * 3.0d0)
    t_3 = 3.0d0 * (((t_2 - (x2 * 2.0d0)) - x1) / t_1)
    t_4 = (((x2 * 2.0d0) + t_2) - x1) / t_1
    t_5 = (x1 * x1) * ((4.0d0 * t_4) - 6.0d0)
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-5.5d+19)) then
        tmp = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0d0) + t_5))))))
    else if (x1 <= 9.5d+139) then
        tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0d0 * t_2) + (t_1 * (t_5 + ((t_4 - 3.0d0) * ((x1 * 2.0d0) * ((x2 * 2.0d0) - x1)))))))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = x1 * (x1 * 3.0);
	double t_3 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_1);
	double t_4 = (((x2 * 2.0) + t_2) - x1) / t_1;
	double t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -5.5e+19) {
		tmp = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0) + t_5))))));
	} else if (x1 <= 9.5e+139) {
		tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0 * t_2) + (t_1 * (t_5 + ((t_4 - 3.0) * ((x1 * 2.0) * ((x2 * 2.0) - x1)))))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = (x1 * x1) + 1.0
	t_2 = x1 * (x1 * 3.0)
	t_3 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_1)
	t_4 = (((x2 * 2.0) + t_2) - x1) / t_1
	t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0)
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -5.5e+19:
		tmp = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0) + t_5))))))
	elif x1 <= 9.5e+139:
		tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0 * t_2) + (t_1 * (t_5 + ((t_4 - 3.0) * ((x1 * 2.0) * ((x2 * 2.0) - x1)))))))))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(Float64(x1 * x1) + 1.0)
	t_2 = Float64(x1 * Float64(x1 * 3.0))
	t_3 = Float64(3.0 * Float64(Float64(Float64(t_2 - Float64(x2 * 2.0)) - x1) / t_1))
	t_4 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_2) - x1) / t_1)
	t_5 = Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_4) - 6.0))
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -5.5e+19)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(Float64(t_2 * t_4) + Float64(t_1 * Float64(Float64(x1 * 2.0) + t_5)))))));
	elseif (x1 <= 9.5e+139)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(Float64(3.0 * t_2) + Float64(t_1 * Float64(t_5 + Float64(Float64(t_4 - 3.0) * Float64(Float64(x1 * 2.0) * Float64(Float64(x2 * 2.0) - x1))))))))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = (x1 * x1) + 1.0;
	t_2 = x1 * (x1 * 3.0);
	t_3 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_1);
	t_4 = (((x2 * 2.0) + t_2) - x1) / t_1;
	t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -5.5e+19)
		tmp = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0) + t_5))))));
	elseif (x1 <= 9.5e+139)
		tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0 * t_2) + (t_1 * (t_5 + ((t_4 - 3.0) * ((x1 * 2.0) * ((x2 * 2.0) - x1)))))))));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * N[(N[(N[(t$95$2 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$2), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]}, Block[{t$95$5 = N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$4), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -5.5e+19], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(N[(t$95$2 * t$95$4), $MachinePrecision] + N[(t$95$1 * N[(N[(x1 * 2.0), $MachinePrecision] + t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 9.5e+139], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(N[(3.0 * t$95$2), $MachinePrecision] + N[(t$95$1 * N[(t$95$5 + N[(N[(t$95$4 - 3.0), $MachinePrecision] * N[(N[(x1 * 2.0), $MachinePrecision] * N[(N[(x2 * 2.0), $MachinePrecision] - x1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x1 \cdot x1 + 1\\
t_2 := x1 \cdot \left(x1 \cdot 3\right)\\
t_3 := 3 \cdot \frac{\left(t_2 - x2 \cdot 2\right) - x1}{t_1}\\
t_4 := \frac{\left(x2 \cdot 2 + t_2\right) - x1}{t_1}\\
t_5 := \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -5.5 \cdot 10^{+19}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_2 \cdot t_4 + t_1 \cdot \left(x1 \cdot 2 + t_5\right)\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 9.5 \cdot 10^{+139}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(3 \cdot t_2 + t_1 \cdot \left(t_5 + \left(t_4 - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \left(x2 \cdot 2 - x1\right)\right)\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 11: 74.4% accurate, 1.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := x1 \cdot x1 + 1\\ t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\ t_4 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2}\\ t_5 := t_1 \cdot t_4\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1.4 \cdot 10^{+15}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_5 + t_2 \cdot \left(x1 \cdot 2 + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\right)\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 9.5 \cdot 10^{+139}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_5 + t_2 \cdot \left(\left(x1 \cdot x1\right) \cdot 6 + \left(t_4 - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \left(x2 \cdot 2 - x1\right)\right)\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (+ (* x1 x1) 1.0))
        (t_3 (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_2)))
        (t_4 (/ (- (+ (* x2 2.0) t_1) x1) t_2))
        (t_5 (* t_1 t_4)))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1.4e+15)
       (+
        x1
        (+
         t_3
         (+
          x1
          (+
           t_0
           (+ t_5 (* t_2 (+ (* x1 2.0) (* (* x1 x1) (- (* 4.0 t_4) 6.0)))))))))
       (if (<= x1 9.5e+139)
         (+
          x1
          (+
           t_3
           (+
            x1
            (+
             t_0
             (+
              t_5
              (*
               t_2
               (+
                (* (* x1 x1) 6.0)
                (* (- t_4 3.0) (* (* x1 2.0) (- (* x2 2.0) x1))))))))))
         (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	double t_5 = t_1 * t_4;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1.4e+15) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0) + ((x1 * x1) * ((4.0 * t_4) - 6.0))))))));
	} else if (x1 <= 9.5e+139) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * (((x1 * x1) * 6.0) + ((t_4 - 3.0) * ((x1 * 2.0) * ((x2 * 2.0) - x1)))))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: t_5
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = x1 * (x1 * 3.0d0)
    t_2 = (x1 * x1) + 1.0d0
    t_3 = 3.0d0 * (((t_1 - (x2 * 2.0d0)) - x1) / t_2)
    t_4 = (((x2 * 2.0d0) + t_1) - x1) / t_2
    t_5 = t_1 * t_4
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1.4d+15)) then
        tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0d0) + ((x1 * x1) * ((4.0d0 * t_4) - 6.0d0))))))))
    else if (x1 <= 9.5d+139) then
        tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * (((x1 * x1) * 6.0d0) + ((t_4 - 3.0d0) * ((x1 * 2.0d0) * ((x2 * 2.0d0) - x1)))))))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	double t_5 = t_1 * t_4;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1.4e+15) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0) + ((x1 * x1) * ((4.0 * t_4) - 6.0))))))));
	} else if (x1 <= 9.5e+139) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * (((x1 * x1) * 6.0) + ((t_4 - 3.0) * ((x1 * 2.0) * ((x2 * 2.0) - x1)))))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = x1 * (x1 * 3.0)
	t_2 = (x1 * x1) + 1.0
	t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2)
	t_4 = (((x2 * 2.0) + t_1) - x1) / t_2
	t_5 = t_1 * t_4
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1.4e+15:
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0) + ((x1 * x1) * ((4.0 * t_4) - 6.0))))))))
	elif x1 <= 9.5e+139:
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * (((x1 * x1) * 6.0) + ((t_4 - 3.0) * ((x1 * 2.0) * ((x2 * 2.0) - x1)))))))))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(x1 * x1) + 1.0)
	t_3 = Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_2))
	t_4 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_2)
	t_5 = Float64(t_1 * t_4)
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1.4e+15)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(t_5 + Float64(t_2 * Float64(Float64(x1 * 2.0) + Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_4) - 6.0)))))))));
	elseif (x1 <= 9.5e+139)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(t_5 + Float64(t_2 * Float64(Float64(Float64(x1 * x1) * 6.0) + Float64(Float64(t_4 - 3.0) * Float64(Float64(x1 * 2.0) * Float64(Float64(x2 * 2.0) - x1))))))))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = x1 * (x1 * 3.0);
	t_2 = (x1 * x1) + 1.0;
	t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	t_4 = (((x2 * 2.0) + t_1) - x1) / t_2;
	t_5 = t_1 * t_4;
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1.4e+15)
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * ((x1 * 2.0) + ((x1 * x1) * ((4.0 * t_4) - 6.0))))))));
	elseif (x1 <= 9.5e+139)
		tmp = x1 + (t_3 + (x1 + (t_0 + (t_5 + (t_2 * (((x1 * x1) * 6.0) + ((t_4 - 3.0) * ((x1 * 2.0) * ((x2 * 2.0) - x1)))))))));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$1 * t$95$4), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1.4e+15], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(t$95$5 + N[(t$95$2 * N[(N[(x1 * 2.0), $MachinePrecision] + N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$4), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 9.5e+139], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(t$95$5 + N[(t$95$2 * N[(N[(N[(x1 * x1), $MachinePrecision] * 6.0), $MachinePrecision] + N[(N[(t$95$4 - 3.0), $MachinePrecision] * N[(N[(x1 * 2.0), $MachinePrecision] * N[(N[(x2 * 2.0), $MachinePrecision] - x1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := x1 \cdot x1 + 1\\
t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\
t_4 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2}\\
t_5 := t_1 \cdot t_4\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1.4 \cdot 10^{+15}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_5 + t_2 \cdot \left(x1 \cdot 2 + \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\right)\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 9.5 \cdot 10^{+139}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_5 + t_2 \cdot \left(\left(x1 \cdot x1\right) \cdot 6 + \left(t_4 - 3\right) \cdot \left(\left(x1 \cdot 2\right) \cdot \left(x2 \cdot 2 - x1\right)\right)\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 12: 74.8% accurate, 1.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x1 \cdot x1 + 1\\ t_2 := x1 \cdot \left(x1 \cdot 3\right)\\ t_3 := 3 \cdot \frac{\left(t_2 - x2 \cdot 2\right) - x1}{t_1}\\ t_4 := \frac{\left(x2 \cdot 2 + t_2\right) - x1}{t_1}\\ t_5 := \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\\ t_6 := x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_2 \cdot t_4 + t_1 \cdot \left(x1 \cdot 2 + t_5\right)\right)\right)\right)\right)\\ t_7 := x2 \cdot 2 - 3\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1850000000000:\\ \;\;\;\;t_6\\ \mathbf{elif}\;x1 \leq 7800000:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_1 \cdot \left(t_5 + t_7 \cdot \left(\left(x1 \cdot 2\right) \cdot \left(x2 \cdot 2 - x1\right)\right)\right) + \left(x2 \cdot 2\right) \cdot t_2\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;t_6\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot t_7\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (+ (* x1 x1) 1.0))
        (t_2 (* x1 (* x1 3.0)))
        (t_3 (* 3.0 (/ (- (- t_2 (* x2 2.0)) x1) t_1)))
        (t_4 (/ (- (+ (* x2 2.0) t_2) x1) t_1))
        (t_5 (* (* x1 x1) (- (* 4.0 t_4) 6.0)))
        (t_6
         (+
          x1
          (+ t_3 (+ x1 (+ t_0 (+ (* t_2 t_4) (* t_1 (+ (* x1 2.0) t_5))))))))
        (t_7 (- (* x2 2.0) 3.0)))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1850000000000.0)
       t_6
       (if (<= x1 7800000.0)
         (+
          x1
          (+
           t_3
           (+
            x1
            (+
             t_0
             (+
              (* t_1 (+ t_5 (* t_7 (* (* x1 2.0) (- (* x2 2.0) x1)))))
              (* (* x2 2.0) t_2))))))
         (if (<= x1 1.4e+154) t_6 (* x1 (+ 2.0 (* 4.0 (* x2 t_7))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = x1 * (x1 * 3.0);
	double t_3 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_1);
	double t_4 = (((x2 * 2.0) + t_2) - x1) / t_1;
	double t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	double t_6 = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0) + t_5))))));
	double t_7 = (x2 * 2.0) - 3.0;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1850000000000.0) {
		tmp = t_6;
	} else if (x1 <= 7800000.0) {
		tmp = x1 + (t_3 + (x1 + (t_0 + ((t_1 * (t_5 + (t_7 * ((x1 * 2.0) * ((x2 * 2.0) - x1))))) + ((x2 * 2.0) * t_2)))));
	} else if (x1 <= 1.4e+154) {
		tmp = t_6;
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * t_7)));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: t_5
    real(8) :: t_6
    real(8) :: t_7
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = (x1 * x1) + 1.0d0
    t_2 = x1 * (x1 * 3.0d0)
    t_3 = 3.0d0 * (((t_2 - (x2 * 2.0d0)) - x1) / t_1)
    t_4 = (((x2 * 2.0d0) + t_2) - x1) / t_1
    t_5 = (x1 * x1) * ((4.0d0 * t_4) - 6.0d0)
    t_6 = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0d0) + t_5))))))
    t_7 = (x2 * 2.0d0) - 3.0d0
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1850000000000.0d0)) then
        tmp = t_6
    else if (x1 <= 7800000.0d0) then
        tmp = x1 + (t_3 + (x1 + (t_0 + ((t_1 * (t_5 + (t_7 * ((x1 * 2.0d0) * ((x2 * 2.0d0) - x1))))) + ((x2 * 2.0d0) * t_2)))))
    else if (x1 <= 1.4d+154) then
        tmp = t_6
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * t_7)))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = x1 * (x1 * 3.0);
	double t_3 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_1);
	double t_4 = (((x2 * 2.0) + t_2) - x1) / t_1;
	double t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	double t_6 = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0) + t_5))))));
	double t_7 = (x2 * 2.0) - 3.0;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1850000000000.0) {
		tmp = t_6;
	} else if (x1 <= 7800000.0) {
		tmp = x1 + (t_3 + (x1 + (t_0 + ((t_1 * (t_5 + (t_7 * ((x1 * 2.0) * ((x2 * 2.0) - x1))))) + ((x2 * 2.0) * t_2)))));
	} else if (x1 <= 1.4e+154) {
		tmp = t_6;
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * t_7)));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = (x1 * x1) + 1.0
	t_2 = x1 * (x1 * 3.0)
	t_3 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_1)
	t_4 = (((x2 * 2.0) + t_2) - x1) / t_1
	t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0)
	t_6 = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0) + t_5))))))
	t_7 = (x2 * 2.0) - 3.0
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1850000000000.0:
		tmp = t_6
	elif x1 <= 7800000.0:
		tmp = x1 + (t_3 + (x1 + (t_0 + ((t_1 * (t_5 + (t_7 * ((x1 * 2.0) * ((x2 * 2.0) - x1))))) + ((x2 * 2.0) * t_2)))))
	elif x1 <= 1.4e+154:
		tmp = t_6
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * t_7)))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(Float64(x1 * x1) + 1.0)
	t_2 = Float64(x1 * Float64(x1 * 3.0))
	t_3 = Float64(3.0 * Float64(Float64(Float64(t_2 - Float64(x2 * 2.0)) - x1) / t_1))
	t_4 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_2) - x1) / t_1)
	t_5 = Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_4) - 6.0))
	t_6 = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(Float64(t_2 * t_4) + Float64(t_1 * Float64(Float64(x1 * 2.0) + t_5)))))))
	t_7 = Float64(Float64(x2 * 2.0) - 3.0)
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1850000000000.0)
		tmp = t_6;
	elseif (x1 <= 7800000.0)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(Float64(t_1 * Float64(t_5 + Float64(t_7 * Float64(Float64(x1 * 2.0) * Float64(Float64(x2 * 2.0) - x1))))) + Float64(Float64(x2 * 2.0) * t_2))))));
	elseif (x1 <= 1.4e+154)
		tmp = t_6;
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * t_7))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = (x1 * x1) + 1.0;
	t_2 = x1 * (x1 * 3.0);
	t_3 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_1);
	t_4 = (((x2 * 2.0) + t_2) - x1) / t_1;
	t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	t_6 = x1 + (t_3 + (x1 + (t_0 + ((t_2 * t_4) + (t_1 * ((x1 * 2.0) + t_5))))));
	t_7 = (x2 * 2.0) - 3.0;
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1850000000000.0)
		tmp = t_6;
	elseif (x1 <= 7800000.0)
		tmp = x1 + (t_3 + (x1 + (t_0 + ((t_1 * (t_5 + (t_7 * ((x1 * 2.0) * ((x2 * 2.0) - x1))))) + ((x2 * 2.0) * t_2)))));
	elseif (x1 <= 1.4e+154)
		tmp = t_6;
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * t_7)));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * N[(N[(N[(t$95$2 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$2), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]}, Block[{t$95$5 = N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$4), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(N[(t$95$2 * t$95$4), $MachinePrecision] + N[(t$95$1 * N[(N[(x1 * 2.0), $MachinePrecision] + t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1850000000000.0], t$95$6, If[LessEqual[x1, 7800000.0], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(N[(t$95$1 * N[(t$95$5 + N[(t$95$7 * N[(N[(x1 * 2.0), $MachinePrecision] * N[(N[(x2 * 2.0), $MachinePrecision] - x1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(x2 * 2.0), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], t$95$6, N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * t$95$7), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x1 \cdot x1 + 1\\
t_2 := x1 \cdot \left(x1 \cdot 3\right)\\
t_3 := 3 \cdot \frac{\left(t_2 - x2 \cdot 2\right) - x1}{t_1}\\
t_4 := \frac{\left(x2 \cdot 2 + t_2\right) - x1}{t_1}\\
t_5 := \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\\
t_6 := x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_2 \cdot t_4 + t_1 \cdot \left(x1 \cdot 2 + t_5\right)\right)\right)\right)\right)\\
t_7 := x2 \cdot 2 - 3\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1850000000000:\\
\;\;\;\;t_6\\

\mathbf{elif}\;x1 \leq 7800000:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(t_1 \cdot \left(t_5 + t_7 \cdot \left(\left(x1 \cdot 2\right) \cdot \left(x2 \cdot 2 - x1\right)\right)\right) + \left(x2 \cdot 2\right) \cdot t_2\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;t_6\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot t_7\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 13: 74.8% accurate, 1.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x2 \cdot 2 - x1\\ t_2 := x1 \cdot x1 + 1\\ t_3 := x1 \cdot \left(x1 \cdot 3\right)\\ t_4 := 3 \cdot \frac{\left(t_3 - x2 \cdot 2\right) - x1}{t_2}\\ t_5 := \frac{\left(x2 \cdot 2 + t_3\right) - x1}{t_2}\\ t_6 := \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_5 - 6\right)\\ t_7 := x1 + \left(t_4 + \left(x1 + \left(t_0 + \left(t_3 \cdot t_5 + t_2 \cdot \left(x1 \cdot 2 + t_6\right)\right)\right)\right)\right)\\ t_8 := x2 \cdot 2 - 3\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1750000000000:\\ \;\;\;\;t_7\\ \mathbf{elif}\;x1 \leq 22500000:\\ \;\;\;\;x1 + \left(t_4 + \left(x1 + \left(t_0 + \left(t_2 \cdot \left(t_6 + t_8 \cdot \left(\left(x1 \cdot 2\right) \cdot t_1\right)\right) + t_3 \cdot t_1\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;t_7\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot t_8\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (- (* x2 2.0) x1))
        (t_2 (+ (* x1 x1) 1.0))
        (t_3 (* x1 (* x1 3.0)))
        (t_4 (* 3.0 (/ (- (- t_3 (* x2 2.0)) x1) t_2)))
        (t_5 (/ (- (+ (* x2 2.0) t_3) x1) t_2))
        (t_6 (* (* x1 x1) (- (* 4.0 t_5) 6.0)))
        (t_7
         (+
          x1
          (+ t_4 (+ x1 (+ t_0 (+ (* t_3 t_5) (* t_2 (+ (* x1 2.0) t_6))))))))
        (t_8 (- (* x2 2.0) 3.0)))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1750000000000.0)
       t_7
       (if (<= x1 22500000.0)
         (+
          x1
          (+
           t_4
           (+
            x1
            (+
             t_0
             (+ (* t_2 (+ t_6 (* t_8 (* (* x1 2.0) t_1)))) (* t_3 t_1))))))
         (if (<= x1 1.4e+154) t_7 (* x1 (+ 2.0 (* 4.0 (* x2 t_8))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = (x2 * 2.0) - x1;
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = x1 * (x1 * 3.0);
	double t_4 = 3.0 * (((t_3 - (x2 * 2.0)) - x1) / t_2);
	double t_5 = (((x2 * 2.0) + t_3) - x1) / t_2;
	double t_6 = (x1 * x1) * ((4.0 * t_5) - 6.0);
	double t_7 = x1 + (t_4 + (x1 + (t_0 + ((t_3 * t_5) + (t_2 * ((x1 * 2.0) + t_6))))));
	double t_8 = (x2 * 2.0) - 3.0;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1750000000000.0) {
		tmp = t_7;
	} else if (x1 <= 22500000.0) {
		tmp = x1 + (t_4 + (x1 + (t_0 + ((t_2 * (t_6 + (t_8 * ((x1 * 2.0) * t_1)))) + (t_3 * t_1)))));
	} else if (x1 <= 1.4e+154) {
		tmp = t_7;
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * t_8)));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: t_5
    real(8) :: t_6
    real(8) :: t_7
    real(8) :: t_8
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = (x2 * 2.0d0) - x1
    t_2 = (x1 * x1) + 1.0d0
    t_3 = x1 * (x1 * 3.0d0)
    t_4 = 3.0d0 * (((t_3 - (x2 * 2.0d0)) - x1) / t_2)
    t_5 = (((x2 * 2.0d0) + t_3) - x1) / t_2
    t_6 = (x1 * x1) * ((4.0d0 * t_5) - 6.0d0)
    t_7 = x1 + (t_4 + (x1 + (t_0 + ((t_3 * t_5) + (t_2 * ((x1 * 2.0d0) + t_6))))))
    t_8 = (x2 * 2.0d0) - 3.0d0
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1750000000000.0d0)) then
        tmp = t_7
    else if (x1 <= 22500000.0d0) then
        tmp = x1 + (t_4 + (x1 + (t_0 + ((t_2 * (t_6 + (t_8 * ((x1 * 2.0d0) * t_1)))) + (t_3 * t_1)))))
    else if (x1 <= 1.4d+154) then
        tmp = t_7
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * t_8)))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = (x2 * 2.0) - x1;
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = x1 * (x1 * 3.0);
	double t_4 = 3.0 * (((t_3 - (x2 * 2.0)) - x1) / t_2);
	double t_5 = (((x2 * 2.0) + t_3) - x1) / t_2;
	double t_6 = (x1 * x1) * ((4.0 * t_5) - 6.0);
	double t_7 = x1 + (t_4 + (x1 + (t_0 + ((t_3 * t_5) + (t_2 * ((x1 * 2.0) + t_6))))));
	double t_8 = (x2 * 2.0) - 3.0;
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1750000000000.0) {
		tmp = t_7;
	} else if (x1 <= 22500000.0) {
		tmp = x1 + (t_4 + (x1 + (t_0 + ((t_2 * (t_6 + (t_8 * ((x1 * 2.0) * t_1)))) + (t_3 * t_1)))));
	} else if (x1 <= 1.4e+154) {
		tmp = t_7;
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * t_8)));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = (x2 * 2.0) - x1
	t_2 = (x1 * x1) + 1.0
	t_3 = x1 * (x1 * 3.0)
	t_4 = 3.0 * (((t_3 - (x2 * 2.0)) - x1) / t_2)
	t_5 = (((x2 * 2.0) + t_3) - x1) / t_2
	t_6 = (x1 * x1) * ((4.0 * t_5) - 6.0)
	t_7 = x1 + (t_4 + (x1 + (t_0 + ((t_3 * t_5) + (t_2 * ((x1 * 2.0) + t_6))))))
	t_8 = (x2 * 2.0) - 3.0
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1750000000000.0:
		tmp = t_7
	elif x1 <= 22500000.0:
		tmp = x1 + (t_4 + (x1 + (t_0 + ((t_2 * (t_6 + (t_8 * ((x1 * 2.0) * t_1)))) + (t_3 * t_1)))))
	elif x1 <= 1.4e+154:
		tmp = t_7
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * t_8)))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(Float64(x2 * 2.0) - x1)
	t_2 = Float64(Float64(x1 * x1) + 1.0)
	t_3 = Float64(x1 * Float64(x1 * 3.0))
	t_4 = Float64(3.0 * Float64(Float64(Float64(t_3 - Float64(x2 * 2.0)) - x1) / t_2))
	t_5 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_3) - x1) / t_2)
	t_6 = Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_5) - 6.0))
	t_7 = Float64(x1 + Float64(t_4 + Float64(x1 + Float64(t_0 + Float64(Float64(t_3 * t_5) + Float64(t_2 * Float64(Float64(x1 * 2.0) + t_6)))))))
	t_8 = Float64(Float64(x2 * 2.0) - 3.0)
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1750000000000.0)
		tmp = t_7;
	elseif (x1 <= 22500000.0)
		tmp = Float64(x1 + Float64(t_4 + Float64(x1 + Float64(t_0 + Float64(Float64(t_2 * Float64(t_6 + Float64(t_8 * Float64(Float64(x1 * 2.0) * t_1)))) + Float64(t_3 * t_1))))));
	elseif (x1 <= 1.4e+154)
		tmp = t_7;
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * t_8))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = (x2 * 2.0) - x1;
	t_2 = (x1 * x1) + 1.0;
	t_3 = x1 * (x1 * 3.0);
	t_4 = 3.0 * (((t_3 - (x2 * 2.0)) - x1) / t_2);
	t_5 = (((x2 * 2.0) + t_3) - x1) / t_2;
	t_6 = (x1 * x1) * ((4.0 * t_5) - 6.0);
	t_7 = x1 + (t_4 + (x1 + (t_0 + ((t_3 * t_5) + (t_2 * ((x1 * 2.0) + t_6))))));
	t_8 = (x2 * 2.0) - 3.0;
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1750000000000.0)
		tmp = t_7;
	elseif (x1 <= 22500000.0)
		tmp = x1 + (t_4 + (x1 + (t_0 + ((t_2 * (t_6 + (t_8 * ((x1 * 2.0) * t_1)))) + (t_3 * t_1)))));
	elseif (x1 <= 1.4e+154)
		tmp = t_7;
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * t_8)));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x2 * 2.0), $MachinePrecision] - x1), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$3 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(3.0 * N[(N[(N[(t$95$3 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$3), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]}, Block[{t$95$6 = N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$5), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(x1 + N[(t$95$4 + N[(x1 + N[(t$95$0 + N[(N[(t$95$3 * t$95$5), $MachinePrecision] + N[(t$95$2 * N[(N[(x1 * 2.0), $MachinePrecision] + t$95$6), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1750000000000.0], t$95$7, If[LessEqual[x1, 22500000.0], N[(x1 + N[(t$95$4 + N[(x1 + N[(t$95$0 + N[(N[(t$95$2 * N[(t$95$6 + N[(t$95$8 * N[(N[(x1 * 2.0), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$3 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], t$95$7, N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x2 \cdot 2 - x1\\
t_2 := x1 \cdot x1 + 1\\
t_3 := x1 \cdot \left(x1 \cdot 3\right)\\
t_4 := 3 \cdot \frac{\left(t_3 - x2 \cdot 2\right) - x1}{t_2}\\
t_5 := \frac{\left(x2 \cdot 2 + t_3\right) - x1}{t_2}\\
t_6 := \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_5 - 6\right)\\
t_7 := x1 + \left(t_4 + \left(x1 + \left(t_0 + \left(t_3 \cdot t_5 + t_2 \cdot \left(x1 \cdot 2 + t_6\right)\right)\right)\right)\right)\\
t_8 := x2 \cdot 2 - 3\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1750000000000:\\
\;\;\;\;t_7\\

\mathbf{elif}\;x1 \leq 22500000:\\
\;\;\;\;x1 + \left(t_4 + \left(x1 + \left(t_0 + \left(t_2 \cdot \left(t_6 + t_8 \cdot \left(\left(x1 \cdot 2\right) \cdot t_1\right)\right) + t_3 \cdot t_1\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;t_7\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot t_8\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 14: 73.4% accurate, 1.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := x1 \cdot x1 + 1\\ t_3 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2}\\ t_4 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\ t_5 := t_2 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_3 - 6\right) + \left(x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\right)\right)\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1450000000000:\\ \;\;\;\;x1 + \left(t_4 + \left(x1 + \left(t_0 + \left(\left(x2 \cdot 2\right) \cdot t_1 + t_5\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 5700000:\\ \;\;\;\;x1 + \left(t_4 + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(\left(x1 + \left(t_0 + \left(t_1 \cdot t_3 + t_5\right)\right)\right) + 3 \cdot \left(x2 \cdot -2\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (+ (* x1 x1) 1.0))
        (t_3 (/ (- (+ (* x2 2.0) t_1) x1) t_2))
        (t_4 (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_2)))
        (t_5
         (*
          t_2
          (+
           (* (* x1 x1) (- (* 4.0 t_3) 6.0))
           (+ (* x1 2.0) (* -2.0 (- (* 4.0 x2) 3.0)))))))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1450000000000.0)
       (+ x1 (+ t_4 (+ x1 (+ t_0 (+ (* (* x2 2.0) t_1) t_5)))))
       (if (<= x1 5700000.0)
         (+
          x1
          (+
           t_4
           (+ x1 (* 4.0 (+ (* (* x2 2.0) (* x1 x2)) (* -3.0 (* x1 x2)))))))
         (if (<= x1 1.4e+154)
           (+ x1 (+ (+ x1 (+ t_0 (+ (* t_1 t_3) t_5))) (* 3.0 (* x2 -2.0))))
           (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0)))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = (((x2 * 2.0) + t_1) - x1) / t_2;
	double t_4 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_5 = t_2 * (((x1 * x1) * ((4.0 * t_3) - 6.0)) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1450000000000.0) {
		tmp = x1 + (t_4 + (x1 + (t_0 + (((x2 * 2.0) * t_1) + t_5))));
	} else if (x1 <= 5700000.0) {
		tmp = x1 + (t_4 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + ((x1 + (t_0 + ((t_1 * t_3) + t_5))) + (3.0 * (x2 * -2.0)));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: t_5
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = x1 * (x1 * 3.0d0)
    t_2 = (x1 * x1) + 1.0d0
    t_3 = (((x2 * 2.0d0) + t_1) - x1) / t_2
    t_4 = 3.0d0 * (((t_1 - (x2 * 2.0d0)) - x1) / t_2)
    t_5 = t_2 * (((x1 * x1) * ((4.0d0 * t_3) - 6.0d0)) + ((x1 * 2.0d0) + ((-2.0d0) * ((4.0d0 * x2) - 3.0d0))))
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1450000000000.0d0)) then
        tmp = x1 + (t_4 + (x1 + (t_0 + (((x2 * 2.0d0) * t_1) + t_5))))
    else if (x1 <= 5700000.0d0) then
        tmp = x1 + (t_4 + (x1 + (4.0d0 * (((x2 * 2.0d0) * (x1 * x2)) + ((-3.0d0) * (x1 * x2))))))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + ((x1 + (t_0 + ((t_1 * t_3) + t_5))) + (3.0d0 * (x2 * (-2.0d0))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = (((x2 * 2.0) + t_1) - x1) / t_2;
	double t_4 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_5 = t_2 * (((x1 * x1) * ((4.0 * t_3) - 6.0)) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1450000000000.0) {
		tmp = x1 + (t_4 + (x1 + (t_0 + (((x2 * 2.0) * t_1) + t_5))));
	} else if (x1 <= 5700000.0) {
		tmp = x1 + (t_4 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + ((x1 + (t_0 + ((t_1 * t_3) + t_5))) + (3.0 * (x2 * -2.0)));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = x1 * (x1 * 3.0)
	t_2 = (x1 * x1) + 1.0
	t_3 = (((x2 * 2.0) + t_1) - x1) / t_2
	t_4 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2)
	t_5 = t_2 * (((x1 * x1) * ((4.0 * t_3) - 6.0)) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))))
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1450000000000.0:
		tmp = x1 + (t_4 + (x1 + (t_0 + (((x2 * 2.0) * t_1) + t_5))))
	elif x1 <= 5700000.0:
		tmp = x1 + (t_4 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))))
	elif x1 <= 1.4e+154:
		tmp = x1 + ((x1 + (t_0 + ((t_1 * t_3) + t_5))) + (3.0 * (x2 * -2.0)))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(x1 * x1) + 1.0)
	t_3 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_2)
	t_4 = Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_2))
	t_5 = Float64(t_2 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_3) - 6.0)) + Float64(Float64(x1 * 2.0) + Float64(-2.0 * Float64(Float64(4.0 * x2) - 3.0)))))
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1450000000000.0)
		tmp = Float64(x1 + Float64(t_4 + Float64(x1 + Float64(t_0 + Float64(Float64(Float64(x2 * 2.0) * t_1) + t_5)))));
	elseif (x1 <= 5700000.0)
		tmp = Float64(x1 + Float64(t_4 + Float64(x1 + Float64(4.0 * Float64(Float64(Float64(x2 * 2.0) * Float64(x1 * x2)) + Float64(-3.0 * Float64(x1 * x2)))))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(t_0 + Float64(Float64(t_1 * t_3) + t_5))) + Float64(3.0 * Float64(x2 * -2.0))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = x1 * (x1 * 3.0);
	t_2 = (x1 * x1) + 1.0;
	t_3 = (((x2 * 2.0) + t_1) - x1) / t_2;
	t_4 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	t_5 = t_2 * (((x1 * x1) * ((4.0 * t_3) - 6.0)) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1450000000000.0)
		tmp = x1 + (t_4 + (x1 + (t_0 + (((x2 * 2.0) * t_1) + t_5))));
	elseif (x1 <= 5700000.0)
		tmp = x1 + (t_4 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + ((x1 + (t_0 + ((t_1 * t_3) + t_5))) + (3.0 * (x2 * -2.0)));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]}, Block[{t$95$4 = N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$2 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$3), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-2.0 * N[(N[(4.0 * x2), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1450000000000.0], N[(x1 + N[(t$95$4 + N[(x1 + N[(t$95$0 + N[(N[(N[(x2 * 2.0), $MachinePrecision] * t$95$1), $MachinePrecision] + t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 5700000.0], N[(x1 + N[(t$95$4 + N[(x1 + N[(4.0 * N[(N[(N[(x2 * 2.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision] + N[(-3.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(N[(x1 + N[(t$95$0 + N[(N[(t$95$1 * t$95$3), $MachinePrecision] + t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(3.0 * N[(x2 * -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := x1 \cdot x1 + 1\\
t_3 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2}\\
t_4 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\
t_5 := t_2 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot t_3 - 6\right) + \left(x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\right)\right)\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1450000000000:\\
\;\;\;\;x1 + \left(t_4 + \left(x1 + \left(t_0 + \left(\left(x2 \cdot 2\right) \cdot t_1 + t_5\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 5700000:\\
\;\;\;\;x1 + \left(t_4 + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(\left(x1 + \left(t_0 + \left(t_1 \cdot t_3 + t_5\right)\right)\right) + 3 \cdot \left(x2 \cdot -2\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 15: 73.5% accurate, 1.2× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := \left(x2 \cdot 2\right) \cdot t_1\\ t_3 := x1 \cdot x1 + 1\\ t_4 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_3}\\ t_5 := \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\\ t_6 := x2 \cdot 2 - 3\\ t_7 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_3}\\ t_8 := t_3 \cdot \left(t_5 + \left(x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\right)\right)\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1050000000000:\\ \;\;\;\;x1 + \left(t_7 + \left(x1 + \left(t_0 + \left(t_2 + t_8\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 145000000:\\ \;\;\;\;x1 + \left(t_7 + \left(x1 + \left(t_0 + \left(t_3 \cdot \left(t_5 + t_6 \cdot \left(\left(x1 \cdot 2\right) \cdot \left(x2 \cdot 2 - x1\right)\right)\right) + t_2\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(\left(x1 + \left(t_0 + \left(t_1 \cdot t_4 + t_8\right)\right)\right) + 3 \cdot \left(x2 \cdot -2\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot t_6\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (* (* x2 2.0) t_1))
        (t_3 (+ (* x1 x1) 1.0))
        (t_4 (/ (- (+ (* x2 2.0) t_1) x1) t_3))
        (t_5 (* (* x1 x1) (- (* 4.0 t_4) 6.0)))
        (t_6 (- (* x2 2.0) 3.0))
        (t_7 (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_3)))
        (t_8 (* t_3 (+ t_5 (+ (* x1 2.0) (* -2.0 (- (* 4.0 x2) 3.0)))))))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1050000000000.0)
       (+ x1 (+ t_7 (+ x1 (+ t_0 (+ t_2 t_8)))))
       (if (<= x1 145000000.0)
         (+
          x1
          (+
           t_7
           (+
            x1
            (+
             t_0
             (+
              (* t_3 (+ t_5 (* t_6 (* (* x1 2.0) (- (* x2 2.0) x1)))))
              t_2)))))
         (if (<= x1 1.4e+154)
           (+ x1 (+ (+ x1 (+ t_0 (+ (* t_1 t_4) t_8))) (* 3.0 (* x2 -2.0))))
           (* x1 (+ 2.0 (* 4.0 (* x2 t_6))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x2 * 2.0) * t_1;
	double t_3 = (x1 * x1) + 1.0;
	double t_4 = (((x2 * 2.0) + t_1) - x1) / t_3;
	double t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	double t_6 = (x2 * 2.0) - 3.0;
	double t_7 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_3);
	double t_8 = t_3 * (t_5 + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1050000000000.0) {
		tmp = x1 + (t_7 + (x1 + (t_0 + (t_2 + t_8))));
	} else if (x1 <= 145000000.0) {
		tmp = x1 + (t_7 + (x1 + (t_0 + ((t_3 * (t_5 + (t_6 * ((x1 * 2.0) * ((x2 * 2.0) - x1))))) + t_2))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + ((x1 + (t_0 + ((t_1 * t_4) + t_8))) + (3.0 * (x2 * -2.0)));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * t_6)));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: t_5
    real(8) :: t_6
    real(8) :: t_7
    real(8) :: t_8
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = x1 * (x1 * 3.0d0)
    t_2 = (x2 * 2.0d0) * t_1
    t_3 = (x1 * x1) + 1.0d0
    t_4 = (((x2 * 2.0d0) + t_1) - x1) / t_3
    t_5 = (x1 * x1) * ((4.0d0 * t_4) - 6.0d0)
    t_6 = (x2 * 2.0d0) - 3.0d0
    t_7 = 3.0d0 * (((t_1 - (x2 * 2.0d0)) - x1) / t_3)
    t_8 = t_3 * (t_5 + ((x1 * 2.0d0) + ((-2.0d0) * ((4.0d0 * x2) - 3.0d0))))
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1050000000000.0d0)) then
        tmp = x1 + (t_7 + (x1 + (t_0 + (t_2 + t_8))))
    else if (x1 <= 145000000.0d0) then
        tmp = x1 + (t_7 + (x1 + (t_0 + ((t_3 * (t_5 + (t_6 * ((x1 * 2.0d0) * ((x2 * 2.0d0) - x1))))) + t_2))))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + ((x1 + (t_0 + ((t_1 * t_4) + t_8))) + (3.0d0 * (x2 * (-2.0d0))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * t_6)))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x2 * 2.0) * t_1;
	double t_3 = (x1 * x1) + 1.0;
	double t_4 = (((x2 * 2.0) + t_1) - x1) / t_3;
	double t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	double t_6 = (x2 * 2.0) - 3.0;
	double t_7 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_3);
	double t_8 = t_3 * (t_5 + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1050000000000.0) {
		tmp = x1 + (t_7 + (x1 + (t_0 + (t_2 + t_8))));
	} else if (x1 <= 145000000.0) {
		tmp = x1 + (t_7 + (x1 + (t_0 + ((t_3 * (t_5 + (t_6 * ((x1 * 2.0) * ((x2 * 2.0) - x1))))) + t_2))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + ((x1 + (t_0 + ((t_1 * t_4) + t_8))) + (3.0 * (x2 * -2.0)));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * t_6)));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = x1 * (x1 * 3.0)
	t_2 = (x2 * 2.0) * t_1
	t_3 = (x1 * x1) + 1.0
	t_4 = (((x2 * 2.0) + t_1) - x1) / t_3
	t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0)
	t_6 = (x2 * 2.0) - 3.0
	t_7 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_3)
	t_8 = t_3 * (t_5 + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))))
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1050000000000.0:
		tmp = x1 + (t_7 + (x1 + (t_0 + (t_2 + t_8))))
	elif x1 <= 145000000.0:
		tmp = x1 + (t_7 + (x1 + (t_0 + ((t_3 * (t_5 + (t_6 * ((x1 * 2.0) * ((x2 * 2.0) - x1))))) + t_2))))
	elif x1 <= 1.4e+154:
		tmp = x1 + ((x1 + (t_0 + ((t_1 * t_4) + t_8))) + (3.0 * (x2 * -2.0)))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * t_6)))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(x2 * 2.0) * t_1)
	t_3 = Float64(Float64(x1 * x1) + 1.0)
	t_4 = Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_3)
	t_5 = Float64(Float64(x1 * x1) * Float64(Float64(4.0 * t_4) - 6.0))
	t_6 = Float64(Float64(x2 * 2.0) - 3.0)
	t_7 = Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_3))
	t_8 = Float64(t_3 * Float64(t_5 + Float64(Float64(x1 * 2.0) + Float64(-2.0 * Float64(Float64(4.0 * x2) - 3.0)))))
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1050000000000.0)
		tmp = Float64(x1 + Float64(t_7 + Float64(x1 + Float64(t_0 + Float64(t_2 + t_8)))));
	elseif (x1 <= 145000000.0)
		tmp = Float64(x1 + Float64(t_7 + Float64(x1 + Float64(t_0 + Float64(Float64(t_3 * Float64(t_5 + Float64(t_6 * Float64(Float64(x1 * 2.0) * Float64(Float64(x2 * 2.0) - x1))))) + t_2)))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(t_0 + Float64(Float64(t_1 * t_4) + t_8))) + Float64(3.0 * Float64(x2 * -2.0))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * t_6))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = x1 * (x1 * 3.0);
	t_2 = (x2 * 2.0) * t_1;
	t_3 = (x1 * x1) + 1.0;
	t_4 = (((x2 * 2.0) + t_1) - x1) / t_3;
	t_5 = (x1 * x1) * ((4.0 * t_4) - 6.0);
	t_6 = (x2 * 2.0) - 3.0;
	t_7 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_3);
	t_8 = t_3 * (t_5 + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1050000000000.0)
		tmp = x1 + (t_7 + (x1 + (t_0 + (t_2 + t_8))));
	elseif (x1 <= 145000000.0)
		tmp = x1 + (t_7 + (x1 + (t_0 + ((t_3 * (t_5 + (t_6 * ((x1 * 2.0) * ((x2 * 2.0) - x1))))) + t_2))));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + ((x1 + (t_0 + ((t_1 * t_4) + t_8))) + (3.0 * (x2 * -2.0)));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * t_6)));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x2 * 2.0), $MachinePrecision] * t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$3), $MachinePrecision]}, Block[{t$95$5 = N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * t$95$4), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]}, Block[{t$95$7 = N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$3), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(t$95$3 * N[(t$95$5 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-2.0 * N[(N[(4.0 * x2), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1050000000000.0], N[(x1 + N[(t$95$7 + N[(x1 + N[(t$95$0 + N[(t$95$2 + t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 145000000.0], N[(x1 + N[(t$95$7 + N[(x1 + N[(t$95$0 + N[(N[(t$95$3 * N[(t$95$5 + N[(t$95$6 * N[(N[(x1 * 2.0), $MachinePrecision] * N[(N[(x2 * 2.0), $MachinePrecision] - x1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(N[(x1 + N[(t$95$0 + N[(N[(t$95$1 * t$95$4), $MachinePrecision] + t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(3.0 * N[(x2 * -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * t$95$6), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := \left(x2 \cdot 2\right) \cdot t_1\\
t_3 := x1 \cdot x1 + 1\\
t_4 := \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_3}\\
t_5 := \left(x1 \cdot x1\right) \cdot \left(4 \cdot t_4 - 6\right)\\
t_6 := x2 \cdot 2 - 3\\
t_7 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_3}\\
t_8 := t_3 \cdot \left(t_5 + \left(x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\right)\right)\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1050000000000:\\
\;\;\;\;x1 + \left(t_7 + \left(x1 + \left(t_0 + \left(t_2 + t_8\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 145000000:\\
\;\;\;\;x1 + \left(t_7 + \left(x1 + \left(t_0 + \left(t_3 \cdot \left(t_5 + t_6 \cdot \left(\left(x1 \cdot 2\right) \cdot \left(x2 \cdot 2 - x1\right)\right)\right) + t_2\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(\left(x1 + \left(t_0 + \left(t_1 \cdot t_4 + t_8\right)\right)\right) + 3 \cdot \left(x2 \cdot -2\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot t_6\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 16: 72.8% accurate, 1.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\\ t_2 := x1 \cdot \left(x1 \cdot 3\right)\\ t_3 := 3 \cdot t_2\\ t_4 := x1 \cdot x1 + 1\\ t_5 := 3 \cdot \frac{\left(t_2 - x2 \cdot 2\right) - x1}{t_4}\\ \mathbf{if}\;x1 \leq -8 \cdot 10^{+95}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1080000000000:\\ \;\;\;\;x1 + \left(t_5 + \left(x1 + \left(t_0 + \left(t_3 + t_4 \cdot \left(\left(x1 \cdot x1\right) \cdot 6 + t_1\right)\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 9000000:\\ \;\;\;\;x1 + \left(t_5 + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(t_5 + \left(x1 + \left(t_0 + \left(t_3 + t_4 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(x2 \cdot 2 + t_2\right) - x1}{t_4} - 6\right) + t_1\right)\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (+ (* x1 2.0) (* -2.0 (- (* 4.0 x2) 3.0))))
        (t_2 (* x1 (* x1 3.0)))
        (t_3 (* 3.0 t_2))
        (t_4 (+ (* x1 x1) 1.0))
        (t_5 (* 3.0 (/ (- (- t_2 (* x2 2.0)) x1) t_4))))
   (if (<= x1 -8e+95)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1080000000000.0)
       (+ x1 (+ t_5 (+ x1 (+ t_0 (+ t_3 (* t_4 (+ (* (* x1 x1) 6.0) t_1)))))))
       (if (<= x1 9000000.0)
         (+
          x1
          (+
           t_5
           (+ x1 (* 4.0 (+ (* (* x2 2.0) (* x1 x2)) (* -3.0 (* x1 x2)))))))
         (if (<= x1 1.4e+154)
           (+
            x1
            (+
             t_5
             (+
              x1
              (+
               t_0
               (+
                t_3
                (*
                 t_4
                 (+
                  (*
                   (* x1 x1)
                   (- (* 4.0 (/ (- (+ (* x2 2.0) t_2) x1) t_4)) 6.0))
                  t_1)))))))
           (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0)))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = (x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0));
	double t_2 = x1 * (x1 * 3.0);
	double t_3 = 3.0 * t_2;
	double t_4 = (x1 * x1) + 1.0;
	double t_5 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_4);
	double tmp;
	if (x1 <= -8e+95) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1080000000000.0) {
		tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * 6.0) + t_1))))));
	} else if (x1 <= 9000000.0) {
		tmp = x1 + (t_5 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * ((4.0 * ((((x2 * 2.0) + t_2) - x1) / t_4)) - 6.0)) + t_1))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: t_5
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = (x1 * 2.0d0) + ((-2.0d0) * ((4.0d0 * x2) - 3.0d0))
    t_2 = x1 * (x1 * 3.0d0)
    t_3 = 3.0d0 * t_2
    t_4 = (x1 * x1) + 1.0d0
    t_5 = 3.0d0 * (((t_2 - (x2 * 2.0d0)) - x1) / t_4)
    if (x1 <= (-8d+95)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1080000000000.0d0)) then
        tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * 6.0d0) + t_1))))))
    else if (x1 <= 9000000.0d0) then
        tmp = x1 + (t_5 + (x1 + (4.0d0 * (((x2 * 2.0d0) * (x1 * x2)) + ((-3.0d0) * (x1 * x2))))))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * ((4.0d0 * ((((x2 * 2.0d0) + t_2) - x1) / t_4)) - 6.0d0)) + t_1))))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = (x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0));
	double t_2 = x1 * (x1 * 3.0);
	double t_3 = 3.0 * t_2;
	double t_4 = (x1 * x1) + 1.0;
	double t_5 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_4);
	double tmp;
	if (x1 <= -8e+95) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1080000000000.0) {
		tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * 6.0) + t_1))))));
	} else if (x1 <= 9000000.0) {
		tmp = x1 + (t_5 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * ((4.0 * ((((x2 * 2.0) + t_2) - x1) / t_4)) - 6.0)) + t_1))))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = (x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))
	t_2 = x1 * (x1 * 3.0)
	t_3 = 3.0 * t_2
	t_4 = (x1 * x1) + 1.0
	t_5 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_4)
	tmp = 0
	if x1 <= -8e+95:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1080000000000.0:
		tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * 6.0) + t_1))))))
	elif x1 <= 9000000.0:
		tmp = x1 + (t_5 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))))
	elif x1 <= 1.4e+154:
		tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * ((4.0 * ((((x2 * 2.0) + t_2) - x1) / t_4)) - 6.0)) + t_1))))))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(Float64(x1 * 2.0) + Float64(-2.0 * Float64(Float64(4.0 * x2) - 3.0)))
	t_2 = Float64(x1 * Float64(x1 * 3.0))
	t_3 = Float64(3.0 * t_2)
	t_4 = Float64(Float64(x1 * x1) + 1.0)
	t_5 = Float64(3.0 * Float64(Float64(Float64(t_2 - Float64(x2 * 2.0)) - x1) / t_4))
	tmp = 0.0
	if (x1 <= -8e+95)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1080000000000.0)
		tmp = Float64(x1 + Float64(t_5 + Float64(x1 + Float64(t_0 + Float64(t_3 + Float64(t_4 * Float64(Float64(Float64(x1 * x1) * 6.0) + t_1)))))));
	elseif (x1 <= 9000000.0)
		tmp = Float64(x1 + Float64(t_5 + Float64(x1 + Float64(4.0 * Float64(Float64(Float64(x2 * 2.0) * Float64(x1 * x2)) + Float64(-3.0 * Float64(x1 * x2)))))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(t_5 + Float64(x1 + Float64(t_0 + Float64(t_3 + Float64(t_4 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * Float64(Float64(Float64(Float64(x2 * 2.0) + t_2) - x1) / t_4)) - 6.0)) + t_1)))))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = (x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0));
	t_2 = x1 * (x1 * 3.0);
	t_3 = 3.0 * t_2;
	t_4 = (x1 * x1) + 1.0;
	t_5 = 3.0 * (((t_2 - (x2 * 2.0)) - x1) / t_4);
	tmp = 0.0;
	if (x1 <= -8e+95)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1080000000000.0)
		tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * 6.0) + t_1))))));
	elseif (x1 <= 9000000.0)
		tmp = x1 + (t_5 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + (t_5 + (x1 + (t_0 + (t_3 + (t_4 * (((x1 * x1) * ((4.0 * ((((x2 * 2.0) + t_2) - x1) / t_4)) - 6.0)) + t_1))))));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * 2.0), $MachinePrecision] + N[(-2.0 * N[(N[(4.0 * x2), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * t$95$2), $MachinePrecision]}, Block[{t$95$4 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$5 = N[(3.0 * N[(N[(N[(t$95$2 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$4), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -8e+95], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1080000000000.0], N[(x1 + N[(t$95$5 + N[(x1 + N[(t$95$0 + N[(t$95$3 + N[(t$95$4 * N[(N[(N[(x1 * x1), $MachinePrecision] * 6.0), $MachinePrecision] + t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 9000000.0], N[(x1 + N[(t$95$5 + N[(x1 + N[(4.0 * N[(N[(N[(x2 * 2.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision] + N[(-3.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(t$95$5 + N[(x1 + N[(t$95$0 + N[(t$95$3 + N[(t$95$4 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$2), $MachinePrecision] - x1), $MachinePrecision] / t$95$4), $MachinePrecision]), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\\
t_2 := x1 \cdot \left(x1 \cdot 3\right)\\
t_3 := 3 \cdot t_2\\
t_4 := x1 \cdot x1 + 1\\
t_5 := 3 \cdot \frac{\left(t_2 - x2 \cdot 2\right) - x1}{t_4}\\
\mathbf{if}\;x1 \leq -8 \cdot 10^{+95}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1080000000000:\\
\;\;\;\;x1 + \left(t_5 + \left(x1 + \left(t_0 + \left(t_3 + t_4 \cdot \left(\left(x1 \cdot x1\right) \cdot 6 + t_1\right)\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 9000000:\\
\;\;\;\;x1 + \left(t_5 + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(t_5 + \left(x1 + \left(t_0 + \left(t_3 + t_4 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(x2 \cdot 2 + t_2\right) - x1}{t_4} - 6\right) + t_1\right)\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 17: 73.5% accurate, 1.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot x1\right)\\ t_1 := x1 \cdot \left(x1 \cdot 3\right)\\ t_2 := x1 \cdot x1 + 1\\ t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\ t_4 := t_2 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2} - 6\right) + \left(x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\right)\right)\\ \mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1020000000000:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(\left(x2 \cdot 2\right) \cdot t_1 + t_4\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 46:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(3 \cdot t_1 + t_4\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 x1)))
        (t_1 (* x1 (* x1 3.0)))
        (t_2 (+ (* x1 x1) 1.0))
        (t_3 (* 3.0 (/ (- (- t_1 (* x2 2.0)) x1) t_2)))
        (t_4
         (*
          t_2
          (+
           (* (* x1 x1) (- (* 4.0 (/ (- (+ (* x2 2.0) t_1) x1) t_2)) 6.0))
           (+ (* x1 2.0) (* -2.0 (- (* 4.0 x2) 3.0)))))))
   (if (<= x1 -5.8e+102)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1020000000000.0)
       (+ x1 (+ t_3 (+ x1 (+ t_0 (+ (* (* x2 2.0) t_1) t_4)))))
       (if (<= x1 46.0)
         (+
          x1
          (+
           t_3
           (+ x1 (* 4.0 (+ (* (* x2 2.0) (* x1 x2)) (* -3.0 (* x1 x2)))))))
         (if (<= x1 1.4e+154)
           (+ x1 (+ t_3 (+ x1 (+ t_0 (+ (* 3.0 t_1) t_4)))))
           (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0)))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_4 = t_2 * (((x1 * x1) * ((4.0 * ((((x2 * 2.0) + t_1) - x1) / t_2)) - 6.0)) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1020000000000.0) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (((x2 * 2.0) * t_1) + t_4))));
	} else if (x1 <= 46.0) {
		tmp = x1 + (t_3 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0 * t_1) + t_4))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: t_4
    real(8) :: tmp
    t_0 = x1 * (x1 * x1)
    t_1 = x1 * (x1 * 3.0d0)
    t_2 = (x1 * x1) + 1.0d0
    t_3 = 3.0d0 * (((t_1 - (x2 * 2.0d0)) - x1) / t_2)
    t_4 = t_2 * (((x1 * x1) * ((4.0d0 * ((((x2 * 2.0d0) + t_1) - x1) / t_2)) - 6.0d0)) + ((x1 * 2.0d0) + ((-2.0d0) * ((4.0d0 * x2) - 3.0d0))))
    if (x1 <= (-5.8d+102)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1020000000000.0d0)) then
        tmp = x1 + (t_3 + (x1 + (t_0 + (((x2 * 2.0d0) * t_1) + t_4))))
    else if (x1 <= 46.0d0) then
        tmp = x1 + (t_3 + (x1 + (4.0d0 * (((x2 * 2.0d0) * (x1 * x2)) + ((-3.0d0) * (x1 * x2))))))
    else if (x1 <= 1.4d+154) then
        tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0d0 * t_1) + t_4))))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * x1);
	double t_1 = x1 * (x1 * 3.0);
	double t_2 = (x1 * x1) + 1.0;
	double t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	double t_4 = t_2 * (((x1 * x1) * ((4.0 * ((((x2 * 2.0) + t_1) - x1) / t_2)) - 6.0)) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	double tmp;
	if (x1 <= -5.8e+102) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1020000000000.0) {
		tmp = x1 + (t_3 + (x1 + (t_0 + (((x2 * 2.0) * t_1) + t_4))));
	} else if (x1 <= 46.0) {
		tmp = x1 + (t_3 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else if (x1 <= 1.4e+154) {
		tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0 * t_1) + t_4))));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * x1)
	t_1 = x1 * (x1 * 3.0)
	t_2 = (x1 * x1) + 1.0
	t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2)
	t_4 = t_2 * (((x1 * x1) * ((4.0 * ((((x2 * 2.0) + t_1) - x1) / t_2)) - 6.0)) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))))
	tmp = 0
	if x1 <= -5.8e+102:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1020000000000.0:
		tmp = x1 + (t_3 + (x1 + (t_0 + (((x2 * 2.0) * t_1) + t_4))))
	elif x1 <= 46.0:
		tmp = x1 + (t_3 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))))
	elif x1 <= 1.4e+154:
		tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0 * t_1) + t_4))))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * x1))
	t_1 = Float64(x1 * Float64(x1 * 3.0))
	t_2 = Float64(Float64(x1 * x1) + 1.0)
	t_3 = Float64(3.0 * Float64(Float64(Float64(t_1 - Float64(x2 * 2.0)) - x1) / t_2))
	t_4 = Float64(t_2 * Float64(Float64(Float64(x1 * x1) * Float64(Float64(4.0 * Float64(Float64(Float64(Float64(x2 * 2.0) + t_1) - x1) / t_2)) - 6.0)) + Float64(Float64(x1 * 2.0) + Float64(-2.0 * Float64(Float64(4.0 * x2) - 3.0)))))
	tmp = 0.0
	if (x1 <= -5.8e+102)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1020000000000.0)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(Float64(Float64(x2 * 2.0) * t_1) + t_4)))));
	elseif (x1 <= 46.0)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(4.0 * Float64(Float64(Float64(x2 * 2.0) * Float64(x1 * x2)) + Float64(-3.0 * Float64(x1 * x2)))))));
	elseif (x1 <= 1.4e+154)
		tmp = Float64(x1 + Float64(t_3 + Float64(x1 + Float64(t_0 + Float64(Float64(3.0 * t_1) + t_4)))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * x1);
	t_1 = x1 * (x1 * 3.0);
	t_2 = (x1 * x1) + 1.0;
	t_3 = 3.0 * (((t_1 - (x2 * 2.0)) - x1) / t_2);
	t_4 = t_2 * (((x1 * x1) * ((4.0 * ((((x2 * 2.0) + t_1) - x1) / t_2)) - 6.0)) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0))));
	tmp = 0.0;
	if (x1 <= -5.8e+102)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1020000000000.0)
		tmp = x1 + (t_3 + (x1 + (t_0 + (((x2 * 2.0) * t_1) + t_4))));
	elseif (x1 <= 46.0)
		tmp = x1 + (t_3 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	elseif (x1 <= 1.4e+154)
		tmp = x1 + (t_3 + (x1 + (t_0 + ((3.0 * t_1) + t_4))));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$3 = N[(3.0 * N[(N[(N[(t$95$1 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$2 * N[(N[(N[(x1 * x1), $MachinePrecision] * N[(N[(4.0 * N[(N[(N[(N[(x2 * 2.0), $MachinePrecision] + t$95$1), $MachinePrecision] - x1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision] - 6.0), $MachinePrecision]), $MachinePrecision] + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-2.0 * N[(N[(4.0 * x2), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -5.8e+102], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1020000000000.0], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(N[(N[(x2 * 2.0), $MachinePrecision] * t$95$1), $MachinePrecision] + t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 46.0], N[(x1 + N[(t$95$3 + N[(x1 + N[(4.0 * N[(N[(N[(x2 * 2.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision] + N[(-3.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], N[(x1 + N[(t$95$3 + N[(x1 + N[(t$95$0 + N[(N[(3.0 * t$95$1), $MachinePrecision] + t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot x1\right)\\
t_1 := x1 \cdot \left(x1 \cdot 3\right)\\
t_2 := x1 \cdot x1 + 1\\
t_3 := 3 \cdot \frac{\left(t_1 - x2 \cdot 2\right) - x1}{t_2}\\
t_4 := t_2 \cdot \left(\left(x1 \cdot x1\right) \cdot \left(4 \cdot \frac{\left(x2 \cdot 2 + t_1\right) - x1}{t_2} - 6\right) + \left(x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\right)\right)\\
\mathbf{if}\;x1 \leq -5.8 \cdot 10^{+102}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1020000000000:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(\left(x2 \cdot 2\right) \cdot t_1 + t_4\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 46:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;x1 + \left(t_3 + \left(x1 + \left(t_0 + \left(3 \cdot t_1 + t_4\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 18: 73.0% accurate, 1.6× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 \cdot \left(x1 \cdot 3\right)\\ t_1 := x1 \cdot x1 + 1\\ t_2 := 3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_1}\\ t_3 := x1 + \left(t_2 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(3 \cdot t_0 + t_1 \cdot \left(\left(x1 \cdot x1\right) \cdot 6 + \left(x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\right)\right)\right)\right)\right)\right)\\ \mathbf{if}\;x1 \leq -8 \cdot 10^{+95}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1020000000000:\\ \;\;\;\;t_3\\ \mathbf{elif}\;x1 \leq 118000000:\\ \;\;\;\;x1 + \left(t_2 + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\ \mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\ \;\;\;\;t_3\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (* x1 (* x1 3.0)))
        (t_1 (+ (* x1 x1) 1.0))
        (t_2 (* 3.0 (/ (- (- t_0 (* x2 2.0)) x1) t_1)))
        (t_3
         (+
          x1
          (+
           t_2
           (+
            x1
            (+
             (* x1 (* x1 x1))
             (+
              (* 3.0 t_0)
              (*
               t_1
               (+
                (* (* x1 x1) 6.0)
                (+ (* x1 2.0) (* -2.0 (- (* 4.0 x2) 3.0))))))))))))
   (if (<= x1 -8e+95)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1020000000000.0)
       t_3
       (if (<= x1 118000000.0)
         (+
          x1
          (+
           t_2
           (+ x1 (* 4.0 (+ (* (* x2 2.0) (* x1 x2)) (* -3.0 (* x1 x2)))))))
         (if (<= x1 1.4e+154)
           t_3
           (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0)))))))))))
double code(double x1, double x2) {
	double t_0 = x1 * (x1 * 3.0);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = 3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1);
	double t_3 = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((3.0 * t_0) + (t_1 * (((x1 * x1) * 6.0) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0)))))))));
	double tmp;
	if (x1 <= -8e+95) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1020000000000.0) {
		tmp = t_3;
	} else if (x1 <= 118000000.0) {
		tmp = x1 + (t_2 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else if (x1 <= 1.4e+154) {
		tmp = t_3;
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: t_3
    real(8) :: tmp
    t_0 = x1 * (x1 * 3.0d0)
    t_1 = (x1 * x1) + 1.0d0
    t_2 = 3.0d0 * (((t_0 - (x2 * 2.0d0)) - x1) / t_1)
    t_3 = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((3.0d0 * t_0) + (t_1 * (((x1 * x1) * 6.0d0) + ((x1 * 2.0d0) + ((-2.0d0) * ((4.0d0 * x2) - 3.0d0)))))))))
    if (x1 <= (-8d+95)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1020000000000.0d0)) then
        tmp = t_3
    else if (x1 <= 118000000.0d0) then
        tmp = x1 + (t_2 + (x1 + (4.0d0 * (((x2 * 2.0d0) * (x1 * x2)) + ((-3.0d0) * (x1 * x2))))))
    else if (x1 <= 1.4d+154) then
        tmp = t_3
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 * (x1 * 3.0);
	double t_1 = (x1 * x1) + 1.0;
	double t_2 = 3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1);
	double t_3 = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((3.0 * t_0) + (t_1 * (((x1 * x1) * 6.0) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0)))))))));
	double tmp;
	if (x1 <= -8e+95) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1020000000000.0) {
		tmp = t_3;
	} else if (x1 <= 118000000.0) {
		tmp = x1 + (t_2 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else if (x1 <= 1.4e+154) {
		tmp = t_3;
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 * (x1 * 3.0)
	t_1 = (x1 * x1) + 1.0
	t_2 = 3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1)
	t_3 = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((3.0 * t_0) + (t_1 * (((x1 * x1) * 6.0) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0)))))))))
	tmp = 0
	if x1 <= -8e+95:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1020000000000.0:
		tmp = t_3
	elif x1 <= 118000000.0:
		tmp = x1 + (t_2 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))))
	elif x1 <= 1.4e+154:
		tmp = t_3
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 * Float64(x1 * 3.0))
	t_1 = Float64(Float64(x1 * x1) + 1.0)
	t_2 = Float64(3.0 * Float64(Float64(Float64(t_0 - Float64(x2 * 2.0)) - x1) / t_1))
	t_3 = Float64(x1 + Float64(t_2 + Float64(x1 + Float64(Float64(x1 * Float64(x1 * x1)) + Float64(Float64(3.0 * t_0) + Float64(t_1 * Float64(Float64(Float64(x1 * x1) * 6.0) + Float64(Float64(x1 * 2.0) + Float64(-2.0 * Float64(Float64(4.0 * x2) - 3.0))))))))))
	tmp = 0.0
	if (x1 <= -8e+95)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1020000000000.0)
		tmp = t_3;
	elseif (x1 <= 118000000.0)
		tmp = Float64(x1 + Float64(t_2 + Float64(x1 + Float64(4.0 * Float64(Float64(Float64(x2 * 2.0) * Float64(x1 * x2)) + Float64(-3.0 * Float64(x1 * x2)))))));
	elseif (x1 <= 1.4e+154)
		tmp = t_3;
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 * (x1 * 3.0);
	t_1 = (x1 * x1) + 1.0;
	t_2 = 3.0 * (((t_0 - (x2 * 2.0)) - x1) / t_1);
	t_3 = x1 + (t_2 + (x1 + ((x1 * (x1 * x1)) + ((3.0 * t_0) + (t_1 * (((x1 * x1) * 6.0) + ((x1 * 2.0) + (-2.0 * ((4.0 * x2) - 3.0)))))))));
	tmp = 0.0;
	if (x1 <= -8e+95)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1020000000000.0)
		tmp = t_3;
	elseif (x1 <= 118000000.0)
		tmp = x1 + (t_2 + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	elseif (x1 <= 1.4e+154)
		tmp = t_3;
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]}, Block[{t$95$2 = N[(3.0 * N[(N[(N[(t$95$0 - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(x1 + N[(t$95$2 + N[(x1 + N[(N[(x1 * N[(x1 * x1), $MachinePrecision]), $MachinePrecision] + N[(N[(3.0 * t$95$0), $MachinePrecision] + N[(t$95$1 * N[(N[(N[(x1 * x1), $MachinePrecision] * 6.0), $MachinePrecision] + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-2.0 * N[(N[(4.0 * x2), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -8e+95], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1020000000000.0], t$95$3, If[LessEqual[x1, 118000000.0], N[(x1 + N[(t$95$2 + N[(x1 + N[(4.0 * N[(N[(N[(x2 * 2.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision] + N[(-3.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.4e+154], t$95$3, N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 \cdot \left(x1 \cdot 3\right)\\
t_1 := x1 \cdot x1 + 1\\
t_2 := 3 \cdot \frac{\left(t_0 - x2 \cdot 2\right) - x1}{t_1}\\
t_3 := x1 + \left(t_2 + \left(x1 + \left(x1 \cdot \left(x1 \cdot x1\right) + \left(3 \cdot t_0 + t_1 \cdot \left(\left(x1 \cdot x1\right) \cdot 6 + \left(x1 \cdot 2 + -2 \cdot \left(4 \cdot x2 - 3\right)\right)\right)\right)\right)\right)\right)\\
\mathbf{if}\;x1 \leq -8 \cdot 10^{+95}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1020000000000:\\
\;\;\;\;t_3\\

\mathbf{elif}\;x1 \leq 118000000:\\
\;\;\;\;x1 + \left(t_2 + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\

\mathbf{elif}\;x1 \leq 1.4 \cdot 10^{+154}:\\
\;\;\;\;t_3\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 19: 62.6% accurate, 2.6× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x1 \leq -2.25 \cdot 10^{+88}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq 1.35 \cdot 10^{-25}:\\ \;\;\;\;x1 + \left(3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x2 \cdot 2\right) - x1}{x1 \cdot x1 + 1} + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + x2 \cdot -6\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (if (<= x1 -2.25e+88)
   (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
   (if (<= x1 1.35e-25)
     (+
      x1
      (+
       (* 3.0 (/ (- (- (* x1 (* x1 3.0)) (* x2 2.0)) x1) (+ (* x1 x1) 1.0)))
       (+ x1 (* 4.0 (+ (* (* x2 2.0) (* x1 x2)) (* -3.0 (* x1 x2)))))))
     (+ x1 (+ (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0))))) (* x2 -6.0))))))
double code(double x1, double x2) {
	double tmp;
	if (x1 <= -2.25e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= 1.35e-25) {
		tmp = x1 + ((3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))) + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (x2 * -6.0));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: tmp
    if (x1 <= (-2.25d+88)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= 1.35d-25) then
        tmp = x1 + ((3.0d0 * ((((x1 * (x1 * 3.0d0)) - (x2 * 2.0d0)) - x1) / ((x1 * x1) + 1.0d0))) + (x1 + (4.0d0 * (((x2 * 2.0d0) * (x1 * x2)) + ((-3.0d0) * (x1 * x2))))))
    else
        tmp = x1 + ((x1 + (4.0d0 * (x1 * (x2 * ((x2 * 2.0d0) - 3.0d0))))) + (x2 * (-6.0d0)))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double tmp;
	if (x1 <= -2.25e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= 1.35e-25) {
		tmp = x1 + ((3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))) + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (x2 * -6.0));
	}
	return tmp;
}
def code(x1, x2):
	tmp = 0
	if x1 <= -2.25e+88:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= 1.35e-25:
		tmp = x1 + ((3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))) + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))))
	else:
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (x2 * -6.0))
	return tmp
function code(x1, x2)
	tmp = 0.0
	if (x1 <= -2.25e+88)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= 1.35e-25)
		tmp = Float64(x1 + Float64(Float64(3.0 * Float64(Float64(Float64(Float64(x1 * Float64(x1 * 3.0)) - Float64(x2 * 2.0)) - x1) / Float64(Float64(x1 * x1) + 1.0))) + Float64(x1 + Float64(4.0 * Float64(Float64(Float64(x2 * 2.0) * Float64(x1 * x2)) + Float64(-3.0 * Float64(x1 * x2)))))));
	else
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0))))) + Float64(x2 * -6.0)));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	tmp = 0.0;
	if (x1 <= -2.25e+88)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= 1.35e-25)
		tmp = x1 + ((3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))) + (x1 + (4.0 * (((x2 * 2.0) * (x1 * x2)) + (-3.0 * (x1 * x2))))));
	else
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (x2 * -6.0));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := If[LessEqual[x1, -2.25e+88], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.35e-25], N[(x1 + N[(N[(3.0 * N[(N[(N[(N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision] - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x1 + N[(4.0 * N[(N[(N[(x2 * 2.0), $MachinePrecision] * N[(x1 * x2), $MachinePrecision]), $MachinePrecision] + N[(-3.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x2 * -6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x1 \leq -2.25 \cdot 10^{+88}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq 1.35 \cdot 10^{-25}:\\
\;\;\;\;x1 + \left(3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x2 \cdot 2\right) - x1}{x1 \cdot x1 + 1} + \left(x1 + 4 \cdot \left(\left(x2 \cdot 2\right) \cdot \left(x1 \cdot x2\right) + -3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + x2 \cdot -6\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 20: 57.8% accurate, 2.8× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \mathbf{if}\;x1 \leq -2.55 \cdot 10^{+89}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -6.1 \cdot 10^{-186}:\\ \;\;\;\;x1 + \left(t_0 + 3 \cdot \left(x2 \cdot -2 - x1\right)\right)\\ \mathbf{elif}\;x1 \leq 1.52 \cdot 10^{-288}:\\ \;\;\;\;x1 + \left(3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x2 \cdot 2\right) - x1}{x1 \cdot x1 + 1} + \left(x1 + 4 \cdot \left(-3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(t_0 + \left(x2 \cdot -6 + x1 \cdot -3\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0 (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))))
   (if (<= x1 -2.55e+89)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -6.1e-186)
       (+ x1 (+ t_0 (* 3.0 (- (* x2 -2.0) x1))))
       (if (<= x1 1.52e-288)
         (+
          x1
          (+
           (*
            3.0
            (/ (- (- (* x1 (* x1 3.0)) (* x2 2.0)) x1) (+ (* x1 x1) 1.0)))
           (+ x1 (* 4.0 (* -3.0 (* x1 x2))))))
         (+ x1 (+ t_0 (+ (* x2 -6.0) (* x1 -3.0)))))))))
double code(double x1, double x2) {
	double t_0 = x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))));
	double tmp;
	if (x1 <= -2.55e+89) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -6.1e-186) {
		tmp = x1 + (t_0 + (3.0 * ((x2 * -2.0) - x1)));
	} else if (x1 <= 1.52e-288) {
		tmp = x1 + ((3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))) + (x1 + (4.0 * (-3.0 * (x1 * x2)))));
	} else {
		tmp = x1 + (t_0 + ((x2 * -6.0) + (x1 * -3.0)));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: tmp
    t_0 = x1 + (4.0d0 * (x1 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    if (x1 <= (-2.55d+89)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-6.1d-186)) then
        tmp = x1 + (t_0 + (3.0d0 * ((x2 * (-2.0d0)) - x1)))
    else if (x1 <= 1.52d-288) then
        tmp = x1 + ((3.0d0 * ((((x1 * (x1 * 3.0d0)) - (x2 * 2.0d0)) - x1) / ((x1 * x1) + 1.0d0))) + (x1 + (4.0d0 * ((-3.0d0) * (x1 * x2)))))
    else
        tmp = x1 + (t_0 + ((x2 * (-6.0d0)) + (x1 * (-3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))));
	double tmp;
	if (x1 <= -2.55e+89) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -6.1e-186) {
		tmp = x1 + (t_0 + (3.0 * ((x2 * -2.0) - x1)));
	} else if (x1 <= 1.52e-288) {
		tmp = x1 + ((3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))) + (x1 + (4.0 * (-3.0 * (x1 * x2)))));
	} else {
		tmp = x1 + (t_0 + ((x2 * -6.0) + (x1 * -3.0)));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))
	tmp = 0
	if x1 <= -2.55e+89:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -6.1e-186:
		tmp = x1 + (t_0 + (3.0 * ((x2 * -2.0) - x1)))
	elif x1 <= 1.52e-288:
		tmp = x1 + ((3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))) + (x1 + (4.0 * (-3.0 * (x1 * x2)))))
	else:
		tmp = x1 + (t_0 + ((x2 * -6.0) + (x1 * -3.0)))
	return tmp
function code(x1, x2)
	t_0 = Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))))
	tmp = 0.0
	if (x1 <= -2.55e+89)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -6.1e-186)
		tmp = Float64(x1 + Float64(t_0 + Float64(3.0 * Float64(Float64(x2 * -2.0) - x1))));
	elseif (x1 <= 1.52e-288)
		tmp = Float64(x1 + Float64(Float64(3.0 * Float64(Float64(Float64(Float64(x1 * Float64(x1 * 3.0)) - Float64(x2 * 2.0)) - x1) / Float64(Float64(x1 * x1) + 1.0))) + Float64(x1 + Float64(4.0 * Float64(-3.0 * Float64(x1 * x2))))));
	else
		tmp = Float64(x1 + Float64(t_0 + Float64(Float64(x2 * -6.0) + Float64(x1 * -3.0))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))));
	tmp = 0.0;
	if (x1 <= -2.55e+89)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -6.1e-186)
		tmp = x1 + (t_0 + (3.0 * ((x2 * -2.0) - x1)));
	elseif (x1 <= 1.52e-288)
		tmp = x1 + ((3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))) + (x1 + (4.0 * (-3.0 * (x1 * x2)))));
	else
		tmp = x1 + (t_0 + ((x2 * -6.0) + (x1 * -3.0)));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -2.55e+89], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -6.1e-186], N[(x1 + N[(t$95$0 + N[(3.0 * N[(N[(x2 * -2.0), $MachinePrecision] - x1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.52e-288], N[(x1 + N[(N[(3.0 * N[(N[(N[(N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision] - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x1 + N[(4.0 * N[(-3.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(t$95$0 + N[(N[(x2 * -6.0), $MachinePrecision] + N[(x1 * -3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\
\mathbf{if}\;x1 \leq -2.55 \cdot 10^{+89}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -6.1 \cdot 10^{-186}:\\
\;\;\;\;x1 + \left(t_0 + 3 \cdot \left(x2 \cdot -2 - x1\right)\right)\\

\mathbf{elif}\;x1 \leq 1.52 \cdot 10^{-288}:\\
\;\;\;\;x1 + \left(3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x2 \cdot 2\right) - x1}{x1 \cdot x1 + 1} + \left(x1 + 4 \cdot \left(-3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(t_0 + \left(x2 \cdot -6 + x1 \cdot -3\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 21: 57.8% accurate, 2.8× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := 3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x2 \cdot 2\right) - x1}{x1 \cdot x1 + 1}\\ t_1 := x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \mathbf{if}\;x1 \leq -4 \cdot 10^{+88}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{elif}\;x1 \leq -1.05 \cdot 10^{-189}:\\ \;\;\;\;x1 + \left(t_0 + t_1\right)\\ \mathbf{elif}\;x1 \leq 1.52 \cdot 10^{-288}:\\ \;\;\;\;x1 + \left(t_0 + \left(x1 + 4 \cdot \left(-3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(t_1 + \left(x2 \cdot -6 + x1 \cdot -3\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (let* ((t_0
         (* 3.0 (/ (- (- (* x1 (* x1 3.0)) (* x2 2.0)) x1) (+ (* x1 x1) 1.0))))
        (t_1 (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))))
   (if (<= x1 -4e+88)
     (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
     (if (<= x1 -1.05e-189)
       (+ x1 (+ t_0 t_1))
       (if (<= x1 1.52e-288)
         (+ x1 (+ t_0 (+ x1 (* 4.0 (* -3.0 (* x1 x2))))))
         (+ x1 (+ t_1 (+ (* x2 -6.0) (* x1 -3.0)))))))))
double code(double x1, double x2) {
	double t_0 = 3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0));
	double t_1 = x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))));
	double tmp;
	if (x1 <= -4e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1.05e-189) {
		tmp = x1 + (t_0 + t_1);
	} else if (x1 <= 1.52e-288) {
		tmp = x1 + (t_0 + (x1 + (4.0 * (-3.0 * (x1 * x2)))));
	} else {
		tmp = x1 + (t_1 + ((x2 * -6.0) + (x1 * -3.0)));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: tmp
    t_0 = 3.0d0 * ((((x1 * (x1 * 3.0d0)) - (x2 * 2.0d0)) - x1) / ((x1 * x1) + 1.0d0))
    t_1 = x1 + (4.0d0 * (x1 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    if (x1 <= (-4d+88)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else if (x1 <= (-1.05d-189)) then
        tmp = x1 + (t_0 + t_1)
    else if (x1 <= 1.52d-288) then
        tmp = x1 + (t_0 + (x1 + (4.0d0 * ((-3.0d0) * (x1 * x2)))))
    else
        tmp = x1 + (t_1 + ((x2 * (-6.0d0)) + (x1 * (-3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double t_0 = 3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0));
	double t_1 = x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))));
	double tmp;
	if (x1 <= -4e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else if (x1 <= -1.05e-189) {
		tmp = x1 + (t_0 + t_1);
	} else if (x1 <= 1.52e-288) {
		tmp = x1 + (t_0 + (x1 + (4.0 * (-3.0 * (x1 * x2)))));
	} else {
		tmp = x1 + (t_1 + ((x2 * -6.0) + (x1 * -3.0)));
	}
	return tmp;
}
def code(x1, x2):
	t_0 = 3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0))
	t_1 = x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))
	tmp = 0
	if x1 <= -4e+88:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	elif x1 <= -1.05e-189:
		tmp = x1 + (t_0 + t_1)
	elif x1 <= 1.52e-288:
		tmp = x1 + (t_0 + (x1 + (4.0 * (-3.0 * (x1 * x2)))))
	else:
		tmp = x1 + (t_1 + ((x2 * -6.0) + (x1 * -3.0)))
	return tmp
function code(x1, x2)
	t_0 = Float64(3.0 * Float64(Float64(Float64(Float64(x1 * Float64(x1 * 3.0)) - Float64(x2 * 2.0)) - x1) / Float64(Float64(x1 * x1) + 1.0)))
	t_1 = Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))))
	tmp = 0.0
	if (x1 <= -4e+88)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	elseif (x1 <= -1.05e-189)
		tmp = Float64(x1 + Float64(t_0 + t_1));
	elseif (x1 <= 1.52e-288)
		tmp = Float64(x1 + Float64(t_0 + Float64(x1 + Float64(4.0 * Float64(-3.0 * Float64(x1 * x2))))));
	else
		tmp = Float64(x1 + Float64(t_1 + Float64(Float64(x2 * -6.0) + Float64(x1 * -3.0))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	t_0 = 3.0 * ((((x1 * (x1 * 3.0)) - (x2 * 2.0)) - x1) / ((x1 * x1) + 1.0));
	t_1 = x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))));
	tmp = 0.0;
	if (x1 <= -4e+88)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	elseif (x1 <= -1.05e-189)
		tmp = x1 + (t_0 + t_1);
	elseif (x1 <= 1.52e-288)
		tmp = x1 + (t_0 + (x1 + (4.0 * (-3.0 * (x1 * x2)))));
	else
		tmp = x1 + (t_1 + ((x2 * -6.0) + (x1 * -3.0)));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := Block[{t$95$0 = N[(3.0 * N[(N[(N[(N[(x1 * N[(x1 * 3.0), $MachinePrecision]), $MachinePrecision] - N[(x2 * 2.0), $MachinePrecision]), $MachinePrecision] - x1), $MachinePrecision] / N[(N[(x1 * x1), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x1, -4e+88], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, -1.05e-189], N[(x1 + N[(t$95$0 + t$95$1), $MachinePrecision]), $MachinePrecision], If[LessEqual[x1, 1.52e-288], N[(x1 + N[(t$95$0 + N[(x1 + N[(4.0 * N[(-3.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(t$95$1 + N[(N[(x2 * -6.0), $MachinePrecision] + N[(x1 * -3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := 3 \cdot \frac{\left(x1 \cdot \left(x1 \cdot 3\right) - x2 \cdot 2\right) - x1}{x1 \cdot x1 + 1}\\
t_1 := x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\
\mathbf{if}\;x1 \leq -4 \cdot 10^{+88}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{elif}\;x1 \leq -1.05 \cdot 10^{-189}:\\
\;\;\;\;x1 + \left(t_0 + t_1\right)\\

\mathbf{elif}\;x1 \leq 1.52 \cdot 10^{-288}:\\
\;\;\;\;x1 + \left(t_0 + \left(x1 + 4 \cdot \left(-3 \cdot \left(x1 \cdot x2\right)\right)\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(t_1 + \left(x2 \cdot -6 + x1 \cdot -3\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 22: 56.8% accurate, 4.5× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x1 \leq -2.35 \cdot 10^{+89}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + \left(x2 \cdot -6 + x1 \cdot -3\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (if (<= x1 -2.35e+89)
   (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
   (+
    x1
    (+
     (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))
     (+ (* x2 -6.0) (* x1 -3.0))))))
double code(double x1, double x2) {
	double tmp;
	if (x1 <= -2.35e+89) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + (x1 * -3.0)));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: tmp
    if (x1 <= (-2.35d+89)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else
        tmp = x1 + ((x1 + (4.0d0 * (x1 * (x2 * ((x2 * 2.0d0) - 3.0d0))))) + ((x2 * (-6.0d0)) + (x1 * (-3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double tmp;
	if (x1 <= -2.35e+89) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + (x1 * -3.0)));
	}
	return tmp;
}
def code(x1, x2):
	tmp = 0
	if x1 <= -2.35e+89:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	else:
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + (x1 * -3.0)))
	return tmp
function code(x1, x2)
	tmp = 0.0
	if (x1 <= -2.35e+89)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	else
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0))))) + Float64(Float64(x2 * -6.0) + Float64(x1 * -3.0))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	tmp = 0.0;
	if (x1 <= -2.35e+89)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	else
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + ((x2 * -6.0) + (x1 * -3.0)));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := If[LessEqual[x1, -2.35e+89], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[(x2 * -6.0), $MachinePrecision] + N[(x1 * -3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x1 \leq -2.35 \cdot 10^{+89}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + \left(x2 \cdot -6 + x1 \cdot -3\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 23: 45.9% accurate, 5.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x1 \leq -6.5 \cdot 10^{+88}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + x2 \cdot -6\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (if (<= x1 -6.5e+88)
   (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
   (+ x1 (+ (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0))))) (* x2 -6.0)))))
double code(double x1, double x2) {
	double tmp;
	if (x1 <= -6.5e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (x2 * -6.0));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: tmp
    if (x1 <= (-6.5d+88)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else
        tmp = x1 + ((x1 + (4.0d0 * (x1 * (x2 * ((x2 * 2.0d0) - 3.0d0))))) + (x2 * (-6.0d0)))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double tmp;
	if (x1 <= -6.5e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else {
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (x2 * -6.0));
	}
	return tmp;
}
def code(x1, x2):
	tmp = 0
	if x1 <= -6.5e+88:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	else:
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (x2 * -6.0))
	return tmp
function code(x1, x2)
	tmp = 0.0
	if (x1 <= -6.5e+88)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	else
		tmp = Float64(x1 + Float64(Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0))))) + Float64(x2 * -6.0)));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	tmp = 0.0;
	if (x1 <= -6.5e+88)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	else
		tmp = x1 + ((x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))) + (x2 * -6.0));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := If[LessEqual[x1, -6.5e+88], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(x2 * -6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x1 \leq -6.5 \cdot 10^{+88}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(\left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right) + x2 \cdot -6\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 24: 25.3% accurate, 5.8× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x1 \leq -7.2 \cdot 10^{+88}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 + \left(9 + \left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (if (<= x1 -7.2e+88)
   (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
   (+ x1 (+ 9.0 (+ x1 (* 4.0 (* x1 (* x2 (- (* x2 2.0) 3.0)))))))))
double code(double x1, double x2) {
	double tmp;
	if (x1 <= -7.2e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else {
		tmp = x1 + (9.0 + (x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: tmp
    if (x1 <= (-7.2d+88)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else
        tmp = x1 + (9.0d0 + (x1 + (4.0d0 * (x1 * (x2 * ((x2 * 2.0d0) - 3.0d0))))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double tmp;
	if (x1 <= -7.2e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else {
		tmp = x1 + (9.0 + (x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))));
	}
	return tmp;
}
def code(x1, x2):
	tmp = 0
	if x1 <= -7.2e+88:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	else:
		tmp = x1 + (9.0 + (x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))))
	return tmp
function code(x1, x2)
	tmp = 0.0
	if (x1 <= -7.2e+88)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	else
		tmp = Float64(x1 + Float64(9.0 + Float64(x1 + Float64(4.0 * Float64(x1 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	tmp = 0.0;
	if (x1 <= -7.2e+88)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	else
		tmp = x1 + (9.0 + (x1 + (4.0 * (x1 * (x2 * ((x2 * 2.0) - 3.0))))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := If[LessEqual[x1, -7.2e+88], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 + N[(9.0 + N[(x1 + N[(4.0 * N[(x1 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x1 \leq -7.2 \cdot 10^{+88}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 + \left(9 + \left(x1 + 4 \cdot \left(x1 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 25: 25.1% accurate, 7.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;x1 \leq -7.2 \cdot 10^{+88}:\\ \;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\ \end{array} \end{array} \]
(FPCore (x1 x2)
 :precision binary64
 (if (<= x1 -7.2e+88)
   (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2))))
   (* x1 (+ 2.0 (* 4.0 (* x2 (- (* x2 2.0) 3.0)))))))
double code(double x1, double x2) {
	double tmp;
	if (x1 <= -7.2e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    real(8) :: tmp
    if (x1 <= (-7.2d+88)) then
        tmp = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
    else
        tmp = x1 * (2.0d0 + (4.0d0 * (x2 * ((x2 * 2.0d0) - 3.0d0))))
    end if
    code = tmp
end function
public static double code(double x1, double x2) {
	double tmp;
	if (x1 <= -7.2e+88) {
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	} else {
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	}
	return tmp;
}
def code(x1, x2):
	tmp = 0
	if x1 <= -7.2e+88:
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
	else:
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))))
	return tmp
function code(x1, x2)
	tmp = 0.0
	if (x1 <= -7.2e+88)
		tmp = Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))));
	else
		tmp = Float64(x1 * Float64(2.0 + Float64(4.0 * Float64(x2 * Float64(Float64(x2 * 2.0) - 3.0)))));
	end
	return tmp
end
function tmp_2 = code(x1, x2)
	tmp = 0.0;
	if (x1 <= -7.2e+88)
		tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
	else
		tmp = x1 * (2.0 + (4.0 * (x2 * ((x2 * 2.0) - 3.0))));
	end
	tmp_2 = tmp;
end
code[x1_, x2_] := If[LessEqual[x1, -7.2e+88], N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x1 * N[(2.0 + N[(4.0 * N[(x2 * N[(N[(x2 * 2.0), $MachinePrecision] - 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;x1 \leq -7.2 \cdot 10^{+88}:\\
\;\;\;\;9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x1 \cdot \left(2 + 4 \cdot \left(x2 \cdot \left(x2 \cdot 2 - 3\right)\right)\right)\\


\end{array}
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 26: 9.7% accurate, 11.5× speedup?

\[\begin{array}{l} \\ 9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right) \end{array} \]
(FPCore (x1 x2) :precision binary64 (+ 9.0 (+ (* x1 2.0) (* -12.0 (* x1 x2)))))
double code(double x1, double x2) {
	return 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    code = 9.0d0 + ((x1 * 2.0d0) + ((-12.0d0) * (x1 * x2)))
end function
public static double code(double x1, double x2) {
	return 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
}
def code(x1, x2):
	return 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)))
function code(x1, x2)
	return Float64(9.0 + Float64(Float64(x1 * 2.0) + Float64(-12.0 * Float64(x1 * x2))))
end
function tmp = code(x1, x2)
	tmp = 9.0 + ((x1 * 2.0) + (-12.0 * (x1 * x2)));
end
code[x1_, x2_] := N[(9.0 + N[(N[(x1 * 2.0), $MachinePrecision] + N[(-12.0 * N[(x1 * x2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
9 + \left(x1 \cdot 2 + -12 \cdot \left(x1 \cdot x2\right)\right)
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Alternative 27: 3.5% accurate, 127.0× speedup?

\[\begin{array}{l} \\ 9 \end{array} \]
(FPCore (x1 x2) :precision binary64 9.0)
double code(double x1, double x2) {
	return 9.0;
}
real(8) function code(x1, x2)
    real(8), intent (in) :: x1
    real(8), intent (in) :: x2
    code = 9.0d0
end function
public static double code(double x1, double x2) {
	return 9.0;
}
def code(x1, x2):
	return 9.0
function code(x1, x2)
	return 9.0
end
function tmp = code(x1, x2)
	tmp = 9.0;
end
code[x1_, x2_] := 9.0
\begin{array}{l}

\\
9
\end{array}
Derivation
    &prev;&pcontext;&pcontext2;&ctx;
  1. Add Preprocessing

Reproduce

?
herbie shell --seed 2024006 
(FPCore (x1 x2)
  :name "Rosa's FloatVsDoubleBenchmark"
  :precision binary64
  (+ x1 (+ (+ (+ (+ (* (+ (* (* (* 2.0 x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) (- (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)) 3.0)) (* (* x1 x1) (- (* 4.0 (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))) 6.0))) (+ (* x1 x1) 1.0)) (* (* (* 3.0 x1) x1) (/ (- (+ (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0)))) (* (* x1 x1) x1)) x1) (* 3.0 (/ (- (- (* (* 3.0 x1) x1) (* 2.0 x2)) x1) (+ (* x1 x1) 1.0))))))