mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 11:49:02 +08:00
merge
This commit is contained in:
commit
b33144e4df
@ -50,7 +50,7 @@ public:
|
|||||||
typedef typename internal::ref_selector<Inverse>::type Nested;
|
typedef typename internal::ref_selector<Inverse>::type Nested;
|
||||||
typedef typename internal::remove_all<XprType>::type NestedExpression;
|
typedef typename internal::remove_all<XprType>::type NestedExpression;
|
||||||
|
|
||||||
explicit Inverse(const XprType &xpr)
|
explicit EIGEN_DEVICE_FUNC Inverse(const XprType &xpr)
|
||||||
: m_xpr(xpr)
|
: m_xpr(xpr)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
@ -1312,11 +1312,12 @@ template<typename Scalar>
|
|||||||
struct scalar_fuzzy_default_impl<Scalar, true, false>
|
struct scalar_fuzzy_default_impl<Scalar, true, false>
|
||||||
{
|
{
|
||||||
typedef typename NumTraits<Scalar>::Real RealScalar;
|
typedef typename NumTraits<Scalar>::Real RealScalar;
|
||||||
template<typename OtherScalar>
|
template<typename OtherScalar> EIGEN_DEVICE_FUNC
|
||||||
static inline bool isMuchSmallerThan(const Scalar& x, const OtherScalar& y, const RealScalar& prec)
|
static inline bool isMuchSmallerThan(const Scalar& x, const OtherScalar& y, const RealScalar& prec)
|
||||||
{
|
{
|
||||||
return numext::abs2(x) <= numext::abs2(y) * prec * prec;
|
return numext::abs2(x) <= numext::abs2(y) * prec * prec;
|
||||||
}
|
}
|
||||||
|
EIGEN_DEVICE_FUNC
|
||||||
static inline bool isApprox(const Scalar& x, const Scalar& y, const RealScalar& prec)
|
static inline bool isApprox(const Scalar& x, const Scalar& y, const RealScalar& prec)
|
||||||
{
|
{
|
||||||
return numext::abs2(x - y) <= numext::mini(numext::abs2(x), numext::abs2(y)) * prec * prec;
|
return numext::abs2(x - y) <= numext::mini(numext::abs2(x), numext::abs2(y)) * prec * prec;
|
||||||
|
@ -98,7 +98,7 @@ template<typename Derived> class MatrixBase
|
|||||||
/** \returns the size of the main diagonal, which is min(rows(),cols()).
|
/** \returns the size of the main diagonal, which is min(rows(),cols()).
|
||||||
* \sa rows(), cols(), SizeAtCompileTime. */
|
* \sa rows(), cols(), SizeAtCompileTime. */
|
||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
inline Index diagonalSize() const { return (std::min)(rows(),cols()); }
|
inline Index diagonalSize() const { return (numext::mini)(rows(),cols()); }
|
||||||
|
|
||||||
typedef typename Base::PlainObject PlainObject;
|
typedef typename Base::PlainObject PlainObject;
|
||||||
|
|
||||||
|
@ -56,7 +56,11 @@
|
|||||||
#pragma diag_suppress code_is_unreachable
|
#pragma diag_suppress code_is_unreachable
|
||||||
// Disable the "dynamic initialization in unreachable code" message
|
// Disable the "dynamic initialization in unreachable code" message
|
||||||
#pragma diag_suppress initialization_not_reachable
|
#pragma diag_suppress initialization_not_reachable
|
||||||
// Disable the "calling a __host__ function from a __host__ __device__ function is not allowed" messages (yes, there are 4 of them)
|
// Disable the "invalid error number" message that we get with older versions of nvcc
|
||||||
|
#pragma diag_suppress 1222
|
||||||
|
// Disable the "calling a __host__ function from a __host__ __device__ function is not allowed" messages (yes, there are many of them and they seem to change with every version of the compiler)
|
||||||
|
#pragma diag_suppress 2527
|
||||||
|
#pragma diag_suppress 2529
|
||||||
#pragma diag_suppress 2651
|
#pragma diag_suppress 2651
|
||||||
#pragma diag_suppress 2653
|
#pragma diag_suppress 2653
|
||||||
#pragma diag_suppress 2668
|
#pragma diag_suppress 2668
|
||||||
|
@ -954,8 +954,8 @@ namespace Eigen {
|
|||||||
# define EIGEN_CATCH(X) catch (X)
|
# define EIGEN_CATCH(X) catch (X)
|
||||||
#else
|
#else
|
||||||
# ifdef __CUDA_ARCH__
|
# ifdef __CUDA_ARCH__
|
||||||
# define EIGEN_THROW_X(X) asm("trap;") return {}
|
# define EIGEN_THROW_X(X) asm("trap;")
|
||||||
# define EIGEN_THROW asm("trap;"); return {}
|
# define EIGEN_THROW asm("trap;")
|
||||||
# else
|
# else
|
||||||
# define EIGEN_THROW_X(X) std::abort()
|
# define EIGEN_THROW_X(X) std::abort()
|
||||||
# define EIGEN_THROW std::abort()
|
# define EIGEN_THROW std::abort()
|
||||||
|
@ -275,6 +275,7 @@ template<typename T> EIGEN_DEVICE_FUNC inline T* construct_elements_of_array(T *
|
|||||||
destruct_elements_of_array(ptr, i);
|
destruct_elements_of_array(ptr, i);
|
||||||
EIGEN_THROW;
|
EIGEN_THROW;
|
||||||
}
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
@ -305,6 +306,7 @@ template<typename T> EIGEN_DEVICE_FUNC inline T* aligned_new(size_t size)
|
|||||||
aligned_free(result);
|
aligned_free(result);
|
||||||
EIGEN_THROW;
|
EIGEN_THROW;
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, bool Align> EIGEN_DEVICE_FUNC inline T* conditional_aligned_new(size_t size)
|
template<typename T, bool Align> EIGEN_DEVICE_FUNC inline T* conditional_aligned_new(size_t size)
|
||||||
@ -320,6 +322,7 @@ template<typename T, bool Align> EIGEN_DEVICE_FUNC inline T* conditional_aligned
|
|||||||
conditional_aligned_free<Align>(result);
|
conditional_aligned_free<Align>(result);
|
||||||
EIGEN_THROW;
|
EIGEN_THROW;
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \internal Deletes objects constructed with aligned_new
|
/** \internal Deletes objects constructed with aligned_new
|
||||||
|
@ -156,7 +156,7 @@ template<typename _MatrixType> class FullPivLU
|
|||||||
*
|
*
|
||||||
* \sa permutationQ()
|
* \sa permutationQ()
|
||||||
*/
|
*/
|
||||||
inline const PermutationPType& permutationP() const
|
EIGEN_DEVICE_FUNC inline const PermutationPType& permutationP() const
|
||||||
{
|
{
|
||||||
eigen_assert(m_isInitialized && "LU is not initialized.");
|
eigen_assert(m_isInitialized && "LU is not initialized.");
|
||||||
return m_p;
|
return m_p;
|
||||||
@ -406,8 +406,8 @@ template<typename _MatrixType> class FullPivLU
|
|||||||
|
|
||||||
MatrixType reconstructedMatrix() const;
|
MatrixType reconstructedMatrix() const;
|
||||||
|
|
||||||
inline Index rows() const { return m_lu.rows(); }
|
EIGEN_DEVICE_FUNC inline Index rows() const { return m_lu.rows(); }
|
||||||
inline Index cols() const { return m_lu.cols(); }
|
EIGEN_DEVICE_FUNC inline Index cols() const { return m_lu.cols(); }
|
||||||
|
|
||||||
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
#ifndef EIGEN_PARSED_BY_DOXYGEN
|
||||||
template<typename RhsType, typename DstType>
|
template<typename RhsType, typename DstType>
|
||||||
@ -879,7 +879,7 @@ struct Assignment<DstXprType, Inverse<FullPivLU<MatrixType> >, internal::assign_
|
|||||||
*
|
*
|
||||||
* \sa class FullPivLU
|
* \sa class FullPivLU
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived> EIGEN_DEVICE_FUNC
|
||||||
inline const FullPivLU<typename MatrixBase<Derived>::PlainObject>
|
inline const FullPivLU<typename MatrixBase<Derived>::PlainObject>
|
||||||
MatrixBase<Derived>::fullPivLu() const
|
MatrixBase<Derived>::fullPivLu() const
|
||||||
{
|
{
|
||||||
|
@ -327,7 +327,7 @@ struct Assignment<DstXprType, Inverse<XprType>, internal::assign_op<typename Dst
|
|||||||
*
|
*
|
||||||
* \sa computeInverseAndDetWithCheck()
|
* \sa computeInverseAndDetWithCheck()
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived> EIGEN_DEVICE_FUNC
|
||||||
inline const Inverse<Derived> MatrixBase<Derived>::inverse() const
|
inline const Inverse<Derived> MatrixBase<Derived>::inverse() const
|
||||||
{
|
{
|
||||||
EIGEN_STATIC_ASSERT(!NumTraits<Scalar>::IsInteger,THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)
|
EIGEN_STATIC_ASSERT(!NumTraits<Scalar>::IsInteger,THIS_FUNCTION_IS_NOT_FOR_INTEGER_NUMERIC_TYPES)
|
||||||
|
@ -584,7 +584,7 @@ struct Assignment<DstXprType, Inverse<PartialPivLU<MatrixType> >, internal::assi
|
|||||||
*
|
*
|
||||||
* \sa class PartialPivLU
|
* \sa class PartialPivLU
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived> EIGEN_DEVICE_FUNC
|
||||||
inline const PartialPivLU<typename MatrixBase<Derived>::PlainObject>
|
inline const PartialPivLU<typename MatrixBase<Derived>::PlainObject>
|
||||||
MatrixBase<Derived>::partialPivLu() const
|
MatrixBase<Derived>::partialPivLu() const
|
||||||
{
|
{
|
||||||
@ -599,7 +599,7 @@ MatrixBase<Derived>::partialPivLu() const
|
|||||||
*
|
*
|
||||||
* \sa class PartialPivLU
|
* \sa class PartialPivLU
|
||||||
*/
|
*/
|
||||||
template<typename Derived>
|
template<typename Derived> EIGEN_DEVICE_FUNC
|
||||||
inline const PartialPivLU<typename MatrixBase<Derived>::PlainObject>
|
inline const PartialPivLU<typename MatrixBase<Derived>::PlainObject>
|
||||||
MatrixBase<Derived>::lu() const
|
MatrixBase<Derived>::lu() const
|
||||||
{
|
{
|
||||||
|
@ -51,12 +51,15 @@ class TensorOpCost {
|
|||||||
internal::scalar_cast_op<SrcType, TargetType> >::Cost;
|
internal::scalar_cast_op<SrcType, TargetType> >::Cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EIGEN_DEVICE_FUNC
|
||||||
TensorOpCost() : bytes_loaded_(0), bytes_stored_(0), compute_cycles_(0) {}
|
TensorOpCost() : bytes_loaded_(0), bytes_stored_(0), compute_cycles_(0) {}
|
||||||
|
EIGEN_DEVICE_FUNC
|
||||||
TensorOpCost(double bytes_loaded, double bytes_stored, double compute_cycles)
|
TensorOpCost(double bytes_loaded, double bytes_stored, double compute_cycles)
|
||||||
: bytes_loaded_(bytes_loaded),
|
: bytes_loaded_(bytes_loaded),
|
||||||
bytes_stored_(bytes_stored),
|
bytes_stored_(bytes_stored),
|
||||||
compute_cycles_(compute_cycles) {}
|
compute_cycles_(compute_cycles) {}
|
||||||
|
|
||||||
|
EIGEN_DEVICE_FUNC
|
||||||
TensorOpCost(double bytes_loaded, double bytes_stored, double compute_cycles,
|
TensorOpCost(double bytes_loaded, double bytes_stored, double compute_cycles,
|
||||||
bool vectorized, double packet_size)
|
bool vectorized, double packet_size)
|
||||||
: bytes_loaded_(bytes_loaded),
|
: bytes_loaded_(bytes_loaded),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user