Average Error: 11.2 → 1.9
Time: 2.7m
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -4.57378486630527 \cdot 10^{-309}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.1129784645222681 \cdot 10^{+303}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}} \cdot \frac{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

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

\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

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

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r54505240 = a1;
        double r54505241 = a2;
        double r54505242 = r54505240 * r54505241;
        double r54505243 = b1;
        double r54505244 = b2;
        double r54505245 = r54505243 * r54505244;
        double r54505246 = r54505242 / r54505245;
        return r54505246;
}

double f(double a1, double a2, double b1, double b2) {
        double r54505247 = a1;
        double r54505248 = a2;
        double r54505249 = r54505247 * r54505248;
        double r54505250 = b1;
        double r54505251 = b2;
        double r54505252 = r54505250 * r54505251;
        double r54505253 = r54505249 / r54505252;
        double r54505254 = -inf.0;
        bool r54505255 = r54505253 <= r54505254;
        double r54505256 = r54505247 / r54505250;
        double r54505257 = r54505248 / r54505251;
        double r54505258 = r54505256 * r54505257;
        double r54505259 = -4.57378486630527e-309;
        bool r54505260 = r54505253 <= r54505259;
        double r54505261 = -0.0;
        bool r54505262 = r54505253 <= r54505261;
        double r54505263 = 1.1129784645222681e+303;
        bool r54505264 = r54505253 <= r54505263;
        double r54505265 = cbrt(r54505248);
        double r54505266 = cbrt(r54505250);
        double r54505267 = r54505265 / r54505266;
        double r54505268 = cbrt(r54505251);
        double r54505269 = cbrt(r54505268);
        double r54505270 = r54505267 / r54505269;
        double r54505271 = r54505266 * r54505268;
        double r54505272 = r54505247 / r54505271;
        double r54505273 = r54505272 / r54505271;
        double r54505274 = r54505269 / r54505265;
        double r54505275 = r54505274 * r54505274;
        double r54505276 = r54505273 / r54505275;
        double r54505277 = r54505270 * r54505276;
        double r54505278 = r54505264 ? r54505253 : r54505277;
        double r54505279 = r54505262 ? r54505258 : r54505278;
        double r54505280 = r54505260 ? r54505253 : r54505279;
        double r54505281 = r54505255 ? r54505258 : r54505280;
        return r54505281;
}

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

Original11.2
Target10.9
Herbie1.9
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 3 regimes
  2. if (/ (* a1 a2) (* b1 b2)) < -inf.0 or -4.57378486630527e-309 < (/ (* a1 a2) (* b1 b2)) < -0.0

    1. Initial program 18.4

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

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

    if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -4.57378486630527e-309 or -0.0 < (/ (* a1 a2) (* b1 b2)) < 1.1129784645222681e+303

    1. Initial program 0.8

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]

    if 1.1129784645222681e+303 < (/ (* a1 a2) (* b1 b2))

    1. Initial program 60.0

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

      \[\leadsto \color{blue}{\frac{\frac{a1 \cdot a2}{b1}}{b2}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt45.3

      \[\leadsto \frac{\frac{a1 \cdot a2}{b1}}{\color{blue}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \sqrt[3]{b2}}}\]
    6. Applied add-cube-cbrt45.5

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

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

      \[\leadsto \color{blue}{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}}\]
    9. Simplified5.7

      \[\leadsto \color{blue}{\frac{\frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}}} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\]
    10. Using strategy rm
    11. Applied add-cube-cbrt5.9

      \[\leadsto \frac{\frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\color{blue}{\left(\sqrt[3]{\sqrt[3]{b2}} \cdot \sqrt[3]{\sqrt[3]{b2}}\right) \cdot \sqrt[3]{\sqrt[3]{b2}}}}\]
    12. Applied *-un-lft-identity5.9

      \[\leadsto \frac{\frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}} \cdot \frac{\frac{a2}{\sqrt[3]{\color{blue}{1 \cdot b1}}}}{\left(\sqrt[3]{\sqrt[3]{b2}} \cdot \sqrt[3]{\sqrt[3]{b2}}\right) \cdot \sqrt[3]{\sqrt[3]{b2}}}\]
    13. Applied cbrt-prod5.9

      \[\leadsto \frac{\frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}}}{\sqrt[3]{b2} \cdot \sqrt[3]{b1}} \cdot \frac{\frac{a2}{\color{blue}{\sqrt[3]{1} \cdot \sqrt[3]{b1}}}}{\left(\sqrt[3]{\sqrt[3]{b2}} \cdot \sqrt[3]{\sqrt[3]{b2}}\right) \cdot \sqrt[3]{\sqrt[3]{b2}}}\]
    14. Applied add-cube-cbrt6.0

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -4.57378486630527 \cdot 10^{-309}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.1129784645222681 \cdot 10^{+303}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}}{\sqrt[3]{\sqrt[3]{b2}}} \cdot \frac{\frac{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\sqrt[3]{b1} \cdot \sqrt[3]{b2}}}{\frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}} \cdot \frac{\sqrt[3]{\sqrt[3]{b2}}}{\sqrt[3]{a2}}}\\ \end{array}\]

Reproduce

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

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

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