diff --git a/a.exe b/a.exe
deleted file mode 100644
index 79f45934e2dfa7ac250c443b2318107f766fbbf0..0000000000000000000000000000000000000000
Binary files a/a.exe and /dev/null differ
diff --git a/fx_3132.c b/fx_3132.c
deleted file mode 100644
index 4687baf122781eca9a800101af1fdb7fae38df5a..0000000000000000000000000000000000000000
--- a/fx_3132.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <stdio.h>
-#include <math.h>
-#include "fx_s3132.h"
-
-fx_3132 sin2(fx_3132 a) {
-	return double_to_fx(sin(fx_to_double(a)));
-};
-fx_3132 sqrt2(fx_3132 a) {
-	return double_to_fx(sqrt(fx_to_double(a)));
-};
-fx_3132 power2(fx_3132 a, fx_3132 b) {
-	return double_to_fx(pow(fx_to_double(a), fx_to_double(b)));
-};
-
-fx_3132 pi2() {
-	return double_to_fx(fx_to_double(PI));
-};
-fx_3132 piReverse2() {
-	return double_to_fx((fx_to_double(1 / PI)));
-};
diff --git a/fx_s3132.h b/fx_s3132.h
deleted file mode 100644
index b80f7c1e3358653449b3d2d88721efb838121ddd..0000000000000000000000000000000000000000
--- a/fx_s3132.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#include <stdio.h>
-#include <math.h>
-#define P2_2to32 4294967296.0
-#define PI 3.141592653
-#define fx_to_double(a) (a/P2_2to32)
-#define double_to_fx(a) (long long)(a*P2_2to32)
-#define fx_add(a, b) ((a)+(b))
-#define fx_sub(a, b) ((a)-(b))
-#define fx_mul(a, b) double_to_fx(fx_to_double (a) * fx_to_double (b))
-#define fx_mul2(a, b) (double)a * (double)b / P2_2to32
-#define fx_div(a, b) double_to_fx(fx_to_double (a) / fx_to_double (b))
-#define fx_sin(a) double_to_fx(sin(fx_to_double(a)))
-#define fx_sqrt(a) double_to_fx(sqrt(fx_to_double(a)))
-#define fx_power(a, b) double_to_fx(pow(fx_to_double(a), fx_to_double(b)))
-#define fx_log10(a) double_to_fx(log10(fx_to_double(a)))
-#define fx_ln(a) double_to_fx(log(fx_to_double(a)))
-#define fx_PI() (double_to_fx(PI))
-#define fx_PI_Reverse() (double_to_fx((1/PI)))
-
-typedef long long fx_3132;
-
-fx_3132 sin2(fx_3132 a);
-fx_3132 sqrt2(fx_3132 a);
-fx_3132 power2(fx_3132 a, fx_3132 b);
-
-fx_3132 piReverse2();
-fx_3132 pi2();
-
diff --git a/fx_s3132_double.c b/fx_s3132_double.c
index bccbbdc8e1b850a54819d32b3f76b09c35ca0c10..af8dbc4bcbca6e289c192664972739b8f7b346f5 100644
--- a/fx_s3132_double.c
+++ b/fx_s3132_double.c
@@ -1,7 +1,41 @@
 #include <stdio.h>
