Average Error: 11.1 → 10.8
Time: 16.6s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \le -2.6262968301438297 \cdot 10^{+154}:\\ \;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\ \mathbf{elif}\;a1 \le -7.197696696298761 \cdot 10^{-23}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{a2}{b2}}}{b1} \cdot \left(\left(\sqrt[3]{\frac{a2}{b2}} \cdot a1\right) \cdot \sqrt[3]{\frac{a2}{b2}}\right)\\ \mathbf{elif}\;a1 \le -1.4115765653207805 \cdot 10^{-101}:\\ \;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\ \mathbf{elif}\;a1 \le -3.75577994435908 \cdot 10^{-192}:\\ \;\;\;\;\frac{\frac{a2 \cdot a1}{b1}}{b2}\\ \mathbf{elif}\;a1 \le -2.7564687177065716 \cdot 10^{-269}:\\ \;\;\;\;\frac{1}{b1} \cdot \left(\frac{a2}{b2} \cdot a1\right)\\ \mathbf{elif}\;a1 \le 8.377469299573798 \cdot 10^{-267}:\\ \;\;\;\;\frac{a2 \cdot a1}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \le 5.6037110240578724 \cdot 10^{-148}:\\ \;\;\;\;\frac{1}{b1} \cdot \left(\frac{a2}{b2} \cdot a1\right)\\ \mathbf{elif}\;a1 \le 1.3929709356464372 \cdot 10^{+88}:\\ \;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \le -2.6262968301438297 \cdot 10^{+154}:\\
\;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\

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

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

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

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

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

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

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

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r5231116 = a1;
        double r5231117 = a2;
        double r5231118 = r5231116 * r5231117;
        double r5231119 = b1;
        double r5231120 = b2;
        double r5231121 = r5231119 * r5231120;
        double r5231122 = r5231118 / r5231121;
        return r5231122;
}

