Average Error: 10.0 → 0.2
Time: 19.0s
Precision: 64
\[\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\]
\[\begin{array}{l} \mathbf{if}\;x \le -4.241427555808642015592182073063133240868 \cdot 10^{-70}:\\ \;\;\;\;\left(\frac{1 \cdot x}{z} - x\right) + \frac{y}{\frac{z}{x}}\\ \mathbf{elif}\;x \le 3.13824538143855677196918343160641773358 \cdot 10^{-60}:\\ \;\;\;\;\frac{\left(\left(y - z\right) + 1\right) \cdot x}{z}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{1 \cdot x}{z} - x\right) + \frac{1}{\frac{\frac{z}{y}}{x}}\\ \end{array}\]
\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}
\begin{array}{l}
\mathbf{if}\;x \le -4.241427555808642015592182073063133240868 \cdot 10^{-70}:\\
\;\;\;\;\left(\frac{1 \cdot x}{z} - x\right) + \frac{y}{\frac{z}{x}}\\

\mathbf{elif}\;x \le 3.13824538143855677196918343160641773358 \cdot 10^{-60}:\\
\;\;\;\;\frac{\left(\left(y - z\right) + 1\right) \cdot x}{z}\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{1 \cdot x}{z} - x\right) + \frac{1}{\frac{\frac{z}{y}}{x}}\\

\end{array}
double f(double x, double y, double z) {
        double r558631 = x;
        double r558632 = y;
        double r558633 = z;
        double r558634 = r558632 - r558633;
        double r558635 = 1.0;
        double r558636 = r558634 + r558635;
        double r558637 = r558631 * r558636;
        double r558638 = r558637 / r558633;
        return r558638;
}

double f(double x, double y, double z) {
        double r558639 = x;
        double r558640 = -4.241427555808642e-70;
        bool r558641 = r558639 <= r558640;
        double r558642 = 1.0;
        double r558643 = r558642 * r558639;
        double r558644 = z;
        double r558645 = r558643 / r558644;
        double r558646 = r558645 - r558639;
        double r558647 = y;
        double r558648 = r558644 / r558639;
        double r558649 = r558647 / r558648;
        double r558650 = r558646 + r558649;
        double r558651 = 3.138245381438557e-60;
        bool r558652 = r558639 <= r558651;
        double r558653 = r558647 - r558644;
        double r558654 = r558653 + r558642;
        double r558655 = r558654 * r558639;
        double r558656 = r558655 / r558644;
        double r558657 = 1.0;
        double r558658 = r558644 / r558647;
        double r558659 = r558658 / r558639;
        double r558660 = r558657 / r558659;
        double r558661 = r558646 + r558660;
        double r558662 = r558652 ? r558656 : r558661;
        double r558663 = r558641 ? r558650 : r558662;
        return r558663;
}

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

Original10.0
Target0.5
Herbie0.2
\[\begin{array}{l} \mathbf{if}\;x \lt -2.714831067134359919650240696134672137284 \cdot 10^{-162}:\\ \;\;\;\;\left(1 + y\right) \cdot \frac{x}{z} - x\\ \mathbf{elif}\;x \lt 3.874108816439546156869494499878029491333 \cdot 10^{-197}:\\ \;\;\;\;\left(x \cdot \left(\left(y - z\right) + 1\right)\right) \cdot \frac{1}{z}\\ \mathbf{else}:\\ \;\;\;\;\left(1 + y\right) \cdot \frac{x}{z} - x\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if x < -4.241427555808642e-70

    1. Initial program 18.7

      \[\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\]
    2. Simplified0.8

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

      \[\leadsto \color{blue}{\left(\frac{x \cdot y}{z} + 1 \cdot \frac{x}{z}\right) - x}\]
    4. Simplified0.1

      \[\leadsto \color{blue}{\left(\frac{x \cdot 1}{z} - x\right) + \frac{y}{\frac{z}{x}}}\]

    if -4.241427555808642e-70 < x < 3.138245381438557e-60

    1. Initial program 0.2

      \[\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\]
    2. Simplified17.6

      \[\leadsto \color{blue}{\frac{x}{z} \cdot \left(\left(y - z\right) + 1\right)}\]
    3. Using strategy rm
    4. Applied associate-*l/0.2

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

      \[\leadsto \frac{\color{blue}{\left(\left(y - z\right) + 1\right) \cdot x}}{z}\]

    if 3.138245381438557e-60 < x

    1. Initial program 20.6

      \[\frac{x \cdot \left(\left(y - z\right) + 1\right)}{z}\]
    2. Simplified0.7

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

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

      \[\leadsto \color{blue}{\left(\frac{x \cdot 1}{z} - x\right) + \frac{y}{\frac{z}{x}}}\]
    5. Using strategy rm
    6. Applied clear-num0.2

      \[\leadsto \left(\frac{x \cdot 1}{z} - x\right) + \color{blue}{\frac{1}{\frac{\frac{z}{x}}{y}}}\]
    7. Simplified0.4

      \[\leadsto \left(\frac{x \cdot 1}{z} - x\right) + \frac{1}{\color{blue}{\frac{\frac{z}{y}}{x}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -4.241427555808642015592182073063133240868 \cdot 10^{-70}:\\ \;\;\;\;\left(\frac{1 \cdot x}{z} - x\right) + \frac{y}{\frac{z}{x}}\\ \mathbf{elif}\;x \le 3.13824538143855677196918343160641773358 \cdot 10^{-60}:\\ \;\;\;\;\frac{\left(\left(y - z\right) + 1\right) \cdot x}{z}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{1 \cdot x}{z} - x\right) + \frac{1}{\frac{\frac{z}{y}}{x}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 
(FPCore (x y z)
  :name "Diagrams.TwoD.Segment.Bernstein:evaluateBernstein from diagrams-lib-1.3.0.3"

  :herbie-target
  (if (< x -2.71483106713436e-162) (- (* (+ 1.0 y) (/ x z)) x) (if (< x 3.874108816439546e-197) (* (* x (+ (- y z) 1.0)) (/ 1.0 z)) (- (* (+ 1.0 y) (/ x z)) x)))

  (/ (* x (+ (- y z) 1.0)) z))