math.cube on complex, real part

Percentage Accurate: 82.8% → 99.8%
Time: 9.4s
Alternatives: 10
Speedup: 0.9×

Specification

?
\[\begin{array}{l} \\ \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \end{array} \]
(FPCore (x.re x.im)
 :precision binary64
 (-
  (* (- (* x.re x.re) (* x.im x.im)) x.re)
  (* (+ (* x.re x.im) (* x.im x.re)) x.im)))
double code(double x_46_re, double x_46_im) {
	return (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_re) - (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_im);
}
real(8) function code(x_46re, x_46im)
    real(8), intent (in) :: x_46re
    real(8), intent (in) :: x_46im
    code = (((x_46re * x_46re) - (x_46im * x_46im)) * x_46re) - (((x_46re * x_46im) + (x_46im * x_46re)) * x_46im)
end function
public static double code(double x_46_re, double x_46_im) {
	return (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_re) - (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_im);
}
def code(x_46_re, x_46_im):
	return (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_re) - (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_im)
function code(x_46_re, x_46_im)
	return Float64(Float64(Float64(Float64(x_46_re * x_46_re) - Float64(x_46_im * x_46_im)) * x_46_re) - Float64(Float64(Float64(x_46_re * x_46_im) + Float64(x_46_im * x_46_re)) * x_46_im))
end
function tmp = code(x_46_re, x_46_im)
	tmp = (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_re) - (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_im);
