void quickPow(long a[2][2], long n, long result[2][2]) { // int j=0; long i=1; // long swap; long swap[2][2], pow1[2][2], pow2[2][2]; // result[2][2]={1, 0, 0, 1}; assignment(pow2, a); // assignment(result, a); if(n>0) { // return result; // pow2=a; while(i<=n) { if((i&n)!=0) { multMat2(result, pow2, swap); assignment(result, swap); } i<<=1; multMat2(pow2, pow2, pow1); assignment(pow2,pow1); } } }
void rotate2D(t_mat2 *m, double deg) { t_mat2 rot; double rad; double s; double c; rot = mat2(); rad = RADIAN(deg); s = sin(rad); c = cos(rad); rot.m00 = c; rot.m10 = s; rot.m01 = -s; rot.m11 = c; multMat2(&rot, m); }