char *Int2Bin(uint16_t num, byte bits) { char *strBin = (char*)malloc(bits+1); for(byte i = 0, m = Iexp(2, bits-1); m > 0; m /= 2, i++) strBin[i] = (num & m) ? '1' : '0'; strBin[bits] = 0; return strBin; }
double complex p(double k[3], int x, int y, int z){ if(x%2==1 && y%2==1 && z%2==1) return -2*sqrt(2)*cos(k[0])*cos(k[1])*cos(k[2])*Iexp(k[0]*x+k[1]*y+k[2]*z); else if(x%2==1 && y%2 ==1) return 2*cos(k[0])*cos(k[1])*Iexp(k[0]*x+k[1]*y+k[2]*z); else if(x%2==1 && z%2==1) return 2*cos(k[0])*cos(k[2])*Iexp(k[0]*x+k[1]*y+k[2]*z); else if(y%2==1 && z%2==1) return 2*cos(k[1])*cos(k[2])*Iexp(k[0]*x+k[1]*y+k[2]*z); else if(x%2==1) return sqrt(2)*cos(k[0])*Iexp(k[0]*x+k[1]*y+k[2]*z); else if(y%2==1) return sqrt(2)*cos(k[1])*Iexp(k[0]*x+k[1]*y+k[2]*z); else if(z%2==1) return sqrt(2)*cos(k[2])*Iexp(k[0]*x+k[1]*y+k[2]*z); else return Iexp(k[0]*x+k[1]*y+k[2]*z); }