end
code[x$46$re_, x$46$im_] := N[(N[(N[(N[(x$46$re * x$46$re), $MachinePrecision] - N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision] * x$46$re), $MachinePrecision] - N[(N[(N[(x$46$re * x$46$im), $MachinePrecision] + N[(x$46$im * x$46$re), $MachinePrecision]), $MachinePrecision] * x$46$im), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im
\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 10 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: 82.8% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \end{array} \]
(FPCore (x.re x.im)
 :precision binary64
 (-
  (* (- (* x.re x.re) (* x.im x.im)) x.re)
  (* (+ (* x.re x.im) (* x.im x.re)) x.im)))
double code(double x_46_re, double x_46_im) {
	return (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_re) - (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_im);
}
real(8) function code(x_46re, x_46im)
    real(8), intent (in) :: x_46re
    real(8), intent (in) :: x_46im
    code = (((x_46re * x_46re) - (x_46im * x_46im)) * x_46re) - (((x_46re * x_46im) + (x_46im * x_46re)) * x_46im)
end function
public static double code(double x_46_re, double x_46_im) {
	return (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_re) - (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_im);
}
def code(x_46_re, x_46_im):
	return (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_re) - (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_im)
function code(x_46_re, x_46_im)
	return Float64(Float64(Float64(Float64(x_46_re * x_46_re) - Float64(x_46_im * x_46_im)) * x_46_re) - Float64(Float64(Float64(x_46_re * x_46_im) + Float64(x_46_im * x_46_re)) * x_46_im))
end
function tmp = code(x_46_re, x_46_im)
	tmp = (((x_46_re * x_46_re) - (x_46_im * x_46_im)) * x_46_re) - (((x_46_re * x_46_im) + (x_46_im * x_46_re)) * x_46_im);
end
code[x$46$re_, x$46$im_] := N[(N[(N[(N[(x$46$re * x$46$re), $MachinePrecision] - N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision] * x$46$re), $MachinePrecision] - N[(N[(N[(x$46$re * x$46$im), $MachinePrecision] + N[(x$46$im * x$46$re), $MachinePrecision]), $MachinePrecision] * x$46$im), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im
\end{array}

Alternative 1: 99.8% accurate, 0.1× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ \begin{array}{l} t_0 := x.im \cdot \left(x.re\_m \cdot x.im + x.re\_m \cdot x.im\right)\\ t_1 := x.re\_m \cdot \left(x.re\_m \cdot x.re\_m - x.im \cdot x.im\right) - t\_0\\ x.re\_s \cdot \begin{array}{l} \mathbf{if}\;t\_1 \leq -4:\\ \;\;\;\;\left(1 + \frac{x.re\_m}{x.im}\right) \cdot \left(x.im \cdot \left(x.re\_m \cdot \left(x.re\_m - x.im\right)\right)\right) - t\_0\\ \mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+241}:\\ \;\;\;\;{x.re\_m}^{3} + x.re\_m \cdot \left(x.im \cdot \left(x.im \cdot -3\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\ \end{array} \end{array} \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (let* ((t_0 (* x.im (+ (* x.re_m x.im) (* x.re_m x.im))))
        (t_1 (- (* x.re_m (- (* x.re_m x.re_m) (* x.im x.im))) t_0)))
   (*
    x.re_s
    (if (<= t_1 -4.0)
      (- (* (+ 1.0 (/ x.re_m x.im)) (* x.im (* x.re_m (- x.re_m x.im)))) t_0)
      (if (<= t_1 2e+241)
        (+ (pow x.re_m 3.0) (* x.re_m (* x.im (* x.im -3.0))))
        (- (* x.re_m (* (- x.re_m x.im) (+ x.re_m x.im))) -1.0))))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double t_0 = x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im));
	double t_1 = (x_46_re_m * ((x_46_re_m * x_46_re_m) - (x_46_im * x_46_im))) - t_0;
	double tmp;
	if (t_1 <= -4.0) {
		tmp = ((1.0 + (x_46_re_m / x_46_im)) * (x_46_im * (x_46_re_m * (x_46_re_m - x_46_im)))) - t_0;
	} else if (t_1 <= 2e+241) {
		tmp = pow(x_46_re_m, 3.0) + (x_46_re_m * (x_46_im * (x_46_im * -3.0)));
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: tmp
    t_0 = x_46im * ((x_46re_m * x_46im) + (x_46re_m * x_46im))
    t_1 = (x_46re_m * ((x_46re_m * x_46re_m) - (x_46im * x_46im))) - t_0
    if (t_1 <= (-4.0d0)) then
        tmp = ((1.0d0 + (x_46re_m / x_46im)) * (x_46im * (x_46re_m * (x_46re_m - x_46im)))) - t_0
    else if (t_1 <= 2d+241) then
        tmp = (x_46re_m ** 3.0d0) + (x_46re_m * (x_46im * (x_46im * (-3.0d0))))
    else
        tmp = (x_46re_m * ((x_46re_m - x_46im) * (x_46re_m + x_46im))) - (-1.0d0)
    end if
    code = x_46re_s * tmp
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double t_0 = x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im));
	double t_1 = (x_46_re_m * ((x_46_re_m * x_46_re_m) - (x_46_im * x_46_im))) - t_0;
	double tmp;
	if (t_1 <= -4.0) {
		tmp = ((1.0 + (x_46_re_m / x_46_im)) * (x_46_im * (x_46_re_m * (x_46_re_m - x_46_im)))) - t_0;
	} else if (t_1 <= 2e+241) {
		tmp = Math.pow(x_46_re_m, 3.0) + (x_46_re_m * (x_46_im * (x_46_im * -3.0)));
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	t_0 = x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im))
	t_1 = (x_46_re_m * ((x_46_re_m * x_46_re_m) - (x_46_im * x_46_im))) - t_0
	tmp = 0
	if t_1 <= -4.0:
		tmp = ((1.0 + (x_46_re_m / x_46_im)) * (x_46_im * (x_46_re_m * (x_46_re_m - x_46_im)))) - t_0
	elif t_1 <= 2e+241:
		tmp = math.pow(x_46_re_m, 3.0) + (x_46_re_m * (x_46_im * (x_46_im * -3.0)))
	else:
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0
	return x_46_re_s * tmp
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	t_0 = Float64(x_46_im * Float64(Float64(x_46_re_m * x_46_im) + Float64(x_46_re_m * x_46_im)))
	t_1 = Float64(Float64(x_46_re_m * Float64(Float64(x_46_re_m * x_46_re_m) - Float64(x_46_im * x_46_im))) - t_0)
	tmp = 0.0
	if (t_1 <= -4.0)
		tmp = Float64(Float64(Float64(1.0 + Float64(x_46_re_m / x_46_im)) * Float64(x_46_im * Float64(x_46_re_m * Float64(x_46_re_m - x_46_im)))) - t_0);
	elseif (t_1 <= 2e+241)
		tmp = Float64((x_46_re_m ^ 3.0) + Float64(x_46_re_m * Float64(x_46_im * Float64(x_46_im * -3.0))));
	else
		tmp = Float64(Float64(x_46_re_m * Float64(Float64(x_46_re_m - x_46_im) * Float64(x_46_re_m + x_46_im))) - -1.0);
	end
	return Float64(x_46_re_s * tmp)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp_2 = code(x_46_re_s, x_46_re_m, x_46_im)
	t_0 = x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im));
	t_1 = (x_46_re_m * ((x_46_re_m * x_46_re_m) - (x_46_im * x_46_im))) - t_0;
	tmp = 0.0;
	if (t_1 <= -4.0)
		tmp = ((1.0 + (x_46_re_m / x_46_im)) * (x_46_im * (x_46_re_m * (x_46_re_m - x_46_im)))) - t_0;
	elseif (t_1 <= 2e+241)
		tmp = (x_46_re_m ^ 3.0) + (x_46_re_m * (x_46_im * (x_46_im * -3.0)));
	else
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	end
	tmp_2 = x_46_re_s * tmp;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := Block[{t$95$0 = N[(x$46$im * N[(N[(x$46$re$95$m * x$46$im), $MachinePrecision] + N[(x$46$re$95$m * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x$46$re$95$m * N[(N[(x$46$re$95$m * x$46$re$95$m), $MachinePrecision] - N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]}, N[(x$46$re$95$s * If[LessEqual[t$95$1, -4.0], N[(N[(N[(1.0 + N[(x$46$re$95$m / x$46$im), $MachinePrecision]), $MachinePrecision] * N[(x$46$im * N[(x$46$re$95$m * N[(x$46$re$95$m - x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], If[LessEqual[t$95$1, 2e+241], N[(N[Power[x$46$re$95$m, 3.0], $MachinePrecision] + N[(x$46$re$95$m * N[(x$46$im * N[(x$46$im * -3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re$95$m * N[(N[(x$46$re$95$m - x$46$im), $MachinePrecision] * N[(x$46$re$95$m + x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - -1.0), $MachinePrecision]]]), $MachinePrecision]]]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
\begin{array}{l}
t_0 := x.im \cdot \left(x.re\_m \cdot x.im + x.re\_m \cdot x.im\right)\\
t_1 := x.re\_m \cdot \left(x.re\_m \cdot x.re\_m - x.im \cdot x.im\right) - t\_0\\
x.re\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_1 \leq -4:\\
\;\;\;\;\left(1 + \frac{x.re\_m}{x.im}\right) \cdot \left(x.im \cdot \left(x.re\_m \cdot \left(x.re\_m - x.im\right)\right)\right) - t\_0\\

\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+241}:\\
\;\;\;\;{x.re\_m}^{3} + x.re\_m \cdot \left(x.im \cdot \left(x.im \cdot -3\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\


\end{array}
\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (-.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.re) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.im)) < -4

    1. Initial program 92.1%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares92.1%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative92.1%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr92.1%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Taylor expanded in x.im around inf 90.8%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)}\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Step-by-step derivation
      1. pow190.8%

        \[\leadsto \color{blue}{{\left(\left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re\right)}^{1}} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative90.8%

        \[\leadsto {\left(\color{blue}{\left(\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re\right)}^{1} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      3. associate-*l*98.5%

        \[\leadsto {\color{blue}{\left(\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right) \cdot \left(\left(x.re - x.im\right) \cdot x.re\right)\right)}}^{1} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr98.5%

      \[\leadsto \color{blue}{{\left(\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right) \cdot \left(\left(x.re - x.im\right) \cdot x.re\right)\right)}^{1}} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    8. Step-by-step derivation
      1. pow198.5%

        \[\leadsto \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right) \cdot \left(\left(x.re - x.im\right) \cdot x.re\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative98.5%

        \[\leadsto \color{blue}{\left(\left(1 + \frac{x.re}{x.im}\right) \cdot x.im\right)} \cdot \left(\left(x.re - x.im\right) \cdot x.re\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      3. associate-*l*98.5%

        \[\leadsto \color{blue}{\left(1 + \frac{x.re}{x.im}\right) \cdot \left(x.im \cdot \left(\left(x.re - x.im\right) \cdot x.re\right)\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      4. *-commutative98.5%

        \[\leadsto \left(1 + \frac{x.re}{x.im}\right) \cdot \left(x.im \cdot \color{blue}{\left(x.re \cdot \left(x.re - x.im\right)\right)}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    9. Applied egg-rr98.5%

      \[\leadsto \color{blue}{\left(1 + \frac{x.re}{x.im}\right) \cdot \left(x.im \cdot \left(x.re \cdot \left(x.re - x.im\right)\right)\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]

    if -4 < (-.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.re) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.im)) < 2.0000000000000001e241

    1. Initial program 99.7%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Simplified99.8%

      \[\leadsto \color{blue}{{x.re}^{3} + x.re \cdot \left(x.im \cdot \left(x.im \cdot -3\right)\right)} \]
    3. Add Preprocessing

    if 2.0000000000000001e241 < (-.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.re) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.im))

    1. Initial program 58.6%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutative58.6%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{x.im \cdot \left(x.re \cdot x.im + x.im \cdot x.re\right)} \]
      2. *-commutative58.6%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \left(x.re \cdot x.im + \color{blue}{x.re \cdot x.im}\right) \]
      3. flip-+0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \color{blue}{\frac{\left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right) - \left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right)}{x.re \cdot x.im - x.re \cdot x.im}} \]
      4. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{0}}{x.re \cdot x.im - x.re \cdot x.im} \]
      5. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{\log 1}}{x.re \cdot x.im - x.re \cdot x.im} \]
      6. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{0}} \]
      7. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{\log 1}} \]
      8. associate-*r/0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot \log 1}{\log 1}} \]
      9. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot \color{blue}{0}}{\log 1} \]
      10. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot 0}{\color{blue}{0}} \]
    4. Applied egg-rr0.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot 0}{0}} \]
    5. Applied egg-rr71.7%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{-1} \]
    6. Step-by-step derivation
      1. difference-of-squares75.8%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative75.8%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr97.5%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - -1 \]
  3. Recombined 3 regimes into one program.
  4. Final simplification98.8%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \cdot \left(x.re \cdot x.re - x.im \cdot x.im\right) - x.im \cdot \left(x.re \cdot x.im + x.re \cdot x.im\right) \leq -4:\\ \;\;\;\;\left(1 + \frac{x.re}{x.im}\right) \cdot \left(x.im \cdot \left(x.re \cdot \left(x.re - x.im\right)\right)\right) - x.im \cdot \left(x.re \cdot x.im + x.re \cdot x.im\right)\\ \mathbf{elif}\;x.re \cdot \left(x.re \cdot x.re - x.im \cdot x.im\right) - x.im \cdot \left(x.re \cdot x.im + x.re \cdot x.im\right) \leq 2 \cdot 10^{+241}:\\ \;\;\;\;{x.re}^{3} + x.re \cdot \left(x.im \cdot \left(x.im \cdot -3\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - -1\\ \end{array} \]
  5. Add Preprocessing

Alternative 2: 99.8% accurate, 0.2× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ x.re\_s \cdot \begin{array}{l} \mathbf{if}\;x.re\_m \leq 10^{+82}:\\ \;\;\;\;x.im \cdot \left(x.re\_m \cdot \left(x.re\_m - x.re\_m\right) - x.im \cdot \left(x.re\_m + x.re\_m \cdot 2\right)\right) + {x.re\_m}^{3}\\ \mathbf{else}:\\ \;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\ \end{array} \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (*
  x.re_s
  (if (<= x.re_m 1e+82)
    (+
     (*
      x.im
      (- (* x.re_m (- x.re_m x.re_m)) (* x.im (+ x.re_m (* x.re_m 2.0)))))
     (pow x.re_m 3.0))
    (- (* x.re_m (* (- x.re_m x.im) (+ x.re_m x.im))) -1.0))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double tmp;
	if (x_46_re_m <= 1e+82) {
		tmp = (x_46_im * ((x_46_re_m * (x_46_re_m - x_46_re_m)) - (x_46_im * (x_46_re_m + (x_46_re_m * 2.0))))) + pow(x_46_re_m, 3.0);
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    real(8) :: tmp
    if (x_46re_m <= 1d+82) then
        tmp = (x_46im * ((x_46re_m * (x_46re_m - x_46re_m)) - (x_46im * (x_46re_m + (x_46re_m * 2.0d0))))) + (x_46re_m ** 3.0d0)
    else
        tmp = (x_46re_m * ((x_46re_m - x_46im) * (x_46re_m + x_46im))) - (-1.0d0)
    end if
    code = x_46re_s * tmp
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double tmp;
	if (x_46_re_m <= 1e+82) {
		tmp = (x_46_im * ((x_46_re_m * (x_46_re_m - x_46_re_m)) - (x_46_im * (x_46_re_m + (x_46_re_m * 2.0))))) + Math.pow(x_46_re_m, 3.0);
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	tmp = 0
	if x_46_re_m <= 1e+82:
		tmp = (x_46_im * ((x_46_re_m * (x_46_re_m - x_46_re_m)) - (x_46_im * (x_46_re_m + (x_46_re_m * 2.0))))) + math.pow(x_46_re_m, 3.0)
	else:
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0
	return x_46_re_s * tmp
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = 0.0
	if (x_46_re_m <= 1e+82)
		tmp = Float64(Float64(x_46_im * Float64(Float64(x_46_re_m * Float64(x_46_re_m - x_46_re_m)) - Float64(x_46_im * Float64(x_46_re_m + Float64(x_46_re_m * 2.0))))) + (x_46_re_m ^ 3.0));
	else
		tmp = Float64(Float64(x_46_re_m * Float64(Float64(x_46_re_m - x_46_im) * Float64(x_46_re_m + x_46_im))) - -1.0);
	end
	return Float64(x_46_re_s * tmp)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp_2 = code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = 0.0;
	if (x_46_re_m <= 1e+82)
		tmp = (x_46_im * ((x_46_re_m * (x_46_re_m - x_46_re_m)) - (x_46_im * (x_46_re_m + (x_46_re_m * 2.0))))) + (x_46_re_m ^ 3.0);
	else
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	end
	tmp_2 = x_46_re_s * tmp;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := N[(x$46$re$95$s * If[LessEqual[x$46$re$95$m, 1e+82], N[(N[(x$46$im * N[(N[(x$46$re$95$m * N[(x$46$re$95$m - x$46$re$95$m), $MachinePrecision]), $MachinePrecision] - N[(x$46$im * N[(x$46$re$95$m + N[(x$46$re$95$m * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[Power[x$46$re$95$m, 3.0], $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re$95$m * N[(N[(x$46$re$95$m - x$46$im), $MachinePrecision] * N[(x$46$re$95$m + x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - -1.0), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
x.re\_s \cdot \begin{array}{l}
\mathbf{if}\;x.re\_m \leq 10^{+82}:\\
\;\;\;\;x.im \cdot \left(x.re\_m \cdot \left(x.re\_m - x.re\_m\right) - x.im \cdot \left(x.re\_m + x.re\_m \cdot 2\right)\right) + {x.re\_m}^{3}\\

\mathbf{else}:\\
\;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\


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

    1. Initial program 91.6%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares94.0%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative94.0%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr94.0%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Taylor expanded in x.im around inf 93.1%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)}\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Taylor expanded in x.im around 0 93.4%

      \[\leadsto \color{blue}{x.im \cdot \left(x.im \cdot \left(-1 \cdot x.re - 2 \cdot x.re\right) + x.re \cdot \left(x.re + -1 \cdot x.re\right)\right) + {x.re}^{3}} \]

    if 9.9999999999999996e81 < x.re

    1. Initial program 66.7%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutative66.7%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{x.im \cdot \left(x.re \cdot x.im + x.im \cdot x.re\right)} \]
      2. *-commutative66.7%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \left(x.re \cdot x.im + \color{blue}{x.re \cdot x.im}\right) \]
      3. flip-+0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \color{blue}{\frac{\left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right) - \left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right)}{x.re \cdot x.im - x.re \cdot x.im}} \]
      4. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{0}}{x.re \cdot x.im - x.re \cdot x.im} \]
      5. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{\log 1}}{x.re \cdot x.im - x.re \cdot x.im} \]
      6. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{0}} \]
      7. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{\log 1}} \]
      8. associate-*r/0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot \log 1}{\log 1}} \]
      9. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot \color{blue}{0}}{\log 1} \]
      10. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot 0}{\color{blue}{0}} \]
    4. Applied egg-rr0.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot 0}{0}} \]
    5. Applied egg-rr75.9%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{-1} \]
    6. Step-by-step derivation
      1. difference-of-squares79.6%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative79.6%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr100.0%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - -1 \]
  3. Recombined 2 regimes into one program.
  4. Final simplification94.8%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \leq 10^{+82}:\\ \;\;\;\;x.im \cdot \left(x.re \cdot \left(x.re - x.re\right) - x.im \cdot \left(x.re + x.re \cdot 2\right)\right) + {x.re}^{3}\\ \mathbf{else}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - -1\\ \end{array} \]
  5. Add Preprocessing

Alternative 3: 99.7% accurate, 0.3× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ \begin{array}{l} t_0 := x.im \cdot \left(x.re\_m \cdot x.im + x.re\_m \cdot x.im\right)\\ t_1 := x.re\_m \cdot \left(x.re\_m \cdot x.re\_m - x.im \cdot x.im\right) - t\_0\\ t_2 := x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right)\\ x.re\_s \cdot \begin{array}{l} \mathbf{if}\;t\_1 \leq -1 \cdot 10^{+222}:\\ \;\;\;\;\left(1 + \frac{x.re\_m}{x.im}\right) \cdot \left(x.im \cdot \left(x.re\_m \cdot \left(x.re\_m - x.im\right)\right)\right) - t\_0\\ \mathbf{elif}\;t\_1 \leq 2000000000000:\\ \;\;\;\;t\_2 - x.im \cdot \left(2 \cdot \left(x.re\_m \cdot x.im\right)\right)\\ \mathbf{else}:\\ \;\;\;\;t\_2 - -1\\ \end{array} \end{array} \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (let* ((t_0 (* x.im (+ (* x.re_m x.im) (* x.re_m x.im))))
        (t_1 (- (* x.re_m (- (* x.re_m x.re_m) (* x.im x.im))) t_0))
        (t_2 (* x.re_m (* (- x.re_m x.im) (+ x.re_m x.im)))))
   (*
    x.re_s
    (if (<= t_1 -1e+222)
      (- (* (+ 1.0 (/ x.re_m x.im)) (* x.im (* x.re_m (- x.re_m x.im)))) t_0)
      (if (<= t_1 2000000000000.0)
        (- t_2 (* x.im (* 2.0 (* x.re_m x.im))))
        (- t_2 -1.0))))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double t_0 = x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im));
	double t_1 = (x_46_re_m * ((x_46_re_m * x_46_re_m) - (x_46_im * x_46_im))) - t_0;
	double t_2 = x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im));
	double tmp;
	if (t_1 <= -1e+222) {
		tmp = ((1.0 + (x_46_re_m / x_46_im)) * (x_46_im * (x_46_re_m * (x_46_re_m - x_46_im)))) - t_0;
	} else if (t_1 <= 2000000000000.0) {
		tmp = t_2 - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	} else {
		tmp = t_2 - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    real(8) :: t_0
    real(8) :: t_1
    real(8) :: t_2
    real(8) :: tmp
    t_0 = x_46im * ((x_46re_m * x_46im) + (x_46re_m * x_46im))
    t_1 = (x_46re_m * ((x_46re_m * x_46re_m) - (x_46im * x_46im))) - t_0
    t_2 = x_46re_m * ((x_46re_m - x_46im) * (x_46re_m + x_46im))
    if (t_1 <= (-1d+222)) then
        tmp = ((1.0d0 + (x_46re_m / x_46im)) * (x_46im * (x_46re_m * (x_46re_m - x_46im)))) - t_0
    else if (t_1 <= 2000000000000.0d0) then
        tmp = t_2 - (x_46im * (2.0d0 * (x_46re_m * x_46im)))
    else
        tmp = t_2 - (-1.0d0)
    end if
    code = x_46re_s * tmp
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double t_0 = x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im));
	double t_1 = (x_46_re_m * ((x_46_re_m * x_46_re_m) - (x_46_im * x_46_im))) - t_0;
	double t_2 = x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im));
	double tmp;
	if (t_1 <= -1e+222) {
		tmp = ((1.0 + (x_46_re_m / x_46_im)) * (x_46_im * (x_46_re_m * (x_46_re_m - x_46_im)))) - t_0;
	} else if (t_1 <= 2000000000000.0) {
		tmp = t_2 - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	} else {
		tmp = t_2 - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	t_0 = x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im))
	t_1 = (x_46_re_m * ((x_46_re_m * x_46_re_m) - (x_46_im * x_46_im))) - t_0
	t_2 = x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))
	tmp = 0
	if t_1 <= -1e+222:
		tmp = ((1.0 + (x_46_re_m / x_46_im)) * (x_46_im * (x_46_re_m * (x_46_re_m - x_46_im)))) - t_0
	elif t_1 <= 2000000000000.0:
		tmp = t_2 - (x_46_im * (2.0 * (x_46_re_m * x_46_im)))
	else:
		tmp = t_2 - -1.0
	return x_46_re_s * tmp
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	t_0 = Float64(x_46_im * Float64(Float64(x_46_re_m * x_46_im) + Float64(x_46_re_m * x_46_im)))
	t_1 = Float64(Float64(x_46_re_m * Float64(Float64(x_46_re_m * x_46_re_m) - Float64(x_46_im * x_46_im))) - t_0)
	t_2 = Float64(x_46_re_m * Float64(Float64(x_46_re_m - x_46_im) * Float64(x_46_re_m + x_46_im)))
	tmp = 0.0
	if (t_1 <= -1e+222)
		tmp = Float64(Float64(Float64(1.0 + Float64(x_46_re_m / x_46_im)) * Float64(x_46_im * Float64(x_46_re_m * Float64(x_46_re_m - x_46_im)))) - t_0);
	elseif (t_1 <= 2000000000000.0)
		tmp = Float64(t_2 - Float64(x_46_im * Float64(2.0 * Float64(x_46_re_m * x_46_im))));
	else
		tmp = Float64(t_2 - -1.0);
	end
	return Float64(x_46_re_s * tmp)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp_2 = code(x_46_re_s, x_46_re_m, x_46_im)
	t_0 = x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im));
	t_1 = (x_46_re_m * ((x_46_re_m * x_46_re_m) - (x_46_im * x_46_im))) - t_0;
	t_2 = x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im));
	tmp = 0.0;
	if (t_1 <= -1e+222)
		tmp = ((1.0 + (x_46_re_m / x_46_im)) * (x_46_im * (x_46_re_m * (x_46_re_m - x_46_im)))) - t_0;
	elseif (t_1 <= 2000000000000.0)
		tmp = t_2 - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	else
		tmp = t_2 - -1.0;
	end
	tmp_2 = x_46_re_s * tmp;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := Block[{t$95$0 = N[(x$46$im * N[(N[(x$46$re$95$m * x$46$im), $MachinePrecision] + N[(x$46$re$95$m * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x$46$re$95$m * N[(N[(x$46$re$95$m * x$46$re$95$m), $MachinePrecision] - N[(x$46$im * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(x$46$re$95$m * N[(N[(x$46$re$95$m - x$46$im), $MachinePrecision] * N[(x$46$re$95$m + x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(x$46$re$95$s * If[LessEqual[t$95$1, -1e+222], N[(N[(N[(1.0 + N[(x$46$re$95$m / x$46$im), $MachinePrecision]), $MachinePrecision] * N[(x$46$im * N[(x$46$re$95$m * N[(x$46$re$95$m - x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], If[LessEqual[t$95$1, 2000000000000.0], N[(t$95$2 - N[(x$46$im * N[(2.0 * N[(x$46$re$95$m * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$2 - -1.0), $MachinePrecision]]]), $MachinePrecision]]]]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
\begin{array}{l}
t_0 := x.im \cdot \left(x.re\_m \cdot x.im + x.re\_m \cdot x.im\right)\\
t_1 := x.re\_m \cdot \left(x.re\_m \cdot x.re\_m - x.im \cdot x.im\right) - t\_0\\
t_2 := x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right)\\
x.re\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_1 \leq -1 \cdot 10^{+222}:\\
\;\;\;\;\left(1 + \frac{x.re\_m}{x.im}\right) \cdot \left(x.im \cdot \left(x.re\_m \cdot \left(x.re\_m - x.im\right)\right)\right) - t\_0\\

\mathbf{elif}\;t\_1 \leq 2000000000000:\\
\;\;\;\;t\_2 - x.im \cdot \left(2 \cdot \left(x.re\_m \cdot x.im\right)\right)\\

\mathbf{else}:\\
\;\;\;\;t\_2 - -1\\


\end{array}
\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if (-.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.re) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.im)) < -1e222

    1. Initial program 89.8%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares89.8%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative89.8%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr89.8%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Taylor expanded in x.im around inf 89.8%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)}\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Step-by-step derivation
      1. pow189.8%

        \[\leadsto \color{blue}{{\left(\left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re\right)}^{1}} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative89.8%

        \[\leadsto {\left(\color{blue}{\left(\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re\right)}^{1} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      3. associate-*l*99.9%

        \[\leadsto {\color{blue}{\left(\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right) \cdot \left(\left(x.re - x.im\right) \cdot x.re\right)\right)}}^{1} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr99.9%

      \[\leadsto \color{blue}{{\left(\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right) \cdot \left(\left(x.re - x.im\right) \cdot x.re\right)\right)}^{1}} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    8. Step-by-step derivation
      1. pow199.9%

        \[\leadsto \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right) \cdot \left(\left(x.re - x.im\right) \cdot x.re\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative99.9%

        \[\leadsto \color{blue}{\left(\left(1 + \frac{x.re}{x.im}\right) \cdot x.im\right)} \cdot \left(\left(x.re - x.im\right) \cdot x.re\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      3. associate-*l*99.9%

        \[\leadsto \color{blue}{\left(1 + \frac{x.re}{x.im}\right) \cdot \left(x.im \cdot \left(\left(x.re - x.im\right) \cdot x.re\right)\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      4. *-commutative99.9%

        \[\leadsto \left(1 + \frac{x.re}{x.im}\right) \cdot \left(x.im \cdot \color{blue}{\left(x.re \cdot \left(x.re - x.im\right)\right)}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    9. Applied egg-rr99.9%

      \[\leadsto \color{blue}{\left(1 + \frac{x.re}{x.im}\right) \cdot \left(x.im \cdot \left(x.re \cdot \left(x.re - x.im\right)\right)\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]

    if -1e222 < (-.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.re) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.im)) < 2e12

    1. Initial program 99.7%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares99.7%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative99.7%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr99.7%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Taylor expanded in x.im around inf 98.8%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)}\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Step-by-step derivation
      1. *-un-lft-identity98.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\color{blue}{1 \cdot \left(x.re \cdot x.im\right)} + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative98.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{x.re \cdot x.im}\right) \cdot x.im \]
      3. *-un-lft-identity98.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{1 \cdot \left(x.re \cdot x.im\right)}\right) \cdot x.im \]
      4. distribute-rgt-out98.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot \left(1 + 1\right)\right)} \cdot x.im \]
      5. metadata-eval98.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot \color{blue}{2}\right) \cdot x.im \]
    7. Applied egg-rr98.8%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot 2\right)} \cdot x.im \]
    8. Taylor expanded in x.im around 0 99.7%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im + x.re\right)}\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot 2\right) \cdot x.im \]
    9. Simplified99.7%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.re + x.im\right)}\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot 2\right) \cdot x.im \]

    if 2e12 < (-.f64 (*.f64 (-.f64 (*.f64 x.re x.re) (*.f64 x.im x.im)) x.re) (*.f64 (+.f64 (*.f64 x.re x.im) (*.f64 x.im x.re)) x.im))

    1. Initial program 66.2%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutative66.2%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{x.im \cdot \left(x.re \cdot x.im + x.im \cdot x.re\right)} \]
      2. *-commutative66.2%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \left(x.re \cdot x.im + \color{blue}{x.re \cdot x.im}\right) \]
      3. flip-+0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \color{blue}{\frac{\left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right) - \left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right)}{x.re \cdot x.im - x.re \cdot x.im}} \]
      4. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{0}}{x.re \cdot x.im - x.re \cdot x.im} \]
      5. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{\log 1}}{x.re \cdot x.im - x.re \cdot x.im} \]
      6. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{0}} \]
      7. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{\log 1}} \]
      8. associate-*r/0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot \log 1}{\log 1}} \]
      9. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot \color{blue}{0}}{\log 1} \]
      10. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot 0}{\color{blue}{0}} \]
    4. Applied egg-rr0.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot 0}{0}} \]
    5. Applied egg-rr67.4%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{-1} \]
    6. Step-by-step derivation
      1. difference-of-squares80.2%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative80.2%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr88.3%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - -1 \]
  3. Recombined 3 regimes into one program.
  4. Final simplification95.9%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \cdot \left(x.re \cdot x.re - x.im \cdot x.im\right) - x.im \cdot \left(x.re \cdot x.im + x.re \cdot x.im\right) \leq -1 \cdot 10^{+222}:\\ \;\;\;\;\left(1 + \frac{x.re}{x.im}\right) \cdot \left(x.im \cdot \left(x.re \cdot \left(x.re - x.im\right)\right)\right) - x.im \cdot \left(x.re \cdot x.im + x.re \cdot x.im\right)\\ \mathbf{elif}\;x.re \cdot \left(x.re \cdot x.re - x.im \cdot x.im\right) - x.im \cdot \left(x.re \cdot x.im + x.re \cdot x.im\right) \leq 2000000000000:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - x.im \cdot \left(2 \cdot \left(x.re \cdot x.im\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - -1\\ \end{array} \]
  5. Add Preprocessing

Alternative 4: 87.2% accurate, 0.8× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ \begin{array}{l} t_0 := x.im \cdot \left(2 \cdot \left(x.re\_m \cdot x.im\right)\right)\\ x.re\_s \cdot \begin{array}{l} \mathbf{if}\;x.re\_m \leq 2.9 \cdot 10^{-98}:\\ \;\;\;\;x.re\_m \cdot \left(x.im \cdot \left(x.re\_m - x.im\right)\right) - t\_0\\ \mathbf{elif}\;x.re\_m \leq 1.2 \cdot 10^{+76}:\\ \;\;\;\;x.re\_m \cdot \left(x.re\_m \cdot \left(x.re\_m - x.im\right)\right) - t\_0\\ \mathbf{else}:\\ \;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\ \end{array} \end{array} \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (let* ((t_0 (* x.im (* 2.0 (* x.re_m x.im)))))
   (*
    x.re_s
    (if (<= x.re_m 2.9e-98)
      (- (* x.re_m (* x.im (- x.re_m x.im))) t_0)
      (if (<= x.re_m 1.2e+76)
        (- (* x.re_m (* x.re_m (- x.re_m x.im))) t_0)
        (- (* x.re_m (* (- x.re_m x.im) (+ x.re_m x.im))) -1.0))))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double t_0 = x_46_im * (2.0 * (x_46_re_m * x_46_im));
	double tmp;
	if (x_46_re_m <= 2.9e-98) {
		tmp = (x_46_re_m * (x_46_im * (x_46_re_m - x_46_im))) - t_0;
	} else if (x_46_re_m <= 1.2e+76) {
		tmp = (x_46_re_m * (x_46_re_m * (x_46_re_m - x_46_im))) - t_0;
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    real(8) :: t_0
    real(8) :: tmp
    t_0 = x_46im * (2.0d0 * (x_46re_m * x_46im))
    if (x_46re_m <= 2.9d-98) then
        tmp = (x_46re_m * (x_46im * (x_46re_m - x_46im))) - t_0
    else if (x_46re_m <= 1.2d+76) then
        tmp = (x_46re_m * (x_46re_m * (x_46re_m - x_46im))) - t_0
    else
        tmp = (x_46re_m * ((x_46re_m - x_46im) * (x_46re_m + x_46im))) - (-1.0d0)
    end if
    code = x_46re_s * tmp
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double t_0 = x_46_im * (2.0 * (x_46_re_m * x_46_im));
	double tmp;
	if (x_46_re_m <= 2.9e-98) {
		tmp = (x_46_re_m * (x_46_im * (x_46_re_m - x_46_im))) - t_0;
	} else if (x_46_re_m <= 1.2e+76) {
		tmp = (x_46_re_m * (x_46_re_m * (x_46_re_m - x_46_im))) - t_0;
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	t_0 = x_46_im * (2.0 * (x_46_re_m * x_46_im))
	tmp = 0
	if x_46_re_m <= 2.9e-98:
		tmp = (x_46_re_m * (x_46_im * (x_46_re_m - x_46_im))) - t_0
	elif x_46_re_m <= 1.2e+76:
		tmp = (x_46_re_m * (x_46_re_m * (x_46_re_m - x_46_im))) - t_0
	else:
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0
	return x_46_re_s * tmp
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	t_0 = Float64(x_46_im * Float64(2.0 * Float64(x_46_re_m * x_46_im)))
	tmp = 0.0
	if (x_46_re_m <= 2.9e-98)
		tmp = Float64(Float64(x_46_re_m * Float64(x_46_im * Float64(x_46_re_m - x_46_im))) - t_0);
	elseif (x_46_re_m <= 1.2e+76)
		tmp = Float64(Float64(x_46_re_m * Float64(x_46_re_m * Float64(x_46_re_m - x_46_im))) - t_0);
	else
		tmp = Float64(Float64(x_46_re_m * Float64(Float64(x_46_re_m - x_46_im) * Float64(x_46_re_m + x_46_im))) - -1.0);
	end
	return Float64(x_46_re_s * tmp)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp_2 = code(x_46_re_s, x_46_re_m, x_46_im)
	t_0 = x_46_im * (2.0 * (x_46_re_m * x_46_im));
	tmp = 0.0;
	if (x_46_re_m <= 2.9e-98)
		tmp = (x_46_re_m * (x_46_im * (x_46_re_m - x_46_im))) - t_0;
	elseif (x_46_re_m <= 1.2e+76)
		tmp = (x_46_re_m * (x_46_re_m * (x_46_re_m - x_46_im))) - t_0;
	else
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	end
	tmp_2 = x_46_re_s * tmp;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := Block[{t$95$0 = N[(x$46$im * N[(2.0 * N[(x$46$re$95$m * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(x$46$re$95$s * If[LessEqual[x$46$re$95$m, 2.9e-98], N[(N[(x$46$re$95$m * N[(x$46$im * N[(x$46$re$95$m - x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], If[LessEqual[x$46$re$95$m, 1.2e+76], N[(N[(x$46$re$95$m * N[(x$46$re$95$m * N[(x$46$re$95$m - x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision], N[(N[(x$46$re$95$m * N[(N[(x$46$re$95$m - x$46$im), $MachinePrecision] * N[(x$46$re$95$m + x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - -1.0), $MachinePrecision]]]), $MachinePrecision]]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
\begin{array}{l}
t_0 := x.im \cdot \left(2 \cdot \left(x.re\_m \cdot x.im\right)\right)\\
x.re\_s \cdot \begin{array}{l}
\mathbf{if}\;x.re\_m \leq 2.9 \cdot 10^{-98}:\\
\;\;\;\;x.re\_m \cdot \left(x.im \cdot \left(x.re\_m - x.im\right)\right) - t\_0\\

\mathbf{elif}\;x.re\_m \leq 1.2 \cdot 10^{+76}:\\
\;\;\;\;x.re\_m \cdot \left(x.re\_m \cdot \left(x.re\_m - x.im\right)\right) - t\_0\\

\mathbf{else}:\\
\;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\


\end{array}
\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if x.re < 2.9e-98

    1. Initial program 90.4%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares93.4%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative93.4%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr93.4%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Taylor expanded in x.im around inf 92.8%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)}\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Step-by-step derivation
      1. *-un-lft-identity92.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\color{blue}{1 \cdot \left(x.re \cdot x.im\right)} + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative92.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{x.re \cdot x.im}\right) \cdot x.im \]
      3. *-un-lft-identity92.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{1 \cdot \left(x.re \cdot x.im\right)}\right) \cdot x.im \]
      4. distribute-rgt-out92.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot \left(1 + 1\right)\right)} \cdot x.im \]
      5. metadata-eval92.8%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot \color{blue}{2}\right) \cdot x.im \]
    7. Applied egg-rr92.8%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot 2\right)} \cdot x.im \]
    8. Taylor expanded in x.im around inf 65.7%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{x.im}\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot 2\right) \cdot x.im \]

    if 2.9e-98 < x.re < 1.2e76

    1. Initial program 97.1%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares97.1%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative97.1%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr97.1%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Taylor expanded in x.im around inf 94.3%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)}\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Step-by-step derivation
      1. *-un-lft-identity94.3%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\color{blue}{1 \cdot \left(x.re \cdot x.im\right)} + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative94.3%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{x.re \cdot x.im}\right) \cdot x.im \]
      3. *-un-lft-identity94.3%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{1 \cdot \left(x.re \cdot x.im\right)}\right) \cdot x.im \]
      4. distribute-rgt-out94.3%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot \left(1 + 1\right)\right)} \cdot x.im \]
      5. metadata-eval94.3%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot \color{blue}{2}\right) \cdot x.im \]
    7. Applied egg-rr94.3%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot 2\right)} \cdot x.im \]
    8. Taylor expanded in x.im around 0 75.8%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{x.re}\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot 2\right) \cdot x.im \]

    if 1.2e76 < x.re

    1. Initial program 67.2%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutative67.2%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{x.im \cdot \left(x.re \cdot x.im + x.im \cdot x.re\right)} \]
      2. *-commutative67.2%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \left(x.re \cdot x.im + \color{blue}{x.re \cdot x.im}\right) \]
      3. flip-+0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \color{blue}{\frac{\left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right) - \left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right)}{x.re \cdot x.im - x.re \cdot x.im}} \]
      4. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{0}}{x.re \cdot x.im - x.re \cdot x.im} \]
      5. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{\log 1}}{x.re \cdot x.im - x.re \cdot x.im} \]
      6. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{0}} \]
      7. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{\log 1}} \]
      8. associate-*r/0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot \log 1}{\log 1}} \]
      9. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot \color{blue}{0}}{\log 1} \]
      10. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot 0}{\color{blue}{0}} \]
    4. Applied egg-rr0.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot 0}{0}} \]
    5. Applied egg-rr76.3%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{-1} \]
    6. Step-by-step derivation
      1. difference-of-squares80.0%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative80.0%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr100.0%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - -1 \]
  3. Recombined 3 regimes into one program.
  4. Final simplification74.4%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \leq 2.9 \cdot 10^{-98}:\\ \;\;\;\;x.re \cdot \left(x.im \cdot \left(x.re - x.im\right)\right) - x.im \cdot \left(2 \cdot \left(x.re \cdot x.im\right)\right)\\ \mathbf{elif}\;x.re \leq 1.2 \cdot 10^{+76}:\\ \;\;\;\;x.re \cdot \left(x.re \cdot \left(x.re - x.im\right)\right) - x.im \cdot \left(2 \cdot \left(x.re \cdot x.im\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - -1\\ \end{array} \]
  5. Add Preprocessing

Alternative 5: 94.3% accurate, 0.9× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ \begin{array}{l} t_0 := x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right)\\ x.re\_s \cdot \begin{array}{l} \mathbf{if}\;x.re\_m \leq 2 \cdot 10^{+75}:\\ \;\;\;\;t\_0 - x.im \cdot \left(2 \cdot \left(x.re\_m \cdot x.im\right)\right)\\ \mathbf{else}:\\ \;\;\;\;t\_0 - -1\\ \end{array} \end{array} \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (let* ((t_0 (* x.re_m (* (- x.re_m x.im) (+ x.re_m x.im)))))
   (*
    x.re_s
    (if (<= x.re_m 2e+75)
      (- t_0 (* x.im (* 2.0 (* x.re_m x.im))))
      (- t_0 -1.0)))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double t_0 = x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im));
	double tmp;
	if (x_46_re_m <= 2e+75) {
		tmp = t_0 - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	} else {
		tmp = t_0 - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    real(8) :: t_0
    real(8) :: tmp
    t_0 = x_46re_m * ((x_46re_m - x_46im) * (x_46re_m + x_46im))
    if (x_46re_m <= 2d+75) then
        tmp = t_0 - (x_46im * (2.0d0 * (x_46re_m * x_46im)))
    else
        tmp = t_0 - (-1.0d0)
    end if
    code = x_46re_s * tmp
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double t_0 = x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im));
	double tmp;
	if (x_46_re_m <= 2e+75) {
		tmp = t_0 - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	} else {
		tmp = t_0 - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	t_0 = x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))
	tmp = 0
	if x_46_re_m <= 2e+75:
		tmp = t_0 - (x_46_im * (2.0 * (x_46_re_m * x_46_im)))
	else:
		tmp = t_0 - -1.0
	return x_46_re_s * tmp
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	t_0 = Float64(x_46_re_m * Float64(Float64(x_46_re_m - x_46_im) * Float64(x_46_re_m + x_46_im)))
	tmp = 0.0
	if (x_46_re_m <= 2e+75)
		tmp = Float64(t_0 - Float64(x_46_im * Float64(2.0 * Float64(x_46_re_m * x_46_im))));
	else
		tmp = Float64(t_0 - -1.0);
	end
	return Float64(x_46_re_s * tmp)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp_2 = code(x_46_re_s, x_46_re_m, x_46_im)
	t_0 = x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im));
	tmp = 0.0;
	if (x_46_re_m <= 2e+75)
		tmp = t_0 - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	else
		tmp = t_0 - -1.0;
	end
	tmp_2 = x_46_re_s * tmp;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := Block[{t$95$0 = N[(x$46$re$95$m * N[(N[(x$46$re$95$m - x$46$im), $MachinePrecision] * N[(x$46$re$95$m + x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(x$46$re$95$s * If[LessEqual[x$46$re$95$m, 2e+75], N[(t$95$0 - N[(x$46$im * N[(2.0 * N[(x$46$re$95$m * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$0 - -1.0), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
\begin{array}{l}
t_0 := x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right)\\
x.re\_s \cdot \begin{array}{l}
\mathbf{if}\;x.re\_m \leq 2 \cdot 10^{+75}:\\
\;\;\;\;t\_0 - x.im \cdot \left(2 \cdot \left(x.re\_m \cdot x.im\right)\right)\\

\mathbf{else}:\\
\;\;\;\;t\_0 - -1\\


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

    1. Initial program 91.5%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares94.0%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative94.0%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr94.0%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Taylor expanded in x.im around inf 93.1%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)}\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Step-by-step derivation
      1. *-un-lft-identity93.1%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\color{blue}{1 \cdot \left(x.re \cdot x.im\right)} + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative93.1%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{x.re \cdot x.im}\right) \cdot x.im \]
      3. *-un-lft-identity93.1%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{1 \cdot \left(x.re \cdot x.im\right)}\right) \cdot x.im \]
      4. distribute-rgt-out93.1%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot \left(1 + 1\right)\right)} \cdot x.im \]
      5. metadata-eval93.1%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot \color{blue}{2}\right) \cdot x.im \]
    7. Applied egg-rr93.1%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot 2\right)} \cdot x.im \]
    8. Taylor expanded in x.im around 0 94.0%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im + x.re\right)}\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot 2\right) \cdot x.im \]
    9. Simplified94.0%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.re + x.im\right)}\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot 2\right) \cdot x.im \]

    if 1.99999999999999985e75 < x.re

    1. Initial program 67.2%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutative67.2%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{x.im \cdot \left(x.re \cdot x.im + x.im \cdot x.re\right)} \]
      2. *-commutative67.2%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \left(x.re \cdot x.im + \color{blue}{x.re \cdot x.im}\right) \]
      3. flip-+0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \color{blue}{\frac{\left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right) - \left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right)}{x.re \cdot x.im - x.re \cdot x.im}} \]
      4. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{0}}{x.re \cdot x.im - x.re \cdot x.im} \]
      5. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{\log 1}}{x.re \cdot x.im - x.re \cdot x.im} \]
      6. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{0}} \]
      7. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{\log 1}} \]
      8. associate-*r/0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot \log 1}{\log 1}} \]
      9. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot \color{blue}{0}}{\log 1} \]
      10. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot 0}{\color{blue}{0}} \]
    4. Applied egg-rr0.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot 0}{0}} \]
    5. Applied egg-rr76.3%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{-1} \]
    6. Step-by-step derivation
      1. difference-of-squares80.0%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative80.0%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr100.0%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - -1 \]
  3. Recombined 2 regimes into one program.
  4. Final simplification95.3%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \leq 2 \cdot 10^{+75}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - x.im \cdot \left(2 \cdot \left(x.re \cdot x.im\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - -1\\ \end{array} \]
  5. Add Preprocessing

Alternative 6: 85.8% accurate, 0.9× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ x.re\_s \cdot \begin{array}{l} \mathbf{if}\;x.re\_m \leq 8.8:\\ \;\;\;\;x.re\_m \cdot \left(x.im \cdot \left(x.re\_m - x.im\right)\right) - x.im \cdot \left(2 \cdot \left(x.re\_m \cdot x.im\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - 0.16666666666666666\\ \end{array} \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (*
  x.re_s
  (if (<= x.re_m 8.8)
    (- (* x.re_m (* x.im (- x.re_m x.im))) (* x.im (* 2.0 (* x.re_m x.im))))
    (- (* x.re_m (* (- x.re_m x.im) (+ x.re_m x.im))) 0.16666666666666666))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double tmp;
	if (x_46_re_m <= 8.8) {
		tmp = (x_46_re_m * (x_46_im * (x_46_re_m - x_46_im))) - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - 0.16666666666666666;
	}
	return x_46_re_s * tmp;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    real(8) :: tmp
    if (x_46re_m <= 8.8d0) then
        tmp = (x_46re_m * (x_46im * (x_46re_m - x_46im))) - (x_46im * (2.0d0 * (x_46re_m * x_46im)))
    else
        tmp = (x_46re_m * ((x_46re_m - x_46im) * (x_46re_m + x_46im))) - 0.16666666666666666d0
    end if
    code = x_46re_s * tmp
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double tmp;
	if (x_46_re_m <= 8.8) {
		tmp = (x_46_re_m * (x_46_im * (x_46_re_m - x_46_im))) - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - 0.16666666666666666;
	}
	return x_46_re_s * tmp;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	tmp = 0
	if x_46_re_m <= 8.8:
		tmp = (x_46_re_m * (x_46_im * (x_46_re_m - x_46_im))) - (x_46_im * (2.0 * (x_46_re_m * x_46_im)))
	else:
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - 0.16666666666666666
	return x_46_re_s * tmp
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = 0.0
	if (x_46_re_m <= 8.8)
		tmp = Float64(Float64(x_46_re_m * Float64(x_46_im * Float64(x_46_re_m - x_46_im))) - Float64(x_46_im * Float64(2.0 * Float64(x_46_re_m * x_46_im))));
	else
		tmp = Float64(Float64(x_46_re_m * Float64(Float64(x_46_re_m - x_46_im) * Float64(x_46_re_m + x_46_im))) - 0.16666666666666666);
	end
	return Float64(x_46_re_s * tmp)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp_2 = code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = 0.0;
	if (x_46_re_m <= 8.8)
		tmp = (x_46_re_m * (x_46_im * (x_46_re_m - x_46_im))) - (x_46_im * (2.0 * (x_46_re_m * x_46_im)));
	else
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - 0.16666666666666666;
	end
	tmp_2 = x_46_re_s * tmp;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := N[(x$46$re$95$s * If[LessEqual[x$46$re$95$m, 8.8], N[(N[(x$46$re$95$m * N[(x$46$im * N[(x$46$re$95$m - x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(x$46$im * N[(2.0 * N[(x$46$re$95$m * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re$95$m * N[(N[(x$46$re$95$m - x$46$im), $MachinePrecision] * N[(x$46$re$95$m + x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 0.16666666666666666), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
x.re\_s \cdot \begin{array}{l}
\mathbf{if}\;x.re\_m \leq 8.8:\\
\;\;\;\;x.re\_m \cdot \left(x.im \cdot \left(x.re\_m - x.im\right)\right) - x.im \cdot \left(2 \cdot \left(x.re\_m \cdot x.im\right)\right)\\

\mathbf{else}:\\
\;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - 0.16666666666666666\\


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

    1. Initial program 91.0%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares93.7%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative93.7%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr93.7%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Taylor expanded in x.im around inf 93.2%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{\left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)}\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Step-by-step derivation
      1. *-un-lft-identity93.2%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\color{blue}{1 \cdot \left(x.re \cdot x.im\right)} + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative93.2%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{x.re \cdot x.im}\right) \cdot x.im \]
      3. *-un-lft-identity93.2%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(1 \cdot \left(x.re \cdot x.im\right) + \color{blue}{1 \cdot \left(x.re \cdot x.im\right)}\right) \cdot x.im \]
      4. distribute-rgt-out93.2%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot \left(1 + 1\right)\right)} \cdot x.im \]
      5. metadata-eval93.2%

        \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot \color{blue}{2}\right) \cdot x.im \]
    7. Applied egg-rr93.2%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \left(x.im \cdot \left(1 + \frac{x.re}{x.im}\right)\right)\right) \cdot x.re - \color{blue}{\left(\left(x.re \cdot x.im\right) \cdot 2\right)} \cdot x.im \]
    8. Taylor expanded in x.im around inf 63.5%

      \[\leadsto \left(\left(x.re - x.im\right) \cdot \color{blue}{x.im}\right) \cdot x.re - \left(\left(x.re \cdot x.im\right) \cdot 2\right) \cdot x.im \]

    if 8.8000000000000007 < x.re

    1. Initial program 73.0%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutative73.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{x.im \cdot \left(x.re \cdot x.im + x.im \cdot x.re\right)} \]
      2. *-commutative73.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \left(x.re \cdot x.im + \color{blue}{x.re \cdot x.im}\right) \]
      3. flip-+0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \color{blue}{\frac{\left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right) - \left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right)}{x.re \cdot x.im - x.re \cdot x.im}} \]
      4. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{0}}{x.re \cdot x.im - x.re \cdot x.im} \]
      5. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{\log 1}}{x.re \cdot x.im - x.re \cdot x.im} \]
      6. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{0}} \]
      7. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{\log 1}} \]
      8. associate-*r/0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot \log 1}{\log 1}} \]
      9. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot \color{blue}{0}}{\log 1} \]
      10. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot 0}{\color{blue}{0}} \]
    4. Applied egg-rr0.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot 0}{0}} \]
    5. Applied egg-rr79.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{0.16666666666666666} \]
    6. Step-by-step derivation
      1. difference-of-squares83.5%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative83.5%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr98.4%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - 0.16666666666666666 \]
  3. Recombined 2 regimes into one program.
  4. Final simplification72.6%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \leq 8.8:\\ \;\;\;\;x.re \cdot \left(x.im \cdot \left(x.re - x.im\right)\right) - x.im \cdot \left(2 \cdot \left(x.re \cdot x.im\right)\right)\\ \mathbf{else}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - 0.16666666666666666\\ \end{array} \]
  5. Add Preprocessing

