diff --git a/step2/Divtest.txt b/step2/Divtest.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ae10b90710cd02d8e5363065785400b0f16e294c
--- /dev/null
+++ b/step2/Divtest.txt
@@ -0,0 +1,165 @@
+Flat profile:
+
+Each sample counts as 0.01 seconds.
+  %   cumulative   self              self     total           
+ time   seconds   seconds    calls  ns/call  ns/call  name    
+ 78.05      3.45     3.45                             __udivmoddi4
+  5.43      3.69     0.24                             __aeabi_ldivmod
+  5.20      3.92     0.23                             main
+  4.98      4.14     0.22 10000000    22.00    22.00  fx_s3132_longlong_div1
+  4.30      4.33     0.19 10000000    19.00    19.00  fx_s3132_longlong_div2
+  2.04      4.42     0.09 10000000     9.00     9.00  fx_s3132_longlong_div
+
+ %         the percentage of the total running time of the
+time       program used by this function.
+
+cumulative a running sum of the number of seconds accounted
+ seconds   for by this function and those listed above it.
+
+ self      the number of seconds accounted for by this
+seconds    function alone.  This is the major sort for this
+           listing.
+
+calls      the number of times this function was invoked, if
+           this function is profiled, else blank.
+
+ self      the average number of milliseconds spent in this
+ms/call    function per call, if this function is profiled,
+	   else blank.
+
+ total     the average number of milliseconds spent in this
+ms/call    function and its descendents per call, if this
+	   function is profiled, else blank.
+
+name       the name of the function.  This is the minor sort
+           for this listing. The index shows the location of
+	   the function in the gprof listing. If the index is
+	   in parenthesis it shows where it would appear in
+	   the gprof listing if it were to be printed.
+
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+		     Call graph (explanation follows)
+
+
+granularity: each sample hit covers 4 byte(s) for 0.23% of 4.42 seconds
+
+index % time    self  children    called     name
+                                                 <spontaneous>
+[1]     78.1    3.45    0.00                 __udivmoddi4 [1]
+-----------------------------------------------
+                                                 <spontaneous>
+[2]     16.5    0.23    0.50                 main [2]
+                0.22    0.00 10000000/10000000     fx_s3132_longlong_div1 [4]
+                0.19    0.00 10000000/10000000     fx_s3132_longlong_div2 [5]
+                0.09    0.00 10000000/10000000     fx_s3132_longlong_div [6]
+-----------------------------------------------
+                                                 <spontaneous>
+[3]      5.4    0.24    0.00                 __aeabi_ldivmod [3]
+-----------------------------------------------
+                0.22    0.00 10000000/10000000     main [2]
+[4]      5.0    0.22    0.00 10000000         fx_s3132_longlong_div1 [4]
+-----------------------------------------------
+                0.19    0.00 10000000/10000000     main [2]
+[5]      4.3    0.19    0.00 10000000         fx_s3132_longlong_div2 [5]
+-----------------------------------------------
+                0.09    0.00 10000000/10000000     main [2]
+[6]      2.0    0.09    0.00 10000000         fx_s3132_longlong_div [6]
+-----------------------------------------------
+
+ This table describes the call tree of the program, and was sorted by
+ the total amount of time spent in each function and its children.
+
+ Each entry in this table consists of several lines.  The line with the
+ index number at the left hand margin lists the current function.
+ The lines above it list the functions that called this function,
+ and the lines below it list the functions this one called.
+ This line lists:
+     index	A unique number given to each element of the table.
+		Index numbers are sorted numerically.
+		The index number is printed next to every function name so
+		it is easier to look up where the function is in the table.
+
+     % time	This is the percentage of the `total' time that was spent
+		in this function and its children.  Note that due to
+		different viewpoints, functions excluded by options, etc,
+		these numbers will NOT add up to 100%.
+
+     self	This is the total amount of time spent in this function.
+
+     children	This is the total amount of time propagated into this
+		function by its children.
+
+     called	This is the number of times the function was called.
+		If the function called itself recursively, the number
+		only includes non-recursive calls, and is followed by
+		a `+' and the number of recursive calls.
+
+     name	The name of the current function.  The index number is
+		printed after it.  If the function is a member of a
+		cycle, the cycle number is printed between the
+		function's name and the index number.
+
+
+ For the function's parents, the fields have the following meanings:
+
+     self	This is the amount of time that was propagated directly
+		from the function into this parent.
+
+     children	This is the amount of time that was propagated from
+		the function's children into this parent.
+
+     called	This is the number of times this parent called the
+		function `/' the total number of times the function
+		was called.  Recursive calls to the function are not
+		included in the number after the `/'.
+
+     name	This is the name of the parent.  The parent's index
+		number is printed after it.  If the parent is a
+		member of a cycle, the cycle number is printed between
+		the name and the index number.
+
+ If the parents of the function cannot be determined, the word
+ `<spontaneous>' is printed in the `name' field, and all the other
+ fields are blank.
+
+ For the function's children, the fields have the following meanings:
+
+     self	This is the amount of time that was propagated directly
+		from the child into the function.
+
+     children	This is the amount of time that was propagated from the
+		child's children to the function.
+
+     called	This is the number of times the function called
+		this child `/' the total number of times the child
+		was called.  Recursive calls by the child are not
+		listed in the number after the `/'.
+
+     name	This is the name of the child.  The child's index
+		number is printed after it.  If the child is a
+		member of a cycle, the cycle number is printed
+		between the name and the index number.
+
+ If there are any cycles (circles) in the call graph, there is an
+ entry for the cycle-as-a-whole.  This entry shows who called the
+ cycle (as parents) and the members of the cycle (as children.)
+ The `+' recursive calls entry shows the number of function calls that
+ were internal to the cycle, and the calls entry for each member shows,
+ for that member, how many times it was called from other members of
+ the cycle.
+
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Index by function name
+
+   [3] __aeabi_ldivmod         [6] fx_s3132_longlong_div   [5] fx_s3132_longlong_div2
+   [1] __udivmoddi4            [4] fx_s3132_longlong_div1  [2] main
diff --git a/step2/Multest.text b/step2/Multest.text
new file mode 100644
index 0000000000000000000000000000000000000000..51be488bd4aef739fce04623e10a16a8a61372db
--- /dev/null
+++ b/step2/Multest.text
@@ -0,0 +1,157 @@
+Flat profile:
+
+Each sample counts as 0.01 seconds.
+  %   cumulative   self              self     total           
+ time   seconds   seconds    calls  ns/call  ns/call  name    
+ 29.82      0.34     0.34 10000000    34.00    34.00  fx_s3132_longlong_mul1
+ 29.82      0.68     0.34                             main
+ 21.93      0.93     0.25 10000000    25.00    25.00  fx_s3132_longlong_mul2
+ 18.42      1.14     0.21 10000000    21.00    21.00  fx_s3132_longlong_mul
+
+ %         the percentage of the total running time of the
+time       program used by this function.
+
+cumulative a running sum of the number of seconds accounted
+ seconds   for by this function and those listed above it.
+
+ self      the number of seconds accounted for by this
+seconds    function alone.  This is the major sort for this
+           listing.
+
+calls      the number of times this function was invoked, if
+           this function is profiled, else blank.
+
+ self      the average number of milliseconds spent in this
+ms/call    function per call, if this function is profiled,
+	   else blank.
+
+ total     the average number of milliseconds spent in this
+ms/call    function and its descendents per call, if this
+	   function is profiled, else blank.
+
+name       the name of the function.  This is the minor sort
+           for this listing. The index shows the location of
+	   the function in the gprof listing. If the index is
+	   in parenthesis it shows where it would appear in
+	   the gprof listing if it were to be printed.
+
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+		     Call graph (explanation follows)
+
+
+granularity: each sample hit covers 4 byte(s) for 0.88% of 1.14 seconds
+
+index % time    self  children    called     name
+                                                 <spontaneous>
+[1]    100.0    0.34    0.80                 main [1]
+                0.34    0.00 10000000/10000000     fx_s3132_longlong_mul1 [2]
+                0.25    0.00 10000000/10000000     fx_s3132_longlong_mul2 [3]
+                0.21    0.00 10000000/10000000     fx_s3132_longlong_mul [4]
+-----------------------------------------------
+                0.34    0.00 10000000/10000000     main [1]
+[2]     29.8    0.34    0.00 10000000         fx_s3132_longlong_mul1 [2]
+-----------------------------------------------
+                0.25    0.00 10000000/10000000     main [1]
+[3]     21.9    0.25    0.00 10000000         fx_s3132_longlong_mul2 [3]
+-----------------------------------------------
+                0.21    0.00 10000000/10000000     main [1]
+[4]     18.4    0.21    0.00 10000000         fx_s3132_longlong_mul [4]
+-----------------------------------------------
+
+ This table describes the call tree of the program, and was sorted by
+ the total amount of time spent in each function and its children.
+
+ Each entry in this table consists of several lines.  The line with the
+ index number at the left hand margin lists the current function.
+ The lines above it list the functions that called this function,
+ and the lines below it list the functions this one called.
+ This line lists:
+     index	A unique number given to each element of the table.
+		Index numbers are sorted numerically.
+		The index number is printed next to every function name so
+		it is easier to look up where the function is in the table.
+
+     % time	This is the percentage of the `total' time that was spent
+		in this function and its children.  Note that due to
+		different viewpoints, functions excluded by options, etc,
+		these numbers will NOT add up to 100%.
+
+     self	This is the total amount of time spent in this function.
+
+     children	This is the total amount of time propagated into this
+		function by its children.
+
+     called	This is the number of times the function was called.
+		If the function called itself recursively, the number
+		only includes non-recursive calls, and is followed by
+		a `+' and the number of recursive calls.
+
+     name	The name of the current function.  The index number is
+		printed after it.  If the function is a member of a
+		cycle, the cycle number is printed between the
+		function's name and the index number.
+
+
+ For the function's parents, the fields have the following meanings:
+
+     self	This is the amount of time that was propagated directly
+		from the function into this parent.
+
+     children	This is the amount of time that was propagated from
+		the function's children into this parent.
+
+     called	This is the number of times this parent called the
+		function `/' the total number of times the function
+		was called.  Recursive calls to the function are not
+		included in the number after the `/'.
+
+     name	This is the name of the parent.  The parent's index
+		number is printed after it.  If the parent is a
+		member of a cycle, the cycle number is printed between
+		the name and the index number.
+
+ If the parents of the function cannot be determined, the word
+ `<spontaneous>' is printed in the `name' field, and all the other
+ fields are blank.
+
+ For the function's children, the fields have the following meanings:
+
+     self	This is the amount of time that was propagated directly
+		from the child into the function.
+
+     children	This is the amount of time that was propagated from the
+		child's children to the function.
+
+     called	This is the number of times the function called
+		this child `/' the total number of times the child
+		was called.  Recursive calls by the child are not
+		listed in the number after the `/'.
+
+     name	This is the name of the child.  The child's index
+		number is printed after it.  If the child is a
+		member of a cycle, the cycle number is printed
+		between the name and the index number.
+
+ If there are any cycles (circles) in the call graph, there is an
+ entry for the cycle-as-a-whole.  This entry shows who called the
+ cycle (as parents) and the members of the cycle (as children.)
+ The `+' recursive calls entry shows the number of function calls that
+ were internal to the cycle, and the calls entry for each member shows,
+ for that member, how many times it was called from other members of
+ the cycle.
+
+Copyright (C) 2012-2017 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
+
+Index by function name
+
+   [4] fx_s3132_longlong_mul   [3] fx_s3132_longlong_mul2
+   [2] fx_s3132_longlong_mul1  [1] main
diff --git a/step2/test.c b/step2/test.c
index 3d8d86113917887bacd19d816e6afb68d3e80f74..2fb82529afeb600bfc18d092692bd8af7964ef61 100644
--- a/step2/test.c
+++ b/step2/test.c
@@ -1,90 +1,85 @@
 #include <stdio.h>
 #include "fx_s3132_longlong.h"
+#define Max 10000000
 
-fx_s3132 fx_s3132_longlong_mul(fx_s3132 fa, fx_s3132 fb){
-   return fx32_mul(fa, fb);
+void fx_s3132_longlong_mul(fx_s3132 fa, fx_s3132 fb) {
+	fx32_mul(fa, fb);
 }
 
-fx_s3132 fx_s3132_longlong_mul1(fx_s3132 fa, fx_s3132 fb){
-   return fx32_mul1(fa, fb);
+void fx_s3132_longlong_mul1(fx_s3132 fa, fx_s3132 fb) {
+	fx32_mul1(fa, fb);
 }
 
-fx_s3132 fx_s3132_longlong_mul2(fx_s3132 fa, fx_s3132 fb){
-   return fx32_mul2(fa, fb);
+void fx_s3132_longlong_mul2(fx_s3132 fa, fx_s3132 fb) {
+	fx32_mul2(fa, fb);
 }
 
-fx_s3132 fx_s3132_longlong_div(fx_s3132 fa, fx_s3132 fb){
-   return fx32_div(fa, fb);
+void fx_s3132_longlong_div(fx_s3132 fa, fx_s3132 fb) {
+	fx32_div(fa, fb);
 }
 
-fx_s3132 fx_s3132_longlong_div1(fx_s3132 fa, fx_s3132 fb){
-   return fx32_div1(fa, fb);
+void fx_s3132_longlong_div1(fx_s3132 fa, fx_s3132 fb) {
+	fx32_div1(fa, fb);
 }
 
-fx_s3132 fx_s3132_longlong_div2(fx_s3132 fa, fx_s3132 fb){
-   return fx32_div2(fa, fb);
+void fx_s3132_longlong_div2(fx_s3132 fa, fx_s3132 fb) {
+	fx32_div2(fa, fb);
 }
 
 
-int main(){
+int main() {
 	fixed64 num1, num2;
 	int choose;
-	
-	printf("1. Mul		2.Div	   3.Sin\n");
+
+	printf("1. Mul Result and Performance 2. Div Result and Performance 3. Sin Result \n");
 	fflush(stdout);
 	scanf("%d", &choose);
 
-	if(choose!=3){
+	if (choose != 3) {
 		printf("Write 2 number\n");
 		fflush(stdout);
 		scanf("%lld", &num1);
 		scanf("%lld", &num2);
-	}else{
-		printf("Write number\n");
+	}
+	else {
+		printf("Write 1 number\n");
 		fflush(stdout);
 		scanf("%lld", &num1);
 	}
 
-	
-	fx_s3132 sum1=0;   //0
-	fx_s3132 sum2=0;   //1
-	fx_s3132 sum3=0;   //2
-	fx_s3132 sum4=0;   //sin
-
-	if(choose==1){
-		printf("Mul: %ld\n", fx_s3132_longlong_mul(num1, num2));
-		printf("Mul1: %ld\n", fx_s3132_longlong_mul1(num1, num2));
-		printf("Mul2: %ld\n", fx_s3132_longlong_mul2(num1, num2));
-
-		for(int i=0; i< 10000000; i++){
-			sum1 +=fx_s3132_longlong_mul(num1, num2);
-		} 
-		for(int i=0; i< 10000000; i++){
-			sum2 +=fx_s3132_longlong_mul1(num1, num2);
+
+	if (choose == 1) {
+		printf("Mul: %lld\n", fx32_mul(num1, num2));
+		printf("Mul1: %lld\n", fx32_mul1(num1, num2));
+		printf("Mul2: %lld\n", fx32_mul2(num1, num2));
+
+		for (int i = 0; i < Max; i++) {
+			fx_s3132_longlong_mul(num1, num2);
+		}
+		for (int i = 0; i < Max; i++) {
+			fx_s3132_longlong_mul1(num1, num2);
 		}
-		for(int i=0; i< 10000000; i++){
-			sum3 +=fx_s3132_longlong_mul2(num1, num2);
+		for (int i = 0; i < Max; i++) {
+			fx_s3132_longlong_mul2(num1, num2);
 		}
 	}
-	else if(choose==2){
-		printf("Div: %ld\n", fx_s3132_longlong_div(num1, num2));
-		printf("Div1: %ld\n", fx_s3132_longlong_div1(num1, num2));
-		printf("Div2: %ld\n", fx_s3132_longlong_div2(num1, num2));
-
-		for(int i=0; i< 10000000; i++){
-			sum1 +=fx_s3132_longlong_div(num1, num2);
-		} 
-		for(int i=0; i< 10000000; i++){
-			sum2 +=fx_s3132_longlong_div1(num1, num2);
+	else if (choose == 2) {
+		printf("Div: %lld\n", fx32_div(num1, num2));
+		printf("Div1: %lld\n", fx32_div1(num1, num2));
+		printf("Div2: %lld\n", fx32_div2(num1, num2));
+
+		for (int i = 0; i < Max; i++) {
+			fx_s3132_longlong_div(num1, num2);
+		}
+		for (int i = 0; i < Max; i++) {
+			fx_s3132_longlong_div1(num1, num2);
 		}
-		for(int i=0; i< 10000000; i++){
-			sum3 +=fx_s3132_longlong_div2(num1, num2);
+		for (int i = 0; i < Max; i++) {
+			fx_s3132_longlong_div2(num1, num2);
 		}
-	}if(choose==3){
+	}if (choose == 3) {
 		printf("Sin : %ld\n", fx32_sind(num1));
-		
-		for(int i=0; i< 10000000; i++){
-			sum4 +=fx32_sind(num1);
-		} 
+
+
 	}
-}
\ No newline at end of file
+}