cMHN 1.1
C++ library for learning MHNs with pRC
Loading...
Searching...
No Matches
square.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-2-Clause
2
3#ifndef pRC_CORE_COMPLEX_FUNCTIONS_SQUARE_H
4#define pRC_CORE_COMPLEX_FUNCTIONS_SQUARE_H
5
9
10namespace pRC
11{
12 template<class T, If<IsInvocable<Mul, T, T>> = 0,
13 If<IsInvocable<Sub, T, T>> = 0>
14 static inline constexpr auto square(Complex<T> const &a)
15 {
16 auto const real = a.real() * a.real() - a.imag() * a.imag();
17 auto const imag = identity<T>(2) * a.real() * a.imag();
18
19 return Complex(real, imag);
20 }
21}
22#endif // pRC_CORE_COMPLEX_FUNCTIONS_SQUARE_H
Definition complex.hpp:26
constexpr decltype(auto) real() &&
Definition complex.hpp:125
constexpr decltype(auto) imag() &&
Definition complex.hpp:145
Definition cholesky.hpp:18
static constexpr auto makeConstantSequence()
Definition sequence.hpp:402
static constexpr decltype(auto) imag(X &&a)
Definition imag.hpp:11
static constexpr decltype(auto) real(X &&a)
Definition real.hpp:11
static constexpr auto square(Complex< T > const &a)
Definition square.hpp:14
Complex(T const &) -> Complex< T >