\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;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 38.3 |
|---|---|
| Target | 25.7 |
| Herbie | 27.4 |
if x < -3.4794970398246474e+55Initial program 49.4
Taylor expanded around -inf 21.7
if -3.4794970398246474e+55 < x < 4.545831989981156e+65Initial program 30.0
Taylor expanded around 0 30.1
Simplified30.1
if 4.545831989981156e+65 < x < 1.597460999541732e+121Initial program 29.4
rmApplied sqrt-div29.5
Taylor expanded around 0 54.5
if 1.597460999541732e+121 < x Initial program 58.5
Taylor expanded around inf 16.9
Final simplification27.4
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)))