{"id":22011220,"url":"https://github.com/jcelerier/pocketfft","last_synced_at":"2025-03-23T07:43:19.592Z","repository":{"id":149954886,"uuid":"443794748","full_name":"jcelerier/pocketfft","owner":"jcelerier","description":null,"archived":false,"fork":false,"pushed_at":"2022-01-02T15:05:09.000Z","size":172,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-28T14:33:40.256Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jcelerier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-02T15:04:55.000Z","updated_at":"2022-01-02T15:05:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"2f86a6c6-afa9-412d-b199-750f9e3f419e","html_url":"https://github.com/jcelerier/pocketfft","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcelerier%2Fpocketfft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcelerier%2Fpocketfft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcelerier%2Fpocketfft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcelerier%2Fpocketfft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcelerier","download_url":"https://codeload.github.com/jcelerier/pocketfft/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245072252,"owners_count":20556353,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-30T02:16:17.713Z","updated_at":"2025-03-23T07:43:19.569Z","avatar_url":"https://github.com/jcelerier.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"PocketFFT\n---------\n\nThis is a heavily modified implementation of FFTPack [1,2], with the following\nadvantages:\n\n- strictly C99 compliant\n- more accurate twiddle factor computation\n- very fast plan generation\n- worst case complexity for transform sizes with large prime factors is\n  `N*log(N)`, because Bluestein's algorithm [3] is used for these cases.\n\nLicense\n-------\n\n3-clause BSD (see LICENSE.md)\n\n\nSome code details\n-----------------\n\nTwiddle factor computation:\n\n- making use of symmetries to reduce number of sin/cos evaluations\n- all angles are reduced to the range `[0; pi/4]` for higher accuracy\n- an adapted implementation of `sincospi()` is used, which actually computes\n  `sin(x)` and `(cos(x)-1)`.\n- if `n` sin/cos pairs are required, the adjusted `sincospi()` is only called\n  `2*sqrt(n)` times; the remaining values are obtained by evaluating the\n  angle addition theorems in a numerically accurate way.\n\nParallel invocation:\n\n- Plans only contain read-only data; all temporary arrays are allocated and\n  deallocated during an individual FFT execution. This means that a single plan\n  can be used in several threads at the same time.\n\nEfficient codelets are available for the factors:\n\n- 2, 3, 4, 5, 7, 11 for complex-valued FFTs\n- 2, 3, 4, 5 for real-valued FFTs\n\nLarger prime factors are handled by somewhat less efficient, generic routines.\n\nFor lengths with very large prime factors, Bluestein's algorithm is used, and\ninstead of an FFT of length `n`, a convolution of length `n2 \u003e= 2*n-1`\nis performed, where `n2` is chosen to be highly composite.\n\n\n[1] Swarztrauber, P. 1982, Vectorizing the Fast Fourier Transforms\n    (New York: Academic Press), 51\n\n[2] https://www.netlib.org/fftpack/\n\n[3] https://en.wikipedia.org/wiki/Chirp_Z-transform\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcelerier%2Fpocketfft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcelerier%2Fpocketfft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcelerier%2Fpocketfft/lists"}