<commit_before>namespace Bull
{
    /*! \brief Create an identity matrix
     *
     * \return Return the matrix
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, W, H> Matrix<T, W, H>::createIdentity()
    {

    }

    /*! \brief Create a translation matrix
     *
     * \param x The translation value on x axis
     * \param y The translation value on y axis
     * \param z The translation value on z axis
     *
     * \return Return the matrix
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, 4, 4> createTranslation(T x, T y, T z)
    {

    }

    /*! \brief Create a scale matrix
     *
     * \param x The scale value on x axis
     * \param y The scale value on y axis
     * \param z The scale value on z axis
     *
     * \return Return the matrix
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, 4, 4> createScale(T x, T y, T z)
    {

    }

    /*! \brief Default Constructor
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, W, H>::Matrix()
    {
        static_assert(std::is_arithmetic<T>::value, "T must be a numeric type");

        set(0);
    }

    /*! \brief Constructor
     *
     * \param value The value of every matrix cell
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, W, H>::Matrix(T value)
    {<commit_msg>[Math/Matrix] Implement identity/scale/translation matrices creation<commit_after>namespace Bull
{
    /*! \brief Create an identity matrix
     *
     * \return Return the matrix
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, W, H> Matrix<T, W, H>::createIdentity()
    {
        static_assert(Matrix<T, W, H>::Width == Matrix<T, W, H>::Height, "Identity matrix can be used only with squares matrices");

        Matrix<T, W, H> identity;

        for(std::size_t i = 0; i < Matrix<T, W, H>::Width; i++)
        {
            identity.set(1, i, i);
        }

        return identity;
    }

    /*! \brief Create a translation matrix
     *
     * \param x The translation value on x axis
     * \param y The translation value on y axis
     * \param z The translation value on z axis
     *
     * \return Return the matrix
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, 4, 4> Matrix<T, W, H>::createTranslation(T x, T y, T z)
    {
        Matrix<T, 4, 4> translation = Matrix<T, 4, 4>::createIdentity();

        translation.set(x, 3, 0);
        translation.set(y, 3, 1);
        translation.set(z, 3, 2);

        return translation;
    }

    /*! \brief Create a scale matrix
     *
     * \param x The scale value on x axis
     * \param y The scale value on y axis
     * \param z The scale value on z axis
     *
     * \return Return the matrix
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, 4, 4> Matrix<T, W, H>::createScale(T x, T y, T z)
    {
        Matrix<T, 4, 4> scale;

        scale.set(x, 0, 0);
        scale.set(y, 1, 1);
        scale.set(z, 2, 2);
        scale.set(1, 3, 3);

        return scale;
    }

    /*! \brief Default Constructor
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, W, H>::Matrix()
    {
        static_assert(std::is_arithmetic<T>::value, "T must be a numeric type");

        set(0);
    }

    /*! \brief Constructor
     *
     * \param value The value of every matrix cell
     *
     */
    template<typename T, std::size_t W, std::size_t H>
    Matrix<T, W, H>::Matrix(T value)
    {
{'fraction_non_alphanumeric': 0.13196562240088716, 'fraction_numerical': 0.009148877183254783, 'mean_word_length': 2.0217755443886096, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 36, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5910242', 'n_tokens_mistral': 1239, 'n_tokens_neox': 1186, 'n_words': 394}