GlobalFunctions.h
Go to the documentation of this file.
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2010-2016 Gael Guennebaud <gael.guennebaud@inria.fr>
5 // Copyright (C) 2010 Benoit Jacob <jacob.benoit.1@gmail.com>
6 //
7 // This Source Code Form is subject to the terms of the Mozilla
8 // Public License v. 2.0. If a copy of the MPL was not distributed
9 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 
11 #ifndef EIGEN_GLOBAL_FUNCTIONS_H
12 #define EIGEN_GLOBAL_FUNCTIONS_H
13 
14 #ifdef EIGEN_PARSED_BY_DOXYGEN
15 
16 #define EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(NAME,FUNCTOR,DOC_OP,DOC_DETAILS) \
17  \
23  template<typename Derived> \
24  inline const Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, const Derived> \
25  NAME(const Eigen::ArrayBase<Derived>& x);
26 
27 #else
28 
29 #define EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(NAME,FUNCTOR,DOC_OP,DOC_DETAILS) \
30  template<typename Derived> \
31  inline const Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, const Derived> \
32  (NAME)(const Eigen::ArrayBase<Derived>& x) { \
33  return Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, const Derived>(x.derived()); \
34  }
35 
36 #endif // EIGEN_PARSED_BY_DOXYGEN
37 
38 #define EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(NAME,FUNCTOR) \
39  \
40  template<typename Derived> \
41  struct NAME##_retval<ArrayBase<Derived> > \
42  { \
43  typedef const Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, const Derived> type; \
44  }; \
45  template<typename Derived> \
46  struct NAME##_impl<ArrayBase<Derived> > \
47  { \
48  static inline typename NAME##_retval<ArrayBase<Derived> >::type run(const Eigen::ArrayBase<Derived>& x) \
49  { \
50  return typename NAME##_retval<ArrayBase<Derived> >::type(x.derived()); \
51  } \
52  };
53 
54 namespace Eigen
55 {
57  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(imag,scalar_imag_op,imaginary part,\sa ArrayBase::imag)
61  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(cos,scalar_cos_op,cosine,\sa ArrayBase::cos)
62  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(tan,scalar_tan_op,tangent,\sa ArrayBase::tan)
63  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(atan,scalar_atan_op,arc-tangent,\sa ArrayBase::atan)
64  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(asin,scalar_asin_op,arc-sine,\sa ArrayBase::asin)
65  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(acos,scalar_acos_op,arc-consine,\sa ArrayBase::acos)
66  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(sinh,scalar_sinh_op,hyperbolic sine,\sa ArrayBase::sinh)
67  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(cosh,scalar_cosh_op,hyperbolic cosine,\sa ArrayBase::cosh)
68  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(tanh,scalar_tanh_op,hyperbolic tangent,\sa ArrayBase::tanh)
69  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(lgamma,scalar_lgamma_op,natural logarithm of the gamma function,\sa ArrayBase::lgamma)
70  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(digamma,scalar_digamma_op,derivative of lgamma,\sa ArrayBase::digamma)
71  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(erf,scalar_erf_op,error function,\sa ArrayBase::erf)
72  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(erfc,scalar_erfc_op,complement error function,\sa ArrayBase::erfc)
73  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(exp,scalar_exp_op,exponential,\sa ArrayBase::exp)
74  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log,scalar_log_op,natural logarithm,\sa Eigen::log10 DOXCOMMA ArrayBase::log)
75  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log1p,scalar_log1p_op,natural logarithm of 1 plus the value,\sa ArrayBase::log1p)
76  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log10,scalar_log10_op,base 10 logarithm,\sa Eigen::log DOXCOMMA ArrayBase::log)
77  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(abs,scalar_abs_op,absolute value,\sa ArrayBase::abs DOXCOMMA MatrixBase::cwiseAbs)
78  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(abs2,scalar_abs2_op,squared absolute value,\sa ArrayBase::abs2 DOXCOMMA MatrixBase::cwiseAbs2)
81  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(rsqrt,scalar_rsqrt_op,reciprocal square root,\sa ArrayBase::rsqrt)
82  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(square,scalar_square_op,square (power 2),\sa Eigen::abs2 DOXCOMMA Eigen::pow DOXCOMMA ArrayBase::square)
83  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(cube,scalar_cube_op,cube (power 3),\sa Eigen::pow DOXCOMMA ArrayBase::cube)
84  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(round,scalar_round_op,nearest integer,\sa Eigen::floor DOXCOMMA Eigen::ceil DOXCOMMA ArrayBase::round)
85  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(floor,scalar_floor_op,nearest integer not greater than the giben value,\sa Eigen::ceil DOXCOMMA ArrayBase::floor)
86  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(ceil,scalar_ceil_op,nearest integer not less than the giben value,\sa Eigen::floor DOXCOMMA ArrayBase::ceil)
87  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(isnan,scalar_isnan_op,not-a-number test,\sa Eigen::isinf DOXCOMMA Eigen::isfinite DOXCOMMA ArrayBase::isnan)
88  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(isinf,scalar_isinf_op,infinite value test,\sa Eigen::isnan DOXCOMMA Eigen::isfinite DOXCOMMA ArrayBase::isinf)
89  EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(isfinite,scalar_isfinite_op,finite value test,\sa Eigen::isinf DOXCOMMA Eigen::isnan DOXCOMMA ArrayBase::isfinite)
91 
92 
100 #ifdef EIGEN_PARSED_BY_DOXYGEN
101  template<typename Derived,typename ScalarExponent>
102  inline const CwiseBinaryOp<internal::scalar_pow_op<Derived::Scalar,ScalarExponent>,Derived,Constant<ScalarExponent> >
103  pow(const Eigen::ArrayBase<Derived>& x, const ScalarExponent& exponent);
104 #else
105  template<typename Derived,typename ScalarExponent>
107  const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,ScalarExponent,pow) >::type
108  pow(const Eigen::ArrayBase<Derived>& x, const ScalarExponent& exponent) {
109  return x.derived().pow(exponent);
110  }
111 
112  template<typename Derived>
113  inline const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived,typename Derived::Scalar,pow)
114  pow(const Eigen::ArrayBase<Derived>& x, const typename Derived::Scalar& exponent) {
115  return x.derived().pow(exponent);
116  }
117 #endif
118 
130  template<typename Derived,typename ExponentDerived>
133  {
135  x.derived(),
136  exponents.derived()
137  );
138  }
139 
153 #ifdef EIGEN_PARSED_BY_DOXYGEN
154  template<typename Scalar,typename Derived>
155  inline const CwiseBinaryOp<internal::scalar_pow_op<Scalar,Derived::Scalar>,Constant<Scalar>,Derived>
156  pow(const Scalar& x,const Eigen::ArrayBase<Derived>& x);
157 #else
158  template<typename Scalar, typename Derived>
161  pow(const Scalar& x, const Eigen::ArrayBase<Derived>& exponents)
162  {
164  typename internal::plain_constant_type<Derived,Scalar>::type(exponents.rows(), exponents.cols(), x), exponents.derived() );
165  }
166 
167  template<typename Derived>
168  inline const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(typename Derived::Scalar,Derived,pow)
169  pow(const typename Derived::Scalar& x, const Eigen::ArrayBase<Derived>& exponents)
170  {
171  return EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(typename Derived::Scalar,Derived,pow)(
172  typename internal::plain_constant_type<Derived,typename Derived::Scalar>::type(exponents.rows(), exponents.cols(), x), exponents.derived() );
173  }
174 #endif
175 
176 
177  namespace internal
178  {
182  }
183 }
184 
185 // TODO: cleanly disable those functions that are not supported on Array (numext::real_ref, internal::random, internal::isApprox...)
186 
187 #endif // EIGEN_GLOBAL_FUNCTIONS_H
EIGEN_DEVICE_FUNC const RoundReturnType round() const
Definition: ArrayBase.h:375
EIGEN_DEVICE_FUNC const CeilReturnType ceil() const
Definition: ArrayBase.h:403
EIGEN_DEVICE_FUNC const Log1pReturnType log1p() const
Definition: ArrayBase.h:120
EIGEN_DEVICE_FUNC const DigammaReturnType digamma() const
Definition: ArrayBase.h:508
SCALAR Scalar
Definition: bench_gemm.cpp:33
internal::traits< Derived >::Scalar Scalar
Definition: ArrayBase.h:50
EIGEN_DEVICE_FUNC const LogReturnType log() const
Definition: ArrayBase.h:106
const AutoDiffScalar< DerType > & conj(const AutoDiffScalar< DerType > &x)
float real
Definition: datatypes.h:10
#define EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(NAME, FUNCTOR)
idx_t idx_t idx_t idx_t idx_t idx_t idx_t real_t real_t idx_t idx_t idx_t * part
EIGEN_DEVICE_FUNC const SignReturnType sign() const
Definition: ArrayBase.h:185
internal::enable_if< !(internal::is_same< typename Derived::Scalar, Scalar >::value)&&EIGEN_SCALAR_BINARY_SUPPORTED(pow, Scalar, typename Derived::Scalar), const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(Scalar, Derived, pow) >::type pow(const Scalar &x, const Eigen::ArrayBase< Derived > &exponents)
const EIGEN_SCALAR_BINARYOP_EXPR_RETURN_TYPE(typename Derived::Scalar, Derived, pow) pow(const typename Derived
EIGEN_DEVICE_FUNC const ErfcReturnType erfc() const
Definition: ArrayBase.h:550
EIGEN_DEVICE_FUNC const ExpReturnType exp() const
EIGEN_DEVICE_FUNC const ErfReturnType erf() const
EIGEN_DEVICE_FUNC const AcosReturnType acos() const
Definition: ArrayBase.h:263
EIGEN_DEVICE_FUNC const ImagReturnType imag() const
Definition: ArrayBase.h:96
Definition: test.py:1
EIGEN_DEVICE_FUNC const TanhReturnType tanh() const
EIGEN_DEVICE_FUNC const LogReturnType log() const
EIGEN_DEVICE_FUNC const SqrtReturnType sqrt() const
EIGEN_DEVICE_FUNC const CoshReturnType cosh() const
Namespace containing all symbols from the Eigen library.
Definition: jet.h:637
DerType::Scalar imag(const AutoDiffScalar< DerType > &)
const Eigen::CwiseBinaryOp< Eigen::internal::scalar_pow_op< typename Derived::Scalar, typename ExponentDerived::Scalar >, const Derived, const ExponentDerived > pow(const Eigen::ArrayBase< Derived > &x, const Eigen::ArrayBase< ExponentDerived > &exponents)
#define isfinite(X)
Definition: main.h:74
EIGEN_DEVICE_FUNC const TanhReturnType tanh() const
Definition: ArrayBase.h:291
#define isinf(X)
Definition: main.h:73
EIGEN_DEVICE_FUNC RealReturnType real() const
Definition: ArrayBase.h:87
Definition: cast.h:1853
const mpreal root(const mpreal &x, unsigned long int k, mp_rnd_t r=mpreal::get_default_rnd())
Definition: mpreal.h:2194
EIGEN_DEVICE_FUNC const SinhReturnType sinh() const
Definition: ArrayBase.h:305
EIGEN_DEVICE_FUNC const AsinReturnType asin() const
Definition: ArrayBase.h:277
EIGEN_DEVICE_FUNC const ExpReturnType exp() const
Definition: ArrayBase.h:89
Array33i a
EIGEN_DEVICE_FUNC const SinReturnType sin() const
Definition: ArrayBase.h:221
EIGEN_DEVICE_FUNC const SquareReturnType square() const
Definition: ArrayBase.h:347
EIGEN_DEVICE_FUNC const RoundReturnType round() const
EIGEN_DEVICE_FUNC const CosReturnType cos() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const ArgReturnType arg() const
Definition: ArrayBase.h:58
EIGEN_DEVICE_FUNC const CeilReturnType ceil() const
internal::enable_if< !(internal::is_same< typename Derived::Scalar, ScalarExponent >::value)&&EIGEN_SCALAR_BINARY_SUPPORTED(pow, typename Derived::Scalar, ScalarExponent), const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived, ScalarExponent, pow) >::type pow(const Eigen::ArrayBase< Derived > &x, const ScalarExponent &exponent)
Generic expression where a coefficient-wise binary operator is applied to two expressions.
Definition: CwiseBinaryOp.h:77
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Abs2ReturnType abs2() const
Definition: ArrayBase.h:72
#define EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(NAME, FUNCTOR, DOC_OP, DOC_DETAILS)
CwiseNullaryOp< scalar_constant_op< Scalar >, const typename conditional< is_same< typename traits< Expr >::XprKind, MatrixXpr >::value, matrix_type, array_type >::type > type
Definition: XprHelper.h:635
EIGEN_DEVICE_FUNC ConjugateReturnType conjugate() const
Definition: ArrayBase.h:75
EIGEN_DEVICE_FUNC const SignReturnType sign() const
EIGEN_DEVICE_FUNC const SqrtReturnType sqrt() const
Definition: ArrayBase.h:153
EIGEN_DEVICE_FUNC const Log1pReturnType log1p() const
const mpreal gamma(const mpreal &x, mp_rnd_t r=mpreal::get_default_rnd())
Definition: mpreal.h:2262
EIGEN_DEVICE_FUNC const SinhReturnType sinh() const
EIGEN_DEVICE_FUNC ConjugateReturnType conjugate() const
EIGEN_DEVICE_FUNC const CoshReturnType cosh() const
Definition: ArrayBase.h:319
#define EIGEN_SCALAR_BINARY_SUPPORTED(OPNAME, TYPEA, TYPEB)
Definition: Macros.h:923
EIGEN_DEVICE_FUNC const AtanReturnType atan() const
EIGEN_DEVICE_FUNC const TanReturnType tan() const
Base class for all 1D and 2D array, and related expressions.
Definition: ArrayBase.h:39
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Abs2ReturnType abs2() const
EIGEN_DEVICE_FUNC const ErfcReturnType erfc() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbs2ReturnType cwiseAbs2() const
Definition: MatrixBase.h:46
EIGEN_DEVICE_FUNC const InverseReturnType inverse() const
Definition: ArrayBase.h:333
EIGEN_DEVICE_FUNC const AcosReturnType acos() const
EIGEN_DEVICE_FUNC const CubeReturnType cube() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const AbsReturnType abs() const
Definition: ArrayBase.h:44
EIGEN_DEVICE_FUNC const FloorReturnType floor() const
Definition: ArrayBase.h:389
EIGEN_DEVICE_FUNC const FloorReturnType floor() const
EIGEN_DEVICE_FUNC const CosReturnType cos() const
Definition: ArrayBase.h:203
EIGEN_DEVICE_FUNC const AtanReturnType atan() const
Definition: ArrayBase.h:249
EIGEN_DEVICE_FUNC const CwiseSqrtReturnType cwiseSqrt() const
Definition: MatrixBase.h:59
EIGEN_DEVICE_FUNC const CubeReturnType cube() const
Definition: ArrayBase.h:361
EIGEN_DEVICE_FUNC const ErfReturnType erf() const
Definition: ArrayBase.h:529
EIGEN_DEVICE_FUNC const Log10ReturnType log10() const
EIGEN_DEVICE_FUNC const TanReturnType tan() const
Definition: ArrayBase.h:235
static double error
Definition: testRot3.cpp:39
int integer
Definition: datatypes.h:8
EIGEN_DEVICE_FUNC const RsqrtReturnType rsqrt() const
Definition: ArrayBase.h:169
EIGEN_DEVICE_FUNC const SinReturnType sin() const
Annotation indicating that a class derives from another given type.
Definition: attr.h:42
Jet< T, N > pow(const Jet< T, N > &f, double g)
Definition: jet.h:570
const EIGEN_EXPR_BINARYOP_SCALAR_RETURN_TYPE(Derived, typename Derived::Scalar, pow) pow(const Eigen
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
#define abs(x)
Definition: datatypes.h:17
EIGEN_DEVICE_FUNC const DigammaReturnType digamma() const
EIGEN_DEVICE_FUNC const InverseReturnType inverse() const
EIGEN_DEVICE_FUNC const RsqrtReturnType rsqrt() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CwiseAbsReturnType cwiseAbs() const
Definition: MatrixBase.h:33
EIGEN_DEVICE_FUNC const AsinReturnType asin() const
EIGEN_DEVICE_FUNC const LgammaReturnType lgamma() const
Definition: ArrayBase.h:491
#define isnan(X)
Definition: main.h:72
EIGEN_DEVICE_FUNC const SquareReturnType square() const
Definition: pytypes.h:897
EIGEN_DEVICE_FUNC const LgammaReturnType lgamma() const


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:42:09