isce3 0.25.0
Loading...
Searching...
No Matches
complexOperations.h
1#pragma once
2
3#include <complex>
4
5namespace isce3 { namespace math { namespace complex_operations {
6
7template<typename T1, typename T2>
8auto operator*(const std::complex<T1>& lhs, const T2& rhs)
9{
10 using U = typename std::common_type_t<T1, T2>;
11 return std::complex<U>(lhs) * U(rhs);
12}
13
14template<typename T1, typename T2>
15auto operator*(const T1& lhs, const std::complex<T2>& rhs)
16{
17 using U = typename std::common_type_t<T1, T2>;
18 return U(lhs) * std::complex<U>(rhs);
19}
20
21template<typename T1, typename T2>
22auto operator/(const std::complex<T1>& lhs, const T2& rhs)
23{
24 using U = typename std::common_type_t<T1, T2>;
25 return std::complex<U>(lhs) / U(rhs);
26}
27
28template<typename T1, typename T2>
29auto operator/(const T1& lhs, const std::complex<T2>& rhs)
30{
31 using U = typename std::common_type_t<T1, T2>;
32 return U(lhs) / std::complex<U>(rhs);
33}
34
36template <typename T>
37inline constexpr std::complex<T> unitPhasor(const T phase)
38{
39 // With gcc -O2 this compiles to sincos or sincosf, see
40 // https://godbolt.org/z/as6jz3nxT
41 return std::complex<T>(std::cos(phase), std::sin(phase));
42}
43
44}}}
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5

Generated for ISCE3.0 by doxygen 1.13.2.