Average Error: 10.8 → 11.0
Time: 14.8s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\frac{\frac{a1 \cdot a2}{b1}}{b2}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\frac{\frac{a1 \cdot a2}{b1}}{b2}
double f(double a1, double a2, double b1, double b2) {
        double r141891 = a1;
        double r141892 = a2;
        double r141893 = r141891 * r141892;
        double r141894 = b1;
        double r141895 = b2;
        double r141896 = r141894 * r141895;
        double r141897 = r141893 / r141896;
        return r141897;
}

double f(double a1, double a2, double b1, double b2) {
        double r141898 = a1;
        double r141899 = a2;
        double r141900 = r141898 * r141899;
        double r141901 = b1;
        double r141902 = r141900 / r141901;
        double r141903 = b2;
        double r141904 = r141902 / r141903;
        return r141904;
}

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

Original10.8
Target11.7
Herbie11.0
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 4 regimes
  2. if (* a1 a2) < -3.6160475663182616e+189 or 3.0277503863756097e+132 < (* a1 a2)

    1. Initial program 27.7

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

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

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

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

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

    if -3.6160475663182616e+189 < (* a1 a2) < -4.586910408345106e-202

    1. Initial program 4.1

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

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

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

    if -4.586910408345106e-202 < (* a1 a2) < 1.6268561300982777e-203

    1. Initial program 14.5

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

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

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

      \[\leadsto \frac{\color{blue}{\frac{a1}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \frac{a2}{\sqrt[3]{b1}}}}{b2}\]
    7. Applied associate-/l*3.7

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

    if 1.6268561300982777e-203 < (* a1 a2) < 3.0277503863756097e+132

    1. Initial program 3.8

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

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

      \[\leadsto \frac{\frac{a1 \cdot a2}{b1}}{\color{blue}{1 \cdot b2}}\]
    6. Applied div-inv3.8

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

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

      \[\leadsto \color{blue}{\left(a1 \cdot a2\right)} \cdot \frac{\frac{1}{b1}}{b2}\]
  3. Recombined 4 regimes into one program.
  4. Final simplification11.0

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

Reproduce

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

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

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