Automatic Differentiation
 
Loading...
Searching...
No Matches
conj.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_FUN_CONJ_HPP
2#define STAN_MATH_PRIM_FUN_CONJ_HPP
3
4#include <complex>
6
7namespace stan {
8namespace math {
9
17template <typename V>
18inline std::complex<V> conj(const std::complex<V>& z) {
19 return std::conj(z);
20}
21
29template <typename Eig, require_eigen_vt<is_complex, Eig>* = nullptr>
30inline auto conj(const Eig& z) {
31 return z.conjugate();
32}
33
41template <typename StdVec, require_std_vector_st<is_complex, StdVec>* = nullptr>
42inline auto conj(const StdVec& z) {
43 promote_scalar_t<scalar_type_t<StdVec>, StdVec> result(z.size());
44 std::transform(z.begin(), z.end(), result.begin(),
45 [](auto&& x) { return stan::math::conj(x); });
46 return result;
47}
48
49namespace internal {
57template <typename V>
58inline std::complex<V> complex_conj(const std::complex<V>& z) {
59 return {z.real(), -z.imag()};
60}
61} // namespace internal
62} // namespace math
63} // namespace stan
64
65#endif
std::complex< V > complex_conj(const std::complex< V > &z)
Return the complex conjugate the complex argument.
Definition conj.hpp:58
typename promote_scalar_type< std::decay_t< T >, std::decay_t< S > >::type promote_scalar_t
std::complex< fvar< T > > conj(const std::complex< fvar< T > > &z)
Return the phase angle of the complex argument.
Definition conj.hpp:19
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...