Average Error: 33.2 → 4.1
Time: 5.7s
Precision: 64
\[\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\]
\[\begin{array}{l} \mathbf{if}\;t \le -6.71917774278507242 \cdot 10^{-161}:\\ \;\;\;\;\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{1}{y} \cdot \frac{x}{\frac{y}{x}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{\left|x\right|}{y \cdot \frac{y}{\left|x\right|}}\right)\\ \end{array}\]
\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}
\begin{array}{l}
\mathbf{if}\;t \le -6.71917774278507242 \cdot 10^{-161}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{1}{y} \cdot \frac{x}{\frac{y}{x}}\right)\\

\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{\left|x\right|}{y \cdot \frac{y}{\left|x\right|}}\right)\\

\end{array}
double code(double x, double y, double z, double t) {
	return ((double) (((double) (((double) (x * x)) / ((double) (y * y)))) + ((double) (((double) (z * z)) / ((double) (t * t))))));
}
double code(double x, double y, double z, double t) {
	double VAR;
	if ((t <= -6.7191777427850724e-161)) {
		VAR = ((double) fma(((double) (z / t)), ((double) (z / t)), ((double) (((double) (1.0 / y)) * ((double) (x / ((double) (y / x))))))));
	} else {
		VAR = ((double) fma(((double) (z / t)), ((double) (z / t)), ((double) (((double) fabs(x)) / ((double) (y * ((double) (y / ((double) fabs(x))))))))));
	}
	return VAR;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original33.2
Target0.4
Herbie4.1
\[{\left(\frac{x}{y}\right)}^{2} + {\left(\frac{z}{t}\right)}^{2}\]

Derivation

  1. Split input into 2 regimes
  2. if t < -6.7191777427850724e-161

    1. Initial program 28.4

      \[\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\]
    2. Simplified18.9

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{x \cdot x}{y \cdot y}\right)}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity18.9

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{\color{blue}{1 \cdot \left(x \cdot x\right)}}{y \cdot y}\right)\]
    5. Applied times-frac13.5

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \color{blue}{\frac{1}{y} \cdot \frac{x \cdot x}{y}}\right)\]
    6. Simplified4.2

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{1}{y} \cdot \color{blue}{\frac{x}{\frac{y}{x}}}\right)\]

    if -6.7191777427850724e-161 < t

    1. Initial program 36.9

      \[\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\]
    2. Simplified18.6

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{x \cdot x}{y \cdot y}\right)}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity18.6

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{x \cdot x}{\color{blue}{1 \cdot \left(y \cdot y\right)}}\right)\]
    5. Applied add-sqr-sqrt18.6

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{\color{blue}{\sqrt{x \cdot x} \cdot \sqrt{x \cdot x}}}{1 \cdot \left(y \cdot y\right)}\right)\]
    6. Applied times-frac18.6

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \color{blue}{\frac{\sqrt{x \cdot x}}{1} \cdot \frac{\sqrt{x \cdot x}}{y \cdot y}}\right)\]
    7. Simplified18.6

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \color{blue}{\left|x\right|} \cdot \frac{\sqrt{x \cdot x}}{y \cdot y}\right)\]
    8. Simplified4.3

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left|x\right| \cdot \color{blue}{\frac{\frac{\left|x\right|}{y}}{y}}\right)\]
    9. Using strategy rm
    10. Applied clear-num4.4

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left|x\right| \cdot \frac{\color{blue}{\frac{1}{\frac{y}{\left|x\right|}}}}{y}\right)\]
    11. Applied associate-/l/4.5

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left|x\right| \cdot \color{blue}{\frac{1}{y \cdot \frac{y}{\left|x\right|}}}\right)\]
    12. Applied un-div-inv4.1

      \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \color{blue}{\frac{\left|x\right|}{y \cdot \frac{y}{\left|x\right|}}}\right)\]
  3. Recombined 2 regimes into one program.
  4. Final simplification4.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -6.71917774278507242 \cdot 10^{-161}:\\ \;\;\;\;\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{1}{y} \cdot \frac{x}{\frac{y}{x}}\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{\left|x\right|}{y \cdot \frac{y}{\left|x\right|}}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020113 +o rules:numerics
(FPCore (x y z t)
  :name "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1"
  :precision binary64

  :herbie-target
  (+ (pow (/ x y) 2) (pow (/ z t) 2))

  (+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))