// x_tmp = A[0][0] * x[0] + y; if(x[0] < 0) p = -x[0]; else p = x[0]; tmp = p >> 6; sum = tmp; tmp >>= 2; sum += tmp; if(x[0] < 0){ x_tmp = sum; }else{ x_tmp =- sum; } x[0] = x_tmp + y; // x_tmp = A[1][1] * x[1] + A[1][2] * x[2] if(x[1] < 0) p = -x[1]; else p = x[1]; tmp = p >> 1; sum = tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 2; sum += tmp; tmp >>= 3; sum += tmp; if(x[1] < 0){ x_tmp = sum; }else{ x_tmp =- sum; } if(x[2] < 0) p = -x[2]; else p = x[2]; tmp = p >> 3; sum = tmp; tmp >>= 3; sum += tmp; tmp >>= 2; sum += tmp; if(x[2] < 0){ x_tmp += sum; }else{ x_tmp -= sum; } x[2] = x[1]; x[1] = x_tmp + y; // x_tmp = A[3][3] * x[3] + A[3][4] * x[4] if(x[3] < 0) p = -x[3]; else p = x[3]; tmp = p >> 6; sum = tmp; tmp >>= 2; sum += tmp; if(x[3] < 0){ x_tmp = sum; }else{ x_tmp =- sum; } if(x[4] < 0) p = -x[4]; else p = x[4]; tmp = p >> 3; sum = tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 2; sum += tmp; if(x[4] < 0){ x_tmp += sum; }else{ x_tmp -= sum; } x[4] = x[3]; x[3] = x_tmp + y; // x_tmp = A[5][5] * x[5] + A[5][6] * x[6] if(x[5] < 0) p = -x[5]; else p = x[5]; tmp = p >> 1; sum = tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; if(x[5] < 0){ x_tmp =- sum; }else{ x_tmp = sum; } if(x[6] < 0) p = -x[6]; else p = x[6]; tmp = p >> 1; sum = tmp; tmp >>= 8; sum += tmp; tmp >>= 1; sum += tmp; if(x[6] < 0){ x_tmp += sum; }else{ x_tmp -= sum; } x[6] = x[5]; x[5] = x_tmp + y; // x_tmp = A[7][7] * x[7] + A[7][8] * x[8] if(x[7] < 0) p = -x[7]; else p = x[7]; tmp = p; sum = tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 3; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; if(x[7] < 0){ x_tmp =- sum; }else{ x_tmp = sum; } if(x[8] < 0) p = -x[8]; else p = x[8]; tmp = p >> 1; sum = tmp; tmp >>= 6; sum += tmp; tmp >>= 3; sum += tmp; if(x[8] < 0){ x_tmp += sum; }else{ x_tmp -= sum; } x[8] = x[7]; x[7] = x_tmp + y; // x_tmp = A[9][9] * x[9] + A[9][10] * x[10] if(x[9] < 0) p = -x[9]; else p = x[9]; tmp = p >> 1; sum = tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; if(x[9] < 0){ x_tmp = sum; }else{ x_tmp =- sum; } if(x[10] < 0) p = -x[10]; else p = x[10]; tmp = p >> 1; sum = tmp; tmp >>= 4; sum += tmp; tmp >>= 2; sum += tmp; tmp >>= 2; sum += tmp; if(x[10] < 0){ x_tmp += sum; }else{ x_tmp -= sum; } x[10] = x[9]; x[9] = x_tmp + y; // x_tmp = A[11][11] * x[11] + y; if(x[11] < 0) p = -x[11]; else p = x[11]; tmp = p >> 1; sum = tmp; tmp >>= 1; sum += tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 3; sum += tmp; if(x[11] < 0){ x_tmp = sum; }else{ x_tmp =- sum; } x[11] = x_tmp + y; // x_tmp = A[12][12] * x[12] + A[12][13] * x[13] if(x[12] < 0) p = -x[12]; else p = x[12]; tmp = p; sum = tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 6; sum += tmp; if(x[12] < 0){ x_tmp = sum; }else{ x_tmp =- sum; } if(x[13] < 0) p = -x[13]; else p = x[13]; tmp = p >> 1; sum = tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; if(x[13] < 0){ x_tmp += sum; }else{ x_tmp -= sum; } x[13] = x[12]; x[12] = x_tmp + y; // x_tmp = A[14][14] * x[14] + A[14][15] * x[15] if(x[14] < 0) p = -x[14]; else p = x[14]; tmp = p; sum = tmp; tmp >>= 1; sum += tmp; tmp >>= 3; sum += tmp; tmp >>= 2; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 2; sum += tmp; if(x[14] < 0){ x_tmp =- sum; }else{ x_tmp = sum; } if(x[15] < 0) p = -x[15]; else p = x[15]; tmp = p >> 1; sum = tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 1; sum += tmp; tmp >>= 3; sum += tmp; tmp >>= 2; sum += tmp; if(x[15] < 0){ x_tmp += sum; }else{ x_tmp -= sum; } x[15] = x[14]; x[14] = x_tmp + y;