Average Error: 37.4 → 26.0
Time: 15.5s
Precision: 64
\[\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.147883741290531569007013017752845121651 \cdot 10^{60}:\\ \;\;\;\;\left(\sqrt{\sqrt{0.3333333333333333148296162562473909929395}} \cdot x\right) \cdot \left(-\sqrt{\sqrt{0.3333333333333333148296162562473909929395}}\right)\\ \mathbf{elif}\;x \le 3.863641896649309161054351757570478853539 \cdot 10^{84}:\\ \;\;\;\;\sqrt{z \cdot z + \left({y}^{2} + x \cdot x\right)} \cdot \sqrt{\frac{1}{3}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{0.3333333333333333148296162562473909929395} \cdot x\\ \end{array}\]
\sqrt{\frac{\left(x \cdot x + y \cdot y\right) + z \cdot z}{3}}
\begin{array}{l}
\mathbf{if}\;x \le -1.147883741290531569007013017752845121651 \cdot 10^{60}:\\
\;\;\;\;\left(\sqrt{\sqrt{0.3333333333333333148296162562473909929395}} \cdot x\right) \cdot \left(-\sqrt{\sqrt{0.3333333333333333148296162562473909929395}}\right)\\

\mathbf{elif}\;x \le 3.863641896649309161054351757570478853539 \cdot 10^{84}:\\
\;\;\;\;\sqrt{z \cdot z + \left({y}^{2} + x \cdot x\right)} \cdot \sqrt{\frac{1}{3}}\\

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

\end{array}
double f(double x, double y, double z) {
        double r596958 = x;
        double r596959 = r596958 * r596958;
        double r596960 = y;
        double r596961 = r596960 * r596960;
        double r596962 = r596959 + r596961;
        double r596963 = z;
        double r596964 = r596963 * r596963;
        double r596965 = r596962 + r596964;
        double r596966 = 3.0;
        double r596967 = r596965 / r596966;
        double r596968 = sqrt(r596967);
        return r596968;
}

double f(double x, double y, double z) {
        double r596969 = x;
        double r596970 = -1.1478837412905316e+60;
        bool r596971 = r596969 <= r596970;
        double r596972 = 0.3333333333333333;
        double r596973 = sqrt(r596972);
        double r596974 = sqrt(r596973);
        double r596975 = r596974 * r596969;
        double r596976 = -r596974;
        double r596977 = r596975 * r596976;
        double r596978 = 3.863641896649309e+84;
        bool r596979 = r596969 <= r596978;
        double r596980 = z;
        double r596981 = r596980 * r596980;
        double r596982 = y;
        double r596983 = 2.0;
        double r596984 = pow(r596982, r596983);
        double r596985 = r596969 * r596969;
        double r596986 = r596984 + r596985;
        double r596987 = r596981 + r596986;
        double r596988 = sqrt(r596987);
        double r596989 = 1.0;
        double r596990 = 3.0;
        double r596991 = r596989 / r596990;
        double r596992 = sqrt(r596991);
        double r596993 = r596988 * r596992;
        double r596994 = r596973 * r596969;
        double r596995 = r596979 ? r596993 : r596994;
        double r596996 = r596971 ? r596977 : r596995;
        return r596996;
}

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

Original37.4
Target25.4
Herbie26.0
\[\begin{array}{l} \mathbf{if}\;z \lt -6.396479394109775845820908799933348003545 \cdot 10^{136}:\\ \;\;\;\;\frac{-z}{\sqrt{3}}\\ \mathbf{elif}\;z \lt 7.320293694404182125923160810847974073098 \cdot 10^{117}:\\ \;\;\;\;\frac{\sqrt{\left(z \cdot z + x \cdot x\right) + y \cdot y}}{\sqrt{3}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{0.3333333333333333148296162562473909929395} \cdot z\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if x < -1.1478837412905316e+60

    1. Initial program 48.9

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

      \[\leadsto \color{blue}{-1 \cdot \left(x \cdot \sqrt{0.3333333333333333148296162562473909929395}\right)}\]
    3. Simplified21.9

      \[\leadsto \color{blue}{\sqrt{0.3333333333333333148296162562473909929395} \cdot \left(-x\right)}\]
    4. Using strategy rm
    5. Applied add-sqr-sqrt21.9

      \[\leadsto \sqrt{\color{blue}{\sqrt{0.3333333333333333148296162562473909929395} \cdot \sqrt{0.3333333333333333148296162562473909929395}}} \cdot \left(-x\right)\]
    6. Applied sqrt-prod21.9

      \[\leadsto \color{blue}{\left(\sqrt{\sqrt{0.3333333333333333148296162562473909929395}} \cdot \sqrt{\sqrt{0.3333333333333333148296162562473909929395}}\right)} \cdot \left(-x\right)\]
    7. Applied associate-*l*21.9

      \[\leadsto \color{blue}{\sqrt{\sqrt{0.3333333333333333148296162562473909929395}} \cdot \left(\sqrt{\sqrt{0.3333333333333333148296162562473909929395}} \cdot \left(-x\right)\right)}\]
    8. Simplified21.9

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

    if -1.1478837412905316e+60 < x < 3.863641896649309e+84

    1. Initial program 29.1

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

      \[\leadsto \sqrt{\color{blue}{\left(\left(x \cdot x + y \cdot y\right) + z \cdot z\right) \cdot \frac{1}{3}}}\]
    4. Applied sqrt-prod29.2

      \[\leadsto \color{blue}{\sqrt{\left(x \cdot x + y \cdot y\right) + z \cdot z} \cdot \sqrt{\frac{1}{3}}}\]
    5. Simplified29.2

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

    if 3.863641896649309e+84 < x

    1. Initial program 53.2

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

      \[\leadsto \color{blue}{x \cdot \sqrt{0.3333333333333333148296162562473909929395}}\]
    3. Simplified19.8

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.147883741290531569007013017752845121651 \cdot 10^{60}:\\ \;\;\;\;\left(\sqrt{\sqrt{0.3333333333333333148296162562473909929395}} \cdot x\right) \cdot \left(-\sqrt{\sqrt{0.3333333333333333148296162562473909929395}}\right)\\ \mathbf{elif}\;x \le 3.863641896649309161054351757570478853539 \cdot 10^{84}:\\ \;\;\;\;\sqrt{z \cdot z + \left({y}^{2} + x \cdot x\right)} \cdot \sqrt{\frac{1}{3}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{0.3333333333333333148296162562473909929395} \cdot x\\ \end{array}\]

Reproduce

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

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

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