Rectangle Multiplication  

For rectangles i use the notation _{p}R_{q} to stand for a p by q rectangle with the special case
_{p}N_{q} where alll numbers are in sequential order also I assume the multiplier is using the analitic numberrange ie: _{p}N_{q}[x,y] = x + py ; x = 0..p1 ; y = 0..q1 the p by q "normal" rectangle abreviation N_{p} = _{p}N_{p} the order p "normal" square 

Basic Formula 
_{pr}T_{qs}[x,y] = (_{p}D_{q} * _{r}M_{s})[x,y] =
_{r}M_{s}[x%r,y%s] + _{p}D_{q}[(x\r),(y\s)] rs ; x = 0..pr1 ; y = 0..qs 

ie place a copy of M at each position of D augmented by that element times the amount of numbers in M 

divisor '/' modulator '%' 
_{pr}T_{qs} = _{p}D_{q} * _{r}M_{s} ==> _{pr}T_{qs} / _{r}M_{s} = _{p}D_{q} and _{pr}T_{qs} % _{p}D_{q} = _{r}M_{s}  
note due to the fact that _{r}M_{s} * _{p}D_{q} <>
_{p}D_{q} * _{r}M_{s} the operators are complementry one might call them 'left' and 'right' divisors (which might the the more regular names) 

General formula "Normal Rectangle Product" 
Multiplication of normal rectangles can be put in one general formula which allows to generate "Generating squares" more easily 

(_{i=0}∏^{n} _{pi}N_{qi})[x,y] =
_{i=0}∑^{n} _{k=0}∏^{i} p_{k}q_{k} { ([x % _{k=0}∏^{i} p_{k}] \ _{k=0}∏^{i1} p_{k}) + p_{n} ([y % _{k=0}∏^{i} q_{k}] \ _{k=0}∏^{i1} q_{k}) }; _{i=0}∏^{n} p_{i} = _{i=0}∏^{n} q_{i} = m; x,y = 0..m1 

Examples up till 4 rectangles: (_{p}N_{q} * _{r}N_{s})[x,y] = (x%r) + r (y%s) + rs [(x\r) + p (y\s)] (_{t}N_{u} * _{p}N_{q} * _{r}N_{s})[x,y] = (x%r) + r (y%s) + rs [((x%pr)\r) + p ((y%qs)\s)] + pqrs [(x\pr) + t (y\qs)] (_{v}N_{w} * _{t}N_{u} * _{p}N_{q} * _{r}N_{s})[x,y] = (x%r) + r (y%s) + rs [((x%pr)\r) + p ((y%qs)\s)] + pqrs [((x%prt)\pr) + t ((y%qsu)\qs)] + pqrstu [(x\prt + v (y\qsu)] 

Notable identities 
_{1}N_{p} = _{p}N_{1}^{t} (by definition) _{1}N_{q} * _{p}N_{1} = _{p}N_{q} _{p}N_{1} * _{1}N_{q} = _{p}N_{q}^{t} _{p}N_{q}^{t} * _{r}N_{s} = _{p}N_{1} * _{r}N_{ps} _{p}N_{q} * _{r}N_{1} = _{pr}N_{q} 

(_{1}N_{q} * _{p}N_{1})[x,y] = (x%q) + p(y%1) + p[(x\p) + 1(y\1)] = x + py = _{p}N_{q}[x,y] (_{p}N_{1} * _{1}N_{q})[x,y] = (x%1) + 1(y%q) + q[(x\1) + p(y\q)] = y + qx = _{q}N_{p}[y,x] = (_{p}N_{q}[x,y])^{t} also: _{p}N_{q}^{t} = (_{1}N_{q} * _{p}N_{1})^{t} = _{1}N_{q}^{t} * _{p}N_{1}^{t} = _{q}N_{1} * _{1}N_{p} = _{q}N_{p} (_{p}N_{q}^{t} * _{r}N_{s})[x,y] = _{q}N_{p}[y,x] * _{r}N_{s}[x,y] = (x%r) + r (y%s) + rs [(y\r) + p (x\s)] = (x%r) + prs (x\s) + r (y%s) + rs (y\r) = (x%r) + prs (x\s) + r (y%ps) = (_{p}N_{1} * _{r}N_{ps})[x,y] (_{p}N_{q} * _{r}N_{1})[x,y] = (x%r) + pr (x\r) + rpy = (x%pr) + rpy = x + rpy = _{rp}N_{q}[x,y] note: things needs verification before Q.E.D.! 