# Get vector length with GLM

I am quite confused over how GLM library is behaving or I am using it improperly.

glm::vec2 testVec(6,-4);

float len = testVec.length();


I get the value 2 with the above code snippet. I believe I am trying to get the length of the vector defined by testVec. You know very well that it is not the correct length of the vector. What am I missing here?

glm::vec2 testVec(6,-4);

The member function of the same name returns the number of components instead (i.e. vec2::length will always yield 2, vec3::length will always yield 3, etc.).
• @MartinEnder it's not GLM who's guilty: the GLSL spec prescribes this confusion to exist: there's length(vecN) free function returning the norm of vecN, and vecN.length() method, returning dimension of vecN. See §5.5 Vector and Scalar Components and Length of GLSL 4.60 spec. Feb 15, 2019 at 16:16