Average Error: 14.6 → 1.5
Time: 17.9s
Precision: 64
\[x \cdot \frac{\frac{y}{z} \cdot t}{t}\]
\[\begin{array}{l} \mathbf{if}\;\frac{y}{z} \le -3.787056636250989 \cdot 10^{-255}:\\ \;\;\;\;\frac{x}{\frac{z}{y}}\\ \mathbf{elif}\;\frac{y}{z} \le 2.639545429564233 \cdot 10^{-218}:\\ \;\;\;\;\frac{x}{z} \cdot y\\ \mathbf{elif}\;\frac{y}{z} \le 1.5887252151008075 \cdot 10^{+265}:\\ \;\;\;\;x \cdot \frac{y}{z}\\ \mathbf{else}:\\ \;\;\;\;\frac{y \cdot x}{z}\\ \end{array}\]
x \cdot \frac{\frac{y}{z} \cdot t}{t}
\begin{array}{l}
\mathbf{if}\;\frac{y}{z} \le -3.787056636250989 \cdot 10^{-255}:\\
\;\;\;\;\frac{x}{\frac{z}{y}}\\

\mathbf{elif}\;\frac{y}{z} \le 2.639545429564233 \cdot 10^{-218}:\\
\;\;\;\;\frac{x}{z} \cdot y\\

\mathbf{elif}\;\frac{y}{z} \le 1.5887252151008075 \cdot 10^{+265}:\\
\;\;\;\;x \cdot \frac{y}{z}\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r4277417 = x;
        double r4277418 = y;
        double r4277419 = z;
        double r4277420 = r4277418 / r4277419;
        double r4277421 = t;
        double r4277422 = r4277420 * r4277421;
        double r4277423 = r4277422 / r4277421;
        double r4277424 = r4277417 * r4277423;
        return r4277424;
}

double f(double x, double y, double z, double __attribute__((unused)) t) {
        double r4277425 = y;
        double r4277426 = z;
        double r4277427 = r4277425 / r4277426;
        double r4277428 = -3.787056636250989e-255;
        bool r4277429 = r4277427 <= r4277428;
        double r4277430 = x;
        double r4277431 = r4277426 / r4277425;
        double r4277432 = r4277430 / r4277431;
        double r4277433 = 2.639545429564233e-218;
        bool r4277434 = r4277427 <= r4277433;
        double r4277435 = r4277430 / r4277426;
        double r4277436 = r4277435 * r4277425;
        double r4277437 = 1.5887252151008075e+265;
        bool r4277438 = r4277427 <= r4277437;
        double r4277439 = r4277430 * r4277427;
        double r4277440 = r4277425 * r4277430;
        double r4277441 = r4277440 / r4277426;
        double r4277442 = r4277438 ? r4277439 : r4277441;
        double r4277443 = r4277434 ? r4277436 : r4277442;
        double r4277444 = r4277429 ? r4277432 : r4277443;
        return r4277444;
}

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 4 regimes
  2. if (/ y z) < -3.787056636250989e-255

    1. Initial program 13.2

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

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

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

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

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

      \[\leadsto \color{blue}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1} \cdot \left(\frac{\sqrt[3]{y}}{z} \cdot x\right)}\]
    8. Using strategy rm
    9. Applied *-un-lft-identity5.6

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

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

      \[\leadsto 1 \cdot \color{blue}{\frac{x}{\frac{z}{y}}}\]

    if -3.787056636250989e-255 < (/ y z) < 2.639545429564233e-218

    1. Initial program 17.3

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

      \[\leadsto \color{blue}{\frac{y}{z} \cdot x}\]
    3. Using strategy rm
    4. Applied div-inv11.7

      \[\leadsto \color{blue}{\left(y \cdot \frac{1}{z}\right)} \cdot x\]
    5. Applied associate-*l*0.4

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

      \[\leadsto y \cdot \color{blue}{\frac{x}{z}}\]

    if 2.639545429564233e-218 < (/ y z) < 1.5887252151008075e+265

    1. Initial program 10.0

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

      \[\leadsto \color{blue}{\frac{y}{z} \cdot x}\]

    if 1.5887252151008075e+265 < (/ y z)

    1. Initial program 50.5

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

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

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

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

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

      \[\leadsto \color{blue}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{1} \cdot \left(\frac{\sqrt[3]{y}}{z} \cdot x\right)}\]
    8. Taylor expanded around inf 0.3

      \[\leadsto \color{blue}{\frac{x \cdot y}{z}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification1.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{y}{z} \le -3.787056636250989 \cdot 10^{-255}:\\ \;\;\;\;\frac{x}{\frac{z}{y}}\\ \mathbf{elif}\;\frac{y}{z} \le 2.639545429564233 \cdot 10^{-218}:\\ \;\;\;\;\frac{x}{z} \cdot y\\ \mathbf{elif}\;\frac{y}{z} \le 1.5887252151008075 \cdot 10^{+265}:\\ \;\;\;\;x \cdot \frac{y}{z}\\ \mathbf{else}:\\ \;\;\;\;\frac{y \cdot x}{z}\\ \end{array}\]

Reproduce

herbie shell --seed 2019138 
(FPCore (x y z t)
  :name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1"
  (* x (/ (* (/ y z) t) t)))