#include "Wm4Vector.h"
using namespace Wm4;

template<> const Vector2<float> Vector2<float>::ZERO(0.0f,0.0f);
template<> const Vector2<float> Vector2<float>::UNIT_X(1.0f,0.0f);
template<> const Vector2<float> Vector2<float>::UNIT_Y(0.0f,1.0f);
template<> const Vector2<float> Vector2<float>::ONE(1.0f,1.0f);

template<> const Vector2<double> Vector2<double>::ZERO(0.0,0.0);
template<> const Vector2<double> Vector2<double>::UNIT_X(1.0,0.0);
template<> const Vector2<double> Vector2<double>::UNIT_Y(0.0,1.0);
template<> const Vector2<double> Vector2<double>::ONE(1.0,1.0);

template<> const Vector3<int> Vector3<int>::ZERO(0,0,0);
template<> const Vector3<int> Vector3<int>::UNIT_X(1,0,0);
template<> const Vector3<int> Vector3<int>::UNIT_Y(0,1,0);
template<> const Vector3<int> Vector3<int>::UNIT_Z(0,0,1);
template<> const Vector3<int> Vector3<int>::ONE(1,1,1);

template<> const Vector3<float> Vector3<float>::ZERO(0.0f,0.0f,0.0f);
template<> const Vector3<float> Vector3<float>::UNIT_X(1.0f,0.0f,0.0f);
template<> const Vector3<float> Vector3<float>::UNIT_Y(0.0f,1.0f,0.0f);
template<> const Vector3<float> Vector3<float>::UNIT_Z(0.0f,0.0f,1.0f);
template<> const Vector3<float> Vector3<float>::ONE(1.0f,1.0f,1.0f);

template<> const Vector3<double> Vector3<double>::ZERO(0.0,0.0,0.0);
template<> const Vector3<double> Vector3<double>::UNIT_X(1.0,0.0,0.0);
template<> const Vector3<double> Vector3<double>::UNIT_Y(0.0,1.0,0.0);
template<> const Vector3<double> Vector3<double>::UNIT_Z(0.0,0.0,1.0);
template<> const Vector3<double> Vector3<double>::ONE(1.0,1.0,1.0);

template<> const Vector4<float> Vector4<float>::ZERO(0.0f,0.0f,0.0f,0.0f);
template<> const Vector4<float> Vector4<float>::UNIT_X(1.0f,0.0f,0.0f,0.0f);
template<> const Vector4<float> Vector4<float>::UNIT_Y(0.0f,1.0f,0.0f,0.0f);
template<> const Vector4<float> Vector4<float>::UNIT_Z(0.0f,0.0f,1.0f,0.0f);
template<> const Vector4<float> Vector4<float>::UNIT_W(0.0f,0.0f,0.0f,1.0f);
template<> const Vector4<float> Vector4<float>::ONE(1.0f,1.0f,1.0f,1.0f);

template<> const Vector4<double> Vector4<double>::ZERO(0.0,0.0,0.0,0.0);
template<> const Vector4<double> Vector4<double>::UNIT_X(1.0,0.0,0.0,0.0);
template<> const Vector4<double> Vector4<double>::UNIT_Y(0.0,1.0,0.0,0.0);
template<> const Vector4<double> Vector4<double>::UNIT_Z(0.0,0.0,1.0,0.0);
template<> const Vector4<double> Vector4<double>::UNIT_W(0.0,0.0,0.0,1.0);
template<> const Vector4<double> Vector4<double>::ONE(1.0,1.0,1.0,1.0);


template<> const Vector5<float> Vector5<float>::ZERO(0.0f,0.0f,0.0f,0.0f,0.0f);
template<> const Vector5<float> Vector5<float>::UNIT_X(1.0f,0.0f,0.0f,0.0f,0.0f);
template<> const Vector5<float> Vector5<float>::UNIT_Y(0.0f,1.0f,0.0f,0.0f,0.0f);
template<> const Vector5<float> Vector5<float>::UNIT_Z(0.0f,0.0f,1.0f,0.0f,0.0f);
template<> const Vector5<float> Vector5<float>::UNIT_W(0.0f,0.0f,0.0f,1.0f,0.0f);
template<> const Vector5<float> Vector5<float>::UNIT_U(0.0f,0.0f,0.0f,0.0f,1.0f);
template<> const Vector5<float> Vector5<float>::ONE(1.0f,1.0f,1.0f,1.0f,1.0f);

template<> const Vector5<double> Vector5<double>::ZERO(0.0,0.0,0.0,0.0,0.0);
template<> const Vector5<double> Vector5<double>::UNIT_X(1.0,0.0,0.0,0.0,0.0);
template<> const Vector5<double> Vector5<double>::UNIT_Y(0.0,1.0,0.0,0.0,0.0);
template<> const Vector5<double> Vector5<double>::UNIT_Z(0.0,0.0,1.0,0.0,0.0);
template<> const Vector5<double> Vector5<double>::UNIT_W(0.0,0.0,0.0,1.0,0.0);
template<> const Vector5<double> Vector5<double>::UNIT_U(0.0,0.0,0.0,0.0,1.0);
template<> const Vector5<double> Vector5<double>::ONE(1.0,1.0,1.0,1.0,1.0);