If I have two normals (i and j) and the angle between them (theta), and I want to compute cos(theta) and sin(theta), is it faster or more accurate to compute cos(theta) = dot(i, j) and sin(theta) = length(cross(i, j))?

If you’re wondering about the math, the former is derived from dot(i, j) = length(i) * length(j) * cos(theta) and the latter from length(cross(i, j)) = length(i) * length(j) * sin(theta). For normals length(i) = length(j) = 1, of course.