IndexSet<Index1D> LambdaForEigenvalues(int jmin, int jmax, const Basis1D &basis, T radius, bool with_BSplines) { const BSpline<T,Primal,R,CDF> phi = basis.mra.phi; const Wavelet<T,Primal,R,CDF> psi = basis.psi; IndexSet<Index1D> Lambda; int k_left, k_right; if (with_BSplines) { for (int j=jmin; j<=jmax; ++j) { k_left = std::floor(-pow2i<T>(j)*radius-psi.support(0,0).l2); k_right = std::ceil(pow2i<T>(j)*radius-psi.support(0,0).l1); for (int k=k_left; k<=k_right; ++k) { Lambda.insert(Index1D(j,k,XWavelet)); } } k_left = int(std::floor(-pow2i<T>(jmin)*radius-phi.support(0,0).l2)); k_right = int(std::ceil( pow2i<T>(jmin)*radius-phi.support(0,0).l1)); for (int k=k_left; k<=k_right; ++k) { Lambda.insert(Index1D(jmin,k,XBSpline)); } } else { for (int j=jmin; j<=jmax; ++j) { int k_left, k_right; if (j>=-6) { k_left = std::floor(-pow2i<T>(j)*radius-psi.support(0,0).l2); k_right = std::ceil(pow2i<T>(j)*radius-psi.support(0,0).l1); if (k_left>=0) cout << "j=" << j << ", k_left=" << k_left << endl; if (k_right<=0) cout << "j=" << j << ", k_right=" << k_right << endl; } else { k_left = -psi.d-psi.d_; k_right = psi.d+psi.d_; } for (int k=k_left; k<=k_right; ++k) { Lambda.insert(Index1D(j,k,XWavelet)); } } } return Lambda; }