Antonio Sanchez f19bcffee6 Specialize std::complex operators for use on GPU device.
NVCC and older versions of clang do not fully support `std::complex` on device,
leading to either compile errors (Cannot call `__host__` function) or worse,
runtime errors (Illegal instruction).  For most functions, we can
implement specialized `numext` versions. Here we specialize the standard
operators (with the exception of stream operators and member function operators
with a scalar that are already specialized in `<complex>`) so they can be used
in device code as well.

To import these operators into the current scope, use
`EIGEN_USING_STD_COMPLEX_OPERATORS`. By default, these are imported into
the `Eigen`, `Eigen:internal`, and `Eigen::numext` namespaces.

This allow us to remove specializations of the
sum/difference/product/quotient ops, and allow us to treat complex
numbers like most other scalars (e.g. in tests).
2021-01-22 18:19:19 +00:00
..
2019-03-14 10:08:12 +01:00
2016-05-18 14:03:03 +02:00
2020-12-22 23:25:23 -08:00
2018-11-23 15:37:09 +01:00
2019-12-11 18:22:57 +00:00
2020-12-03 11:27:32 -08:00
2021-01-21 19:32:28 +00:00
2021-01-07 12:48:40 -08:00
2021-01-05 10:41:25 -08:00
2021-01-21 09:44:42 -08:00
2019-01-15 10:51:03 +01:00
2018-11-23 15:12:06 +01:00