Automatic Differentiation
 
Loading...
Searching...
No Matches
atan.hpp
Go to the documentation of this file.
1#ifndef STAN_MATH_PRIM_FUN_ATAN_HPP
2#define STAN_MATH_PRIM_FUN_ATAN_HPP
3
11#include <cmath>
12#include <complex>
13
14namespace stan {
15namespace math {
16
24template <typename T, require_arithmetic_t<T>* = nullptr>
25inline auto atan(const T x) {
26 return std::atan(x);
27}
28
36template <typename T, require_complex_bt<std::is_arithmetic, T>* = nullptr>
37inline auto atan(const T x) {
38 return std::atan(x);
39}
40
48struct atan_fun {
49 template <typename T>
50 static inline auto fun(const T& x) {
51 return atan(x);
52 }
53};
54
63template <typename Container, require_ad_container_t<Container>* = nullptr>
64inline auto atan(const Container& x) {
66}
67
76template <typename Container,
78inline auto atan(const Container& x) {
79 return apply_vector_unary<Container>::apply(
80 x, [](const auto& v) { return v.array().atan(); });
81}
82
83namespace internal {
91template <typename V>
92inline std::complex<V> complex_atan(const std::complex<V>& z) {
93 return neg_i_times(atanh(i_times(z)));
94}
95} // namespace internal
96
97} // namespace math
98} // namespace stan
99
100#endif
require_t< container_type_check_base< is_container, base_type_t, TypeCheck, Check... > > require_container_bt
Require type satisfies is_container.
std::complex< V > complex_atan(const std::complex< V > &z)
Return the arc tangent of the complex argument.
Definition atan.hpp:92
std::complex< T > i_times(const std::complex< T > &z)
Return the specified complex number multiplied by i.
Definition i_times.hpp:20
std::complex< T > neg_i_times(const std::complex< T > &z)
Return the specified complex number multiplied by -i.
Definition i_times.hpp:36
fvar< T > atanh(const fvar< T > &x)
Return inverse hyperbolic tangent of specified value.
Definition atanh.hpp:26
fvar< T > atan(const fvar< T > &x)
Definition atan.hpp:16
The lgamma implementation in stan-math is based on either the reentrant safe lgamma_r implementation ...
Base template class for vectorization of unary scalar functions defined by a template class F to a sc...
static auto fun(const T &x)
Definition atan.hpp:50
Structure to wrap atan() so it can be vectorized.
Definition atan.hpp:48