
 The Matrix class 
 In Eigen, all matrices and vectors are objects of the Matrix template class. Vectors are just a special case of matrices, with either 1 row or 1 column.


 Matrix and vector arithmetic 
 This page aims to provide an overview and some details on how to perform arithmetic between matrices, vectors and scalars with Eigen.


 The Array class and coefficientwise operations 
 This page aims to provide an overview and explanations on how to use Eigen's Array class.


 Block operations 
 This page explains the essentials of block operations. A block is a rectangular part of a matrix or array. Blocks expressions can be used both as rvalues and as lvalues. As usual with Eigen expressions, this abstraction has zero runtime cost provided that you let your compiler optimize.


 Slicing and Indexing 
 This page presents the numerous possibilities offered by operator() to index subset of rows and columns. This API has been introduced in Eigen 3.4. It supports all the feature proposed by the block API , and much more. In particular, it supports slicing that consists in taking a set of rows, columns, or elements, uniformly spaced within a matrix or indexed from an array of indices.


 Advanced initialization 
 This page discusses several advanced methods for initializing matrices. It gives more details on the commainitializer, which was introduced before. It also explains how to get special matrices such as the identity matrix and the zero matrix.


 Reductions, visitors and broadcasting 
 This page explains Eigen's reductions, visitors and broadcasting and how they are used with matrices and arrays .


 Reshape 
 Since the version 3.4, Eigen exposes convenient methods to reshape a matrix to another matrix of different sizes or vector. All cases are handled via the DenseBase::reshaped(NRowsType,NColsType) and DenseBase::reshaped() functions. Those functions do not perform inplace reshaping, but instead return a view on the input expression.


 STL iterators and algorithms 
 Since the version 3.4, Eigen's dense matrices and arrays provide STL compatible iterators. As demonstrated below, this makes them naturally compatible with rangeforloops and STL's algorithms.


 Interfacing with raw buffers: the Map class 
 This page explains how to work with "raw" C/C++ arrays. This can be useful in a variety of contexts, particularly when "importing" vectors and matrices from other libraries into Eigen.


 Aliasing 
 In Eigen, aliasing refers to assignment statement in which the same matrix (or array or vector) appears on the left and on the right of the assignment operators. Statements like mat = 2 * mat; or mat = mat.transpose(); exhibit aliasing. The aliasing in the first example is harmless, but the aliasing in the second example leads to unexpected results. This page explains what aliasing is, when it is harmful, and what to do about it.


 Storage orders 
 There are two different storage orders for matrices and twodimensional arrays: columnmajor and rowmajor. This page explains these storage orders and how to specify which one should be used.


 Alignment issues 

 Reference 

 Catalog of coefficientwise math functions 
 This table presents a catalog of the coefficientwise math functions supported by Eigen. In this table, a , b , refer to Array objects or expressions, and m refers to a linear algebra Matrix/Vector object. Standard scalar types are abbreviated as follows:


 Quick reference guide 
