Average Error: 11.4 → 4.9
Time: 11.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 r2229920 = a1;
        double r2229921 = a2;
        double r2229922 = r2229920 * r2229921;
        double r2229923 = b1;
        double r2229924 = b2;
        double r2229925 = r2229923 * r2229924;
        double r2229926 = r2229922 / r2229925;
        return r2229926;
}

double f(double a1, double a2, double b1, double b2) {
        double r2229927 = b1;
        double r2229928 = b2;
        double r2229929 = r2229927 * r2229928;
        double r2229930 = -6.898490520999014e+277;
        bool r2229931 = r2229929 <= r2229930;
        double r2229932 = 1.0;
        double r2229933 = r2229932 / r2229927;
        double r2229934 = a2;
        double r2229935 = r2229932 / r2229934;
        double r2229936 = a1;
        double r2229937 = r2229936 / r2229928;
        double r2229938 = r2229935 / r2229937;
        double r2229939 = r2229933 / r2229938;
        double r2229940 = -9.006559789728174e-250;
        bool r2229941 = r2229929 <= r2229940;
        double r2229942 = r2229934 / r2229929;
        double r2229943 = r2229936 * r2229942;
        double r2229944 = 1.30715975193335e-196;
        bool r2229945 = r2229929 <= r2229944;
        double r2229946 = r2229936 / r2229927;
        double r2229947 = r2229928 / r2229934;
        double r2229948 = r2229946 / r2229947;
        double r2229949 = 7.676958632971629e+257;
        bool r2229950 = r2229929 <= r2229949;
        double r2229951 = r2229936 / r2229929;
        double r2229952 = r2229951 / r2229935;
        double r2229953 = cbrt(r2229934);
        double r2229954 = r2229928 / r2229953;
        double r2229955 = r2229936 / r2229954;
        double r2229956 = r2229953 * r2229953;
        double r2229957 = r2229927 / r2229956;
        double r2229958 = r2229932 / r2229957;
        double r2229959 = r2229955 * r2229958;
        double r2229960 = r2229950 ? r2229952 : r2229959;
        double r2229961 = r2229945 ? r2229948 : r2229960;
        double r2229962 = r2229941 ? r2229943 : r2229961;
        double r2229963 = r2229931 ? r2229939 : r2229962;
        return r2229963;
}

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 *-un-lft-identity4.9

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

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

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

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

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

      \[\leadsto \color{blue}{a1} \cdot \frac{\frac{1}{b1 \cdot b2}}{\frac{\sqrt[3]{1}}{a2}}\]
    14. 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)))