Average Error: 10.8 → 4.8
Time: 10.1s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 = -\infty:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -6.848939379187657 \cdot 10^{-209}:\\ \;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 8.9817388408212 \cdot 10^{-316}:\\ \;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{a2}{b2}\right)\\ \mathbf{elif}\;a1 \cdot a2 \le 7.101110806155063 \cdot 10^{+218}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{a2}{b2}\right)\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 = -\infty:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\

\mathbf{elif}\;a1 \cdot a2 \le -6.848939379187657 \cdot 10^{-209}:\\
\;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\

\mathbf{elif}\;a1 \cdot a2 \le 8.9817388408212 \cdot 10^{-316}:\\
\;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{a2}{b2}\right)\\

\mathbf{elif}\;a1 \cdot a2 \le 7.101110806155063 \cdot 10^{+218}:\\
\;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\

\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{a2}{b2}\right)\\

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r2566571 = a1;
        double r2566572 = a2;
        double r2566573 = r2566571 * r2566572;
        double r2566574 = b1;
        double r2566575 = b2;
        double r2566576 = r2566574 * r2566575;
        double r2566577 = r2566573 / r2566576;
        return r2566577;
}

double f(double a1, double a2, double b1, double b2) {
        double r2566578 = a1;
        double r2566579 = a2;
        double r2566580 = r2566578 * r2566579;
        double r2566581 = -inf.0;
        bool r2566582 = r2566580 <= r2566581;
        double r2566583 = b1;
        double r2566584 = r2566579 / r2566583;
        double r2566585 = b2;
        double r2566586 = r2566584 / r2566585;
        double r2566587 = r2566578 * r2566586;
        double r2566588 = -6.848939379187657e-209;
        bool r2566589 = r2566580 <= r2566588;
        double r2566590 = r2566585 * r2566583;
        double r2566591 = r2566580 / r2566590;
        double r2566592 = 8.9817388408212e-316;
        bool r2566593 = r2566580 <= r2566592;
        double r2566594 = cbrt(r2566578);
        double r2566595 = r2566594 * r2566594;
        double r2566596 = r2566594 / r2566583;
        double r2566597 = r2566579 / r2566585;
        double r2566598 = r2566596 * r2566597;
        double r2566599 = r2566595 * r2566598;
        double r2566600 = 7.101110806155063e+218;
        bool r2566601 = r2566580 <= r2566600;
        double r2566602 = r2566580 / r2566583;
        double r2566603 = r2566602 / r2566585;
        double r2566604 = r2566601 ? r2566603 : r2566599;
        double r2566605 = r2566593 ? r2566599 : r2566604;
        double r2566606 = r2566589 ? r2566591 : r2566605;
        double r2566607 = r2566582 ? r2566587 : r2566606;
        return r2566607;
}

Error

Bits error versus a1

Bits error versus a2

Bits error versus b1

Bits error versus b2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original10.8
Target10.6
Herbie4.8
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 4 regimes
  2. if (* a1 a2) < -inf.0

    1. Initial program 61.0

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied times-frac7.9

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Using strategy rm
    5. Applied div-inv8.0

      \[\leadsto \color{blue}{\left(a1 \cdot \frac{1}{b1}\right)} \cdot \frac{a2}{b2}\]
    6. Applied associate-*l*7.9

      \[\leadsto \color{blue}{a1 \cdot \left(\frac{1}{b1} \cdot \frac{a2}{b2}\right)}\]
    7. Simplified5.2

      \[\leadsto a1 \cdot \color{blue}{\frac{\frac{a2}{b1}}{b2}}\]

    if -inf.0 < (* a1 a2) < -6.848939379187657e-209

    1. Initial program 4.5

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied times-frac13.7

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Taylor expanded around -inf 4.5

      \[\leadsto \color{blue}{\frac{a1 \cdot a2}{b2 \cdot b1}}\]

    if -6.848939379187657e-209 < (* a1 a2) < 8.9817388408212e-316 or 7.101110806155063e+218 < (* a1 a2)

    1. Initial program 21.5

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied times-frac5.3

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity5.3

      \[\leadsto \frac{a1}{\color{blue}{1 \cdot b1}} \cdot \frac{a2}{b2}\]
    6. Applied add-cube-cbrt5.8

      \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \sqrt[3]{a1}}}{1 \cdot b1} \cdot \frac{a2}{b2}\]
    7. Applied times-frac5.8

      \[\leadsto \color{blue}{\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{1} \cdot \frac{\sqrt[3]{a1}}{b1}\right)} \cdot \frac{a2}{b2}\]
    8. Applied associate-*l*4.3

      \[\leadsto \color{blue}{\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{1} \cdot \left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{a2}{b2}\right)}\]

    if 8.9817388408212e-316 < (* a1 a2) < 7.101110806155063e+218

    1. Initial program 4.8

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied associate-/r*5.4

      \[\leadsto \color{blue}{\frac{\frac{a1 \cdot a2}{b1}}{b2}}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification4.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 = -\infty:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -6.848939379187657 \cdot 10^{-209}:\\ \;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 8.9817388408212 \cdot 10^{-316}:\\ \;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{a2}{b2}\right)\\ \mathbf{elif}\;a1 \cdot a2 \le 7.101110806155063 \cdot 10^{+218}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{a1} \cdot \sqrt[3]{a1}\right) \cdot \left(\frac{\sqrt[3]{a1}}{b1} \cdot \frac{a2}{b2}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019152 +o rules:numerics
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"

  :herbie-target
  (* (/ a1 b1) (/ a2 b2))

  (/ (* a1 a2) (* b1 b2)))