public static mtx2x2 IntPower(mtx2x2 matrix, short power) { if (power == 0) { return(identity); } if (power == 1) { return(matrix); } int n = 15; while ((power <<= 1) >= 0) { n--; } mtx2x2 temp = matrix; while (--n > 0) { temp = (temp * temp) * (((power <<= 1) < 0) ? matrix : identity); } return(temp); }
public static mtx2x2 IntPower(mtx2x2 x, short power) { if (power == 0) { return(identity); } if (power == 1) { return(x); } int n = 15; while ((power <<= 1) >= 0) { n--; } mtx2x2 tmp = x; while (--n > 0) { tmp = (tmp * tmp) * (((power <<= 1) < 0) ? x : identity); } return(tmp); }