int quat_FromMat(lua_State *L) { size_t nr, nc; double t, s, r; mat_t m; quat_t q; checkmat(L, 1, m, &nr, &nc); if( !(((nr==3) && (nc==3)) || ((nr==4) && (nc==4))) ) return luaL_argerror(L, 1, "expected 3x3 or 4x4 matrix"); t = m[0][0] + m[1][1] + m[2][2]; if( t < 0 ) { r = sqrt(1 + m[0][0] - m[1][1] - m[2][2]); s = 0.5/r; q[0] = (m[2][1] - m[1][2])*s; q[1] = 0.5*r; q[2] = (m[0][1] + m[1][0])*s; q[3] = (m[2][0] + m[0][2])*s; } else { r = sqrt(1+t); s = 0.5/r; q[0] = 0.5*r; q[1] = (m[2][1] - m[1][2])*s; q[2] = (m[0][2] - m[2][0])*s; q[3] = (m[1][0] + m[0][1])*s; } return pushquat(L, q); }
int sparselu_check(float **SEQ, float **BENCH) { int ii,jj,ok=1; for (ii=0; ((ii<bots_arg_size) && ok); ii++) { for (jj=0; ((jj<bots_arg_size) && ok); jj++) { if ((SEQ[ii*bots_arg_size+jj] == NULL) && (BENCH[ii*bots_arg_size+jj] != NULL)) ok = FALSE; if ((SEQ[ii*bots_arg_size+jj] != NULL) && (BENCH[ii*bots_arg_size+jj] == NULL)) ok = FALSE; if ((SEQ[ii*bots_arg_size+jj] != NULL) && (BENCH[ii*bots_arg_size+jj] != NULL)) ok = checkmat(SEQ[ii*bots_arg_size+jj], BENCH[ii*bots_arg_size+jj]); } } if (ok) return BOTS_RESULT_SUCCESSFUL; else return BOTS_RESULT_UNSUCCESSFUL; }
int sparselu_check(float **SEQ,float **BENCH) { int ii; int jj; int ok = 1; for (ii = 0; (ii < bots_arg_size) && (ok); ii++) { for (jj = 0; (jj < bots_arg_size) && (ok); jj++) { if (((SEQ[(ii * bots_arg_size) + jj]) == ((0L))) && ((BENCH[(ii * bots_arg_size) + jj]) != ((0L)))) ok = 0; if (((SEQ[(ii * bots_arg_size) + jj]) != ((0L))) && ((BENCH[(ii * bots_arg_size) + jj]) == ((0L)))) ok = 0; if (((SEQ[(ii * bots_arg_size) + jj]) != ((0L))) && ((BENCH[(ii * bots_arg_size) + jj]) != ((0L)))) ok = checkmat((SEQ[(ii * bots_arg_size) + jj]),(BENCH[(ii * bots_arg_size) + jj])); } } if (ok) return 1; else return 2; }