I need to write a function(s) that completely expands noncommutative multiplication over addition?
For example:
a ** (b + c^2)
would expand to
a ** b + a ** c^2<
The newest version of NCAlgebra supports ReplaceRepeated
through NCReplaceRepeated
.
Try this package which includes a noncommutative Expand as well as other functions rewritten for NC calculations.
From that package:
GExpand[a_, patt___] := Expand[a //. {x_NonCommutativeMultiply :> Distribute[x]}, patt];
In[1] := GExpand[a ** (b + c^2)]
Out[1] := a ** b + a ** c^2
In[2] := GExpand[a ** (b + c^2)] //. a -> foo
Out[2] := foo ** b + foo ** c^2