Average Error: 14.4 → 0.7
Time: 3.7s
Precision: 64
\[x \cdot \frac{\frac{y}{z} \cdot t}{t}\]
\[\begin{array}{l} \mathbf{if}\;\frac{y}{z} \le -2.31647839900996075 \cdot 10^{201} \lor \neg \left(\frac{y}{z} \le -1.08230262257267508 \cdot 10^{-225} \lor \neg \left(\frac{y}{z} \le 7.8156456972782032 \cdot 10^{-118} \lor \neg \left(\frac{y}{z} \le 2.4596581156209282 \cdot 10^{208}\right)\right)\right):\\ \;\;\;\;\frac{x \cdot y}{z}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{\frac{z}{y}}\\ \end{array}\]
x \cdot \frac{\frac{y}{z} \cdot t}{t}
\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -2.31647839900996075 \cdot 10^{201} \lor \neg \left(\frac{y}{z} \le -1.08230262257267508 \cdot 10^{-225} \lor \neg \left(\frac{y}{z} \le 7.8156456972782032 \cdot 10^{-118} \lor \neg \left(\frac{y}{z} \le 2.4596581156209282 \cdot 10^{208}\right)\right)\right):\\
\;\;\;\;\frac{x \cdot y}{z}\\

\mathbf{else}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r87740 = x;
        double r87741 = y;
        double r87742 = z;
        double r87743 = r87741 / r87742;
        double r87744 = t;
        double r87745 = r87743 * r87744;
        double r87746 = r87745 / r87744;
        double r87747 = r87740 * r87746;
        return r87747;
}

double f(double x, double y, double z, double __attribute__((unused)) t) {
        double r87748 = y;
        double r87749 = z;
        double r87750 = r87748 / r87749;
        double r87751 = -2.3164783990099608e+201;
        bool r87752 = r87750 <= r87751;
        double r87753 = -1.0823026225726751e-225;
        bool r87754 = r87750 <= r87753;
        double r87755 = 7.815645697278203e-118;
        bool r87756 = r87750 <= r87755;
        double r87757 = 2.459658115620928e+208;
        bool r87758 = r87750 <= r87757;
        double r87759 = !r87758;
        bool r87760 = r87756 || r87759;
        double r87761 = !r87760;
        bool r87762 = r87754 || r87761;
        double r87763 = !r87762;
        bool r87764 = r87752 || r87763;
        double r87765 = x;
        double r87766 = r87765 * r87748;
        double r87767 = r87766 / r87749;
        double r87768 = r87749 / r87748;
        double r87769 = r87765 / r87768;
        double r87770 = r87764 ? r87767 : r87769;
        return r87770;
}

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

