void numSolverSH::compPow(int kp,int up){ //cerr << "compPow("<< kp << "," << up << ")" << endl; int k = kp-1; boostmat::vector<double> itervect = (*lastOne)[kp]; boostmat::vector<double> itervect2 = boostmat::zero_vector<double> (finalVector->size()); while (k>0 && readbit(up, k)==0){ //cerr << itervect<< endl; (*lastOne)[k]=itervect; (*ktable)[k] =(*ktable)[kp]; //cerr << "k--" << endl; k--; } int m = 1<<k; // (m = 2^k for (int i = (int)(*ktable)[kp]+1; i<=up; i++) { //cerr << "i: " << i << " k: " << k << " m: " << m << endl; itervect2.clear(); sparseProd(&itervect2,&itervect, transitionsMatrix); itervect=itervect2; if((itervect (0) != 0.0) && (minT== -1))minT=i; //itervect = boostmat::prod ((*transitionsMatrix), itervect); m--; if(m==0){ (*lastOne)[k]=itervect; (*ktable)[k] = i; k--; //cerr << "k--1" << endl; while (k>0 && readbit(up, k)==0){ (*lastOne)[k]=itervect; (*ktable)[k] =i; //cerr << "k--" << endl; k--; } m= 1<<k; } } //cerr << "finish"; //cerr << itervect << endl; previous_vect = current_vect; current_vect=itervect; is_previous=false; /*current_vect= boostmat::zero_vector<double> (itervect.size()); sparseProd(¤t_vect, &itervect, transitionsMatrix);*/ //current_vect = boostmat::prod ((*transitionsMatrix), itervect); //cerr << "finish reset" << endl; }
int32_t entropy_decode_value(alac_file* alac, int readSampleSize, int k, int rice_kmodifier_mask) { int32_t x = 0; // decoded value // read x, number of 1s before 0 represent the rice value. while (x <= RICE_THRESHOLD && readbit(alac)) { x++; } if (x > RICE_THRESHOLD) { // read the number from the bit stream (raw value) int32_t value; value = readbits(alac, readSampleSize); // mask value value &= (((uint32_t)0xffffffff) >> (32 - readSampleSize)); x = value; }
static u16 amic1608_adc_readdate(void) { int i; u16 data = 0; /* * 启动转换 * 使用模拟SPI控制AMiC-1608AI-5ID时,必须先把CLK置低,再把CS置低启动采样,否则将不能正确读取采样值 */ clk_low(); //loop_ten(1); ship_select(); /* * 先发出6个CLK出去,在这段时间内数据无效,所以不用读取数据 */ for(i = 0; i < 6; i++) { clk_high(); loop_ten(1); clk_low(); loop_ten(1); } for (i = 0; i< 16; i++) { clk_low(); data <<= 1; loop_ten(1); clk_high(); loop_ten(1); data |= readbit(); } ship_release(); return data; }
byte readbyte(int addr) { byte b = 0; for (int i = 0; i < 8; i++) { b |= (readbit(addr, i) << i); } return b; }
// TODO: this method is ugly as shit. R_API void r_mem_copybits_delta(ut8 *dst, int doff, const ut8 *src, int soff, int bits) { int i; if (doff < 0 || soff < 0 || !dst || !src) { return; } for (i = 0; i < bits; i++) { bool c = readbit (src, i + soff); // eprintf ("%d %d\n", i, c); writebit (dst, i + doff, c); } }
INLINE int readnbits(Uint8 *data, int n, int pos) { Uint8 result = 0; int i; for (i = 0; i < n; ++i) result = result * 2 + readbit(data, pos + i); return result; }
int readnb(int n) {int i, a = 0; for(i = 0; i < n; i++) a |= readbit() << i; return a;}
int read32() {int i; int a = 0; for(i = 0; i < 32; i++) a |= readbit() << i; return a;}
short read16() {int i; short a = 0; for(i = 0; i < 16; i++) a |= readbit() << i; return a;}
char read8() {int i; char a = 0; for(i = 0; i < 8; i++) a |= readbit() << i; return a;}
int main(int argc, char *argv[]) { int i, j, x, z; char fnwoe[384], *e, *minimap, *hmap, **tname; int *tid; if(argc < 2) {printf("Usage: bcm2snr \"input.bcm\"\n"); return 0;} assert(file = fopen(argv[1], "rb")); fseek(file, 12, SEEK_CUR); mapw = read32(); maph = read32(); strcpy(fnwoe, argv[1]); e = strrchr(fnwoe, '.'); if(!e) {e = fnwoe + strlen(fnwoe); *e = '.';} strcpy(e, ".snr"); assert(fsnr = fopen(fnwoe, "w")); fprintf(fsnr, "SCENARIO_VERSION 4.00\n"); fprintf(fsnr, "SCENARIO_DIMENSIONS %u %u\n", mapw, maph); fprintf(fsnr, "SCENARIO_EDGE_WIDTH %u\n", read32()); fprintf(fsnr, "SCENARIO_TEXTURE_DATABASE \""); ReadPrintWString(fsnr); fprintf(fsnr, "\"\n"); strcpy(e, ""); fprintf(fsnr, "SCENARIO_TERRAIN \"%s.trn\"\n", fnwoe); fprintf(fsnr, "SCENARIO_HEIGHTMAP \"%s_heightmap.pcx\"\n", fnwoe); fprintf(fsnr, "SCENARIO_HEIGHT_SCALE_FACTOR %f\n", readfloat()); fprintf(fsnr, "SCENARIO_SUN_COLOUR"); for(i = 0; i < 3; i++) fprintf(fsnr, " %u", read32()); fprintf(fsnr, "\n"); fprintf(fsnr, "SCENARIO_SUN_VECTOR"); for(i = 0; i < 3; i++) fprintf(fsnr, " %f", readfloat()); fprintf(fsnr, "\n"); fprintf(fsnr, "SCENARIO_FOG_COLOUR"); for(i = 0; i < 3; i++) fprintf(fsnr, " %u", read32()); fprintf(fsnr, "\n"); fprintf(fsnr, "SCENARIO_SKY_TEXTURES_DIRECTORY \""); ReadPrintWString(fsnr); fprintf(fsnr, "\"\n"); fprintf(fsnr, "SCENARIO_MINIMAP \"%s_minimap.pcx\"\n", fnwoe); strcpy(e, "_minimap.pcx"); assert(fpcx = fopen(fnwoe, "wb")); assert(minimap = (char*)malloc(0xC000)); fread(minimap, 0xC000, 1, file); WritePCXHeader(fpcx, 128, 128, 3); WritePCXData(fpcx, minimap, 128, 128, 3); fclose(fpcx); free(minimap); nlakes = readnb(6); for(i = 0; i < nlakes; i++) { fprintf(fsnr, "SCENARIO_LAKE"); for(j = 0; j < 3; j++) fprintf(fsnr, " %f", readfloat()); fprintf(fsnr, " 0.0\n"); readnb(2); } printf("Number of names: %u\n", nnames = read16()); assert(tname = (char**)malloc(nnames * sizeof(char*))); for(i = 0; i < nnames; i++) {tname[i] = (char*)malloc(128); ReadName(tname[i]);} printf("Number of IDs: %u\n", nids = read16()); assert(tid = (int*)malloc(nids * sizeof(int))); for(i = 0; i < nids; i++) tid[i] = read32(); printf("\n------------\n\n"); ngrpbits = GetMaxBits(nnames); //2; nidbits = GetMaxBits(nids); //3; strcpy(e, ".trn"); assert(ftrn = fopen(fnwoe, "w")); for(z = maph-1; z >= 0; z--) for(x = 0; x < mapw; x++) { fprintf(ftrn, "X %u Z %u ", x+1, z+1); fprintf(ftrn, "GROUP \"%s\" ", tname[readnb(ngrpbits)]); fprintf(ftrn, "ID %u ", tid[readnb(nidbits)]); fprintf(ftrn, "ROTATION %u ", readnb(2)); fprintf(ftrn, "XFLIP %u ", readbit()); fprintf(ftrn, "ZFLIP %u\n", readbit()); } fclose(ftrn); printf("End offset: 0x%08X\n", ftell(file)); printf("\n------------\n\n"); printf("Num of ?: %u\n", nunk = read32()); printf("0x62: 0x%X\n", read32()); for(i = 0; i < nunk; i++) {readnb(ngrpbits); readnb(nidbits);} assert(hmap = (char*)malloc((mapw+1)*(maph+1))); fread(hmap, (mapw+1)*(maph+1), 1, file); strcpy(e, "_heightmap.pcx"); assert(fpcx = fopen(fnwoe, "wb")); WritePCXHeader(fpcx, mapw+1, maph+1, 1); WritePCXData(fpcx, hmap, mapw+1, maph+1, 1); write8(fpcx, 12); for(i = 0; i < 256; i++) for(j = 0; j < 3; j++) write8(fpcx, i); fclose(fpcx); free(hmap); printf("End offset: 0x%08X\n", ftell(file)); fclose(file); fclose(fsnr); free(tid); for(i = 0; i < nnames; i++) free(tname[i]); free(tname); }