### expandwrt_denom

Run Example
```(%i1)1/(a*b), simp:true;
1
(%o1)                                 ---
a b
(%i2) 1/(a*b), simp:false;
1
(%o2)                                 ---
a b
(%i3) matchdeclare(a, atom);
(%o3)                                done
(%i4) matchdeclare(b, atom);
(%o4)                                done
(%i5) tellsimp(1/(a*b), simp:false, ((1/a)*(1/b)));
tellsimp: warning: putting rules on '+' or '*' is inefficient, and may not work.
(%o5)                         [*rule1, simptimes]
(%i6) tellsimpafter(1/(a*b), simp:false, ((1/a)*(1/b)));
(%o6)                     [*rule2, *rule1, simptimes]
(%i7) defrule(fraction, 1/(a*b),((1/a)*(1/b))), simp:false;
1
(%o7)                       fraction : --- -> false
a b
(%i8) 1/(a*b), simp:false;
1
(%o8)                                 ---
a b
(%i9) maxapplydepth:1;
(%o9)                                  1
(%i10) newfac;
(%o10)                              newfac
(%i11) fraction(1/(a*b));
1   1
(%o11)                              - (---)
1  a b
(%i12) factor(1/(a*b)), simp:false;
1
(%o12)                                ---
a b
(%i13) ratexpand:false;
(%o13)                               false
(%i14) expandwrt_denom:true;
(%o14)                               true
(%i15) 1/(a*b), fraction;
1
(%o15)                                ---
a b
(%i16) ```
Run Example
```globalsolve: true;
(%o1)                                true
(%i2) realonly: true;
(%o2)                                true
(%i3) /* Standard (x,y)->
(r,theta) coordinate translation */x(t) := r(t) * cos(theta(t));
(%o3)                     x(t) := r(t) cos(theta(t))
(%i4) y(t) := r(t) * sin(theta(t));
(%o4)                     y(t) := r(t) sin(theta(t))
(%i5) /* Constant course assumption */declare (slope,constant);
(%o5)                                done
(%i6) declare (slope,real);
(%o6)                                done
(%i7) declare (yintercept,constant);
(%o7)                                done
(%i8) declare (yintercept, real);
(%o8)                                done
(%i9) y(t)=slope * x(t) + yintercept;
(%o9)     r(t) sin(theta(t)) = slope r(t) cos(theta(t)) + yintercept
(%i10) eq1: y(t)=slope * x(t) + yintercept;
(%o10)    r(t) sin(theta(t)) = slope r(t) cos(theta(t)) + yintercept
(%i11) /* Constant speed assumption */declare (speedx,constant);
(%o11)                               done
(%i12) declare (speedx,real);
(%o12)                               done
(%i13) declare (c1, constant);
(%o13)                               done
(%i14) declare (c1, real);
(%o14)                               done
(%i15) eq2: x(t) = speedx * (t + c1);
(%o15)               r(t) cos(theta(t)) = speedx (t + c1)
(%i16) declare (c2, constant);
(%o16)                               done
(%i17) declare (c2, real);
(%o17)                               done
(%i18) eq3: y(t) = slope*speedx* (t + c1) + c2*speedx;
(%o18)      r(t) sin(theta(t)) = slope speedx (t + c1) + c2 speedx
(%i19) eq4: expandwrt_denom(rhs(eq3/eq2));
slope speedx (t + c1) + c2 speedx
(%o19)        expandwrt_denom(---------------------------------)
speedx (t + c1)
(%i20) ```
Run Example
```1/(a*b), simp:true;
1
(%o1)                                 ---
a b
(%i2) 1/(a*b), simp:false;
1
(%o2)                                 ---
a b
(%i3) matchdeclare(a, true);
(%o3)                                done
(%i4) matchdeclare(b, true);
(%o4)                                done
(%i5) tellsimp(1/(a*b), simp:false, ((1/a)*(1/b)));
tellsimp: warning: putting rules on '+' or '*' is inefficient, and may not work.
(%o5)                         [*rule1, simptimes]
(%i6) tellsimpafter(1/(a*b), simp:false, ((1/a)*(1/b)));
(%o6)                     [*rule2, *rule1, simptimes]
(%i7) defrule(fraction, 1/(a*b),((1/a)*(1/b))), simp:false;
1
(%o7)                       fraction : --- -> false
a b
(%i8) 1/(a*b), simp:false;
1
(%o8)                                 ---
a b
(%i9) maxapplydepth:1;
(%o9)                                  1
(%i10) newfac;
(%o10)                              newfac
(%i11) fraction(1/(a*b));
1   1
(%o11)                              - (---)
1  a b
(%i12) factor(1/(a*b)), simp:false;
1
(%o12)                                ---
a b
(%i13) ratexpand:true;
(%o13)                               true
(%i14) expandwrt_denom(1/(a*b));
1
(%o14)                       expandwrt_denom(---)
a b
(%i15) ```

### Related Help

Help for Expandwrt_denom