-#include "fx_3132.h"
-
-int main(){
-    printf("두 이진수를 입력 하시오");
+#include "fx_s3132_double.h"
+fx_s3132 fx_s3132_fx_to_double(fx_s3132 a) {
+	return _FX_S3132_FX_TO_DOUBLE(a);
+}
+fx_s3132 fx_s3132_double_to_fx(fx_s3132 a) {
+	return _FX_S3132_DOUBLE_TO_FX(a);
+}
+fx_s3132 fx_s3132_add(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_ADD(a, b);
+}
+fx_s3132 fx_s3132_sub(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_SUB(a, b);
+}
+fx_s3132 fx_s3132_mul(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_MUL(a, b);
+}
+fx_s3132 fx_s3132_div(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_DIV(a, b);
+}
+fx_s3132 fx_s3132_sin(fx_s3132 a) {
+	return _FX_S3132_SIN(a);
+}
+fx_s3132 fx_s3132_sqrt(fx_s3132 a) {
+	return _FX_S3132_SQRT(a);
+}
+fx_s3132 fx_s3132_power(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_POWER(a, b);
+}
+fx_s3132 fx_s3132_log(fx_s3132 a) {
+	return _FX_S3132_LOG(a);
+}
+fx_s3132 fx_s3132_ln(fx_s3132 a) {
+	return _FX_S3132_LN(a);
+}
+fx_s3132 fx_s3132_pi() {
+	return _FX_S3132_PI();
+}
+fx_s3132 fx_s3132_pi_reverse() {
+	return _FX_S3132_PI_REVERSE();
 }
-
diff --git a/fx_s3132_double.h b/fx_s3132_double.h
new file mode 100644
index 0000000000000000000000000000000000000000..39bd6b3320172c78bd551485f3120b55a9110fe0
--- /dev/null
+++ b/fx_s3132_double.h
@@ -0,0 +1,19 @@
+#include <stdio.h>
+#include <math.h>
+#define P_2TO32 4294967296.0
+#define PI 3.141592653
+#define _FX_S3132_FX_TO_DOUBLE(a) (a/P_2TO32)
+#define _FX_S3132_DOUBLE_TO_FX(a) (long long)(a*P_2TO32)
+#define _FX_S3132_ADD(a, b) ((a)+(b))
+#define _FX_S3132_SUB(a, b) ((a)-(b))
+#define _FX_S3132_MUL(a, b) _FX_S3132_DOUBLE_TO_FX(_FX_S3132_FX_TO_DOUBLE (a) * _FX_S3132_FX_TO_DOUBLE (b))
+#define _FX_S3132_DIV(a, b) _FX_S3132_DOUBLE_TO_FX(_FX_S3132_FX_TO_DOUBLE (a) / _FX_S3132_FX_TO_DOUBLE (b))
+#define _FX_S3132_SIN(a) _FX_S3132_DOUBLE_TO_FX(sin(_FX_S3132_FX_TO_DOUBLE(a)))
+#define _FX_S3132_SQRT(a) _FX_S3132_DOUBLE_TO_FX(sqrt(_FX_S3132_FX_TO_DOUBLE(a)))
+#define _FX_S3132_POWER(a, b) _FX_S3132_DOUBLE_TO_FX(pow(_FX_S3132_FX_TO_DOUBLE(a), _FX_S3132_FX_TO_DOUBLE(b)))
+#define _FX_S3132_LOG(a) _FX_S3132_DOUBLE_TO_FX(log10(_FX_S3132_FX_TO_DOUBLE(a)))
+#define _FX_S3132_LN(a) _FX_S3132_DOUBLE_TO_FX(log(_FX_S3132_FX_TO_DOUBLE(a)))
+#define _FX_S3132_PI() (_FX_S3132_DOUBLE_TO_FX(PI))
+#define _FX_S3132_PI_REVERSE() (_FX_S3132_DOUBLE_TO_FX((1/PI)))
+
+typedef long long fx_s3132;
diff --git a/step2/fx_s3132_longlong.c b/step2/fx_s3132_longlong.c
index 83ef190587fd07c9d71ab10bba6a1015b8711cef..b68361d8bd1bfd88d883f57b61878c860e4fce1b 100644
--- a/step2/fx_s3132_longlong.c
+++ b/step2/fx_s3132_longlong.c
@@ -1,8 +1,8 @@
 #include "fx_s3132_longlong.h"
 
-#if defined(__FX32__)
+#if defined(__FX_S3132__)
 
-const fixed32 fx32_SinTable[92] =  
+const fixed32 fx_s3132_SinTable[92] =  
     {     
         0,1143,2287,3429,4571,5711,6850,7986,9120,10252,11380,12504,13625,14742,15854,16961,18064,19160,20251,21336,22414,23486,24550,25606,26655, 27696,28729,29752,
         30767,31772,32768,33753,34728,35693,36647,37589,38521,39440,40347,41243,42125,42995,43852,44695,45525,46340,47142, 47929,48702,49460,50203,50931,51643,52339,
@@ -21,19 +21,37 @@ fixed32 fx32_sind(fixed32 fa)
         sign = -1;
         fa *= -1; 
     }
-    fa = fa % FX32_360; 
-    if ( fa >= FX32_180 ) 
+    fa = fa % _FX_S3132_360; 
+    if ( fa >= _FX_S3132_180 ) 
     {
         sign *= -1;
-        fa -= FX32_180;
+        fa -= _FX_S3132_180;
     }
-    if ( fa > FX32_90 ) 
-        fa = FX32_180 - fa;
+    if ( fa > _FX_S3132_90 ) 
+        fa = _FX_S3132_180 - fa;
     idx = fa>>16; 
-    ret0 = fx32_SinTable[idx]; 
-    diff = fx32_SinTable[idx+1]-ret0;
+    ret0 = fx_s3132_SinTable[idx]; 
+    diff = fx_s3132_SinTable[idx+1]-ret0;
     return ( sign *( ret0 + ((diff*(fa&0xFFFF))>>16) )); 
 }
 
