# # MAPLE file: bb4mult # runs under: Maple V Release 3 # author: J"org Peters, jorg@cs.purdue.edu # date: Aug 1995 # # multiply two bivariate polynomials in tensor BB-form # #----------------------------------------------------------------- bb4mult := proc(b1, d1u, d1v, b2, d2u, d2v) # bi: array(0..di) # di: degrees #----------------------------------------------------------------- local i,j,u1,u2,v1,v2, mu,mv, du,dv,out: if nargs <> 6 then ERROR(`[bb4mult] wrong number of arguments`): fi: du := d1u + d2u: dv := d1v + d2v: for i from 0 to du do for j from 0 to dv do out[i,du-i][j,dv-j] := 0; od: od: for u1 from 0 to d1u do for u2 from 0 to d2u do mu := binomial(d1u,u1)*binomial(d2u,u2)/binomial(d1u+d2u,u1+u2); for v1 from 0 to d1v do for v2 from 0 to d2v do mv := binomial(d1v,v1)*binomial(d2v,v2)/ binomial(d1v+d2v,v1+v2); out[u1+u2,du-(u1+u2)][v1+v2, dv-(v1+v2)] := out[u1+u2,du-(u1+u2)][v1+v2, dv-(v1+v2)] + mu*mv* b1[u1,d1u-u1][v1,d1v-v1]*b2[u2,d2u-u2][v2,d2v-v2]; od:od:od:od: out; end: #----------------------------------------------------------------- test := 0: if test = 1 then dg := 1: b1[0,1][0,1] := 1: b1[1,0][0,1] := 1: b1[0,1][1,0] := 1: b1[1,0][1,0] := 1: b2[0,1][0,1] := 1: b2[1,0][0,1] := 2: b2[0,1][1,0] := 3: b2[1,0][1,0] := 4: bb := bb4mult(b1,dg,dg,b2,dg,dg): print(bb); fi: