Average Error: 11.4 → 4.9
Time: 13.9s
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 r1845935 = a1;
        double r1845936 = a2;
        double r1845937 = r1845935 * r1845936;
        double r1845938 = b1;
        double r1845939 = b2;
        double r1845940 = r1845938 * r1845939;
        double r1845941 = r1845937 / r1845940;
        return r1845941;
}

double f(double a1, double a2, double b1, double b2) {
        double r1845942 = b1;
        double r1845943 = b2;
        double r1845944 = r1845942 * r1845943;
        double r1845945 = -6.898490520999014e+277;
        bool r1845946 = r1845944 <= r1845945;
        double r1845947 = 1.0;
        double r1845948 = r1845947 / r1845942;
        double r1845949 = a2;
        double r1845950 = r1845947 / r1845949;
        double r1845951 = a1;
        double r1845952 = r1845951 / r1845943;
        double r1845953 = r1845950 / r1845952;
        double r1845954 = r1845948 / r1845953;
        double r1845955 = -9.006559789728174e-250;
        bool r1845956 = r1845944 <= r1845955;
        double r1845957 = r1845949 / r1845944;
        double r1845958 = r1845951 * r1845957;
        double r1845959 = 1.30715975193335e-196;
        bool r1845960 = r1845944 <= r1845959;
        double r1845961 = r1845951 / r1845942;
        double r1845962 = r1845943 / r1845949;
        double r1845963 = r1845961 / r1845962;
        double r1845964 = 7.676958632971629e+257;
        bool r1845965 = r1845944 <= r1845964;
        double r1845966 = r1845951 / r1845944;
        double r1845967 = r1845966 / r1845950;
        double r1845968 = cbrt(r1845949);
        double r1845969 = r1845943 / r1845968;
        double r1845970 = r1845951 / r1845969;
        double r1845971 = r1845968 * r1845968;
        double r1845972 = r1845942 / r1845971;
        double r1845973 = r1845947 / r1845972;
        double r1845974 = r1845970 * r1845973;
        double r1845975 = r1845965 ? r1845967 : r1845974;
        double r1845976 = r1845960 ? r1845963 : r1845975;
        double r1845977 = r1845956 ? r1845958 : r1845976;
        double r1845978 = r1845946 ? r1845954 : r1845977;
        return r1845978;
}

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}}{\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 
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"

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

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