``cIdag.m''

The Idag() operator now becomes ${\bf I}^\dagger=\left({\bf
{\bf F}_{(3)}} {\bf B}\right)^\dagger={\bf B}^\dagger
{\bf F}_{(3)}^\dagger$. Again, to implement this, you will need ``global gbl_active'' at the top of the function. In this case, it turns out that the output cIdag() is always a wave-function-like object (again, the lack of ``nonconformant'' errors ultimately confirms this) and the output should be allocated as

out=zeros(length(gbl_active),size(in,2));
Finally, the operation ${\bf B}^\dagger
\left({\mathcal F}^{(3)}\right)^\dagger$ may be implemented using a statement along the lines of
full=fft3(in(:,col),gbl_S,-1); out(:,col)=full(gbl_active);
Note that, because the output of cIdag() is always in the reduced, active space, the function requires no if statements in its implementation.



Tomas Arias 2007-04-26