Average Error: 9.1 → 0.1
Time: 18.3s
Precision: 64
\[\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\]
\[\mathsf{fma}\left(\sqrt{2.0}, \frac{\frac{\sqrt{\sqrt{2.0}}}{t}}{z} \cdot \sqrt{\sqrt{2.0}}, \frac{2.0}{t} - 2.0\right) + \frac{x}{y}\]
\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}
\mathsf{fma}\left(\sqrt{2.0}, \frac{\frac{\sqrt{\sqrt{2.0}}}{t}}{z} \cdot \sqrt{\sqrt{2.0}}, \frac{2.0}{t} - 2.0\right) + \frac{x}{y}
double f(double x, double y, double z, double t) {
        double r37883712 = x;
        double r37883713 = y;
        double r37883714 = r37883712 / r37883713;
        double r37883715 = 2.0;
        double r37883716 = z;
        double r37883717 = r37883716 * r37883715;
        double r37883718 = 1.0;
        double r37883719 = t;
        double r37883720 = r37883718 - r37883719;
        double r37883721 = r37883717 * r37883720;
        double r37883722 = r37883715 + r37883721;
        double r37883723 = r37883719 * r37883716;
        double r37883724 = r37883722 / r37883723;
        double r37883725 = r37883714 + r37883724;
        return r37883725;
}

double f(double x, double y, double z, double t) {
        double r37883726 = 2.0;
        double r37883727 = sqrt(r37883726);
        double r37883728 = sqrt(r37883727);
        double r37883729 = t;
        double r37883730 = r37883728 / r37883729;
        double r37883731 = z;
        double r37883732 = r37883730 / r37883731;
        double r37883733 = r37883732 * r37883728;
        double r37883734 = r37883726 / r37883729;
        double r37883735 = r37883734 - r37883726;
        double r37883736 = fma(r37883727, r37883733, r37883735);
        double r37883737 = x;
        double r37883738 = y;
        double r37883739 = r37883737 / r37883738;
        double r37883740 = r37883736 + r37883739;
        return r37883740;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original9.1
Target0.1
Herbie0.1
\[\frac{\frac{2.0}{z} + 2.0}{t} - \left(2.0 - \frac{x}{y}\right)\]

Derivation

  1. Initial program 9.1

    \[\frac{x}{y} + \frac{2.0 + \left(z \cdot 2.0\right) \cdot \left(1.0 - t\right)}{t \cdot z}\]
  2. Taylor expanded around 0 0.1

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

    \[\leadsto \frac{x}{y} + \color{blue}{\left(\frac{\frac{2.0}{t}}{z} + \left(\frac{2.0}{t} - 2.0\right)\right)}\]
  4. Using strategy rm
  5. Applied *-un-lft-identity0.1

    \[\leadsto \frac{x}{y} + \left(\frac{\frac{2.0}{t}}{\color{blue}{1 \cdot z}} + \left(\frac{2.0}{t} - 2.0\right)\right)\]
  6. Applied *-un-lft-identity0.1

    \[\leadsto \frac{x}{y} + \left(\frac{\frac{2.0}{\color{blue}{1 \cdot t}}}{1 \cdot z} + \left(\frac{2.0}{t} - 2.0\right)\right)\]
  7. Applied add-sqr-sqrt0.3

    \[\leadsto \frac{x}{y} + \left(\frac{\frac{\color{blue}{\sqrt{2.0} \cdot \sqrt{2.0}}}{1 \cdot t}}{1 \cdot z} + \left(\frac{2.0}{t} - 2.0\right)\right)\]
  8. Applied times-frac0.2

    \[\leadsto \frac{x}{y} + \left(\frac{\color{blue}{\frac{\sqrt{2.0}}{1} \cdot \frac{\sqrt{2.0}}{t}}}{1 \cdot z} + \left(\frac{2.0}{t} - 2.0\right)\right)\]
  9. Applied times-frac0.2

    \[\leadsto \frac{x}{y} + \left(\color{blue}{\frac{\frac{\sqrt{2.0}}{1}}{1} \cdot \frac{\frac{\sqrt{2.0}}{t}}{z}} + \left(\frac{2.0}{t} - 2.0\right)\right)\]
  10. Applied fma-def0.2

    \[\leadsto \frac{x}{y} + \color{blue}{\mathsf{fma}\left(\frac{\frac{\sqrt{2.0}}{1}}{1}, \frac{\frac{\sqrt{2.0}}{t}}{z}, \frac{2.0}{t} - 2.0\right)}\]
  11. Using strategy rm
  12. Applied *-un-lft-identity0.2

    \[\leadsto \frac{x}{y} + \mathsf{fma}\left(\frac{\frac{\sqrt{2.0}}{1}}{1}, \frac{\frac{\sqrt{2.0}}{t}}{\color{blue}{1 \cdot z}}, \frac{2.0}{t} - 2.0\right)\]
  13. Applied *-un-lft-identity0.2

    \[\leadsto \frac{x}{y} + \mathsf{fma}\left(\frac{\frac{\sqrt{2.0}}{1}}{1}, \frac{\frac{\sqrt{2.0}}{\color{blue}{1 \cdot t}}}{1 \cdot z}, \frac{2.0}{t} - 2.0\right)\]
  14. Applied add-sqr-sqrt0.2

    \[\leadsto \frac{x}{y} + \mathsf{fma}\left(\frac{\frac{\sqrt{2.0}}{1}}{1}, \frac{\frac{\sqrt{\color{blue}{\sqrt{2.0} \cdot \sqrt{2.0}}}}{1 \cdot t}}{1 \cdot z}, \frac{2.0}{t} - 2.0\right)\]
  15. Applied sqrt-prod0.1

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

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

    \[\leadsto \frac{x}{y} + \mathsf{fma}\left(\frac{\frac{\sqrt{2.0}}{1}}{1}, \color{blue}{\frac{\frac{\sqrt{\sqrt{2.0}}}{1}}{1} \cdot \frac{\frac{\sqrt{\sqrt{2.0}}}{t}}{z}}, \frac{2.0}{t} - 2.0\right)\]
  18. Simplified0.1

    \[\leadsto \frac{x}{y} + \mathsf{fma}\left(\frac{\frac{\sqrt{2.0}}{1}}{1}, \color{blue}{\sqrt{\sqrt{2.0}}} \cdot \frac{\frac{\sqrt{\sqrt{2.0}}}{t}}{z}, \frac{2.0}{t} - 2.0\right)\]
  19. Final simplification0.1

    \[\leadsto \mathsf{fma}\left(\sqrt{2.0}, \frac{\frac{\sqrt{\sqrt{2.0}}}{t}}{z} \cdot \sqrt{\sqrt{2.0}}, \frac{2.0}{t} - 2.0\right) + \frac{x}{y}\]

Reproduce

herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t)
  :name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"

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

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