00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00015 class mdp_vector { 00016 public: 00017 int x[10]; 00018 mdp_vector() { 00019 x[0]=x[1]=x[2]=x[3]=x[4]=0; 00020 x[5]=x[6]=x[7]=x[8]=x[9]=0; 00021 } 00022 mdp_vector(int x0, int x1=0, int x2=0, int x3=0, int x4=0, 00023 int x5=0, int x6=0, int x7=0, int x8=0, int x9=0) { 00024 x[0]=x0; x[1]=x1; x[2]=x2; x[3]=x3; x[4]=x4; 00025 x[5]=x5; x[6]=x6; x[7]=x7; x[8]=x8; x[9]=x9; 00026 } 00027 }; 00028 00029 inline mdp_vector binary2versor(mdp_int a) { 00030 mdp_vector v((a) & 0x1, 00031 (a >> 1) & 0x1, 00032 (a >> 2) & 0x1, 00033 (a >> 3) & 0x1, 00034 (a >> 4) & 0x1, 00035 (a >> 5) & 0x1, 00036 (a >> 6) & 0x1, 00037 (a >> 7) & 0x1, 00038 (a >> 8) & 0x1, 00039 (a >> 9) & 0x1); 00040 return v; 00041 } 00042 00043 inline int versor2binary(int x0, int x1=0, int x2=0, int x3=0, int x4=0, 00044 int x5=0, int x6=0, int x7=0, int x8=0, int x9=0) { 00045 #ifdef CHECK_ALL 00046 if((fabs(0.5-x0)>1) || (fabs(0.5-x1)>1) || 00047 (fabs(0.5-x2)>1) || (fabs(0.5-x3)>1) || 00048 (fabs(0.5-x4)>1) || (fabs(0.5-x5)>1) || 00049 (fabs(0.5-x6)>1) || (fabs(0.5-x7)>1) || 00050 (fabs(0.5-x8)>1) || (fabs(0.5-x9)>1)) error("versor2binary"); 00051 #endif 00052 return x0+2*x1+4*x2+8*x3+16*x4+32*x5+64*x6+128*x7+256*x8+512*x9; 00053 } 00054 00055 inline mdp_int vector2binary(mdp_vector v) { 00056 #ifdef CHECK_ALL 00057 if((fabs(0.5-v.x[0])>1) || (fabs(0.5-v.x[1])>1) || 00058 (fabs(0.5-v.x[2])>1) || (fabs(0.5-v.x[3])>1) || 00059 (fabs(0.5-v.x[4])>1) || (fabs(0.5-v.x[5])>1) || 00060 (fabs(0.5-v.x[6])>1) || (fabs(0.5-v.x[7])>1) || 00061 (fabs(0.5-v.x[8])>1) || (fabs(0.5-v.x[9])>1) || 00062 (fabs(0.5-v.x[2])>1)) error("vector2binary"); 00063 #endif 00064 return v.x[0]+2*v.x[1]+4*v.x[2]+8*v.x[3]+16*v.x[4]+ 00065 32*v.x[5]+64*v.x[6]+128*v.x[7]+256*v.x[8]+512*v.x[9]; 00066 }