Average Error: 11.1 → 5.1
Time: 3.4s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -1.22113183805789549425064473008659101772 \cdot 10^{57}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le -1.105414882725128694625808336485981933486 \cdot 10^{-132}:\\ \;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 3.77380536154540503460462623599196939534 \cdot 10^{-313}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.298732356418348872843780632336246724284 \cdot 10^{242}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -1.22113183805789549425064473008659101772 \cdot 10^{57}:\\
\;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\

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

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

\mathbf{elif}\;a1 \cdot a2 \le 2.298732356418348872843780632336246724284 \cdot 10^{242}:\\
\;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\

\mathbf{else}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r106451 = a1;
        double r106452 = a2;
        double r106453 = r106451 * r106452;
        double r106454 = b1;
        double r106455 = b2;
        double r106456 = r106454 * r106455;
        double r106457 = r106453 / r106456;
        return r106457;
}

double f(double a1, double a2, double b1, double b2) {
        double r106458 = a1;
        double r106459 = a2;
        double r106460 = r106458 * r106459;
        double r106461 = -1.2211318380578955e+57;
        bool r106462 = r106460 <= r106461;
        double r106463 = b2;
        double r106464 = cbrt(r106463);
        double r106465 = r106464 * r106464;
        double r106466 = b1;
        double r106467 = cbrt(r106466);
        double r106468 = r106467 * r106467;
        double r106469 = r106465 * r106468;
        double r106470 = r106458 / r106469;
        double r106471 = r106459 / r106467;
        double r106472 = r106471 / r106464;
        double r106473 = r106470 * r106472;
        double r106474 = -1.1054148827251287e-132;
        bool r106475 = r106460 <= r106474;
        double r106476 = r106463 * r106466;
        double r106477 = r106460 / r106476;
        double r106478 = 3.7738053615454e-313;
        bool r106479 = r106460 <= r106478;
        double r106480 = 2.298732356418349e+242;
        bool r106481 = r106460 <= r106480;
        double r106482 = 1.0;
        double r106483 = r106482 / r106466;
        double r106484 = r106483 / r106463;
        double r106485 = r106460 * r106484;
        double r106486 = r106458 / r106466;
        double r106487 = r106459 / r106463;
        double r106488 = r106486 * r106487;
        double r106489 = r106481 ? r106485 : r106488;
        double r106490 = r106479 ? r106473 : r106489;
        double r106491 = r106475 ? r106477 : r106490;
        double r106492 = r106462 ? r106473 : r106491;
        return r106492;
}

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.1
Target11.4
Herbie5.1
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 4 regimes
  2. if (* a1 a2) < -1.2211318380578955e+57 or -1.1054148827251287e-132 < (* a1 a2) < 3.7738053615454e-313

    1. Initial program 15.9

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

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

      \[\leadsto \frac{\frac{a1 \cdot a2}{b1}}{\color{blue}{1 \cdot b2}}\]
    6. Applied *-un-lft-identity16.0

      \[\leadsto \frac{\frac{a1 \cdot a2}{\color{blue}{1 \cdot b1}}}{1 \cdot b2}\]
    7. Applied times-frac10.3

      \[\leadsto \frac{\color{blue}{\frac{a1}{1} \cdot \frac{a2}{b1}}}{1 \cdot b2}\]
    8. Applied times-frac8.0

      \[\leadsto \color{blue}{\frac{\frac{a1}{1}}{1} \cdot \frac{\frac{a2}{b1}}{b2}}\]
    9. Simplified8.0

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

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

      \[\leadsto a1 \cdot \frac{\frac{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}}\]
    13. Applied *-un-lft-identity8.7

      \[\leadsto a1 \cdot \frac{\frac{\color{blue}{1 \cdot a2}}{\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}}\]
    14. Applied times-frac8.7

      \[\leadsto a1 \cdot \frac{\color{blue}{\frac{1}{\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}}\]
    15. Applied times-frac6.8

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

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

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

    if -1.2211318380578955e+57 < (* a1 a2) < -1.1054148827251287e-132

    1. Initial program 1.8

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

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

      \[\leadsto \frac{\frac{a1 \cdot a2}{\color{blue}{1 \cdot b1}}}{b2}\]
    6. Applied times-frac10.5

      \[\leadsto \frac{\color{blue}{\frac{a1}{1} \cdot \frac{a2}{b1}}}{b2}\]
    7. Simplified10.5

      \[\leadsto \frac{\color{blue}{a1} \cdot \frac{a2}{b1}}{b2}\]
    8. Using strategy rm
    9. Applied associate-*r/1.8

      \[\leadsto \frac{\color{blue}{\frac{a1 \cdot a2}{b1}}}{b2}\]
    10. Applied associate-/l/1.8

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

    if 3.7738053615454e-313 < (* a1 a2) < 2.298732356418349e+242

    1. Initial program 5.5

      \[\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}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity5.4

      \[\leadsto \frac{\frac{a1 \cdot a2}{b1}}{\color{blue}{1 \cdot b2}}\]
    6. Applied div-inv5.5

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

      \[\leadsto \color{blue}{\frac{a1 \cdot a2}{1} \cdot \frac{\frac{1}{b1}}{b2}}\]
    8. Simplified5.6

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

    if 2.298732356418349e+242 < (* a1 a2)

    1. Initial program 41.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -1.22113183805789549425064473008659101772 \cdot 10^{57}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le -1.105414882725128694625808336485981933486 \cdot 10^{-132}:\\ \;\;\;\;\frac{a1 \cdot a2}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \cdot a2 \le 3.77380536154540503460462623599196939534 \cdot 10^{-313}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.298732356418348872843780632336246724284 \cdot 10^{242}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019308 
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"
  :precision binary64

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

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