+fx_s3132 fx_s3132_mul(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_mul(a, b);
+}
+fx_s3132 fx_s3132_mul1(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_mul1(a, b);
+}
+fx_s3132 fx_s3132_mul2(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_mul2(a, b);
+}
+fx_s3132 fx_s3132_div(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_div(a, b);
+}
+fx_s3132 fx_s3132_div1(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_div1(a, b);
+}
+fx_s3132 fx_s3132_div2(fx_s3132 a, fx_s3132 b) {
+	return _FX_S3132_div2(a, b);
+}
 
 #endif
diff --git a/step2/fx_s3132_longlong.h b/step2/fx_s3132_longlong.h
index b1fa41866286a203c83f948e2cc82e2b449020f5..3d1dadbb018a7f0b5a70847fe80117839cb022ce 100644
--- a/step2/fx_s3132_longlong.h
+++ b/step2/fx_s3132_longlong.h
@@ -9,33 +9,33 @@ typedef long long fx_s3132;
 
 
 
-#define __FX32__
-#define FX32_QNUM                          32
-#define FX32_QMULT                         4294967296
-#define FLOAT_QMULT                        4294967296.0F
-#define FX32_180_PI                        0x00394BB8
-#define FX32_1                             0x00010000
-#define FX32_30                            0x001E0000
-#define FX32_45                            0x002D0000
-#define FX32_90                            0x005A0000
-#define FX32_180                           0x00B40000
-#define FX32_360                           0x01680000
+#define __FX_S3132__
+#define _FX_S3132_QNUM                          32
+#define _FX_S3132_QMULT                         4294967296
+#define _FX_S3132_FLOAT_QMULT                   4294967296.0F
+#define _FX_S3132_180_PI                        0x00394BB8
+#define _FX_S3132_1                             0x00010000
+#define _FX_S3132_30                            0x001E0000
+#define _FX_S3132_45                            0x002D0000
+#define _FX_S3132_90                            0x005A0000
+#define _FX_S3132_180                           0x00B40000
+#define _FX_S3132_360                           0x01680000
 
 
 //아래 3개는 곱셈 관련 코드입니다.
