Example 2 

By [HanZhuang2009], for dilation factor d = 2,  intpolating constant r= 2, and any hermite order h. Let L=2*(h+1).  

Then for any support constant K,  there exists a unique mask supported on [1-K,K] satisfies sum rules of order (h+1)*(2*K-1).
and the mask has symmetry:
                                  a(1/z)=diag(P,P*1/z^2)a(z)diag(P,P*z),
where P = diag((-1)^0,(-1)^1,...,(-1)^h).
The following example is for d=r=2; h=2; Then L=6. Set K=1. the mask is support on [0,1] and satisfies sum rules of order 3*1=3;
 

> restart; 1; read
 

> `assign`(d, 2); 1; `assign`(r, 2); 1; `assign`(h, 2); 1
 

 

 

`assign`(d, 2)
`assign`(r, 2)
`assign`(h, 2) (7.4.1)
 

> `assign`(multi, `*`(r, `*`(`+`(h, 1)))); 1
 

`assign`(multi, 6) (7.4.2)
 

> `assign`(poly, D1GenPolyMask(a, multi, 0, 1)); 1
 

`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
`assign`(poly, Matrix(%id = 168130604))
(7.4.3)
 

> `assign`(eq1, D1GHInterpolatoryMaskEqs(poly, d, h)); 1
 

`assign`(eq1, {a101c1, a102c0, a102c1, a103c0, a103c1, a201c0, a201c1, a202c1, a203c0, a203c1, a301c0, a301c1, a302c0, a302c1, a303c1, a401c0, a402c0, a402c1, a403c0, a403c1, a501c0, a501c1, a502c0, a...
`assign`(eq1, {a101c1, a102c0, a102c1, a103c0, a103c1, a201c0, a201c1, a202c1, a203c0, a203c1, a301c0, a301c1, a302c0, a302c1, a303c1, a401c0, a402c0, a402c1, a403c0, a403c1, a501c0, a501c1, a502c0, a...
`assign`(eq1, {a101c1, a102c0, a102c1, a103c0, a103c1, a201c0, a201c1, a202c1, a203c0, a203c1, a301c0, a301c1, a302c0, a302c1, a303c1, a401c0, a402c0, a402c1, a403c0, a403c1, a501c0, a501c1, a502c0, a...
`assign`(eq1, {a101c1, a102c0, a102c1, a103c0, a103c1, a201c0, a201c1, a202c1, a203c0, a203c1, a301c0, a301c1, a302c0, a302c1, a303c1, a401c0, a402c0, a402c1, a403c0, a403c1, a501c0, a501c1, a502c0, a...
(7.4.4)
 

> `assign`(sln1, solve(eq1)); 1
 

`assign`(sln1, {a101c0 = `/`(1, 2), a101c1 = 0, a102c0 = 0, a102c1 = 0, a103c0 = 0, a103c1 = 0, a201c0 = 0, a201c1 = 0, a202c0 = `/`(1, 4), a202c1 = 0, a203c0 = 0, a203c1 = 0, a301c0 = 0, a301c1 = 0, ...
`assign`(sln1, {a101c0 = `/`(1, 2), a101c1 = 0, a102c0 = 0, a102c1 = 0, a103c0 = 0, a103c1 = 0, a201c0 = 0, a201c1 = 0, a202c0 = `/`(1, 4), a202c1 = 0, a203c0 = 0, a203c1 = 0, a301c0 = 0, a301c1 = 0, ...
`assign`(sln1, {a101c0 = `/`(1, 2), a101c1 = 0, a102c0 = 0, a102c1 = 0, a103c0 = 0, a103c1 = 0, a201c0 = 0, a201c1 = 0, a202c0 = `/`(1, 4), a202c1 = 0, a203c0 = 0, a203c1 = 0, a301c0 = 0, a301c1 = 0, ...
`assign`(sln1, {a101c0 = `/`(1, 2), a101c1 = 0, a102c0 = 0, a102c1 = 0, a103c0 = 0, a103c1 = 0, a201c0 = 0, a201c1 = 0, a202c0 = `/`(1, 4), a202c1 = 0, a203c0 = 0, a203c1 = 0, a301c0 = 0, a301c1 = 0, ...
`assign`(sln1, {a101c0 = `/`(1, 2), a101c1 = 0, a102c0 = 0, a102c1 = 0, a103c0 = 0, a103c1 = 0, a201c0 = 0, a201c1 = 0, a202c0 = `/`(1, 4), a202c1 = 0, a203c0 = 0, a203c1 = 0, a301c0 = 0, a301c1 = 0, ...
(7.4.5)
 

> `assign`(poly1, subs(sln1, poly)); 1
 

`assign`(poly1, Matrix(%id = 194020768)) (7.4.6)
 

> `assign`(eq2, D1GHIMaskSumRuleEqs(poly1, d, h, 3)); 1
 

`assign`(eq2, {`+`(`*`(2, `*`(a105c0)), `*`(2, `*`(a405c0))), `+`(`*`(2, `*`(a105c1)), `*`(2, `*`(a405c1))), `+`(`*`(2, `*`(a106c0)), `*`(2, `*`(a406c0))), `+`(`*`(2, `*`(a106c1)), `*`(2, `*`(a406c1))...
`assign`(eq2, {`+`(`*`(2, `*`(a105c0)), `*`(2, `*`(a405c0))), `+`(`*`(2, `*`(a105c1)), `*`(2, `*`(a405c1))), `+`(`*`(2, `*`(a106c0)), `*`(2, `*`(a406c0))), `+`(`*`(2, `*`(a106c1)), `*`(2, `*`(a406c1))...
`assign`(eq2, {`+`(`*`(2, `*`(a105c0)), `*`(2, `*`(a405c0))), `+`(`*`(2, `*`(a105c1)), `*`(2, `*`(a405c1))), `+`(`*`(2, `*`(a106c0)), `*`(2, `*`(a406c0))), `+`(`*`(2, `*`(a106c1)), `*`(2, `*`(a406c1))...
`assign`(eq2, {`+`(`*`(2, `*`(a105c0)), `*`(2, `*`(a405c0))), `+`(`*`(2, `*`(a105c1)), `*`(2, `*`(a405c1))), `+`(`*`(2, `*`(a106c0)), `*`(2, `*`(a406c0))), `+`(`*`(2, `*`(a106c1)), `*`(2, `*`(a406c1))...
`assign`(eq2, {`+`(`*`(2, `*`(a105c0)), `*`(2, `*`(a405c0))), `+`(`*`(2, `*`(a105c1)), `*`(2, `*`(a405c1))), `+`(`*`(2, `*`(a106c0)), `*`(2, `*`(a406c0))), `+`(`*`(2, `*`(a106c1)), `*`(2, `*`(a406c1))...
`assign`(eq2, {`+`(`*`(2, `*`(a105c0)), `*`(2, `*`(a405c0))), `+`(`*`(2, `*`(a105c1)), `*`(2, `*`(a405c1))), `+`(`*`(2, `*`(a106c0)), `*`(2, `*`(a406c0))), `+`(`*`(2, `*`(a106c1)), `*`(2, `*`(a406c1))...
`assign`(eq2, {`+`(`*`(2, `*`(a105c0)), `*`(2, `*`(a405c0))), `+`(`*`(2, `*`(a105c1)), `*`(2, `*`(a405c1))), `+`(`*`(2, `*`(a106c0)), `*`(2, `*`(a406c0))), `+`(`*`(2, `*`(a106c1)), `*`(2, `*`(a406c1))...
`assign`(eq2, {`+`(`*`(2, `*`(a105c0)), `*`(2, `*`(a405c0))), `+`(`*`(2, `*`(a105c1)), `*`(2, `*`(a405c1))), `+`(`*`(2, `*`(a106c0)), `*`(2, `*`(a406c0))), `+`(`*`(2, `*`(a106c1)), `*`(2, `*`(a406c1))...
(7.4.7)
 

> `assign`(sln2, solve(eq2)); 1
 

`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
`assign`(sln2, {a104c0 = `+`(`/`(3, 8), `*`(8, `*`(a304c0)), `*`(4, `*`(a504c0)), `*`(8, `*`(a604c0))), a104c1 = `+`(`-`(`/`(5, 8)), `*`(8, `*`(a304c1)), `*`(8, `*`(a604c1)), `*`(4, `*`(a504c1))), a10...
(7.4.8)
 

> `assign`(poly2, subs(sln2, poly1)); -1
 

> `assign`(eq3, D1GHIMaskSymEqs(poly2, h)); 1
 

`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
`assign`(eq3, {0, a304c0, a304c1, a305c0, a305c1, a306c0, a306c1, `+`(`-`(a304c0)), `+`(`-`(a304c1)), `+`(`-`(a306c0)), `+`(`-`(a306c1)), `+`(a504c1, a504c0), `+`(a505c0, `-`(a505c1)), `+`(a505c1, `-`...
(7.4.9)
 

> `assign`(sln3, solve(eq3)); 1
 

`assign`(sln3, {a304c0 = 0, a304c1 = 0, a305c0 = 0, a305c1 = 0, a306c0 = 0, a306c1 = 0, a504c0 = -`/`(1, 8), a504c1 = `/`(1, 8), a505c0 = `/`(1, 4), a505c1 = `/`(1, 4), a506c0 = 0, a506c1 = 0, a604c0 ...
`assign`(sln3, {a304c0 = 0, a304c1 = 0, a305c0 = 0, a305c1 = 0, a306c0 = 0, a306c1 = 0, a504c0 = -`/`(1, 8), a504c1 = `/`(1, 8), a505c0 = `/`(1, 4), a505c1 = `/`(1, 4), a506c0 = 0, a506c1 = 0, a604c0 ...
`assign`(sln3, {a304c0 = 0, a304c1 = 0, a305c0 = 0, a305c1 = 0, a306c0 = 0, a306c1 = 0, a504c0 = -`/`(1, 8), a504c1 = `/`(1, 8), a505c0 = `/`(1, 4), a505c1 = `/`(1, 4), a506c0 = 0, a506c1 = 0, a604c0 ...
(7.4.10)
 

> `assign`(poly3, subs(sln3, poly2)); 1
 

`assign`(poly3, Matrix(%id = 165761628)) (7.4.11)
 

>