Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

QVM: Quaternions, Vectors, Matrices

diag_mat

#include <boost/qvm/map_vec_mat.hpp>

namespace boost
{
    namespace qvm
    {
        //Only enabled if: is_vec<A>::value
        template <iclass A>
        -unspecified-return-type- diag_mat( A & a );
    }
}

The expression diag_mat(v) returns a view proxy that accesses the vector v as a square matrix of the same dimensions in which the elements of v appear as the main diagonal and all other elements are zero.

Note: the returned matrix type is effectively a scaling matrix.