-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prolate spheroidal wave function #462
Comments
I don't have much, at least not much that can be referenced. The function I use is a slightly generalized version of your exponential-of-semicircle kernel, with the square root replaced by an exponentiation with a new free parameter, which is of course in the vicinity of 0.5 (equation 29 in https://arxiv.org/abs/2010.10122). I can offer some very hackish Python code which tries to find near optimal kernel parameters when provided with a kernel support width and an oversampling factor. This is https://gitlab.mpcdf.mpg.de/mtr/ducc/-/blob/ducc0/not_yet_integrated/kernel_helper_new.py?ref_type=heads Using this code, I have built my kernel "database" for a grid of support widths and oversampling factors. Please note that I'm using an enhanced error model to determine the accuracy of the resulting kernel, which has more components than that of finufft; it avoids the weird feature of degrading accuracy while "improving" the kernel when getting close to the machine epsilon. You may get better results overall with well-tuned prolate spheroidal wave functions, but I don't expect a really siginificant improvement. The standard ES kernel is already really good, and the additional parameter doesn't gain very much. |
@DiamonDinoia would you test first if, for opts.kerevalmeth=1 only, switching from the "reference" evaluate_kernel in finufft.cpp:onedim_* to your templated ker_eval causes negligible change in errors... thanks, Alex |
I do not see any difference between master and vector two using spreadtestall. I could print more digits to see if there are differences that escape the print. |
Hi Marco, I'm talking about finufft itself, which uses "reference" (not
Horner) kernel in onedim_* - best, Alex
…On Mon, Jun 24, 2024 at 7:45 PM Marco Barbone ***@***.***> wrote:
I do not see any difference between master and vector two using
spreadtestall. I could print more digits to see if there are differences
that escape the print.
—
Reply to this email directly, view it on GitHub
<#462 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ACNZRSXEIPP43HTBOOTPLFLZJCVS3AVCNFSM6AAAAABJWDTZISVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCOBXGY2DENJYGQ>
.
You are receiving this because you commented.Message ID:
***@***.***>
--
*-------------------------------------------------------------------~^`^~._.~'
|\ Alex Barnett Center for Computational Mathematics, Flatiron Institute
| \ http://users.flatironinstitute.org/~ahb 646-876-5942
|
I'm currently working on generalizing |
Update: the current HEAD of the |
I've added Kaiser-Bessel functions to the test script; concerning accuracy, they seem to lie between standard ES and generalized ES kernels. |
#541 adds the kernel evaluator I need for the fseries usage. To do. |
@mreineck you mentioned in the past that by playing with the parameters of the spreading function it is possible to achieve more digits at the same width. Do you have a summary of your experiments that we can use as a reference?
On our side we are thinking on moving to: Prolate. More readings DMK.
The reason Prolate was not used in the past is because is expensive to evaluate at runtime. But this is not an issue anymore since we tabulate the function.
The text was updated successfully, but these errors were encountered: