I am trying to understand how `ApproxFun.jl`

constructs 2D functions from their coefficients. In 1D, it all makes sense, for example:

```
julia> using ApproxFun
julia> f = Fun(Interval(-1, 1), [1,2,3])
Fun(Chebyshev(【-1.0,1.0】),[1.0,2.0,3.0])
julia> f(0.1)
-1.74
julia> 1 + 2*cos(acos(0.1)) + 3*cos(2acos(0.1))
-1.74
```

So, `ApproxFun`

just uses the coefficients f_k = [1,2,3] in the formula f(x) \approx \sum_k f_k \cos(k \acos(x)) (sorry about the bad formatting). You can see a similar discussion in this part of the docs, but what they don’t seem to discuss is what happens in 2D:

```
julia> f = Fun(Interval(-1, 1)^2, [1,2,3])
Fun(Chebyshev(【-1.0,1.0】)⊗Chebyshev(【-1.0,1.0】),[1.0,2.0,3.0])
julia> f(0.1, 0.1)
1.50
```

So how does `ApproxFun`

calculate `f(x, y)`

from `x`

, `y`

and the coefficients `[1,2,3]`

?