More Operators on Bivariate Funs

Below is a bit of a bug. It's an example of iterative solution of a system of an SIE and a PDE: PDE solve for a TensorFun which is the smooth part of the SIE kernel, and the SIE solution is one of the boundary values for the PDE. The problem is that, upon only one iteration, the bandwidth of the SIE's operator becomes large and addentries! (or something) is unable to evaluate even the position L_{1,1}. Yet, displaying L on screen works fine.

    using ApproxFun

    x = Fun(identity)
    d = domain(x)
    d2 = d^2
    B = dirichlet(d)
    B2 = dirichlet(d2)
    H2 = Hilbert(d,2)

    uSIE = Fun(one)
    uPDE = Fun((x,y)->1.0,d2)

    for i=1:2
        L = H2[uPDE]+4x
        println("The bandrange of L is: ",bandrange(L))
        println("And the 1,1 entry is: ",L[1,1])
        uSIE = [B,L]\[1.0,1.0]
        println("The length of uSIE is: ",length(uSIE))
        println("The extrema of uSIE are: ",extrema(uSIE))
        uPDE = [B2,-lap(d2)]\[uSIE,ones(3)]
        println("The rank of uPDE is: ",rank(LowRankFun(uPDE)))
    end

More specifically, if we take a rank one truncation of the uPDE, and insert this into H2, then with 4GB of RAM, my computer is just able to add an entry:

    test1 = LowRankFun(uPDE);
    test2 = LowRankFun(test1.A[1:1],test1.B[1:1]);
    L = H2[test2] + 4x;
    bandrange(L)
    @time L[1,1]

It would be helpful if the operators that didn't use this much memory.