<commit_before>#ifndef AX_EXPRESSION_H
#define AX_EXPRESSION_H
#include <type_traits>
#include <cstddef>

namespace ax
{
    extern void* enabler;

    class Matrix{};
    class MatrixExp{};
    class Vector{};
    class VectorExp{};

    class DynamicMatrix{};
    class DynamicMatrixExp{};
    class DynamicVector{};
    class DynamicVectorExp{};

    template <typename T>
    class is_MatrixExpression:public std::false_type{};
    template <>
    class is_MatrixExpression<Matrix>:public std::true_type{};
    template <>
    class is_MatrixExpression<MatrixExp>: public std::true_type{};

    template <typename T>
    class is_VectorExpression:public std::false_type{};
    template <>
    class is_VectorExpression<Vector>:public std::true_type{};
    template <>
    class is_VectorExpression<VectorExp>:public std::true_type{};

    template <std::size_t LN, std::size_t RN>
    class is_SameSize: public std::false_type{};
    template <std::size_t LN>
    class is_SameSize<LN, LN>: public std::true_type{};

    template <typename T>
    class is_ScalarType: public std::false_type{};
    template <>
    class is_ScalarType<double>: public std::true_type{};

    // =============================== dynamic =================================
    template <typename T>
    class is_DynamicVectorExpression:public std::false_type{};
    template <>
    class is_DynamicVectorExpression<Vector>:public std::true_type{};
    template <>
    class is_DynamicVectorExpression<VectorExp>:public std::true_type{};

    template <typename T>
    class is_DynamicMatrixExpression:public std::false_type{};<commit_msg>fix tag dispatch<commit_after>#ifndef AX_EXPRESSION_H
#define AX_EXPRESSION_H
#include <type_traits>
#include <cstddef>

namespace ax
{
    extern void* enabler;

    class Matrix{};
    class MatrixExp{};
    class Vector{};
    class VectorExp{};

    class DynamicMatrix{};
    class DynamicMatrixExp{};
    class DynamicVector{};
    class DynamicVectorExp{};

    template <typename T>
    class is_MatrixExpression:public std::false_type{};
    template <>
    class is_MatrixExpression<Matrix>:public std::true_type{};
    template <>
    class is_MatrixExpression<MatrixExp>: public std::true_type{};

    template <typename T>
    class is_VectorExpression:public std::false_type{};
    template <>
    class is_VectorExpression<Vector>:public std::true_type{};
    template <>
    class is_VectorExpression<VectorExp>:public std::true_type{};

    template <std::size_t LN, std::size_t RN>
    class is_SameSize: public std::false_type{};
    template <std::size_t LN>
    class is_SameSize<LN, LN>: public std::true_type{};

    template <typename T>
    class is_ScalarType: public std::false_type{};
    template <>
    class is_ScalarType<double>: public std::true_type{};

    // =============================== dynamic =================================
    template <typename T>
    class is_DynamicVectorExpression:public std::false_type{};
    template <>
    class is_DynamicVectorExpression<DynamicVector>:public std::true_type{};
    template <>
    class is_DynamicVectorExpression<DynamicVectorExp>:public std::true_type{};

    template <typename T>
    class is_DynamicMatrixExpression:public std::false_type{};
{'fraction_non_alphanumeric': 0.14746543778801843, 'fraction_numerical': 0.0, 'mean_word_length': 4.76283185840708, 'pattern_counts': {'":': 0, '<': 51, '<?xml version=': 0, '>': 51, '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': '2827427', 'n_tokens_mistral': 991, 'n_tokens_neox': 888, 'n_words': 217}