Alternative 7: 70.2% accurate, 0.9× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ x.re\_s \cdot \begin{array}{l} \mathbf{if}\;x.re\_m \leq 1.2 \cdot 10^{-23}:\\ \;\;\;\;\left(x.re\_m \cdot x.im\right) \cdot -27 - x.im \cdot \left(x.re\_m \cdot x.im + x.re\_m \cdot x.im\right)\\ \mathbf{else}:\\ \;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\ \end{array} \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (*
  x.re_s
  (if (<= x.re_m 1.2e-23)
    (- (* (* x.re_m x.im) -27.0) (* x.im (+ (* x.re_m x.im) (* x.re_m x.im))))
    (- (* x.re_m (* (- x.re_m x.im) (+ x.re_m x.im))) -1.0))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double tmp;
	if (x_46_re_m <= 1.2e-23) {
		tmp = ((x_46_re_m * x_46_im) * -27.0) - (x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im)));
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    real(8) :: tmp
    if (x_46re_m <= 1.2d-23) then
        tmp = ((x_46re_m * x_46im) * (-27.0d0)) - (x_46im * ((x_46re_m * x_46im) + (x_46re_m * x_46im)))
    else
        tmp = (x_46re_m * ((x_46re_m - x_46im) * (x_46re_m + x_46im))) - (-1.0d0)
    end if
    code = x_46re_s * tmp
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double tmp;
	if (x_46_re_m <= 1.2e-23) {
		tmp = ((x_46_re_m * x_46_im) * -27.0) - (x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im)));
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	tmp = 0
	if x_46_re_m <= 1.2e-23:
		tmp = ((x_46_re_m * x_46_im) * -27.0) - (x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im)))
	else:
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0
	return x_46_re_s * tmp
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = 0.0
	if (x_46_re_m <= 1.2e-23)
		tmp = Float64(Float64(Float64(x_46_re_m * x_46_im) * -27.0) - Float64(x_46_im * Float64(Float64(x_46_re_m * x_46_im) + Float64(x_46_re_m * x_46_im))));
	else
		tmp = Float64(Float64(x_46_re_m * Float64(Float64(x_46_re_m - x_46_im) * Float64(x_46_re_m + x_46_im))) - -1.0);
	end
	return Float64(x_46_re_s * tmp)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp_2 = code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = 0.0;
	if (x_46_re_m <= 1.2e-23)
		tmp = ((x_46_re_m * x_46_im) * -27.0) - (x_46_im * ((x_46_re_m * x_46_im) + (x_46_re_m * x_46_im)));
	else
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	end
	tmp_2 = x_46_re_s * tmp;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := N[(x$46$re$95$s * If[LessEqual[x$46$re$95$m, 1.2e-23], N[(N[(N[(x$46$re$95$m * x$46$im), $MachinePrecision] * -27.0), $MachinePrecision] - N[(x$46$im * N[(N[(x$46$re$95$m * x$46$im), $MachinePrecision] + N[(x$46$re$95$m * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re$95$m * N[(N[(x$46$re$95$m - x$46$im), $MachinePrecision] * N[(x$46$re$95$m + x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - -1.0), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
x.re\_s \cdot \begin{array}{l}
\mathbf{if}\;x.re\_m \leq 1.2 \cdot 10^{-23}:\\
\;\;\;\;\left(x.re\_m \cdot x.im\right) \cdot -27 - x.im \cdot \left(x.re\_m \cdot x.im + x.re\_m \cdot x.im\right)\\

\mathbf{else}:\\
\;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if x.re < 1.19999999999999998e-23

    1. Initial program 90.8%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares93.5%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr93.5%

      \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Simplified46.5%

      \[\leadsto \color{blue}{\left(\left(x.im + x.re\right) \cdot \left(x.re + -27\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Taylor expanded in x.re around 0 32.6%

      \[\leadsto \color{blue}{-27 \cdot \left(x.im \cdot x.re\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Step-by-step derivation
      1. *-commutative32.6%

        \[\leadsto \color{blue}{\left(x.im \cdot x.re\right) \cdot -27} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    8. Simplified32.6%

      \[\leadsto \color{blue}{\left(x.im \cdot x.re\right) \cdot -27} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]

    if 1.19999999999999998e-23 < x.re

    1. Initial program 74.6%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutative74.6%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{x.im \cdot \left(x.re \cdot x.im + x.im \cdot x.re\right)} \]
      2. *-commutative74.6%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \left(x.re \cdot x.im + \color{blue}{x.re \cdot x.im}\right) \]
      3. flip-+0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \color{blue}{\frac{\left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right) - \left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right)}{x.re \cdot x.im - x.re \cdot x.im}} \]
      4. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{0}}{x.re \cdot x.im - x.re \cdot x.im} \]
      5. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{\log 1}}{x.re \cdot x.im - x.re \cdot x.im} \]
      6. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{0}} \]
      7. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{\log 1}} \]
      8. associate-*r/0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot \log 1}{\log 1}} \]
      9. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot \color{blue}{0}}{\log 1} \]
      10. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot 0}{\color{blue}{0}} \]
    4. Applied egg-rr0.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot 0}{0}} \]
    5. Applied egg-rr76.3%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{-1} \]
    6. Step-by-step derivation
      1. difference-of-squares84.4%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative84.4%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr94.6%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - -1 \]
  3. Recombined 2 regimes into one program.
  4. Final simplification49.8%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \leq 1.2 \cdot 10^{-23}:\\ \;\;\;\;\left(x.re \cdot x.im\right) \cdot -27 - x.im \cdot \left(x.re \cdot x.im + x.re \cdot x.im\right)\\ \mathbf{else}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - -1\\ \end{array} \]
  5. Add Preprocessing