double f(double a1, double a2, double b1, double b2) {
        double r5231123 = a1;
        double r5231124 = -2.6262968301438297e+154;
        bool r5231125 = r5231123 <= r5231124;
        double r5231126 = a2;
        double r5231127 = b2;
        double r5231128 = b1;
        double r5231129 = r5231127 * r5231128;
        double r5231130 = r5231126 / r5231129;
        double r5231131 = r5231130 * r5231123;
        double r5231132 = -7.197696696298761e-23;
        bool r5231133 = r5231123 <= r5231132;
        double r5231134 = r5231126 / r5231127;
        double r5231135 = cbrt(r5231134);
        double r5231136 = r5231135 / r5231128;
        double r5231137 = r5231135 * r5231123;
        double r5231138 = r5231137 * r5231135;
        double r5231139 = r5231136 * r5231138;
        double r5231140 = -1.4115765653207805e-101;
        bool r5231141 = r5231123 <= r5231140;
        double r5231142 = -3.75577994435908e-192;
        bool r5231143 = r5231123 <= r5231142;
        double r5231144 = r5231126 * r5231123;
        double r5231145 = r5231144 / r5231128;
        double r5231146 = r5231145 / r5231127;
        double r5231147 = -2.7564687177065716e-269;
        bool r5231148 = r5231123 <= r5231147;
        double r5231149 = 1.0;
        double r5231150 = r5231149 / r5231128;
        double r5231151 = r5231134 * r5231123;
        double r5231152 = r5231150 * r5231151;
        double r5231153 = 8.377469299573798e-267;
        bool r5231154 = r5231123 <= r5231153;
        double r5231155 = r5231144 / r5231129;
        double r5231156 = 5.6037110240578724e-148;
        bool r5231157 = r5231123 <= r5231156;
        double r5231158 = 1.3929709356464372e+88;
        bool r5231159 = r5231123 <= r5231158;
        double r5231160 = r5231123 / r5231128;
        double r5231161 = r5231160 * r5231134;
        double r5231162 = r5231159 ? r5231131 : r5231161;
        double r5231163 = r5231157 ? r5231152 : r5231162;
        double r5231164 = r5231154 ? r5231155 : r5231163;
        double r5231165 = r5231148 ? r5231152 : r5231164;
        double r5231166 = r5231143 ? r5231146 : r5231165;
        double r5231167 = r5231141 ? r5231131 : r5231166;
        double r5231168 = r5231133 ? r5231139 : r5231167;
        double r5231169 = r5231125 ? r5231131 : r5231168;
        return r5231169;
}

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.2
Herbie10.8
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 6 regimes
  2. if a1 < -2.6262968301438297e+154 or -7.197696696298761e-23 < a1 < -1.4115765653207805e-101 or 5.6037110240578724e-148 < a1 < 1.3929709356464372e+88

    1. Initial program 10.6

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

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

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

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

      \[\leadsto a1 \cdot \color{blue}{\frac{\frac{a2}{b2}}{b1}}\]
    8. Taylor expanded around 0 10.7

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

    if -2.6262968301438297e+154 < a1 < -7.197696696298761e-23

    1. Initial program 9.7

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

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

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

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

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

      \[\leadsto a1 \cdot \frac{\frac{a2}{b2}}{\color{blue}{1 \cdot b1}}\]
    10. Applied add-cube-cbrt10.9

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

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

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

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

    if -1.4115765653207805e-101 < a1 < -3.75577994435908e-192

    1. Initial program 8.3

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

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

    if -3.75577994435908e-192 < a1 < -2.7564687177065716e-269 or 8.377469299573798e-267 < a1 < 5.6037110240578724e-148

    1. Initial program 11.0

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

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

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

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

      \[\leadsto a1 \cdot \color{blue}{\frac{\frac{a2}{b2}}{b1}}\]
    8. Using strategy rm
    9. Applied div-inv9.6

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

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

    if -2.7564687177065716e-269 < a1 < 8.377469299573798e-267

    1. Initial program 11.8

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

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

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

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

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

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

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

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

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

      \[\leadsto \color{blue}{\left(\left(a1 \cdot \sqrt[3]{\frac{a2}{b2}}\right) \cdot \sqrt[3]{\frac{a2}{b2}}\right)} \cdot \frac{\sqrt[3]{\frac{a2}{b2}}}{b1}\]
    14. Taylor expanded around -inf 11.8

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

    if 1.3929709356464372e+88 < a1

    1. Initial program 15.6

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \le -2.6262968301438297 \cdot 10^{+154}:\\ \;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\ \mathbf{elif}\;a1 \le -7.197696696298761 \cdot 10^{-23}:\\ \;\;\;\;\frac{\sqrt[3]{\frac{a2}{b2}}}{b1} \cdot \left(\left(\sqrt[3]{\frac{a2}{b2}} \cdot a1\right) \cdot \sqrt[3]{\frac{a2}{b2}}\right)\\ \mathbf{elif}\;a1 \le -1.4115765653207805 \cdot 10^{-101}:\\ \;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\ \mathbf{elif}\;a1 \le -3.75577994435908 \cdot 10^{-192}:\\ \;\;\;\;\frac{\frac{a2 \cdot a1}{b1}}{b2}\\ \mathbf{elif}\;a1 \le -2.7564687177065716 \cdot 10^{-269}:\\ \;\;\;\;\frac{1}{b1} \cdot \left(\frac{a2}{b2} \cdot a1\right)\\ \mathbf{elif}\;a1 \le 8.377469299573798 \cdot 10^{-267}:\\ \;\;\;\;\frac{a2 \cdot a1}{b2 \cdot b1}\\ \mathbf{elif}\;a1 \le 5.6037110240578724 \cdot 10^{-148}:\\ \;\;\;\;\frac{1}{b1} \cdot \left(\frac{a2}{b2} \cdot a1\right)\\ \mathbf{elif}\;a1 \le 1.3929709356464372 \cdot 10^{+88}:\\ \;\;\;\;\frac{a2}{b2 \cdot b1} \cdot a1\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\ \end{array}\]

Reproduce

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

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

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