kfr

Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
Log | Files | Refs | README

commit bcb745250083661b93e80a721bbfe384db06efff
parent 3d0b71a3e6e5a5f26527d4eb8d175ef9078aee00
Author: [email protected] <[email protected]>
Date:   Wed, 20 Jul 2016 13:45:59 +0300

use std::complex if defined KFR_STD_COMPLEX

Diffstat:
Minclude/kfr/base/complex.hpp | 20+++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/include/kfr/base/complex.hpp b/include/kfr/base/complex.hpp @@ -38,8 +38,19 @@ #pragma clang diagnostic ignored "-Winaccessible-base" #endif +#ifdef KFR_STD_COMPLEX +#include <complex> +#endif + namespace kfr { +#ifdef KFR_STD_COMPLEX + +template <typename T> +using complex = std::complex<T>; + +#else +#ifndef KFR_CUSTOM_COMPLEX template <typename T> struct complex @@ -69,6 +80,9 @@ struct complex T im; }; +#endif +#endif + using c32 = complex<f32>; using c64 = complex<f64>; using cbase = complex<fbase>; @@ -205,9 +219,9 @@ constexpr KFR_INLINE vec<T, N> real(const vec<complex<T>, N>& value) } template <typename T> -using realtype = decltype(real(std::declval<T>())); +using realtype = decltype(kfr::real(std::declval<T>())); template <typename T> -using realftype = ftype<decltype(real(std::declval<T>()))>; +using realftype = ftype<decltype(kfr::real(std::declval<T>()))>; KFR_FN(real) template <typename E1, KFR_ENABLE_IF(is_input_expression<E1>::value)> @@ -600,7 +614,7 @@ struct compound_type_traits<kfr::complex<T>> template <typename U> using deep_rebind = kfr::complex<cometa::deep_rebind<subtype, U>>; - static constexpr const subtype& at(const kfr::complex<T>& value, size_t index) + static constexpr subtype at(const kfr::complex<T>& value, size_t index) { return index == 0 ? value.real() : value.imag(); }