# Magnum/EigenIntegration/Integration.h filenew in 2019.10

Conversion of Eigen array and matrix types.

## Math type conversion

Provides conversion for the following fixed-size types. See Magnum/EigenIntegration/GeometryIntegration.h for conversion of special geometry types and Magnum/EigenIntegration/DynamicMatrixIntegration.h for conversion of dynamically sized types.

Magnum vector typeEquivalent Eigen type
Math::BitVector<size>Eigen::Array<bool, size, 1>
Math::Vector<size, T> and derived classesEigen::Array<T, size, 1>
Math::Vector<size, T> and derived classesEigen::Matrix<T, size, 1>
Magnum matrix typeEquivalent Eigen type
Math::RectangularMatrix<cols, rows, T> and derived classesEigen::Array<T, rows, cols>
Math::RectangularMatrix<cols, rows, T> and derived classesEigen::Matrix<T, rows, cols>

`Eigen::Array` and `Eigen::Matrix` classes provide a std::iostream `operator<<` overload, which means they're directly usable with Corrade::Utility::Debug if you include Corrade/Utility/DebugStl.h as well. Example usage:

```#include <Magnum/EigenIntegration/Integration.h>

…

Eigen::Vector3f a{1.0f, 2.0f, 3.0f};
Vector3 b(a);

auto c = Matrix3::rotation(35.0_degf);

// It's not possible to convert using Eigen::Matrix3f(c)
auto d = EigenIntegration::cast<Eigen::Matrix3f>(c);

Debug{} << Eigen::Array3i{1, 42, -3}; // prints   1
//         42
//         -3```

## Namespaces

namespace Magnum
Root namespace.
namespace Magnum::Math
Math library.
namespace Magnum::EigenIntegration new in 2019.10
Integration with Eigen.

## Functions

template<class To, std::size_t cols, std::size_t rows, class T>
auto cast(const Math::RectangularMatrix<cols, rows, T>& from) -> To new in 2019.10
Convert a Magnum type to Eigen type.
template<class To, std::size_t size>
auto cast(const Math::BitVector<size>& from) -> To new in 2019.10
template<class To, std::size_t size, class T>
auto cast(const Math::Vector<size, T>& from) -> To new in 2019.10