1fn _naga_inverse_3x3_f32(m: mat3x3<f32>) -> mat3x3<f32> { 4 adj[0][0] = (m[1][1] * m[2][2] - m[2][1] * m[1][2]); 5 adj[1][0] = - (m[1][0] * m[2][2] - m[2][0] * m[1][2]); 6 adj[2][0] = (m[1][0] * m[2][1] - m[2][0] * m[1][1]); 7 adj[0][1] = - (m[0][1] * m[2][2] - m[2][1] * m[0][2]); 8 adj[1][1] = (m[0][0] * m[2][2] - m[2][0] * m[0][2]); 9 adj[2][1] = - (m[0][0] * m[2][1] - m[2][0] * m[0][1]); 10 adj[0][2] = (m[0][1] * m[1][2] - m[1][1] * m[0][2]); 11 adj[1][2] = - (m[0][0] * m[1][2] - m[1][0] * m[0][2]); 12 adj[2][2] = (m[0][0] * m[1][1] - m[1][0] * m[0][1]); 14 let det: f32 = (m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1]) 15 - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0]) 16 + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0])); 18 return adj * (1 / det);