diff --git a/calculator/calc.c b/calculator/calc.c
index 00da2fb0a097add0f7eb94580895816acf283a48..7f95ad2bea4760349c21554e950a20ec8f2d831a 100644
--- a/calculator/calc.c
+++ b/calculator/calc.c
@@ -22,8 +22,63 @@ bool isOpperator(char ch) {
   return ch == '+' || ch == '-' || ch == 'x' || ch == '/' || ch == '^' ||
          ch == '*';
 }
+
+void print_array(char *arr, int len) {
+  for (int i = 0; i < len; i++) {
+    printf("%c", arr[i]);
+  }
+  printf("\n");
+}
+
+void print_stack_double(stack s){
+  while(!is_empty(s)){
+    printf("%.2f ",*(double*)pop(&s));
+  }
+
+}
+double eval_postfix(char* postfix) {
+  printf("%s\n\n\n",postfix);
+  stack s;
+  int len=strlen(postfix);
+  stack_init(&s, len);
+   double res, nb1, nb2;
+  for (int i = 1; i < len; i++) {
+    //printf("%c\n",postfix[i]);
+    if (postfix[i] < '0' || '9' < postfix[i]) { //if operator
+      nb1 = *(double*)pop(&s);
+      nb2 = *(double*)pop(&s);
+    }
+    switch (postfix[i]) {
+    case '+':
+      res = nb2 + nb1;
+      break;
+    case '-':
+      res = nb2 - nb1;
+      break;
+    case 'x':
+    case '*':
+      res = nb2 * nb1;
+      break;
+    case '/':
+      res = nb2 / nb1;
+      break;
+    case '^':
+      res= pow(nb1,nb2);
+      break;
+    default:
+      res = atoi(postfix);
+    }
+    push(&s, &res);
+  }
+    print_stack_double(s);
+  printf("%f\n", *(double*)pop(&s));
+  stack_destroy(&s);
+  return 12;
+}
+
 char *infix_to_postfix(char *infix) {
-  int infix_size=strlen(infix);
+  int infix_size = strlen(infix);
+  printf("input: %s\n", infix);
   int postfix_size = infix_size + 1;
   stack s;
   stack_init(&s, infix_size);
@@ -34,10 +89,10 @@ char *infix_to_postfix(char *infix) {
   //     postfix_size--;
   //   }
   // }
- 
+
   char *postfix = malloc(sizeof(char) * postfix_size);
   int j = 0; // index for returned array
-
+  //print_array(postfix, postfix_size);
   for (int i = 0; i < infix_size; i++) {
     if (infix[i] >= '0' && infix[i] <= '9') { // number
       postfix[j] = infix[i];
@@ -46,21 +101,21 @@ char *infix_to_postfix(char *infix) {
       push(&s, &infix[i]);
     } else if (infix[i] == ')') { // )
       while (!is_empty(s) && *(char *)peek(s) != '(') {
-        printf("%c\n",*(char*)peek(s));
+        // printf("%c\n", *(char *)peek(s));
         postfix[j] = *(char *)pop(&s);
         j++;
       }
-      if (!is_empty(s) && *(char *)peek(s) == '(') { //ici ?
+      if (!is_empty(s) && *(char *)peek(s) == '(') { // ici ?
         pop(&s);
       }
-    } else if (isOpperator(infix[i])) { // opp
-
+    } else if (isOpperator(infix[i])) {
+      // opp
       while (!is_empty(s) && (getPrio(infix[i]) <= getPrio(*(char *)peek(s)))) {
         postfix[j] = *(char *)pop(&s);
         j++;
       }
       push(&s, &infix[i]);
-    }else{
+    } else {
       printf("NULL ahhh!!\n");
       free(postfix);
       stack_destroy(&s);
@@ -71,10 +126,10 @@ char *infix_to_postfix(char *infix) {
     postfix[j] = *(char *)pop(&s);
     j++;
   }
-  printf("%d\n",j);
-  postfix[j]='\0';
-  printf("%s",postfix);
-  printf("\n");
+  // printf("%d\n", j);
+  postfix[j] = '\0';
+  printf("output: %s\n", postfix);
+
   // printf("%d\n",j);
   stack_destroy(&s);
   return postfix;
diff --git a/calculator/calc.h b/calculator/calc.h
index 9e9a342608b95b44dc8c3ead0080275f47a2a0db..4c61f63c6aee34f28a47c432e268bc5f7c7c5d65 100644
--- a/calculator/calc.h
+++ b/calculator/calc.h
@@ -9,7 +9,7 @@
 
 char* infix_to_postfix(char* infix);
 char* toPostfix(char* infix,int len);
-
+double eval_postfix(char* postfix);
 int getPrio(char opp);
 
 
diff --git a/calculator/main.c b/calculator/main.c
index 747033994ff370bfabf28b7b33aabaac97fc2942..647bd5361b31c7f5fc84aaaf1d0a0bcf76ec682f 100644
--- a/calculator/main.c
+++ b/calculator/main.c
@@ -4,9 +4,9 @@
 int main() {
 
 
-char *infix="2/(7-3*2)";
+char *infix="7+2*3";
 char *postfix=infix_to_postfix(infix);
-
+eval_postfix(postfix);
 // for(int i=0;i<len;i++){
 //     printf("%c ",postfix[i]);
 // }