GLSL determinant() returns an 'undefined' result

I have a little function that should get the intersection point of a ray with an infinite plane.

The function looks like this :

Code :

vec3 raytracePlaneI(vec3 s, vec3 a, vec3 b, vec3 o, vec3 d)
{
float lU;
float lV;
float lT;
vec3 lN;
vec3 A = s;
vec3 B = a;
vec3 C = b;
vec3 R = o-A; //translation
mat3 matrix = mat3(B, C, -d);
mat3 matU = mat3(R, C, -d);
mat3 matV = mat3(B, R, -d);
mat3 matT = mat3(B, C, R);
float detM = determinant(matrix);
float detU = determinant(matU);
lU = detU/detM;
float detV = determinant(matV);
lV = detV/detM;
float detT = determinant(matT);
lT = detT/detM;
if(detU > 0)
{
resultColor = vec4(1, 0, 0, 1);
}
else if(detU < 0)
{
resultColor = vec4(0, 1, 0, 1);
}
else if(detU == 0)
{
resultColor = vec4(0, 0, 1, 1);
}
else
{
resultColor = vec4(1, 1, 1, 1);
}
return vec3(lU, lV, lT);
}

In the last part of the function I set the result color to an other color dependent of the value of detU.

I test for >, < and == 0 and it always takes the else part (white color).

Do anyone know whats the error ??