Alternative 8: 70.2% accurate, 1.2× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ x.re\_s \cdot \begin{array}{l} \mathbf{if}\;x.re\_m \leq 1.25 \cdot 10^{-23}:\\ \;\;\;\;x.im \cdot \left(x.re\_m \cdot -27 + \left(x.re\_m \cdot x.im\right) \cdot -2\right)\\ \mathbf{else}:\\ \;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\ \end{array} \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (*
  x.re_s
  (if (<= x.re_m 1.25e-23)
    (* x.im (+ (* x.re_m -27.0) (* (* x.re_m x.im) -2.0)))
    (- (* x.re_m (* (- x.re_m x.im) (+ x.re_m x.im))) -1.0))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double tmp;
	if (x_46_re_m <= 1.25e-23) {
		tmp = x_46_im * ((x_46_re_m * -27.0) + ((x_46_re_m * x_46_im) * -2.0));
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    real(8) :: tmp
    if (x_46re_m <= 1.25d-23) then
        tmp = x_46im * ((x_46re_m * (-27.0d0)) + ((x_46re_m * x_46im) * (-2.0d0)))
    else
        tmp = (x_46re_m * ((x_46re_m - x_46im) * (x_46re_m + x_46im))) - (-1.0d0)
    end if
    code = x_46re_s * tmp
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	double tmp;
	if (x_46_re_m <= 1.25e-23) {
		tmp = x_46_im * ((x_46_re_m * -27.0) + ((x_46_re_m * x_46_im) * -2.0));
	} else {
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	}
	return x_46_re_s * tmp;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	tmp = 0
	if x_46_re_m <= 1.25e-23:
		tmp = x_46_im * ((x_46_re_m * -27.0) + ((x_46_re_m * x_46_im) * -2.0))
	else:
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0
	return x_46_re_s * tmp
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = 0.0
	if (x_46_re_m <= 1.25e-23)
		tmp = Float64(x_46_im * Float64(Float64(x_46_re_m * -27.0) + Float64(Float64(x_46_re_m * x_46_im) * -2.0)));
	else
		tmp = Float64(Float64(x_46_re_m * Float64(Float64(x_46_re_m - x_46_im) * Float64(x_46_re_m + x_46_im))) - -1.0);
	end
	return Float64(x_46_re_s * tmp)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp_2 = code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = 0.0;
	if (x_46_re_m <= 1.25e-23)
		tmp = x_46_im * ((x_46_re_m * -27.0) + ((x_46_re_m * x_46_im) * -2.0));
	else
		tmp = (x_46_re_m * ((x_46_re_m - x_46_im) * (x_46_re_m + x_46_im))) - -1.0;
	end
	tmp_2 = x_46_re_s * tmp;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := N[(x$46$re$95$s * If[LessEqual[x$46$re$95$m, 1.25e-23], N[(x$46$im * N[(N[(x$46$re$95$m * -27.0), $MachinePrecision] + N[(N[(x$46$re$95$m * x$46$im), $MachinePrecision] * -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(x$46$re$95$m * N[(N[(x$46$re$95$m - x$46$im), $MachinePrecision] * N[(x$46$re$95$m + x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - -1.0), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
x.re\_s \cdot \begin{array}{l}
\mathbf{if}\;x.re\_m \leq 1.25 \cdot 10^{-23}:\\
\;\;\;\;x.im \cdot \left(x.re\_m \cdot -27 + \left(x.re\_m \cdot x.im\right) \cdot -2\right)\\

\mathbf{else}:\\
\;\;\;\;x.re\_m \cdot \left(\left(x.re\_m - x.im\right) \cdot \left(x.re\_m + x.im\right)\right) - -1\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if x.re < 1.2500000000000001e-23

    1. Initial program 90.8%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. difference-of-squares93.5%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. Applied egg-rr93.5%

      \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. Simplified46.5%

      \[\leadsto \color{blue}{\left(\left(x.im + x.re\right) \cdot \left(x.re + -27\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. Taylor expanded in x.re around 0 32.6%

      \[\leadsto \color{blue}{\left(-27 \cdot x.im\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Step-by-step derivation
      1. *-commutative32.6%

        \[\leadsto \color{blue}{\left(x.im \cdot -27\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    8. Simplified32.6%

      \[\leadsto \color{blue}{\left(x.im \cdot -27\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    9. Taylor expanded in x.im around 0 35.9%

      \[\leadsto \color{blue}{x.im \cdot \left(-27 \cdot x.re + -2 \cdot \left(x.im \cdot x.re\right)\right)} \]

    if 1.2500000000000001e-23 < x.re

    1. Initial program 74.6%

      \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. *-commutative74.6%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{x.im \cdot \left(x.re \cdot x.im + x.im \cdot x.re\right)} \]
      2. *-commutative74.6%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \left(x.re \cdot x.im + \color{blue}{x.re \cdot x.im}\right) \]
      3. flip-+0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \color{blue}{\frac{\left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right) - \left(x.re \cdot x.im\right) \cdot \left(x.re \cdot x.im\right)}{x.re \cdot x.im - x.re \cdot x.im}} \]
      4. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{0}}{x.re \cdot x.im - x.re \cdot x.im} \]
      5. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\color{blue}{\log 1}}{x.re \cdot x.im - x.re \cdot x.im} \]
      6. +-inverses0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{0}} \]
      7. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - x.im \cdot \frac{\log 1}{\color{blue}{\log 1}} \]
      8. associate-*r/0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot \log 1}{\log 1}} \]
      9. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot \color{blue}{0}}{\log 1} \]
      10. metadata-eval0.0%

        \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \frac{x.im \cdot 0}{\color{blue}{0}} \]
    4. Applied egg-rr0.0%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{\frac{x.im \cdot 0}{0}} \]
    5. Applied egg-rr76.3%

      \[\leadsto \left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \color{blue}{-1} \]
    6. Step-by-step derivation
      1. difference-of-squares84.4%

        \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
      2. *-commutative84.4%

        \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. Applied egg-rr94.6%

      \[\leadsto \color{blue}{\left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right)} \cdot x.re - -1 \]
  3. Recombined 2 regimes into one program.
  4. Final simplification52.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;x.re \leq 1.25 \cdot 10^{-23}:\\ \;\;\;\;x.im \cdot \left(x.re \cdot -27 + \left(x.re \cdot x.im\right) \cdot -2\right)\\ \mathbf{else}:\\ \;\;\;\;x.re \cdot \left(\left(x.re - x.im\right) \cdot \left(x.re + x.im\right)\right) - -1\\ \end{array} \]
  5. Add Preprocessing

Alternative 9: 33.9% accurate, 1.7× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ x.re\_s \cdot \left(x.im \cdot \left(x.re\_m \cdot -27 + \left(x.re\_m \cdot x.im\right) \cdot -2\right)\right) \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (* x.re_s (* x.im (+ (* x.re_m -27.0) (* (* x.re_m x.im) -2.0)))))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	return x_46_re_s * (x_46_im * ((x_46_re_m * -27.0) + ((x_46_re_m * x_46_im) * -2.0)));
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    code = x_46re_s * (x_46im * ((x_46re_m * (-27.0d0)) + ((x_46re_m * x_46im) * (-2.0d0))))
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	return x_46_re_s * (x_46_im * ((x_46_re_m * -27.0) + ((x_46_re_m * x_46_im) * -2.0)));
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	return x_46_re_s * (x_46_im * ((x_46_re_m * -27.0) + ((x_46_re_m * x_46_im) * -2.0)))
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	return Float64(x_46_re_s * Float64(x_46_im * Float64(Float64(x_46_re_m * -27.0) + Float64(Float64(x_46_re_m * x_46_im) * -2.0))))
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp = code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = x_46_re_s * (x_46_im * ((x_46_re_m * -27.0) + ((x_46_re_m * x_46_im) * -2.0)));
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := N[(x$46$re$95$s * N[(x$46$im * N[(N[(x$46$re$95$m * -27.0), $MachinePrecision] + N[(N[(x$46$re$95$m * x$46$im), $MachinePrecision] * -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
x.re\_s \cdot \left(x.im \cdot \left(x.re\_m \cdot -27 + \left(x.re\_m \cdot x.im\right) \cdot -2\right)\right)
\end{array}
Derivation
  1. Initial program 86.3%

    \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. difference-of-squares91.0%

      \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  4. Applied egg-rr91.0%

    \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  5. Simplified51.7%

    \[\leadsto \color{blue}{\left(\left(x.im + x.re\right) \cdot \left(x.re + -27\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  6. Taylor expanded in x.re around 0 28.7%

    \[\leadsto \color{blue}{\left(-27 \cdot x.im\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  7. Step-by-step derivation
    1. *-commutative28.7%

      \[\leadsto \color{blue}{\left(x.im \cdot -27\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  8. Simplified28.7%

    \[\leadsto \color{blue}{\left(x.im \cdot -27\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  9. Taylor expanded in x.im around 0 34.9%

    \[\leadsto \color{blue}{x.im \cdot \left(-27 \cdot x.re + -2 \cdot \left(x.im \cdot x.re\right)\right)} \]
  10. Final simplification34.9%

    \[\leadsto x.im \cdot \left(x.re \cdot -27 + \left(x.re \cdot x.im\right) \cdot -2\right) \]
  11. Add Preprocessing

Alternative 10: 2.7% accurate, 19.0× speedup?

\[\begin{array}{l} x.re\_m = \left|x.re\right| \\ x.re\_s = \mathsf{copysign}\left(1, x.re\right) \\ x.re\_s \cdot 0.03571428571428571 \end{array} \]
x.re\_m = (fabs.f64 x.re)
x.re\_s = (copysign.f64 #s(literal 1 binary64) x.re)
(FPCore (x.re_s x.re_m x.im)
 :precision binary64
 (* x.re_s 0.03571428571428571))
x.re\_m = fabs(x_46_re);
x.re\_s = copysign(1.0, x_46_re);
double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	return x_46_re_s * 0.03571428571428571;
}
x.re\_m = abs(x_46re)
x.re\_s = copysign(1.0d0, x_46re)
real(8) function code(x_46re_s, x_46re_m, x_46im)
    real(8), intent (in) :: x_46re_s
    real(8), intent (in) :: x_46re_m
    real(8), intent (in) :: x_46im
    code = x_46re_s * 0.03571428571428571d0
end function
x.re\_m = Math.abs(x_46_re);
x.re\_s = Math.copySign(1.0, x_46_re);
public static double code(double x_46_re_s, double x_46_re_m, double x_46_im) {
	return x_46_re_s * 0.03571428571428571;
}
x.re\_m = math.fabs(x_46_re)
x.re\_s = math.copysign(1.0, x_46_re)
def code(x_46_re_s, x_46_re_m, x_46_im):
	return x_46_re_s * 0.03571428571428571
x.re\_m = abs(x_46_re)
x.re\_s = copysign(1.0, x_46_re)
function code(x_46_re_s, x_46_re_m, x_46_im)
	return Float64(x_46_re_s * 0.03571428571428571)
end
x.re\_m = abs(x_46_re);
x.re\_s = sign(x_46_re) * abs(1.0);
function tmp = code(x_46_re_s, x_46_re_m, x_46_im)
	tmp = x_46_re_s * 0.03571428571428571;
end
x.re\_m = N[Abs[x$46$re], $MachinePrecision]
x.re\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[x$46$re]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[x$46$re$95$s_, x$46$re$95$m_, x$46$im_] := N[(x$46$re$95$s * 0.03571428571428571), $MachinePrecision]
\begin{array}{l}
x.re\_m = \left|x.re\right|
\\
x.re\_s = \mathsf{copysign}\left(1, x.re\right)

\\
x.re\_s \cdot 0.03571428571428571
\end{array}
Derivation
  1. Initial program 86.3%

    \[\left(x.re \cdot x.re - x.im \cdot x.im\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. difference-of-squares91.0%

      \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  4. Applied egg-rr91.0%

    \[\leadsto \color{blue}{\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  5. Simplified51.7%

    \[\leadsto \color{blue}{\left(\left(x.im + x.re\right) \cdot \left(x.re + -27\right)\right)} \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  6. Applied egg-rr22.0%

    \[\leadsto \color{blue}{\frac{x.re - \left(x.re \cdot -27\right) \cdot \left(x.re \cdot -27\right)}{x.re - x.re \cdot -27}} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  7. Step-by-step derivation
    1. *-commutative22.0%

      \[\leadsto \frac{x.re - \left(x.re \cdot -27\right) \cdot \left(x.re \cdot -27\right)}{x.re - \color{blue}{-27 \cdot x.re}} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    2. div-sub22.0%

      \[\leadsto \color{blue}{\left(\frac{x.re}{x.re - -27 \cdot x.re} - \frac{\left(x.re \cdot -27\right) \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    3. associate-*l*22.0%

      \[\leadsto \left(\frac{x.re}{x.re - -27 \cdot x.re} - \frac{\color{blue}{x.re \cdot \left(-27 \cdot \left(x.re \cdot -27\right)\right)}}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    4. associate-/l*22.0%

      \[\leadsto \left(\frac{x.re}{x.re - -27 \cdot x.re} - \color{blue}{x.re \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    5. cancel-sign-sub-inv22.0%

      \[\leadsto \color{blue}{\left(\frac{x.re}{x.re - -27 \cdot x.re} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    6. *-lft-identity22.0%

      \[\leadsto \left(\frac{\color{blue}{1 \cdot x.re}}{x.re - -27 \cdot x.re} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    7. cancel-sign-sub-inv22.0%

      \[\leadsto \left(\frac{1 \cdot x.re}{\color{blue}{x.re + \left(--27\right) \cdot x.re}} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    8. metadata-eval22.0%

      \[\leadsto \left(\frac{1 \cdot x.re}{x.re + \color{blue}{27} \cdot x.re} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    9. distribute-rgt1-in22.0%

      \[\leadsto \left(\frac{1 \cdot x.re}{\color{blue}{\left(27 + 1\right) \cdot x.re}} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    10. times-frac22.0%

      \[\leadsto \left(\color{blue}{\frac{1}{27 + 1} \cdot \frac{x.re}{x.re}} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    11. metadata-eval22.0%

      \[\leadsto \left(\frac{1}{\color{blue}{28}} \cdot \frac{x.re}{x.re} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    12. metadata-eval22.0%

      \[\leadsto \left(\color{blue}{0.03571428571428571} \cdot \frac{x.re}{x.re} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    13. *-inverses22.0%

      \[\leadsto \left(0.03571428571428571 \cdot \color{blue}{1} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    14. metadata-eval22.0%

      \[\leadsto \left(\color{blue}{0.03571428571428571} + \left(-x.re\right) \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    15. distribute-lft-neg-in22.0%

      \[\leadsto \left(0.03571428571428571 + \color{blue}{\left(-x.re \cdot \frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right)}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
    16. distribute-rgt-neg-in22.0%

      \[\leadsto \left(0.03571428571428571 + \color{blue}{x.re \cdot \left(-\frac{-27 \cdot \left(x.re \cdot -27\right)}{x.re - -27 \cdot x.re}\right)}\right) - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  8. Simplified22.0%

    \[\leadsto \color{blue}{\left(0.03571428571428571 + x.re \cdot -26.035714285714285\right)} - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im \]
  9. Taylor expanded in x.re around 0 2.7%

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

Developer Target 1: 87.0% accurate, 1.1× speedup?

\[\begin{array}{l} \\ \left(x.re \cdot x.re\right) \cdot \left(x.re - x.im\right) + \left(x.re \cdot x.im\right) \cdot \left(x.re - 3 \cdot x.im\right) \end{array} \]
(FPCore (x.re x.im)
 :precision binary64
 (+ (* (* x.re x.re) (- x.re x.im)) (* (* x.re x.im) (- x.re (* 3.0 x.im)))))
double code(double x_46_re, double x_46_im) {
	return ((x_46_re * x_46_re) * (x_46_re - x_46_im)) + ((x_46_re * x_46_im) * (x_46_re - (3.0 * x_46_im)));
}
real(8) function code(x_46re, x_46im)
    real(8), intent (in) :: x_46re
    real(8), intent (in) :: x_46im
    code = ((x_46re * x_46re) * (x_46re - x_46im)) + ((x_46re * x_46im) * (x_46re - (3.0d0 * x_46im)))
end function
public static double code(double x_46_re, double x_46_im) {
	return ((x_46_re * x_46_re) * (x_46_re - x_46_im)) + ((x_46_re * x_46_im) * (x_46_re - (3.0 * x_46_im)));
}
def code(x_46_re, x_46_im):
	return ((x_46_re * x_46_re) * (x_46_re - x_46_im)) + ((x_46_re * x_46_im) * (x_46_re - (3.0 * x_46_im)))
function code(x_46_re, x_46_im)
	return Float64(Float64(Float64(x_46_re * x_46_re) * Float64(x_46_re - x_46_im)) + Float64(Float64(x_46_re * x_46_im) * Float64(x_46_re - Float64(3.0 * x_46_im))))
end
function tmp = code(x_46_re, x_46_im)
	tmp = ((x_46_re * x_46_re) * (x_46_re - x_46_im)) + ((x_46_re * x_46_im) * (x_46_re - (3.0 * x_46_im)));
end
code[x$46$re_, x$46$im_] := N[(N[(N[(x$46$re * x$46$re), $MachinePrecision] * N[(x$46$re - x$46$im), $MachinePrecision]), $MachinePrecision] + N[(N[(x$46$re * x$46$im), $MachinePrecision] * N[(x$46$re - N[(3.0 * x$46$im), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(x.re \cdot x.re\right) \cdot \left(x.re - x.im\right) + \left(x.re \cdot x.im\right) \cdot \left(x.re - 3 \cdot x.im\right)
\end{array}

Reproduce

?
herbie shell --seed 2024157 
(FPCore (x.re x.im)
  :name "math.cube on complex, real part"
  :precision binary64

  :alt
  (! :herbie-platform default (+ (* (* x.re x.re) (- x.re x.im)) (* (* x.re x.im) (- x.re (* 3 x.im)))))

  (- (* (- (* x.re x.re) (* x.im x.im)) x.re) (* (+ (* x.re x.im) (* x.im x.re)) x.im)))