Average Error: 31.4 → 17.2
Time: 3.6s
Precision: 64
$\sqrt{x \cdot x + y \cdot y}$
$\begin{array}{l} \mathbf{if}\;x \le -3.303209947657204342880384766533788360025 \cdot 10^{84}:\\ \;\;\;\;-x\\ \mathbf{elif}\;x \le 1.943934747643531875760607600817076209382 \cdot 10^{128}:\\ \;\;\;\;\sqrt{x \cdot x + y \cdot y}\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array}$
\sqrt{x \cdot x + y \cdot y}
\begin{array}{l}
\mathbf{if}\;x \le -3.303209947657204342880384766533788360025 \cdot 10^{84}:\\
\;\;\;\;-x\\

\mathbf{elif}\;x \le 1.943934747643531875760607600817076209382 \cdot 10^{128}:\\
\;\;\;\;\sqrt{x \cdot x + y \cdot y}\\

\mathbf{else}:\\
\;\;\;\;x\\

\end{array}
double f(double x, double y) {
double r1125804 = x;
double r1125805 = r1125804 * r1125804;
double r1125806 = y;
double r1125807 = r1125806 * r1125806;
double r1125808 = r1125805 + r1125807;
double r1125809 = sqrt(r1125808);
return r1125809;
}


double f(double x, double y) {
double r1125810 = x;
double r1125811 = -3.3032099476572043e+84;
bool r1125812 = r1125810 <= r1125811;
double r1125813 = -r1125810;
double r1125814 = 1.943934747643532e+128;
bool r1125815 = r1125810 <= r1125814;
double r1125816 = r1125810 * r1125810;
double r1125817 = y;
double r1125818 = r1125817 * r1125817;
double r1125819 = r1125816 + r1125818;
double r1125820 = sqrt(r1125819);
double r1125821 = r1125815 ? r1125820 : r1125810;
double r1125822 = r1125812 ? r1125813 : r1125821;
return r1125822;
}



# Try it out

Results

 In Out
Enter valid numbers for all inputs

# Derivation

1. Split input into 3 regimes
2. ## if x < -3.3032099476572043e+84

1. Initial program 48.4

$\sqrt{x \cdot x + y \cdot y}$
2. Taylor expanded around -inf 10.3

$\leadsto \color{blue}{-1 \cdot x}$
3. Simplified10.3

$\leadsto \color{blue}{-x}$

## if -3.3032099476572043e+84 < x < 1.943934747643532e+128

1. Initial program 21.1

$\sqrt{x \cdot x + y \cdot y}$

## if 1.943934747643532e+128 < x

1. Initial program 57.0

$\sqrt{x \cdot x + y \cdot y}$
2. Taylor expanded around inf 8.2

$\leadsto \color{blue}{x}$
3. Recombined 3 regimes into one program.
4. Final simplification17.2

$\leadsto \begin{array}{l} \mathbf{if}\;x \le -3.303209947657204342880384766533788360025 \cdot 10^{84}:\\ \;\;\;\;-x\\ \mathbf{elif}\;x \le 1.943934747643531875760607600817076209382 \cdot 10^{128}:\\ \;\;\;\;\sqrt{x \cdot x + y \cdot y}\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array}$

# Reproduce

herbie shell --seed 1
(FPCore (x y)
:name "sqrt(x*x+y*y)"
:precision binary64
(sqrt (+ (* x x) (* y y))))