float puissance(float x, float n) { float k; if (x == 0){ k=0; } else if (n > 0){ k=x*(puissance(x, n-1)); } else if (n < 0){ k=(1/x)*(puissance(x, n+1)); } else /* n==0 */ { k=1; } return k; }
int puissance(int x,int n){ int res=0; if(n==0){ res = 1; }else if ((n%2!=0)){ res = x*puissance(x,n-1); }else { res = puissance(x*x,n/2); } return res; }
char *ft_itoabase(int n, int base, int maj) { int psc; int res; int i; char *str; psc = 0; i = 0; res = (n < 0) ? -1 : 1; n = ft_abs(n); while (n >= puissance(base, psc)) psc++; psc--; str = ft_strnew(psc + 1); if (n == 0 || base == 0) str[0] = '0'; res == -1 ? str[i++] = '-' : 0; while (psc >= 0) { str[i] = how_n(&n, base, psc, maj); psc--; i++; } return (str); }
int puissance(int x,int n){ int res=0; if(n==0){ res = 1; }else if (n>0){ res = x*puissance(x,n-1); }else if (n<0){ //attention +1 pas -1 !!!!!!!!!!!!!!!!!!!!!!!!!! res = (1/x)*puissance(x,n+1); //res = 1/puissance(x,-n); } return res; }
uint8_t Is_voisin(volatile Status *s, uint8_t dst) { uint32_t tmp; tmp = puissance(dst-1); if((s->Voisin&tmp)==tmp){ return 1; }else{ return 0; } }
t_cpx puissance(t_cpx a, int n) { t_cpx id; id.re = 1; id.im = 0; if (n == 0) return (id); return (mult(a, puissance(a, n - 1))); }
static int puissance (int n) { if (n == 0) { return 1; } else { return (2 * puissance(n-1)); } }
int main(){ double x=0; int n=0; printf("Entrez \"x\"\n"); scanf("%lf",&x); printf("Entrez \"n\"\n"); scanf("%d",&n); x = puissance (x,n); printf("%lf,\n",x); return 0; }
int main() { int i; unsigned char p; for (i=2;i<=12;i+=2) { printf("%d\t",i); for (p=2;p<=5;p++) printf ("%d\t",puissance(i,p)); printf("\n"); } return 0; }
char* afficheArbre(Arbre* arbre){ char* res = malloc(33*puissance(2, arbre->profondeur) - 22); if(arbre->droit == NULL && arbre->gauche == NULL){ sprintf(res, "[%d, %lu]", arbre->lettre, arbre->poids); } else { char* gauche = afficheArbre(arbre->gauche); char* droite = afficheArbre(arbre->droit); sprintf(res, "%lu, gauche(%s), droit(%s)", arbre->poids, gauche, droite); free(gauche); free(droite); } return res; }
void init(tab cmd){ if (!strcmp(cmd, "addition")) { int a,b; printf("Enter two integers :\n"); scanf("%d %d", &a, &b); printf("%d + %d = %d \n", a, b, addition(a, b)); } else if (!strcmp(cmd, "pgcd")) { int a,b; printf("Enter two integers :\n"); scanf("%d %d", &a, &b); printf("pgcd (%d, %d) = %d \n", a, b, pgcd(a, b)); } else if (!strcmp(cmd, "somme")) { int a; printf("Enter one integer :\n"); scanf("%d", &a); printf("Somme des %d premiers entiers = %d \n", a, somme(a)); } else if (!strcmp(cmd, "factorielle")) { int a; printf("Enter one integers :\n"); scanf("%d", &a); printf("(%d)! = %d \n", a, factorielle(a)); } else if (!strcmp(cmd, "puissance")) { float a,b; printf("Enter two floats :\n"); scanf("%f %f", &a, &b); printf("(%g ^ %g) = %g \n", a, b, puissance(a, b)); } else if (!strcmp(cmd, "isocele")) { int a; printf("Enter one integer :\n"); scanf("%d", &a); isocele(a); } else if (!strcmp(cmd, "cercle")) { int a; printf("Enter one integer :\n"); scanf("%d", &a); cercle(a); } else { printf("Command not found \n"); printf("Running listAll ... ? \n"); } return ; }
// valeur du polynôme po pour un x donné double valeurPolynome (Polynome* po, double x) { Liste* li = po; double resu = 0; if (listeVide (li) ) { printf ("Polynôme nul\n"); exit (1); } else { ouvrirListe (li); while (!finListe (li)) { Monome* ptc = (Monome*) objetCourant (li); resu += ptc->coefficient*puissance(x, ptc->exposant); } } return resu; }
// puissance nième d'un nombre réel x (n entier >=0) // voir en 1.2.5 page 10 static double puissance (double x, int n) { double resu; if (n==0) { resu = 1.0; } else { resu = puissance (x, n/2); if (n%2 == 0) { resu = resu*resu; // n pair } else { resu = resu*resu*x; // n impair } } return resu; }
static char how_n(int *n, int base, int psc, int maj) { char c_res; int i_res; int tmp; i_res = 1; tmp = puissance(base, psc); while (*n >= (i_res * tmp)) i_res++; i_res--; *n -= i_res * tmp; if (maj == 1) c_res = (i_res > 9 ? i_res + '7' : i_res + '0'); else c_res = (i_res > 9 ? i_res + 'W' : i_res + '0'); return (c_res); }
void Add_router(volatile Status *s , uint8_t id, uint32_t voisin) { uint8_t i; uint32_t tmp; if(!Is_voisin(s,id)){ //only listen to voisin Add_voisin(s,id); s->Route_table[id-1].Dst = id; s->Route_table[id-1].Next_hop = id; s->Route_table[id-1].Metric = 1; } for(i=0;i<30;i++){ tmp = puissance(i); if((voisin&tmp)==tmp && !Is_voisin(s,i+1)){ //if it is not my voisin ; add it s->Route_table[i].Dst = i+1; s->Route_table[i].Next_hop = id; s->Route_table[i].Metric = 2; } } }
int get_from_base(int nb, int base) { char *get; int i; int x; int res; i = 0; res = 0; if ((get = malloc(sizeof(char) * (my_int_len(nb) + 1))) == NULL) return (0); get = get_int(nb); res = 0; x = strlen(get) - 1; while (get[i]) { res = res + ((get[i] - 48) * puissance(base, x)); i++; x--; } return (res); }
void main(){ int res; res = puissance(2,3); printf("puissance de 2³=%d \n",res); }
int machine_execute (Machine *m) { assert (m != NULL); m->IP = 0 ; int op = m->segment_code[m->IP] ; int v1, v2 ; char c ; int stop = 0 ; while (!stop) { switch (op) { case add : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; m->segment_data[m->SP-2] = v1 + v2 ; m->SP -- ; m->IP ++ ; break ; case and : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; m->segment_data[m->SP-2] = v1 & v2 ; m->SP -- ; m->IP ++ ; break ; case call : m->segment_data[m->SP] = m->IP + 2 ; m->IP = m->segment_code[m->IP+1] ; m->SP ++ ; break ; case calls : break ; case cont : v1 = m->segment_data[m->segment_data[m->SP-1]] ; m->segment_data[m->SP-1] = v1 ; m->IP ++ ; break ; case cpy : v1 = m->segment_code[m->IP+1]; v2 = m->segment_data[m->SP-1] ; for(c = 0 ; c < v1 ; c++) m->segment_data[m->SP-1+c] = m->segment_data[v2+c]; m->SP += (v1-1); m->IP += 2 ; break ; case dec : v1 = m->segment_code [m->IP+1] ; m->SP -= v1; if (m->SP < 0) error_fatal ("pointeur de pile incorrect") ; m->IP += 2 ; break ; case divi : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; m->segment_data[m->SP-2] = v1 / v2 ; m->SP -- ; m->IP ++ ; break ; case eq : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; if (v1 == v2) m->segment_data[m->SP-2] = 1 ; else m->segment_data[m->SP-2] = 0 ; m->SP -- ; m->IP ++ ; break ; case gt : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; if (v1 < v2) m->segment_data[m->SP-2] = 1 ; else m->segment_data[m->SP-2] = 0 ; m->SP -- ; m->IP ++ ; break ; case halt : stop = 1 ; break ; case in : scanf ("%d", &v1); m->segment_data[m->segment_data[m->SP-1]] = v1 ; m->SP -- ; m->IP ++ ; break ; case inc : v1 = m->segment_code [m->IP+1] ; m->SP += v1; if (m->SP >= SEGMENT_DATA_SIZE) error_fatal ("pointeur de pile incorrect") ; m->IP += 2 ; break ; case jp : m->IP = m->segment_code[m->IP+1]; break ; case jf : if (m->segment_data[m->SP-1] == 0) m->IP = m->segment_code[m->IP+1]; else m->IP += 2 ; m->SP -- ; break ; case jl : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; if (v1 > v2) m->IP = m->segment_code[m->IP+1]; else m->IP += 2 ; m->SP -= 2 ; break ; case jg : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; if (v1 < v2) m->IP = m->segment_code[m->IP+1]; else m->IP += 2 ; m->SP -= 2 ; break ; case les : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; if (v1 > v2) m->segment_data[m->SP-2] = 1 ; else m->segment_data[m->SP-2] = 0 ; m->SP -- ; m->IP ++ ; break ; case libp : v1 = m->segment_code[m->IP+1] ; //v2 = m->segment_data[m->BP + v1] ; pour la donnée et v2 = m->BP + v1 ; // pour l'adresse m->segment_data[m->SP] = v2 ; m->SP ++ ; m->IP += 2 ; break ; case move : v1 = m->segment_code[m->IP+1] ; v2 = m->segment_data[m->SP - v1 - 1] ; for (c = 0 ; c < v1 ; c++) m->segment_data[v2+c] = m->segment_data[m->SP - v1 + c] ; m->SP -= (v1 + 1) ; m->IP += 2 ; break ; case mult : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; m->segment_data[m->SP-2] = v1 * v2 ; m->SP -- ; m->IP ++ ; break ; case neg : v1 = m->segment_data[m->SP-1] ; m->segment_data[m->SP-1] = -v1 ; m->IP ++ ; break ; case not : v1 = m->segment_data[m->SP-1] ; if (v1 == 0) m->segment_data[m->SP-1] = 1 ; else m->segment_data[m->SP-1] = 0 ; m->IP ++ ; break ; case or : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; m->segment_data[m->SP-2] = v1 | v2 ; m->SP -- ; m->IP ++ ; break ; case out : fprintf (stdout, "%d\n", m->segment_data[m->SP-1]) ; m->SP -- ; m->IP ++ ; break ; case outc : m->IP++ ; while ((c = m->segment_code[m->IP++]) != 0) fprintf (stdout, "%c", c); break ; case pow : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; m->segment_data[m->SP-2] = puissance (v2,v1); m->SP -- ; m->IP ++ ; break ; case push : m->segment_data[m->SP] = m->segment_code[m->IP+1] ; m->SP ++ ; m->IP += 2 ; break ; case pushr: break ; case ret : m->IP = m->segment_data[m->SP-1] ; m->SP -- ; break ; case rstrbp : m->BP =m->segment_data[m->SP-1] ; m->SP -- ; m->IP ++ ; break ; case savebp : m->segment_data[m->SP] = m->BP ; m->BP = m->SP + 1 ; m->SP ++ ; m->IP ++ ; break ; case sub : v1 = m->segment_data[m->SP-1] ; v2 = m->segment_data[m->SP-2] ; m->segment_data[m->SP-2] = v1 - v2 ; m->SP -- ; m->IP ++ ; break ; default : error_fatal ("instruction inconnu") ; } op = m->segment_code[m->IP] ; } return 0 ; }
int main() { printf("%d\n",puissance(10)); }
void Add_voisin(volatile Status *s, uint8_t id) { s->Voisin |= (uint32_t ) puissance(id-1); }
void Init_voisin(volatile Status *s) { s->Voisin = 0; s->Voisin |= (uint32_t ) puissance(s->MAC - 1); }
int main () { output = fopen("output.txt","w"); float s = p*p + (1-p)*(1-p); int i; for(i=0;i<100;i++) { tab[0][i] = i; tab[1][i] = 0; tab[2][i] = 0; } for(i=31;i<100;i++) { tab[1][i]++; tab[1][i-28]++; tab[1][i-31]++; if(x[i]^x[i-28]^x[i-31]==0) { tab[2][i]++; tab[2][i-28]++; tab[2][i-31]++; } } for(i=62;i<100;i++) { tab[1][i]++; tab[1][i-56]++; tab[1][i-62]++; if(x[i]^x[i-56]^x[i-62]==0) { tab[2][i]++; tab[2][i-56]++; tab[2][i-62]++; } } if(output!=NULL) { fprintf(output,"k "); for(i=0;i<100;i++) fprintf(output,"%6d",tab[0][i]); fprintf(output,"\n"); fprintf(output,"m(k)"); for(i=0;i<100;i++) fprintf(output,"%6d",tab[1][i]); fprintf(output,"\n"); fprintf(output,"h(k)"); for(i=0;i<100;i++) fprintf(output,"%6d",tab[2][i]); fprintf(output,"\n"); } else { printf("Erreur d'ouverture du fichier.\n"); } fprintf(output,"p(k) "); float min = 1,max = 0; float p_star = 1; int position_min,position_max,L1 = 0; for(i=0;i<100;i++) { float num = p * puissance(s,tab[2][i]) * puissance(1-s,tab[1][i]-tab[2][i]); float denum = p * puissance(s,tab[2][i]) * puissance(1-s,tab[1][i]-tab[2][i]) + (1-p) * puissance(1-s,tab[2][i]) * puissance(s,tab[1][i]-tab[2][i]); if(num/denum<min) {min = num/denum;position_min = i;} if(num/denum>max) {max = num/denum;position_max = i;} if(num/denum>=0.94) { if(p_star>num/denum) p_star = num/denum; L1++; } fprintf(output,"%.2f ",num/denum); } printf("min = %f pos min = %d\n",min,position_min); printf("max = %f pos max = %d\n",max,position_max); printf("\n%d valeurs > %f\n",L1,p_star); float q_star = 1-p_star; printf("Average weight ~ %f\n",q_star*L1); fclose(output); return 0; }
void Delete_voisin(volatile Status *s, uint8_t id) { s->Voisin &= (uint32_t ) (puissance(id-1)^0xFFFFFFFF); }