-#define fx32_mul(fa, fb)				((fa * fb) >> FX32_QNUM )  //fa와 fb를 곱해서 2^32로 나누어 주는 코드입니다. 이게 가장 기본 코드입니다. 
-#define fx32_mul1(fa, fb)				((((fa>>16) * fb)>>16))    //위와 똑같이 fa*fb>>32랑 같은 의미인대, 먼저 fa/2^16와 fb를 곱해주고 나머지 2^16을 나눠주는 작업입니다.
-#define fx32_mul2(fa, fb)				((((fa>>8)*(fb>>8))>>16))  //위와 똑같이 fa*fb>>32랑 같은 의미인대, 먼저 fa/2^8, fb/2^8을 곱해주고 나머지 2^16을 나눠주는 작업입니다.
+#define _FX_S3132_mul(fa, fb)				((fa * fb) >> _FX_S3132_QNUM )  //fa와 fb를 곱해서 2^32로 나누어 주는 코드입니다. 이게 가장 기본 코드입니다. 
+#define _FX_S3132_mul1(fa, fb)				((((fa>>16) * fb)>>16))    //위와 똑같이 fa*fb>>32랑 같은 의미인대, 먼저 fa/2^16와 fb를 곱해주고 나머지 2^16을 나눠주는 작업입니다.
+#define _FX_S3132_mul2(fa, fb)				((((fa>>8)*(fb>>8))>>16))  //위와 똑같이 fa*fb>>32랑 같은 의미인대, 먼저 fa/2^8, fb/2^8을 곱해주고 나머지 2^16을 나눠주는 작업입니다.
 
 //아래 3개는 나눗셈 관련 코드입니다.
-#define fx32_div(fa, fb)				( (((fixed64)(fa) << FX32_QNUM) /(fb)))    //fa에 2^32을 곱하고 fb를 나눠주는 코드입니다. 이게 가장 기본 코드입니다.
-#define fx32_div1(fa, fb)				((((fa)<<16)/(fb))<<16)     //위와 똑같이 (fa<<32)/fb랑 같은 의미인대, 먼저 fa에 2^16을 곱한 값을 fb를 나누고, 그 다음에 나머지 2^16을 곱해주는 작업입니다.
-#define fx32_div2(fa, fb)				((((fa)<<24)/(fb))<<8)      //위와 똑같이 (fa<<32)/fb랑 같은 의미인대, 먼저 fa에 2^24을 곱한 값을 fb를 나누고, 그 다음에 나머지 2^8을 곱해주는 작업입니다.
-                                      //((fa)/((fb)>>FX32_QNUM))
+#define _FX_S3132_div(fa, fb)				( (((fa) << _FX_S3132_QNUM) /(fb)))    //fa에 2^32을 곱하고 fb를 나눠주는 코드입니다. 이게 가장 기본 코드입니다.
+#define _FX_S3132_div1(fa, fb)				((((fa)<<16)/(fb))<<16)     //위와 똑같이 (fa<<32)/fb랑 같은 의미인대, 먼저 fa에 2^16을 곱한 값을 fb를 나누고, 그 다음에 나머지 2^16을 곱해주는 작업입니다.
+#define _FX_S3132_div2(fa, fb)				((((fa)<<24)/(fb))<<8)      //위와 똑같이 (fa<<32)/fb랑 같은 의미인대, 먼저 fa에 2^24을 곱한 값을 fb를 나누고, 그 다음에 나머지 2^8을 곱해주는 작업입니다.
+                                      //((fa)/((fb)>>_FX_S3132_QNUM))
 
-#define fx32_degree(__r)				(fx32_mul((__r),FX32_180_PI))  
+#define _FX_S3132_DEGREE(__r)				(_FX_S3132_mul((__r),_FX_S3132_180_PI))  
 
-#define fx32_asin(__a)					fx32_asind(fx32_degree(__a))
+#define _FX_S3132_ASIN(__a)					fx32_asind(_FX_S3132_DEGREE(__a))
 
 fixed32 fx32_sind(fixed32 fa);
 
diff --git a/step2/test.c b/step2/test.c
index 2fb82529afeb600bfc18d092692bd8af7964ef61..552a22917fd4ed7d4d113ba116f4df6df0677f1d 100644
--- a/step2/test.c
+++ b/step2/test.c
@@ -2,29 +2,12 @@
 #include "fx_s3132_longlong.h"
 #define Max 10000000
 
