mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
add main ei_* functions into Eigen2Support
This commit is contained in:
parent
14208eb478
commit
c49c013c47
@ -50,6 +50,7 @@ namespace Eigen {
|
|||||||
#include "src/Eigen2Support/Block.h"
|
#include "src/Eigen2Support/Block.h"
|
||||||
#include "src/Eigen2Support/VectorBlock.h"
|
#include "src/Eigen2Support/VectorBlock.h"
|
||||||
#include "src/Eigen2Support/Minor.h"
|
#include "src/Eigen2Support/Minor.h"
|
||||||
|
#include "src/Eigen2Support/MathFunctions.h"
|
||||||
|
|
||||||
|
|
||||||
} // namespace Eigen
|
} // namespace Eigen
|
||||||
|
41
Eigen/src/Eigen2Support/MathFunctions.h
Normal file
41
Eigen/src/Eigen2Support/MathFunctions.h
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// This file is part of Eigen, a lightweight C++ template library
|
||||||
|
// for linear algebra.
|
||||||
|
//
|
||||||
|
// Copyright (C) 2010 Gael Guennebaud <gael.guennebaud@inria.fr>
|
||||||
|
//
|
||||||
|
// Eigen is free software; you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU Lesser General Public
|
||||||
|
// License as published by the Free Software Foundation; either
|
||||||
|
// version 3 of the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// Alternatively, you can redistribute it and/or
|
||||||
|
// modify it under the terms of the GNU General Public License as
|
||||||
|
// published by the Free Software Foundation; either version 2 of
|
||||||
|
// the License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Lesser General Public
|
||||||
|
// License and a copy of the GNU General Public License along with
|
||||||
|
// Eigen. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef EIGEN2_MATH_FUNCTIONS_H
|
||||||
|
#define EIGEN2_MATH_FUNCTIONS_H
|
||||||
|
|
||||||
|
template<typename T> inline typename NumTraits<T>::Real ei_real(const T& x) { return internal::real(x); }
|
||||||
|
template<typename T> inline typename NumTraits<T>::Real ei_imag(const T& x) { return internal::imag(x); }
|
||||||
|
template<typename T> inline T ei_conj(const T& x) { return internal::conj(x); }
|
||||||
|
template<typename T> inline T ei_abs (const T& x) { return internal::abs(x); }
|
||||||
|
template<typename T> inline T ei_abs2(const T& x) { return internal::abs2(x); }
|
||||||
|
template<typename T> inline T ei_sqrt(const T& x) { return internal::sqrt(x); }
|
||||||
|
template<typename T> inline T ei_exp (const T& x) { return internal::exp(x); }
|
||||||
|
template<typename T> inline T ei_log (const T& x) { return internal::log(x); }
|
||||||
|
template<typename T> inline T ei_sin (const T& x) { return internal::sin(x); }
|
||||||
|
template<typename T> inline T ei_cos (const T& x) { return internal::cos(x); }
|
||||||
|
template<typename T> inline T ei_atan2(const T& x,const T& y) { return internal::atan2(x,y); }
|
||||||
|
template<typename T> inline T ei_pow (const T& x,const T& y) { return internal::pow(x,y); }
|
||||||
|
|
||||||
|
#endif // EIGEN2_MATH_FUNCTIONS_H
|
@ -280,7 +280,7 @@ result = Vector4f::MapAligned(some_aligned_array);
|
|||||||
|
|
||||||
\section eiPrefix Internal ei_ prefix
|
\section eiPrefix Internal ei_ prefix
|
||||||
|
|
||||||
In Eigen2, global internal functions and structures were prefixed by \c ei_. In Eigen3, they all have been moved into the more explicit \c internal namespace. So, e.g., \c ei_sqrt(x) now becomes \c internal::sqrt(x).
|
In Eigen2, global internal functions and structures were prefixed by \c ei_. In Eigen3, they all have been moved into the more explicit \c internal namespace. So, e.g., \c ei_sqrt(x) now becomes \c internal::sqrt(x). Of course it is not recommended to rely on Eigen's internal features.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,6 +58,11 @@ template<typename MatrixType> void eigen2support(const MatrixType& m)
|
|||||||
VERIFY_IS_EQUAL((m1.col(0).template start<1>()), (m1.col(0).segment(0,1)));
|
VERIFY_IS_EQUAL((m1.col(0).template start<1>()), (m1.col(0).segment(0,1)));
|
||||||
VERIFY_IS_EQUAL((m1.col(0).end(1)), (m1.col(0).segment(rows-1,1)));
|
VERIFY_IS_EQUAL((m1.col(0).end(1)), (m1.col(0).segment(rows-1,1)));
|
||||||
VERIFY_IS_EQUAL((m1.col(0).template end<1>()), (m1.col(0).segment(rows-1,1)));
|
VERIFY_IS_EQUAL((m1.col(0).template end<1>()), (m1.col(0).segment(rows-1,1)));
|
||||||
|
|
||||||
|
using namespace internal;
|
||||||
|
VERIFY_IS_EQUAL(ei_cos(s1), cos(s1));
|
||||||
|
VERIFY_IS_EQUAL(ei_real(s1), real(s1));
|
||||||
|
VERIFY_IS_EQUAL(ei_abs2(s1), abs2(s1));
|
||||||
|
|
||||||
m1.minor(0,0);
|
m1.minor(0,0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user