Average Error: 11.2 → 5.1
Time: 18.0s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -4.209800947527883 \cdot 10^{+175}:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\ \mathbf{elif}\;a1 \cdot a2 \le -1.856528697270096 \cdot 10^{-61}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.151349519826297 \cdot 10^{-252}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{b2}}{\sqrt[3]{b1}} \cdot \left(a1 \cdot \left(\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}\right)\right)\\ \mathbf{elif}\;a1 \cdot a2 \le 2.5035993978499362 \cdot 10^{-275}:\\ \;\;\;\;\frac{\frac{a2}{\sqrt[3]{b2}}}{b1} \cdot \frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.4951274135627082 \cdot 10^{+288}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -4.209800947527883 \cdot 10^{+175}:\\
\;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\

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

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

\mathbf{elif}\;a1 \cdot a2 \le 2.5035993978499362 \cdot 10^{-275}:\\
\;\;\;\;\frac{\frac{a2}{\sqrt[3]{b2}}}{b1} \cdot \frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}\\

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

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r4373206 = a1;
        double r4373207 = a2;
        double r4373208 = r4373206 * r4373207;
        double r4373209 = b1;
        double r4373210 = b2;
        double r4373211 = r4373209 * r4373210;
        double r4373212 = r4373208 / r4373211;
        return r4373212;
}

double f(double a1, double a2, double b1, double b2) {
        double r4373213 = a1;
        double r4373214 = a2;
        double r4373215 = r4373213 * r4373214;
        double r4373216 = -4.209800947527883e+175;
        bool r4373217 = r4373215 <= r4373216;
        double r4373218 = b2;
        double r4373219 = r4373214 / r4373218;
        double r4373220 = b1;
        double r4373221 = r4373219 / r4373220;
        double r4373222 = r4373213 * r4373221;
        double r4373223 = -1.856528697270096e-61;
        bool r4373224 = r4373215 <= r4373223;
        double r4373225 = r4373215 / r4373220;
        double r4373226 = r4373225 / r4373218;
        double r4373227 = -4.151349519826297e-252;
        bool r4373228 = r4373215 <= r4373227;
        double r4373229 = cbrt(r4373214);
        double r4373230 = r4373229 / r4373218;
        double r4373231 = cbrt(r4373220);
        double r4373232 = r4373230 / r4373231;
        double r4373233 = r4373229 / r4373231;
        double r4373234 = r4373233 * r4373233;
        double r4373235 = r4373213 * r4373234;
        double r4373236 = r4373232 * r4373235;
        double r4373237 = 2.5035993978499362e-275;
        bool r4373238 = r4373215 <= r4373237;
        double r4373239 = cbrt(r4373218);
        double r4373240 = r4373214 / r4373239;
        double r4373241 = r4373240 / r4373220;
        double r4373242 = r4373239 * r4373239;
        double r4373243 = r4373213 / r4373242;
        double r4373244 = r4373241 * r4373243;
        double r4373245 = 1.4951274135627082e+288;
        bool r4373246 = r4373215 <= r4373245;
        double r4373247 = r4373246 ? r4373226 : r4373222;
        double r4373248 = r4373238 ? r4373244 : r4373247;
        double r4373249 = r4373228 ? r4373236 : r4373248;
        double r4373250 = r4373224 ? r4373226 : r4373249;
        double r4373251 = r4373217 ? r4373222 : r4373250;
        return r4373251;
}

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

Derivation

  1. Split input into 4 regimes
  2. if (* a1 a2) < -4.209800947527883e+175 or 1.4951274135627082e+288 < (* a1 a2)

    1. Initial program 38.1

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

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

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

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

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

    if -4.209800947527883e+175 < (* a1 a2) < -1.856528697270096e-61 or 2.5035993978499362e-275 < (* a1 a2) < 1.4951274135627082e+288

    1. Initial program 4.8

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

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

    if -1.856528697270096e-61 < (* a1 a2) < -4.151349519826297e-252

    1. Initial program 4.6

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

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

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

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

      \[\leadsto a1 \cdot \color{blue}{\frac{\frac{a2}{b2}}{b1}}\]
    8. Using strategy rm
    9. Applied add-cube-cbrt11.0

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

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

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

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

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

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

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

    if -4.151349519826297e-252 < (* a1 a2) < 2.5035993978499362e-275

    1. Initial program 18.0

      \[\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}}\]
    4. Using strategy rm
    5. Applied div-inv3.0

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

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

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

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

      \[\leadsto a1 \cdot \frac{\frac{a2}{\color{blue}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b2}\right) \cdot \sqrt[3]{b2}}}}{1 \cdot b1}\]
    11. Applied *-un-lft-identity3.7

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

      \[\leadsto a1 \cdot \frac{\color{blue}{\frac{1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}} \cdot \frac{a2}{\sqrt[3]{b2}}}}{1 \cdot b1}\]
    13. Applied times-frac3.5

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -4.209800947527883 \cdot 10^{+175}:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\ \mathbf{elif}\;a1 \cdot a2 \le -1.856528697270096 \cdot 10^{-61}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.151349519826297 \cdot 10^{-252}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{b2}}{\sqrt[3]{b1}} \cdot \left(a1 \cdot \left(\frac{\sqrt[3]{a2}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a2}}{\sqrt[3]{b1}}\right)\right)\\ \mathbf{elif}\;a1 \cdot a2 \le 2.5035993978499362 \cdot 10^{-275}:\\ \;\;\;\;\frac{\frac{a2}{\sqrt[3]{b2}}}{b1} \cdot \frac{a1}{\sqrt[3]{b2} \cdot \sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.4951274135627082 \cdot 10^{+288}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;a1 \cdot \frac{\frac{a2}{b2}}{b1}\\ \end{array}\]

Reproduce

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

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

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