mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-06-04 18:54:00 +08:00
Merge with eigen/default
This commit is contained in:
commit
855b68896b
@ -53,7 +53,7 @@ template<typename _MatrixType> struct traits<FullPivLU<_MatrixType> >
|
|||||||
* Output: \verbinclude class_FullPivLU.out
|
* Output: \verbinclude class_FullPivLU.out
|
||||||
*
|
*
|
||||||
* This class supports the \link InplaceDecomposition inplace decomposition \endlink mechanism.
|
* This class supports the \link InplaceDecomposition inplace decomposition \endlink mechanism.
|
||||||
*
|
*
|
||||||
* \sa MatrixBase::fullPivLu(), MatrixBase::determinant(), MatrixBase::inverse()
|
* \sa MatrixBase::fullPivLu(), MatrixBase::determinant(), MatrixBase::inverse()
|
||||||
*/
|
*/
|
||||||
template<typename _MatrixType> class FullPivLU
|
template<typename _MatrixType> class FullPivLU
|
||||||
@ -320,7 +320,7 @@ template<typename _MatrixType> class FullPivLU
|
|||||||
return m_usePrescribedThreshold ? m_prescribedThreshold
|
return m_usePrescribedThreshold ? m_prescribedThreshold
|
||||||
// this formula comes from experimenting (see "LU precision tuning" thread on the list)
|
// this formula comes from experimenting (see "LU precision tuning" thread on the list)
|
||||||
// and turns out to be identical to Higham's formula used already in LDLt.
|
// and turns out to be identical to Higham's formula used already in LDLt.
|
||||||
: NumTraits<Scalar>::epsilon() * m_lu.diagonalSize();
|
: NumTraits<Scalar>::epsilon() * RealScalar(m_lu.diagonalSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \returns the rank of the matrix of which *this is the LU decomposition.
|
/** \returns the rank of the matrix of which *this is the LU decomposition.
|
||||||
|
@ -60,7 +60,7 @@ struct cond<RowMajor> {
|
|||||||
* - kSkewedInnerDims: 100 blocks of size 100x1 (or 1x100 depending on a column
|
* - kSkewedInnerDims: 100 blocks of size 100x1 (or 1x100 depending on a column
|
||||||
* or row major layout)
|
* or row major layout)
|
||||||
*/
|
*/
|
||||||
enum class TensorBlockShapeType {
|
enum TensorBlockShapeType {
|
||||||
kUniformAllDims,
|
kUniformAllDims,
|
||||||
kSkewedInnerDims,
|
kSkewedInnerDims,
|
||||||
};
|
};
|
||||||
|
@ -113,12 +113,9 @@ class TensorExecutor<Expression, DefaultDevice, Vectorizable,
|
|||||||
EIGEN_DEVICE_FUNC
|
EIGEN_DEVICE_FUNC
|
||||||
static EIGEN_STRONG_INLINE void run(const Expression& expr,
|
static EIGEN_STRONG_INLINE void run(const Expression& expr,
|
||||||
const DefaultDevice& device = DefaultDevice()) {
|
const DefaultDevice& device = DefaultDevice()) {
|
||||||
typedef TensorBlock<ScalarNoConst, StorageIndex, NumDims, Evaluator::Layout>
|
typedef TensorBlock<ScalarNoConst, StorageIndex, NumDims, Evaluator::Layout> TensorBlock;
|
||||||
TensorBlock;
|
typedef TensorBlockMapper<ScalarNoConst, StorageIndex, NumDims, Evaluator::Layout> TensorBlockMapper;
|
||||||
typedef typename TensorBlock::Dimensions TensorBlockDimensions;
|
typedef typename TensorBlock::Dimensions TensorBlockDimensions;
|
||||||
typedef TensorBlockMapper<ScalarNoConst, StorageIndex, NumDims,
|
|
||||||
Evaluator::Layout>
|
|
||||||
TensorBlockMapper;
|
|
||||||
|
|
||||||
Evaluator evaluator(expr, device);
|
Evaluator evaluator(expr, device);
|
||||||
Index total_size = array_prod(evaluator.dimensions());
|
Index total_size = array_prod(evaluator.dimensions());
|
||||||
@ -262,11 +259,8 @@ class TensorExecutor<Expression, ThreadPoolDevice, Vectorizable, /*Tileable*/ tr
|
|||||||
|
|
||||||
static EIGEN_STRONG_INLINE void run(const Expression& expr,
|
static EIGEN_STRONG_INLINE void run(const Expression& expr,
|
||||||
const ThreadPoolDevice& device) {
|
const ThreadPoolDevice& device) {
|
||||||
typedef TensorBlock<ScalarNoConst, StorageIndex, NumDims, Evaluator::Layout>
|
typedef TensorBlock<ScalarNoConst, StorageIndex, NumDims, Evaluator::Layout> TensorBlock;
|
||||||
TensorBlock;
|
typedef TensorBlockMapper<ScalarNoConst, StorageIndex, NumDims, Evaluator::Layout> TensorBlockMapper;
|
||||||
typedef TensorBlockMapper<ScalarNoConst, StorageIndex, NumDims,
|
|
||||||
Evaluator::Layout>
|
|
||||||
TensorBlockMapper;
|
|
||||||
|
|
||||||
Evaluator evaluator(expr, device);
|
Evaluator evaluator(expr, device);
|
||||||
StorageIndex total_size = array_prod(evaluator.dimensions());
|
StorageIndex total_size = array_prod(evaluator.dimensions());
|
||||||
|
@ -521,8 +521,7 @@ struct TensorEvaluator<const TensorSlicingOp<StartIndices, Sizes, ArgType>, Devi
|
|||||||
|
|
||||||
typedef typename internal::remove_const<Scalar>::type ScalarNoConst;
|
typedef typename internal::remove_const<Scalar>::type ScalarNoConst;
|
||||||
|
|
||||||
typedef internal::TensorBlock<ScalarNoConst, Index, NumDims, Layout>
|
typedef internal::TensorBlock<ScalarNoConst, Index, NumDims, Layout> TensorBlock;
|
||||||
TensorBlock;
|
|
||||||
typedef typename TensorBlock::Dimensions TensorBlockDimensions;
|
typedef typename TensorBlock::Dimensions TensorBlockDimensions;
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
|
||||||
@ -799,8 +798,7 @@ struct TensorEvaluator<TensorSlicingOp<StartIndices, Sizes, ArgType>, Device>
|
|||||||
|
|
||||||
typedef typename internal::remove_const<Scalar>::type ScalarNoConst;
|
typedef typename internal::remove_const<Scalar>::type ScalarNoConst;
|
||||||
|
|
||||||
typedef internal::TensorBlock<ScalarNoConst, Index, NumDims, Layout>
|
typedef internal::TensorBlock<ScalarNoConst, Index, NumDims, Layout> TensorBlock;
|
||||||
TensorBlock;
|
|
||||||
typedef typename TensorBlock::Dimensions TensorBlockDimensions;
|
typedef typename TensorBlock::Dimensions TensorBlockDimensions;
|
||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user