Average Error: 11.4 → 4.9
Time: 15.3s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -6.898490520999014 \cdot 10^{+277}:\\ \;\;\;\;\frac{\frac{1}{b1}}{\frac{\frac{1}{a2}}{\frac{a1}{b2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -9.006559789728174 \cdot 10^{-250}:\\ \;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.30715975193335 \cdot 10^{-196}:\\ \;\;\;\;\frac{\frac{a1}{b1}}{\frac{b2}{a2}}\\ \mathbf{elif}\;b1 \cdot b2 \le 7.676958632971629 \cdot 10^{+257}:\\ \;\;\;\;\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\frac{b2}{\sqrt[3]{a2}}} \cdot \frac{1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -6.898490520999014 \cdot 10^{+277}:\\
\;\;\;\;\frac{\frac{1}{b1}}{\frac{\frac{1}{a2}}{\frac{a1}{b2}}}\\

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

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

\mathbf{elif}\;b1 \cdot b2 \le 7.676958632971629 \cdot 10^{+257}:\\
\;\;\;\;\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r3394011 = a1;
        double r3394012 = a2;
        double r3394013 = r3394011 * r3394012;
        double r3394014 = b1;
        double r3394015 = b2;
        double r3394016 = r3394014 * r3394015;
        double r3394017 = r3394013 / r3394016;
        return r3394017;
}

double f(double a1, double a2, double b1, double b2) {
        double r3394018 = b1;
        double r3394019 = b2;
        double r3394020 = r3394018 * r3394019;
        double r3394021 = -6.898490520999014e+277;
        bool r3394022 = r3394020 <= r3394021;
        double r3394023 = 1.0;
        double r3394024 = r3394023 / r3394018;
        double r3394025 = a2;
        double r3394026 = r3394023 / r3394025;
        double r3394027 = a1;
        double r3394028 = r3394027 / r3394019;
        double r3394029 = r3394026 / r3394028;
        double r3394030 = r3394024 / r3394029;
        double r3394031 = -9.006559789728174e-250;
        bool r3394032 = r3394020 <= r3394031;
        double r3394033 = r3394025 / r3394020;
        double r3394034 = r3394027 * r3394033;
        double r3394035 = 1.30715975193335e-196;
        bool r3394036 = r3394020 <= r3394035;
        double r3394037 = r3394027 / r3394018;
        double r3394038 = r3394019 / r3394025;
        double r3394039 = r3394037 / r3394038;
        double r3394040 = 7.676958632971629e+257;
        bool r3394041 = r3394020 <= r3394040;
        double r3394042 = r3394027 / r3394020;
        double r3394043 = r3394042 / r3394026;
        double r3394044 = cbrt(r3394025);
        double r3394045 = r3394019 / r3394044;
        double r3394046 = r3394027 / r3394045;
        double r3394047 = r3394044 * r3394044;
        double r3394048 = r3394018 / r3394047;
        double r3394049 = r3394023 / r3394048;
        double r3394050 = r3394046 * r3394049;
        double r3394051 = r3394041 ? r3394043 : r3394050;
        double r3394052 = r3394036 ? r3394039 : r3394051;
        double r3394053 = r3394032 ? r3394034 : r3394052;
        double r3394054 = r3394022 ? r3394030 : r3394053;
        return r3394054;
}

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

Derivation

  1. Split input into 5 regimes
  2. if (* b1 b2) < -6.898490520999014e+277

    1. Initial program 20.9

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

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

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

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

      \[\leadsto \frac{\frac{\color{blue}{1 \cdot a1}}{b1 \cdot b2}}{\frac{1}{a2}}\]
    9. Applied times-frac7.2

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

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

    if -6.898490520999014e+277 < (* b1 b2) < -9.006559789728174e-250

    1. Initial program 5.0

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

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

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

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

      \[\leadsto \frac{\frac{a1}{b1 \cdot b2}}{\color{blue}{1 \cdot \frac{1}{a2}}}\]
    9. Applied div-inv4.9

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

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

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

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

    if -9.006559789728174e-250 < (* b1 b2) < 1.30715975193335e-196

    1. Initial program 35.6

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

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

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

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{1} \cdot \frac{b2}{a2}}}\]
    7. Applied associate-/r*10.0

      \[\leadsto \color{blue}{\frac{\frac{a1}{\frac{b1}{1}}}{\frac{b2}{a2}}}\]
    8. Simplified10.0

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

    if 1.30715975193335e-196 < (* b1 b2) < 7.676958632971629e+257

    1. Initial program 5.0

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

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

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

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

    if 7.676958632971629e+257 < (* b1 b2)

    1. Initial program 18.3

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

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

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

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied *-un-lft-identity7.9

      \[\leadsto \frac{\color{blue}{1 \cdot a1}}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}\]
    8. Applied times-frac2.4

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -6.898490520999014 \cdot 10^{+277}:\\ \;\;\;\;\frac{\frac{1}{b1}}{\frac{\frac{1}{a2}}{\frac{a1}{b2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -9.006559789728174 \cdot 10^{-250}:\\ \;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.30715975193335 \cdot 10^{-196}:\\ \;\;\;\;\frac{\frac{a1}{b1}}{\frac{b2}{a2}}\\ \mathbf{elif}\;b1 \cdot b2 \le 7.676958632971629 \cdot 10^{+257}:\\ \;\;\;\;\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\frac{b2}{\sqrt[3]{a2}}} \cdot \frac{1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\\ \end{array}\]

Reproduce

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

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

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