Kernel-independent FMM