Derivation

  1. Split input into 2 regimes
  2. if (/ y z) < -2.3164783990099608e+201 or -1.0823026225726751e-225 < (/ y z) < 7.815645697278203e-118 or 2.459658115620928e+208 < (/ y z)

    1. Initial program 23.0

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

      \[\leadsto \color{blue}{x \cdot \frac{y}{z}}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity13.9

      \[\leadsto x \cdot \frac{y}{\color{blue}{1 \cdot z}}\]
    5. Applied add-cube-cbrt14.4

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

      \[\leadsto x \cdot \color{blue}{\left(\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1} \cdot \frac{\sqrt[3]{y}}{z}\right)}\]
    7. Applied associate-*r*3.8

      \[\leadsto \color{blue}{\left(x \cdot \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1}\right) \cdot \frac{\sqrt[3]{y}}{z}}\]
    8. Simplified3.8

      \[\leadsto \color{blue}{\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot x\right)} \cdot \frac{\sqrt[3]{y}}{z}\]
    9. Using strategy rm
    10. Applied pow13.8

      \[\leadsto \left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot x\right) \cdot \color{blue}{{\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}}\]
    11. Applied pow13.8

      \[\leadsto \left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \color{blue}{{x}^{1}}\right) \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    12. Applied pow13.8

      \[\leadsto \left(\left(\sqrt[3]{y} \cdot \color{blue}{{\left(\sqrt[3]{y}\right)}^{1}}\right) \cdot {x}^{1}\right) \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    13. Applied pow13.8

      \[\leadsto \left(\left(\color{blue}{{\left(\sqrt[3]{y}\right)}^{1}} \cdot {\left(\sqrt[3]{y}\right)}^{1}\right) \cdot {x}^{1}\right) \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    14. Applied pow-prod-down3.8

      \[\leadsto \left(\color{blue}{{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)}^{1}} \cdot {x}^{1}\right) \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    15. Applied pow-prod-down3.8

      \[\leadsto \color{blue}{{\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot x\right)}^{1}} \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    16. Applied pow-prod-down3.8

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

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

    if -2.3164783990099608e+201 < (/ y z) < -1.0823026225726751e-225 or 7.815645697278203e-118 < (/ y z) < 2.459658115620928e+208

    1. Initial program 7.6

      \[x \cdot \frac{\frac{y}{z} \cdot t}{t}\]
    2. Simplified0.2

      \[\leadsto \color{blue}{x \cdot \frac{y}{z}}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity0.2

      \[\leadsto x \cdot \frac{y}{\color{blue}{1 \cdot z}}\]
    5. Applied add-cube-cbrt1.3

      \[\leadsto x \cdot \frac{\color{blue}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}}}{1 \cdot z}\]
    6. Applied times-frac1.3

      \[\leadsto x \cdot \color{blue}{\left(\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1} \cdot \frac{\sqrt[3]{y}}{z}\right)}\]
    7. Applied associate-*r*6.7

      \[\leadsto \color{blue}{\left(x \cdot \frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1}\right) \cdot \frac{\sqrt[3]{y}}{z}}\]
    8. Simplified6.7

      \[\leadsto \color{blue}{\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot x\right)} \cdot \frac{\sqrt[3]{y}}{z}\]
    9. Using strategy rm
    10. Applied pow16.7

      \[\leadsto \left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot x\right) \cdot \color{blue}{{\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}}\]
    11. Applied pow16.7

      \[\leadsto \left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \color{blue}{{x}^{1}}\right) \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    12. Applied pow16.7

      \[\leadsto \left(\left(\sqrt[3]{y} \cdot \color{blue}{{\left(\sqrt[3]{y}\right)}^{1}}\right) \cdot {x}^{1}\right) \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    13. Applied pow16.7

      \[\leadsto \left(\left(\color{blue}{{\left(\sqrt[3]{y}\right)}^{1}} \cdot {\left(\sqrt[3]{y}\right)}^{1}\right) \cdot {x}^{1}\right) \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    14. Applied pow-prod-down6.7

      \[\leadsto \left(\color{blue}{{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right)}^{1}} \cdot {x}^{1}\right) \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    15. Applied pow-prod-down6.7

      \[\leadsto \color{blue}{{\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot x\right)}^{1}} \cdot {\left(\frac{\sqrt[3]{y}}{z}\right)}^{1}\]
    16. Applied pow-prod-down6.7

      \[\leadsto \color{blue}{{\left(\left(\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot x\right) \cdot \frac{\sqrt[3]{y}}{z}\right)}^{1}}\]
    17. Simplified9.9

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{y}{z} \le -2.31647839900996075 \cdot 10^{201} \lor \neg \left(\frac{y}{z} \le -1.08230262257267508 \cdot 10^{-225} \lor \neg \left(\frac{y}{z} \le 7.8156456972782032 \cdot 10^{-118} \lor \neg \left(\frac{y}{z} \le 2.4596581156209282 \cdot 10^{208}\right)\right)\right):\\ \;\;\;\;\frac{x \cdot y}{z}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{\frac{z}{y}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020089 +o rules:numerics
(FPCore (x y z t)
  :name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1"
  :precision binary64
  (* x (/ (* (/ y z) t) t)))