mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-05-05 10:14:05 +08:00
ENH: exp supports complex type for cuda
This commit is contained in:
parent
f9bdcea022
commit
42a8334668
@ -1289,6 +1289,22 @@ float exp(const float &x) { return ::expf(x); }
|
||||
|
||||
template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
|
||||
double exp(const double &x) { return ::exp(x); }
|
||||
|
||||
template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
|
||||
std::complex<float> exp(const std::complex<float>& x) {
|
||||
auto com = ::expf(x.real());
|
||||
auto res_real = com * ::cosf(x.imag());
|
||||
auto res_imag = com * ::sinf(x.imag());
|
||||
return std::complex<float>(res_real, res_imag);
|
||||
}
|
||||
|
||||
template<> EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
|
||||
std::complex<double> exp(const std::complex<double>& x) {
|
||||
auto com = ::exp(x.real());
|
||||
auto res_real = com * ::cos(x.imag());
|
||||
auto res_imag = com * ::sin(x.imag());
|
||||
return std::complex<double>(res_real, res_imag);
|
||||
}
|
||||
#endif
|
||||
|
||||
template<typename Scalar>
|
||||
|
Loading…
x
Reference in New Issue
Block a user