-void fx_s3132_longlong_mul(fx_s3132 fa, fx_s3132 fb) {
-	fx32_mul(fa, fb);
-}
-
-void fx_s3132_longlong_mul1(fx_s3132 fa, fx_s3132 fb) {
-	fx32_mul1(fa, fb);
-}
-
-void fx_s3132_longlong_mul2(fx_s3132 fa, fx_s3132 fb) {
-	fx32_mul2(fa, fb);
-}
-
-void fx_s3132_longlong_div(fx_s3132 fa, fx_s3132 fb) {
-	fx32_div(fa, fb);
-}
-
-void fx_s3132_longlong_div1(fx_s3132 fa, fx_s3132 fb) {
-	fx32_div1(fa, fb);
-}
-
-void fx_s3132_longlong_div2(fx_s3132 fa, fx_s3132 fb) {
-	fx32_div2(fa, fb);
-}
+extern fx_s3132 fx_s3132_mul(fx_s3132 fa, fx_s3132 fb);
+extern fx_s3132 fx_s3132_mul1(fx_s3132 fa, fx_s3132 fb);
+extern fx_s3132 fx_s3132_mul2(fx_s3132 fa, fx_s3132 fb);
+extern fx_s3132 fx_s3132_div(fx_s3132 fa, fx_s3132 fb);
+extern fx_s3132 fx_s3132_div1(fx_s3132 fa, fx_s3132 fb);
+extern fx_s3132 fx_s3132_div2(fx_s3132 fa, fx_s3132 fb);
 
 
 int main() {
@@ -49,33 +32,33 @@ int main() {
 
 
 	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));
