Average Error: 10.5 → 10.8
Time: 8.6s
Precision: 64
Internal Precision: 576
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;b1 \le -6.136773016984138 \cdot 10^{+103}:\\ \;\;\;\;\frac{a2}{b1} \cdot \left(a1 \cdot \frac{1}{b2}\right)\\ \mathbf{elif}\;b1 \le -1.9118140841034162 \cdot 10^{-219}:\\ \;\;\;\;\left(\frac{a2}{b2} \cdot a1\right) \cdot \frac{1}{b1}\\ \mathbf{elif}\;b1 \le -8.133470980058762 \cdot 10^{-308}:\\ \;\;\;\;\frac{\frac{a2}{b2}}{b1} \cdot a1\\ \mathbf{elif}\;b1 \le 3.6026389828475524 \cdot 10^{-10}:\\ \;\;\;\;\left(\frac{a2}{b2} \cdot a1\right) \cdot \frac{1}{b1}\\ \mathbf{else}:\\ \;\;\;\;\frac{a2}{b1} \cdot \left(a1 \cdot \frac{1}{b2}\right)\\ \end{array}\]

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.5
Target10.3
Herbie10.8
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 3 regimes
  2. if b1 < -6.136773016984138e+103 or 3.6026389828475524e-10 < b1

    1. Initial program 9.5

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Initial simplification10.1

      \[\leadsto \frac{a1}{b2} \cdot \frac{a2}{b1}\]
    3. Using strategy rm
    4. Applied div-inv10.1

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

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

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

    if -6.136773016984138e+103 < b1 < -1.9118140841034162e-219 or -8.133470980058762e-308 < b1 < 3.6026389828475524e-10

    1. Initial program 10.9

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Initial simplification11.6

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

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

      \[\leadsto \color{blue}{a1 \cdot \left(\frac{1}{b2} \cdot \frac{a2}{b1}\right)}\]
    6. Using strategy rm
    7. Applied pow111.8

      \[\leadsto a1 \cdot \left(\frac{1}{b2} \cdot \color{blue}{{\left(\frac{a2}{b1}\right)}^{1}}\right)\]
    8. Applied pow111.8

      \[\leadsto a1 \cdot \left(\color{blue}{{\left(\frac{1}{b2}\right)}^{1}} \cdot {\left(\frac{a2}{b1}\right)}^{1}\right)\]
    9. Applied pow-prod-down11.8

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

      \[\leadsto a1 \cdot {\color{blue}{\left(\frac{\frac{a2}{b2}}{b1}\right)}}^{1}\]
    11. Using strategy rm
    12. Applied div-inv10.7

      \[\leadsto a1 \cdot {\color{blue}{\left(\frac{a2}{b2} \cdot \frac{1}{b1}\right)}}^{1}\]
    13. Applied unpow-prod-down10.7

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

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

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

    if -1.9118140841034162e-219 < b1 < -8.133470980058762e-308

    1. Initial program 17.2

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Initial simplification20.5

      \[\leadsto \frac{a1}{b2} \cdot \frac{a2}{b1}\]
    3. Using strategy rm
    4. Applied div-inv20.6

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

      \[\leadsto \color{blue}{a1 \cdot \left(\frac{1}{b2} \cdot \frac{a2}{b1}\right)}\]
    6. Using strategy rm
    7. Applied pow119.4

      \[\leadsto a1 \cdot \left(\frac{1}{b2} \cdot \color{blue}{{\left(\frac{a2}{b1}\right)}^{1}}\right)\]
    8. Applied pow119.4

      \[\leadsto a1 \cdot \left(\color{blue}{{\left(\frac{1}{b2}\right)}^{1}} \cdot {\left(\frac{a2}{b1}\right)}^{1}\right)\]
    9. Applied pow-prod-down19.4

      \[\leadsto a1 \cdot \color{blue}{{\left(\frac{1}{b2} \cdot \frac{a2}{b1}\right)}^{1}}\]
    10. Simplified18.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b1 \le -6.136773016984138 \cdot 10^{+103}:\\ \;\;\;\;\frac{a2}{b1} \cdot \left(a1 \cdot \frac{1}{b2}\right)\\ \mathbf{elif}\;b1 \le -1.9118140841034162 \cdot 10^{-219}:\\ \;\;\;\;\left(\frac{a2}{b2} \cdot a1\right) \cdot \frac{1}{b1}\\ \mathbf{elif}\;b1 \le -8.133470980058762 \cdot 10^{-308}:\\ \;\;\;\;\frac{\frac{a2}{b2}}{b1} \cdot a1\\ \mathbf{elif}\;b1 \le 3.6026389828475524 \cdot 10^{-10}:\\ \;\;\;\;\left(\frac{a2}{b2} \cdot a1\right) \cdot \frac{1}{b1}\\ \mathbf{else}:\\ \;\;\;\;\frac{a2}{b1} \cdot \left(a1 \cdot \frac{1}{b2}\right)\\ \end{array}\]

Runtime

Time bar (total: 8.6s)Debug logProfile

BaselineHerbieOracleSpan%
Regimes10.510.80.010.5-2.1%
herbie shell --seed 2018296 
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"

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

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