Average Error: 38.3 → 27.4
Time: 3.8s
Precision: 64
\[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
\[\begin{array}{l} \mathbf{if}\;x \le -3.4794970398246474 \cdot 10^{55}:\\ \;\;\;\;-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)\\ \mathbf{elif}\;x \le 4.54583198998115572 \cdot 10^{65}:\\ \;\;\;\;\sqrt{0.333333333333333315 \cdot \left({x}^{2} + \left({y}^{2} + {z}^{2}\right)\right)}\\ \mathbf{elif}\;x \le 1.59746099954173198 \cdot 10^{121}:\\ \;\;\;\;\frac{z}{\sqrt{3}}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \sqrt{0.333333333333333315}\\ \end{array}\]
\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}
\begin{array}{l}
\mathbf{if}\;x \le -3.4794970398246474 \cdot 10^{55}:\\
\;\;\;\;-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)\\

\mathbf{elif}\;x \le 4.54583198998115572 \cdot 10^{65}:\\
\;\;\;\;\sqrt{0.333333333333333315 \cdot \left({x}^{2} + \left({y}^{2} + {z}^{2}\right)\right)}\\

\mathbf{elif}\;x \le 1.59746099954173198 \cdot 10^{121}:\\
\;\;\;\;\frac{z}{\sqrt{3}}\\

\mathbf{else}:\\
\;\;\;\;x \cdot \sqrt{0.333333333333333315}\\

\end{array}
double f(double x, double y, double z) {
        double r893370 = x;
        double r893371 = r893370 * r893370;
        double r893372 = y;
        double r893373 = r893372 * r893372;
        double r893374 = r893371 + r893373;
        double r893375 = z;
        double r893376 = r893375 * r893375;
        double r893377 = r893374 + r893376;
        double r893378 = 3.0;
        double r893379 = r893377 / r893378;
        double r893380 = sqrt(r893379);
        return r893380;
}

double f(double x, double y, double z) {
        double r893381 = x;
        double r893382 = -3.4794970398246474e+55;
        bool r893383 = r893381 <= r893382;
        double r893384 = -1.0;
        double r893385 = 0.3333333333333333;
        double r893386 = sqrt(r893385);
        double r893387 = r893381 * r893386;
        double r893388 = r893384 * r893387;
        double r893389 = 4.545831989981156e+65;
        bool r893390 = r893381 <= r893389;
        double r893391 = 2.0;
        double r893392 = pow(r893381, r893391);
        double r893393 = y;
        double r893394 = pow(r893393, r893391);
        double r893395 = z;
        double r893396 = pow(r893395, r893391);
        double r893397 = r893394 + r893396;
        double r893398 = r893392 + r893397;
        double r893399 = r893385 * r893398;
        double r893400 = sqrt(r893399);
        double r893401 = 1.597460999541732e+121;
        bool r893402 = r893381 <= r893401;
        double r893403 = 3.0;
        double r893404 = sqrt(r893403);
        double r893405 = r893395 / r893404;
        double r893406 = r893402 ? r893405 : r893387;
        double r893407 = r893390 ? r893400 : r893406;
        double r893408 = r893383 ? r893388 : r893407;
        return r893408;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original38.3
Target25.7
Herbie27.4
\[\begin{array}{l} \mathbf{if}\;z \lt -6.3964793941097758 \cdot 10^{136}:\\ \;\;\;\;\frac{-z}{\sqrt{3}}\\ \mathbf{elif}\;z \lt 7.3202936944041821 \cdot 10^{117}:\\ \;\;\;\;\frac{\sqrt{\left(z \cdot z + x \cdot x\right) + y \cdot y}}{\sqrt{3}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{0.333333333333333315} \cdot z\\ \end{array}\]

Derivation

  1. Split input into 4 regimes
  2. if x < -3.4794970398246474e+55

    1. Initial program 49.4

      \[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
    2. Taylor expanded around -inf 21.7

      \[\leadsto \color{blue}{-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)}\]

    if -3.4794970398246474e+55 < x < 4.545831989981156e+65

    1. Initial program 30.0

      \[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
    2. Taylor expanded around 0 30.1

      \[\leadsto \sqrt{\color{blue}{0.333333333333333315 \cdot {x}^{2} + \left(0.333333333333333315 \cdot {y}^{2} + 0.333333333333333315 \cdot {z}^{2}\right)}}\]
    3. Simplified30.1

      \[\leadsto \sqrt{\color{blue}{0.333333333333333315 \cdot \left({x}^{2} + \left({y}^{2} + {z}^{2}\right)\right)}}\]

    if 4.545831989981156e+65 < x < 1.597460999541732e+121

    1. Initial program 29.4

      \[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
    2. Using strategy rm
    3. Applied sqrt-div29.5

      \[\leadsto \color{blue}{\frac{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z}}{\sqrt{3}}}\]
    4. Taylor expanded around 0 54.5

      \[\leadsto \frac{\color{blue}{z}}{\sqrt{3}}\]

    if 1.597460999541732e+121 < x

    1. Initial program 58.5

      \[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
    2. Taylor expanded around inf 16.9

      \[\leadsto \color{blue}{x \cdot \sqrt{0.333333333333333315}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification27.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -3.4794970398246474 \cdot 10^{55}:\\ \;\;\;\;-1 \cdot \left(x \cdot \sqrt{0.333333333333333315}\right)\\ \mathbf{elif}\;x \le 4.54583198998115572 \cdot 10^{65}:\\ \;\;\;\;\sqrt{0.333333333333333315 \cdot \left({x}^{2} + \left({y}^{2} + {z}^{2}\right)\right)}\\ \mathbf{elif}\;x \le 1.59746099954173198 \cdot 10^{121}:\\ \;\;\;\;\frac{z}{\sqrt{3}}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \sqrt{0.333333333333333315}\\ \end{array}\]

Reproduce

herbie shell --seed 2020036 
(FPCore (x y z)
  :name "Data.Array.Repa.Algorithms.Pixel:doubleRmsOfRGB8 from repa-algorithms-3.4.0.1"
  :precision binary64

  :herbie-target
  (if (< z -6.396479394109776e+136) (/ (- z) (sqrt 3)) (if (< z 7.320293694404182e+117) (/ (sqrt (+ (+ (* z z) (* x x)) (* y y))) (sqrt 3)) (* (sqrt 0.3333333333333333) z)))

  (sqrt (/ (+ (+ (* x x) (* y y)) (* z z)) 3)))