+		printf("Mul: %lld\n", fx_s3132_mul(num1, num2));
+		printf("Mul1: %lld\n", fx_s3132_mul1(num1, num2));
+		printf("Mul2: %lld\n", fx_s3132_mul2(num1, num2));
 
 		for (int i = 0; i < Max; i++) {
-			fx_s3132_longlong_mul(num1, num2);
+			fx_s3132_mul(num1, num2);
 		}
 		for (int i = 0; i < Max; i++) {
-			fx_s3132_longlong_mul1(num1, num2);
+			fx_s3132_mul1(num1, num2);
 		}
 		for (int i = 0; i < Max; i++) {
-			fx_s3132_longlong_mul2(num1, num2);
+			fx_s3132_mul2(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));
+		printf("Div: %lld\n", fx_s3132_div(num1, num2));
+		printf("Div1: %lld\n", fx_s3132_div1(num1, num2));
+		printf("Div2: %lld\n", fx_s3132_div2(num1, num2));
 
 		for (int i = 0; i < Max; i++) {
-			fx_s3132_longlong_div(num1, num2);
+			fx_s3132_div(num1, num2);
 		}
 		for (int i = 0; i < Max; i++) {
-			fx_s3132_longlong_div1(num1, num2);
+			fx_s3132_div1(num1, num2);
 		}
 		for (int i = 0; i < Max; i++) {
-			fx_s3132_longlong_div2(num1, num2);
+			fx_s3132_div2(num1, num2);
 		}
 	}if (choose == 3) {
 		printf("Sin : %ld\n", fx32_sind(num1));
diff --git a/test.c b/test.c
index 82f2cc564e42d08bb98300d7c4053fd0a6107632..1b1d330c42d3690fb2607696ccd07f4fb37a2564 100644
--- a/test.c
+++ b/test.c
@@ -1,6 +1,20 @@
 #include <stdio.h>
 #include <math.h>
-#include "fx_s3132.h"
+#include "fx_s3132_double.h"
+
+extern fx_s3132 fx_s3132_fx_to_double(fx_s3132 a);
+extern fx_s3132 fx_s3132_double_to_fx(fx_s3132 a);
+extern fx_s3132 fx_s3132_add(fx_s3132 a, fx_s3132 b);
+extern fx_s3132 fx_s3132_sub(fx_s3132 a, fx_s3132 b);
+extern fx_s3132 fx_s3132_mul(fx_s3132 a, fx_s3132 b);
+extern fx_s3132 fx_s3132_div(fx_s3132 a, fx_s3132 b);
+extern fx_s3132 fx_s3132_sin(fx_s3132 a);
+extern fx_s3132 fx_s3132_sqrt(fx_s3132 a);
+extern fx_s3132 fx_s3132_power(fx_s3132 a, fx_s3132 b);
+extern fx_s3132 fx_s3132_log(fx_s3132 a);
+extern fx_s3132 fx_s3132_ln(fx_s3132 a);
+extern fx_s3132 fx_s3132_pi();
+extern fx_s3132 fx_s3132_pi_reverse();
 
 int main() {
 	int choose;
@@ -26,16 +40,16 @@ int main() {
 			scanf("%d", &a);
 
 			if (a == 1) {
-				printf("Result: %lld\n", fx_add(num1, num2));
+				printf("Result: %lld\n", fx_s3132_add(num1, num2));
 			}
 			else if (a == 2) {
-				printf("Result: %lld\n", fx_sub(num1, num2));
+				printf("Result: %lld\n", fx_s3132_sub(num1, num2));
 			}
 			else if (a == 3) {
-				printf("Result: %lld\n", fx_mul(num1, num2));
+				printf("Result: %lld\n", fx_s3132_mul(num1, num2));
 			}
 			else if (a == 4) {
-				printf("Result: %lld\n", fx_div(num1, num2));
+				printf("Result: %lld\n", fx_s3132_div(num1, num2));
 			}
 		}
 		else if (choose == 2) {
@@ -49,14 +63,14 @@ int main() {
 				fflush(stdout);
 				scanf("%lld", &num1);
 
-				printf("Result: %lld\n", fx_sin(num1));
+				printf("Result: %lld\n", fx_s3132_sin(num1));
 			}
 			else if (a == 2) {
 				printf("Input 1 fixed point number.\n");
 				fflush(stdout);
 				scanf("%lld", &num1);
 
-				printf("Result: %lld\n", fx_sqrt(num1));
+				printf("Result: %lld\n", fx_s3132_sqrt(num1));
 			}
 			else if (a == 3) {
 				printf("Input 2 fixed point number.\n");
@@ -64,21 +78,21 @@ int main() {
 				scanf("%lld", &num1);
 				scanf("%lld", &num2);
 
-				printf("Result: %lld\n", fx_power(num1, num2));
+				printf("Result: %lld\n", fx_s3132_power(num1, num2));
 			}
 			else if (a == 4) {
 				printf("Input 1 fixed point number.\n");
 				fflush(stdout);
 				scanf("%lld", &num1);
 
-				printf("Result: %lld\n", fx_log10(num1));
+				printf("Result: %lld\n", fx_s3132_log(num1));
 			}
 			else if (a == 5) {
 				printf("Input 1 fixed point number.\n");
 				fflush(stdout);
 				scanf("%lld", &num1);
 
-				printf("Result: %lld\n", fx_ln(num1));
+				printf("Result: %lld\n", fx_s3132_ln(num1));
 			}
 		}
 		else if (choose == 3) {
@@ -91,13 +105,13 @@ int main() {
 				printf("Input 1 fixed point number.\n");
 				fflush(stdout);
 				scanf("%lld", &num1);
-				printf("Result: %lf\n", fx_to_double(num1));
+				printf("Result: %lf\n", fx_s3132_fx_to_double(num1));
 			}
 			else if (a == 2) {
 				printf("Input 1 double number.\n");
 				fflush(stdout);
 				scanf("%lf", &dnum1);
-				printf("Result: %lld\n", double_to_fx(dnum1));
+				printf("Result: %lld\n", fx_s3132_double_to_fx(dnum1));
 			}
 		}
 		else if (choose == 4) {
@@ -107,10 +121,10 @@ int main() {
 			scanf("%d", &a);
 
 			if (a == 1) {
-				printf("Result: %lld\n", fx_PI());
+				printf("Result: %lld\n", fx_s3132_pi());
 			}
 			else if (a == 2) {
-				printf("Result: %lld\n", fx_PI_Reverse());
+				printf("Result: %lld\n", fx_s3132_pi_reverse());
 			}
 		}
 		else if (choose == 5) {