Title: ComplexMultiply redundant operations · Issue #1679 · arrayfire/arrayfire · GitHub
Open Graph Title: ComplexMultiply redundant operations · Issue #1679 · arrayfire/arrayfire
X Title: ComplexMultiply redundant operations · Issue #1679 · arrayfire/arrayfire
Description: In the fftconvolve.hpp (and perhaps elsewhere) for CUDA (arrayfire/src/backend/cuda/kernel/fftconvolve.hpp) complex multiplies are performed like so: out.ptr[ridx2].x = c1.x*c2.x - c1.y*c2.y; out.ptr[ridx2].y = (c1.x+c1.y) * (c2.x+c2.y) ...
Open Graph Description: In the fftconvolve.hpp (and perhaps elsewhere) for CUDA (arrayfire/src/backend/cuda/kernel/fftconvolve.hpp) complex multiplies are performed like so: out.ptr[ridx2].x = c1.x*c2.x - c1.y*c2.y; out.p...
X Description: In the fftconvolve.hpp (and perhaps elsewhere) for CUDA (arrayfire/src/backend/cuda/kernel/fftconvolve.hpp) complex multiplies are performed like so: out.ptr[ridx2].x = c1.x*c2.x - c1.y*c2.y; out.p...
Opengraph URL: https://github.com/arrayfire/arrayfire/issues/1679
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"ComplexMultiply redundant operations","articleBody":"In the fftconvolve.hpp (and perhaps elsewhere) for CUDA (arrayfire/src/backend/cuda/kernel/fftconvolve.hpp) complex multiplies are performed like so:\r\n\r\n```\r\n out.ptr[ridx2].x = c1.x*c2.x - c1.y*c2.y;\r\n out.ptr[ridx2].y = (c1.x+c1.y) * (c2.x+c2.y) - c1.x*c2.x - c1.y*c2.y;\r\n```\r\n\r\nIs there a reason for this form for the multiply? It would appear to have several redundant operations that may reduce performance and do increase floating point propagation error.\r\n\r\nThe multiplies should be:\r\n\r\n```\r\n out.ptr[ridx2].x = c1.x*c2.x - c1.y*c2.y;\r\n out.ptr[ridx2].y = c1.x*c2.y + c1.y*c2.x;\r\n```\r\n","author":{"url":"https://github.com/ewanbarr","@type":"Person","name":"ewanbarr"},"datePublished":"2016-12-19T13:57:15.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/1679/arrayfire/issues/1679"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:d770f375-3bd2-a19a-4d7d-76c4c484e7e1 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | A53A:32375B:9E4C57:D325B3:6969C194 |
| html-safe-nonce | d37b5fa8eb1963fd3eb96f2c2e34f6f9abbafc2b19038c9122ef41d1b21e90d2 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBNTNBOjMyMzc1Qjo5RTRDNTc6RDMyNUIzOjY5NjlDMTk0IiwidmlzaXRvcl9pZCI6IjEzMDM2MjY2ODE4MTY4MjYyNjAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 5999b8fe00ac5fc82f5cdc4520b1a2a1e5fe9342efe9c2bef6f89225ba983539 |
| hovercard-subject-tag | issue:196419467 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/arrayfire/arrayfire/1679/issue_layout |
| twitter:image | https://opengraph.githubassets.com/da1615793aabfe0444c547d9d06dd6edae4d10d155747dab6e5c1588bbf4d5b8/arrayfire/arrayfire/issues/1679 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/da1615793aabfe0444c547d9d06dd6edae4d10d155747dab6e5c1588bbf4d5b8/arrayfire/arrayfire/issues/1679 |
| og:image:alt | In the fftconvolve.hpp (and perhaps elsewhere) for CUDA (arrayfire/src/backend/cuda/kernel/fftconvolve.hpp) complex multiplies are performed like so: out.ptr[ridx2].x = c1.x*c2.x - c1.y*c2.y; out.p... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | ewanbarr |
| hostname | github.com |
| expected-hostname | github.com |
| None | acedec8b5f975d9e3d494ddd8f949b0b8a0de59d393901e26f73df9dcba80056 |
| turbo-cache-control | no-preview |
| go-import | github.com/arrayfire/arrayfire git https://github.com/arrayfire/arrayfire.git |
| octolytics-dimension-user_id | 5395442 |
| octolytics-dimension-user_login | arrayfire |
| octolytics-dimension-repository_id | 25889802 |
| octolytics-dimension-repository_nwo | arrayfire/arrayfire |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 25889802 |
| octolytics-dimension-repository_network_root_nwo | arrayfire/arrayfire |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 83c08c21cdda978090dc44364b71aa5bc6dcea79 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width