Please, help us to better know about our user community by answering the following short survey: https://forms.gle/wpyrxWi18ox9Z5ae9
Eigen  3.4.0
 
Loading...
Searching...
No Matches
DenseBase.h
1// This file is part of Eigen, a lightweight C++ template library
2// for linear algebra.
3//
4// Copyright (C) 2007-2010 Benoit Jacob <jacob.benoit.1@gmail.com>
5// Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>
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_DENSEBASE_H
12#define EIGEN_DENSEBASE_H
13
14namespace Eigen {
15
16namespace internal {
17
18// The index type defined by EIGEN_DEFAULT_DENSE_INDEX_TYPE must be a signed type.
19// This dummy function simply aims at checking that at compile time.
20static inline void check_DenseIndex_is_signed() {
21 EIGEN_STATIC_ASSERT(NumTraits<DenseIndex>::IsSigned,THE_INDEX_TYPE_MUST_BE_A_SIGNED_TYPE)
22}
23
24} // end namespace internal
25
41template<typename Derived> class DenseBase
42#ifndef EIGEN_PARSED_BY_DOXYGEN
43 : public DenseCoeffsBase<Derived, internal::accessors_level<Derived>::value>
44#else
45 : public DenseCoeffsBase<Derived,DirectWriteAccessors>
46#endif // not EIGEN_PARSED_BY_DOXYGEN
47{
48 public:
49
53 typedef Eigen::InnerIterator<Derived> InnerIterator;
54
55 typedef typename internal::traits<Derived>::StorageKind StorageKind;
56
63 typedef typename internal::traits<Derived>::StorageIndex StorageIndex;
64
66 typedef typename internal::traits<Derived>::Scalar Scalar;
67
72
73 typedef typename NumTraits<Scalar>::Real RealScalar;
74 typedef DenseCoeffsBase<Derived, internal::accessors_level<Derived>::value> Base;
75
76 using Base::derived;
77 using Base::const_cast_derived;
78 using Base::rows;
79 using Base::cols;
80 using Base::size;
81 using Base::rowIndexByOuterInner;
82 using Base::colIndexByOuterInner;
83 using Base::coeff;
84 using Base::coeffByOuterInner;
85 using Base::operator();
86 using Base::operator[];
87 using Base::x;
88 using Base::y;
89 using Base::z;
90 using Base::w;
91 using Base::stride;
92 using Base::innerStride;
93 using Base::outerStride;
94 using Base::rowStride;
95 using Base::colStride;
96 typedef typename Base::CoeffReturnType CoeffReturnType;
97
98 enum {
99
100 RowsAtCompileTime = internal::traits<Derived>::RowsAtCompileTime,
106 ColsAtCompileTime = internal::traits<Derived>::ColsAtCompileTime,
113 SizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::RowsAtCompileTime,
114 internal::traits<Derived>::ColsAtCompileTime>::ret),
119 MaxRowsAtCompileTime = internal::traits<Derived>::MaxRowsAtCompileTime,
130 MaxColsAtCompileTime = internal::traits<Derived>::MaxColsAtCompileTime,
141 MaxSizeAtCompileTime = (internal::size_at_compile_time<internal::traits<Derived>::MaxRowsAtCompileTime,
142 internal::traits<Derived>::MaxColsAtCompileTime>::ret),
153 IsVectorAtCompileTime = internal::traits<Derived>::RowsAtCompileTime == 1
154 || internal::traits<Derived>::ColsAtCompileTime == 1,
160 NumDimensions = int(MaxSizeAtCompileTime) == 1 ? 0 : bool(IsVectorAtCompileTime) ? 1 : 2,
165 Flags = internal::traits<Derived>::Flags,
172 InnerSizeAtCompileTime = int(IsVectorAtCompileTime) ? int(SizeAtCompileTime)
174
175 InnerStrideAtCompileTime = internal::inner_stride_at_compile_time<Derived>::ret,
176 OuterStrideAtCompileTime = internal::outer_stride_at_compile_time<Derived>::ret
177 };
178
179 typedef typename internal::find_best_packet<Scalar,SizeAtCompileTime>::type PacketScalar;
180
181 enum { IsPlainObjectBase = 0 };
182
186 internal::traits<Derived>::RowsAtCompileTime,
187 internal::traits<Derived>::ColsAtCompileTime,
188 AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
189 internal::traits<Derived>::MaxRowsAtCompileTime,
190 internal::traits<Derived>::MaxColsAtCompileTime
192
196 internal::traits<Derived>::RowsAtCompileTime,
197 internal::traits<Derived>::ColsAtCompileTime,
198 AutoAlign | (internal::traits<Derived>::Flags&RowMajorBit ? RowMajor : ColMajor),
199 internal::traits<Derived>::MaxRowsAtCompileTime,
200 internal::traits<Derived>::MaxColsAtCompileTime
202
209 typedef typename internal::conditional<internal::is_same<typename internal::traits<Derived>::XprKind,MatrixXpr >::value,
211
214 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
215 inline Index nonZeros() const { return size(); }
216
222 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
224 {
225 return IsVectorAtCompileTime ? 1
226 : int(IsRowMajor) ? this->rows() : this->cols();
227 }
228
234 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
236 {
237 return IsVectorAtCompileTime ? this->size()
238 : int(IsRowMajor) ? this->cols() : this->rows();
239 }
240
245 EIGEN_DEVICE_FUNC
246 void resize(Index newSize)
247 {
248 EIGEN_ONLY_USED_FOR_DEBUG(newSize);
249 eigen_assert(newSize == this->size()
250 && "DenseBase::resize() does not actually allow to resize.");
251 }
256 EIGEN_DEVICE_FUNC
258 {
259 EIGEN_ONLY_USED_FOR_DEBUG(rows);
260 EIGEN_ONLY_USED_FOR_DEBUG(cols);
261 eigen_assert(rows == this->rows() && cols == this->cols()
262 && "DenseBase::resize() does not actually allow to resize.");
263 }
264
265#ifndef EIGEN_PARSED_BY_DOXYGEN
269 EIGEN_DEPRECATED typedef CwiseNullaryOp<internal::linspaced_op<Scalar>,PlainObject> SequentialLinSpacedReturnType;
271 typedef CwiseNullaryOp<internal::linspaced_op<Scalar>,PlainObject> RandomAccessLinSpacedReturnType;
273 typedef Matrix<typename NumTraits<typename internal::traits<Derived>::Scalar>::Real, internal::traits<Derived>::ColsAtCompileTime, 1> EigenvaluesReturnType;
274
275#endif // not EIGEN_PARSED_BY_DOXYGEN
276
278 template<typename OtherDerived>
279 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
280 Derived& operator=(const DenseBase<OtherDerived>& other);
281
285 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
286 Derived& operator=(const DenseBase& other);
287
288 template<typename OtherDerived>
289 EIGEN_DEVICE_FUNC
290 Derived& operator=(const EigenBase<OtherDerived> &other);
291
292 template<typename OtherDerived>
293 EIGEN_DEVICE_FUNC
294 Derived& operator+=(const EigenBase<OtherDerived> &other);
295
296 template<typename OtherDerived>
297 EIGEN_DEVICE_FUNC
298 Derived& operator-=(const EigenBase<OtherDerived> &other);
299
300 template<typename OtherDerived>
301 EIGEN_DEVICE_FUNC
302 Derived& operator=(const ReturnByValue<OtherDerived>& func);
303
306 template<typename OtherDerived>
308 EIGEN_DEPRECATED EIGEN_DEVICE_FUNC
309 Derived& lazyAssign(const DenseBase<OtherDerived>& other);
310
311 EIGEN_DEVICE_FUNC
313
314 template<unsigned int Added,unsigned int Removed>
316 EIGEN_DEPRECATED
317 const Derived& flagged() const
318 { return derived(); }
319
320 template<typename OtherDerived>
321 EIGEN_DEVICE_FUNC
323
324 typedef Transpose<Derived> TransposeReturnType;
325 EIGEN_DEVICE_FUNC
326 TransposeReturnType transpose();
327 typedef typename internal::add_const<Transpose<const Derived> >::type ConstTransposeReturnType;
328 EIGEN_DEVICE_FUNC
329 ConstTransposeReturnType transpose() const;
330 EIGEN_DEVICE_FUNC
331 void transposeInPlace();
332
333 EIGEN_DEVICE_FUNC static const ConstantReturnType
335 EIGEN_DEVICE_FUNC static const ConstantReturnType
336 Constant(Index size, const Scalar& value);
337 EIGEN_DEVICE_FUNC static const ConstantReturnType
338 Constant(const Scalar& value);
339
340 EIGEN_DEPRECATED EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
341 LinSpaced(Sequential_t, Index size, const Scalar& low, const Scalar& high);
342 EIGEN_DEPRECATED EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
343 LinSpaced(Sequential_t, const Scalar& low, const Scalar& high);
344
345 EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
346 LinSpaced(Index size, const Scalar& low, const Scalar& high);
347 EIGEN_DEVICE_FUNC static const RandomAccessLinSpacedReturnType
348 LinSpaced(const Scalar& low, const Scalar& high);
349
350 template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
352 NullaryExpr(Index rows, Index cols, const CustomNullaryOp& func);
353 template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
355 NullaryExpr(Index size, const CustomNullaryOp& func);
356 template<typename CustomNullaryOp> EIGEN_DEVICE_FUNC
358 NullaryExpr(const CustomNullaryOp& func);
359
360 EIGEN_DEVICE_FUNC static const ConstantReturnType Zero(Index rows, Index cols);
361 EIGEN_DEVICE_FUNC static const ConstantReturnType Zero(Index size);
362 EIGEN_DEVICE_FUNC static const ConstantReturnType Zero();
363 EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index rows, Index cols);
364 EIGEN_DEVICE_FUNC static const ConstantReturnType Ones(Index size);
365 EIGEN_DEVICE_FUNC static const ConstantReturnType Ones();
366
367 EIGEN_DEVICE_FUNC void fill(const Scalar& value);
368 EIGEN_DEVICE_FUNC Derived& setConstant(const Scalar& value);
369 EIGEN_DEVICE_FUNC Derived& setLinSpaced(Index size, const Scalar& low, const Scalar& high);
370 EIGEN_DEVICE_FUNC Derived& setLinSpaced(const Scalar& low, const Scalar& high);
371 EIGEN_DEVICE_FUNC Derived& setZero();
372 EIGEN_DEVICE_FUNC Derived& setOnes();
373 EIGEN_DEVICE_FUNC Derived& setRandom();
374
375 template<typename OtherDerived> EIGEN_DEVICE_FUNC
376 bool isApprox(const DenseBase<OtherDerived>& other,
377 const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
378 EIGEN_DEVICE_FUNC
379 bool isMuchSmallerThan(const RealScalar& other,
380 const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
381 template<typename OtherDerived> EIGEN_DEVICE_FUNC
382 bool isMuchSmallerThan(const DenseBase<OtherDerived>& other,
383 const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
384
385 EIGEN_DEVICE_FUNC bool isApproxToConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
386 EIGEN_DEVICE_FUNC bool isConstant(const Scalar& value, const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
387 EIGEN_DEVICE_FUNC bool isZero(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
388 EIGEN_DEVICE_FUNC bool isOnes(const RealScalar& prec = NumTraits<Scalar>::dummy_precision()) const;
389
390 inline bool hasNaN() const;
391 inline bool allFinite() const;
392
393 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
394 Derived& operator*=(const Scalar& other);
395 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
396 Derived& operator/=(const Scalar& other);
397
398 typedef typename internal::add_const_on_value_type<typename internal::eval<Derived>::type>::type EvalReturnType;
406 EIGEN_DEVICE_FUNC
407 EIGEN_STRONG_INLINE EvalReturnType eval() const
408 {
409 // Even though MSVC does not honor strong inlining when the return type
410 // is a dynamic matrix, we desperately need strong inlining for fixed
411 // size types on MSVC.
412 return typename internal::eval<Derived>::type(derived());
413 }
414
418 template<typename OtherDerived>
419 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
420 void swap(const DenseBase<OtherDerived>& other)
421 {
422 EIGEN_STATIC_ASSERT(!OtherDerived::IsPlainObjectBase,THIS_EXPRESSION_IS_NOT_A_LVALUE__IT_IS_READ_ONLY);
423 eigen_assert(rows()==other.rows() && cols()==other.cols());
424 call_assignment(derived(), other.const_cast_derived(), internal::swap_assign_op<Scalar>());
425 }
426
430 template<typename OtherDerived>
431 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
433 {
434 eigen_assert(rows()==other.rows() && cols()==other.cols());
435 call_assignment(derived(), other.derived(), internal::swap_assign_op<Scalar>());
436 }
437
438 EIGEN_DEVICE_FUNC inline const NestByValue<Derived> nestByValue() const;
439 EIGEN_DEVICE_FUNC inline const ForceAlignedAccess<Derived> forceAlignedAccess() const;
440 EIGEN_DEVICE_FUNC inline ForceAlignedAccess<Derived> forceAlignedAccess();
441 template<bool Enable> EIGEN_DEVICE_FUNC
442 inline const typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf() const;
443 template<bool Enable> EIGEN_DEVICE_FUNC
444 inline typename internal::conditional<Enable,ForceAlignedAccess<Derived>,Derived&>::type forceAlignedAccessIf();
445
446 EIGEN_DEVICE_FUNC Scalar sum() const;
447 EIGEN_DEVICE_FUNC Scalar mean() const;
448 EIGEN_DEVICE_FUNC Scalar trace() const;
449
450 EIGEN_DEVICE_FUNC Scalar prod() const;
451
452 template<int NaNPropagation>
453 EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar minCoeff() const;
454 template<int NaNPropagation>
455 EIGEN_DEVICE_FUNC typename internal::traits<Derived>::Scalar maxCoeff() const;
456
457
458 // By default, the fastest version with undefined NaN propagation semantics is
459 // used.
460 // TODO(rmlarsen): Replace with default template argument when we move to
461 // c++11 or beyond.
462 EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar minCoeff() const {
463 return minCoeff<PropagateFast>();
464 }
465 EIGEN_DEVICE_FUNC inline typename internal::traits<Derived>::Scalar maxCoeff() const {
466 return maxCoeff<PropagateFast>();
467 }
468
469 template<int NaNPropagation, typename IndexType>
470 EIGEN_DEVICE_FUNC
471 typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const;
472 template<int NaNPropagation, typename IndexType>
473 EIGEN_DEVICE_FUNC
474 typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const;
475 template<int NaNPropagation, typename IndexType>
476 EIGEN_DEVICE_FUNC
477 typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const;
478 template<int NaNPropagation, typename IndexType>
479 EIGEN_DEVICE_FUNC
480 typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const;
481
482 // TODO(rmlarsen): Replace these methods with a default template argument.
483 template<typename IndexType>
484 EIGEN_DEVICE_FUNC inline
485 typename internal::traits<Derived>::Scalar minCoeff(IndexType* row, IndexType* col) const {
486 return minCoeff<PropagateFast>(row, col);
487 }
488 template<typename IndexType>
489 EIGEN_DEVICE_FUNC inline
490 typename internal::traits<Derived>::Scalar maxCoeff(IndexType* row, IndexType* col) const {
491 return maxCoeff<PropagateFast>(row, col);
492 }
493 template<typename IndexType>
494 EIGEN_DEVICE_FUNC inline
495 typename internal::traits<Derived>::Scalar minCoeff(IndexType* index) const {
496 return minCoeff<PropagateFast>(index);
497 }
498 template<typename IndexType>
499 EIGEN_DEVICE_FUNC inline
500 typename internal::traits<Derived>::Scalar maxCoeff(IndexType* index) const {
501 return maxCoeff<PropagateFast>(index);
502 }
503
504 template<typename BinaryOp>
505 EIGEN_DEVICE_FUNC
506 Scalar redux(const BinaryOp& func) const;
507
508 template<typename Visitor>
509 EIGEN_DEVICE_FUNC
510 void visit(Visitor& func) const;
511
519 inline const WithFormat<Derived> format(const IOFormat& fmt) const
520 {
521 return WithFormat<Derived>(derived(), fmt);
522 }
523
525 EIGEN_DEVICE_FUNC
526 CoeffReturnType value() const
527 {
528 EIGEN_STATIC_ASSERT_SIZE_1x1(Derived)
529 eigen_assert(this->rows() == 1 && this->cols() == 1);
530 return derived().coeff(0,0);
531 }
532
533 EIGEN_DEVICE_FUNC bool all() const;
534 EIGEN_DEVICE_FUNC bool any() const;
535 EIGEN_DEVICE_FUNC Index count() const;
536
537 typedef VectorwiseOp<Derived, Horizontal> RowwiseReturnType;
538 typedef const VectorwiseOp<const Derived, Horizontal> ConstRowwiseReturnType;
539 typedef VectorwiseOp<Derived, Vertical> ColwiseReturnType;
540 typedef const VectorwiseOp<const Derived, Vertical> ConstColwiseReturnType;
541
549 //Code moved here due to a CUDA compiler bug
550 EIGEN_DEVICE_FUNC inline ConstRowwiseReturnType rowwise() const {
552 }
553 EIGEN_DEVICE_FUNC RowwiseReturnType rowwise();
554
562 EIGEN_DEVICE_FUNC inline ConstColwiseReturnType colwise() const {
564 }
565 EIGEN_DEVICE_FUNC ColwiseReturnType colwise();
566
568 static const RandomReturnType Random(Index rows, Index cols);
569 static const RandomReturnType Random(Index size);
570 static const RandomReturnType Random();
571
572 template<typename ThenDerived,typename ElseDerived>
573 inline EIGEN_DEVICE_FUNC const Select<Derived,ThenDerived,ElseDerived>
574 select(const DenseBase<ThenDerived>& thenMatrix,
575 const DenseBase<ElseDerived>& elseMatrix) const;
576
577 template<typename ThenDerived>
579 select(const DenseBase<ThenDerived>& thenMatrix, const typename ThenDerived::Scalar& elseScalar) const;
580
581 template<typename ElseDerived>
583 select(const typename ElseDerived::Scalar& thenScalar, const DenseBase<ElseDerived>& elseMatrix) const;
584
585 template<int p> RealScalar lpNorm() const;
586
587 template<int RowFactor, int ColFactor>
588 EIGEN_DEVICE_FUNC
598 //Code moved here due to a CUDA compiler bug
599 EIGEN_DEVICE_FUNC
601 {
602 return Replicate<Derived, Dynamic, Dynamic>(derived(), rowFactor, colFactor);
603 }
604
605 typedef Reverse<Derived, BothDirections> ReverseReturnType;
606 typedef const Reverse<const Derived, BothDirections> ConstReverseReturnType;
607 EIGEN_DEVICE_FUNC ReverseReturnType reverse();
609 //Code moved here due to a CUDA compiler bug
610 EIGEN_DEVICE_FUNC ConstReverseReturnType reverse() const
611 {
613 }
614 EIGEN_DEVICE_FUNC void reverseInPlace();
615
616 #ifdef EIGEN_PARSED_BY_DOXYGEN
620 typedef random_access_iterator_type iterator;
622 typedef random_access_iterator_type const_iterator;
623 #else
624 typedef typename internal::conditional< (Flags&DirectAccessBit)==DirectAccessBit,
625 internal::pointer_based_stl_iterator<Derived>,
626 internal::generic_randaccess_stl_iterator<Derived>
627 >::type iterator_type;
628
629 typedef typename internal::conditional< (Flags&DirectAccessBit)==DirectAccessBit,
630 internal::pointer_based_stl_iterator<const Derived>,
631 internal::generic_randaccess_stl_iterator<const Derived>
632 >::type const_iterator_type;
633
634 // Stl-style iterators are supported only for vectors.
635
636 typedef typename internal::conditional< IsVectorAtCompileTime,
637 iterator_type,
638 void
639 >::type iterator;
640
641 typedef typename internal::conditional< IsVectorAtCompileTime,
642 const_iterator_type,
643 void
644 >::type const_iterator;
645 #endif
646
647 inline iterator begin();
648 inline const_iterator begin() const;
649 inline const_iterator cbegin() const;
650 inline iterator end();
651 inline const_iterator end() const;
652 inline const_iterator cend() const;
653
654#define EIGEN_CURRENT_STORAGE_BASE_CLASS Eigen::DenseBase
655#define EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
656#define EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF(COND)
657#define EIGEN_DOC_UNARY_ADDONS(X,Y)
658# include "../plugins/CommonCwiseUnaryOps.h"
659# include "../plugins/BlockMethods.h"
660# include "../plugins/IndexedViewMethods.h"
661# include "../plugins/ReshapedMethods.h"
662# ifdef EIGEN_DENSEBASE_PLUGIN
663# include EIGEN_DENSEBASE_PLUGIN
664# endif
665#undef EIGEN_CURRENT_STORAGE_BASE_CLASS
666#undef EIGEN_DOC_BLOCK_ADDONS_NOT_INNER_PANEL
667#undef EIGEN_DOC_BLOCK_ADDONS_INNER_PANEL_IF
668#undef EIGEN_DOC_UNARY_ADDONS
669
670 // disable the use of evalTo for dense objects with a nice compilation error
671 template<typename Dest>
672 EIGEN_DEVICE_FUNC
673 inline void evalTo(Dest& ) const
674 {
675 EIGEN_STATIC_ASSERT((internal::is_same<Dest,void>::value),THE_EVAL_EVALTO_FUNCTION_SHOULD_NEVER_BE_CALLED_FOR_DENSE_OBJECTS);
676 }
677
678 protected:
679 EIGEN_DEFAULT_COPY_CONSTRUCTOR(DenseBase)
681 EIGEN_DEVICE_FUNC DenseBase()
682 {
683 /* Just checks for self-consistency of the flags.
684 * Only do it when debugging Eigen, as this borders on paranoia and could slow compilation down
685 */
686#ifdef EIGEN_INTERNAL_DEBUGGING
687 EIGEN_STATIC_ASSERT((EIGEN_IMPLIES(MaxRowsAtCompileTime==1 && MaxColsAtCompileTime!=1, int(IsRowMajor))
688 && EIGEN_IMPLIES(MaxColsAtCompileTime==1 && MaxRowsAtCompileTime!=1, int(!IsRowMajor))),
689 INVALID_STORAGE_ORDER_FOR_THIS_VECTOR_EXPRESSION)
690#endif
691 }
692
693 private:
694 EIGEN_DEVICE_FUNC explicit DenseBase(int);
695 EIGEN_DEVICE_FUNC DenseBase(int,int);
696 template<typename OtherDerived> EIGEN_DEVICE_FUNC explicit DenseBase(const DenseBase<OtherDerived>&);
697};
698
699} // end namespace Eigen
700
701#endif // EIGEN_DENSEBASE_H
General-purpose arrays with easy API for coefficient-wise operations.
Definition: Array.h:47
Generic expression of a matrix where all coefficients are defined by a functor.
Definition: CwiseNullaryOp.h:61
Base class for all dense matrices, vectors, and arrays.
Definition: DenseBase.h:47
EIGEN_CONSTEXPR Index outerSize() const
Definition: DenseBase.h:223
@ IsVectorAtCompileTime
Definition: DenseBase.h:153
@ SizeAtCompileTime
Definition: DenseBase.h:113
@ MaxSizeAtCompileTime
Definition: DenseBase.h:141
@ IsRowMajor
Definition: DenseBase.h:170
@ NumDimensions
Definition: DenseBase.h:160
@ Flags
Definition: DenseBase.h:165
@ ColsAtCompileTime
Definition: DenseBase.h:106
@ MaxColsAtCompileTime
Definition: DenseBase.h:130
@ MaxRowsAtCompileTime
Definition: DenseBase.h:119
@ RowsAtCompileTime
Definition: DenseBase.h:100
internal::traits< Derived >::Scalar minCoeff() const
Definition: Redux.h:431
CommaInitializer< Derived > operator<<(const Scalar &s)
Definition: CommaInitializer.h:148
const WithFormat< Derived > format(const IOFormat &fmt) const
Definition: DenseBase.h:519
static EIGEN_DEPRECATED const RandomAccessLinSpacedReturnType LinSpaced(Sequential_t, Index size, const Scalar &low, const Scalar &high)
Definition: CwiseNullaryOp.h:244
bool isConstant(const Scalar &value, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition: CwiseNullaryOp.h:325
Scalar mean() const
Definition: Redux.h:472
Index count() const
Definition: BooleanRedux.h:127
Derived & setOnes()
Definition: CwiseNullaryOp.h:698
void resize(Index rows, Index cols)
Definition: DenseBase.h:257
static const ConstantReturnType Ones()
Definition: CwiseNullaryOp.h:670
internal::traits< Derived >::StorageIndex StorageIndex
The type used to store indices.
Definition: DenseBase.h:63
void resize(Index newSize)
Definition: DenseBase.h:246
random_access_iterator_type const_iterator
Definition: DenseBase.h:622
static const CwiseNullaryOp< CustomNullaryOp, PlainObject > NullaryExpr(Index rows, Index cols, const CustomNullaryOp &func)
Definition: CwiseNullaryOp.h:114
ReverseReturnType reverse()
Definition: Reverse.h:120
const NestByValue< Derived > nestByValue() const
Definition: NestByValue.h:63
void visit(Visitor &func) const
Definition: Visitor.h:117
static const ConstantReturnType Zero()
Definition: CwiseNullaryOp.h:514
void swap(PlainObjectBase< OtherDerived > &other)
Definition: DenseBase.h:432
iterator begin()
Definition: StlIterators.h:408
ConstColwiseReturnType colwise() const
Definition: DenseBase.h:562
EIGEN_CONSTEXPR Index innerSize() const
Definition: DenseBase.h:235
Derived & setLinSpaced(Index size, const Scalar &low, const Scalar &high)
Sets a linearly spaced vector.
Definition: CwiseNullaryOp.h:430
internal::traits< Derived >::Scalar Scalar
Definition: DenseBase.h:66
const Replicate< Derived, RowFactor, ColFactor > replicate() const
Definition: Replicate.h:119
const Select< Derived, ThenDerived, ElseDerived > select(const DenseBase< ThenDerived > &thenMatrix, const DenseBase< ElseDerived > &elseMatrix) const
Definition: Select.h:126
static const ConstantReturnType Constant(Index rows, Index cols, const Scalar &value)
Definition: CwiseNullaryOp.h:189
const Replicate< Derived, Dynamic, Dynamic > replicate(Index rowFactor, Index colFactor) const
Definition: DenseBase.h:600
internal::traits< Derived >::Scalar maxCoeff() const
Definition: Redux.h:446
CoeffReturnType value() const
Definition: DenseBase.h:526
Scalar value_type
Definition: DenseBase.h:71
void fill(const Scalar &value)
Definition: CwiseNullaryOp.h:335
ConstReverseReturnType reverse() const
Definition: DenseBase.h:610
ConstRowwiseReturnType rowwise() const
Definition: DenseBase.h:550
DenseBase()
Definition: DenseBase.h:681
Matrix< typename internal::traits< Derived >::Scalar, internal::traits< Derived >::RowsAtCompileTime, internal::traits< Derived >::ColsAtCompileTime, AutoAlign|(internal::traits< Derived >::Flags &RowMajorBit ? RowMajor :ColMajor), internal::traits< Derived >::MaxRowsAtCompileTime, internal::traits< Derived >::MaxColsAtCompileTime > PlainMatrix
Definition: DenseBase.h:191
bool isOnes(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition: CwiseNullaryOp.h:685
EvalReturnType eval() const
Definition: DenseBase.h:407
bool hasNaN() const
Definition: BooleanRedux.h:137
Derived & operator=(const DenseBase< OtherDerived > &other)
Definition: Assign.h:39
bool any() const
Definition: BooleanRedux.h:103
Derived & setConstant(const Scalar &value)
Definition: CwiseNullaryOp.h:345
Derived & setRandom()
Definition: Random.h:131
void transposeInPlace()
Definition: Transpose.h:344
TransposeReturnType transpose()
Definition: Transpose.h:182
EIGEN_CONSTEXPR Index nonZeros() const
Definition: DenseBase.h:215
internal::conditional< internal::is_same< typenameinternal::traits< Derived >::XprKind, MatrixXpr >::value, PlainMatrix, PlainArray >::type PlainObject
The plain matrix or array type corresponding to this expression.
Definition: DenseBase.h:210
void reverseInPlace()
Definition: Reverse.h:141
Scalar sum() const
Definition: Redux.h:459
EIGEN_DEPRECATED const Derived & flagged() const
Definition: DenseBase.h:317
bool all() const
Definition: BooleanRedux.h:79
iterator end()
Definition: StlIterators.h:437
static const RandomReturnType Random()
Definition: Random.h:113
bool isApprox(const DenseBase< OtherDerived > &other, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition: Fuzzy.h:103
const_iterator cbegin() const
Definition: StlIterators.h:426
const_iterator cend() const
Definition: StlIterators.h:455
Scalar prod() const
Definition: Redux.h:493
EIGEN_DEPRECATED Derived & lazyAssign(const DenseBase< OtherDerived > &other)
bool allFinite() const
Definition: BooleanRedux.h:151
Derived & setZero()
Definition: CwiseNullaryOp.h:546
bool isZero(const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition: CwiseNullaryOp.h:528
random_access_iterator_type iterator
Definition: DenseBase.h:620
bool isApproxToConstant(const Scalar &value, const RealScalar &prec=NumTraits< Scalar >::dummy_precision()) const
Definition: CwiseNullaryOp.h:310
void swap(const DenseBase< OtherDerived > &other)
Definition: DenseBase.h:420
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: EigenBase.h:63
Derived & derived()
Definition: EigenBase.h:46
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: EigenBase.h:60
EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
Definition: EigenBase.h:67
Enforce aligned packet loads and stores regardless of what is requested.
Definition: ForceAlignedAccess.h:36
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:180
Expression which must be nested by value.
Definition: NestByValue.h:40
Dense storage base class for matrices and arrays.
Definition: PlainObjectBase.h:100
Expression of the multiple replication of a matrix or vector.
Definition: Replicate.h:63
Expression of the reverse of a vector or matrix.
Definition: Reverse.h:65
Expression of a coefficient wise version of the C++ ternary operator ?:
Definition: Select.h:54
Expression of the transpose of a matrix.
Definition: Transpose.h:54
Pseudo expression providing broadcasting and partial reduction operations.
Definition: VectorwiseOp.h:187
Pseudo expression providing matrix output with given format.
Definition: IO.h:97
@ ColMajor
Definition: Constants.h:319
@ RowMajor
Definition: Constants.h:321
@ AutoAlign
Definition: Constants.h:323
const unsigned int DirectAccessBit
Definition: Constants.h:155
const unsigned int RowMajorBit
Definition: Constants.h:66
Namespace containing all symbols from the Eigen library.
Definition: Core:141
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
Helper class used by the comma initializer operator.
Definition: CommaInitializer.h:29
Definition: EigenBase.h:30
Stores a set of parameters controlling the way matrices are printed.
Definition: IO.h:52
Definition: Constants.h:522
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition: NumTraits.h:233