diff options
Diffstat (limited to 'cplx.h')
-rw-r--r-- | cplx.h | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -0,0 +1,26 @@ +#pragma once + + +struct device_complex { + double x, y; +}; + +template <int N> +__host__ __device__ inline device_complex complex_power(double x, double y, double x2, double y2) { + device_complex next = complex_power<N - 1>(x, y, x2, y2); + return device_complex{ + x * next.x - y * next.y, + x * next.y + y * next.x + }; +} + +template <> +__host__ __device__ inline device_complex complex_power<2>(double x, double y, double x2, double y2) { + return device_complex{x2 - y2, 2 * x * y}; +} + +template <> +__host__ __device__ inline device_complex complex_power<1>(double x, double y, double x2, double y2) { + (void)x2; (void)y2; + return device_complex{x, y}; +} |