diff --git a/fx_s1516 b/fx_s1516
new file mode 160000
index 0000000000000000000000000000000000000000..2f4b31aab1ff4b7689ebd3278d1d93e8dc9195ac
--- /dev/null
+++ b/fx_s1516
@@ -0,0 +1 @@
+Subproject commit 2f4b31aab1ff4b7689ebd3278d1d93e8dc9195ac
diff --git a/fx_s1516_longlong.h b/fx_s1516_longlong.h
deleted file mode 100644
index cc6b2c7c00edd2ee5661dc9afe3dcd0006bd8f5c..0000000000000000000000000000000000000000
--- a/fx_s1516_longlong.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-typedef long fixed32;
-typedef long long fixed64;
-
-#define mul0(a, b)   (fixed32) ((fixed64)(a) * (b) >> 16)
-#define mul1(a, b)   (fixed32) ((a) * (b) >> 16) // no fixed
-#define mul2(a, b)   (fixed32) ((a>>8) * (b>>8)) 
-#define mul3(a, b)   (fixed32) ((a>>10) * (b>>6))
-#define mul4(a, b)   (fixed32) ((a>>4) * (b>>4) >> 8)
-
-// mul에서 (fixed) conversion 안하면 : 숫자가 -1 부터 1로 (작게)정규화 되어있으면 곱셈이 빠르다. 
-// fixed도 붙였다 땠다 해보고
-// 시프트 연산도 나눠보고 
-// for 문도 많이 돌려보고
-// 값도 아주 작은 거부터 아주 큰거까지 다 넣어보고
\ No newline at end of file
diff --git a/fx_s1516_longlong.c b/fx_s1516_longlong/fx_s1516_longlong.c
similarity index 100%
rename from fx_s1516_longlong.c
rename to fx_s1516_longlong/fx_s1516_longlong.c
diff --git a/fx_s1516_longlong/fx_s1516_longlong.h b/fx_s1516_longlong/fx_s1516_longlong.h
new file mode 100644
index 0000000000000000000000000000000000000000..af4313e3010bcbf5ebd7584bea2cf1e0c97ab36a
--- /dev/null
+++ b/fx_s1516_longlong/fx_s1516_longlong.h
@@ -0,0 +1,38 @@
+#pragma once
+
+typedef long fixed32;
+typedef long long fixed64;
+
+#define mul0(a, b)   (fixed32) ((fixed64)(a) * (b) >> 16)
+#define mul1(a, b)   (fixed32) ((a) * (b) >> 16) // no fixed
+#define mul2(a, b)   (fixed32) ((a>>8) * (b>>8)) 
+#define mul3(a, b)   (fixed32) ((a>>10) * (b>>6))
+#define mul4(a, b)   (fixed32) ((a>>4) * (b>>4) >> 8)
+
+// mul에서 (fixed) conversion 안하면 : 숫자가 -1 부터 1로 (작게)정규화 되어있으면 곱셈이 빠르다. 
+// fixed도 붙였다 땠다 해보고
+// 시프트 연산도 나눠보고 
+// for 문도 많이 돌려보고
+// 값도 아주 작은 거부터 아주 큰거까지 다 넣어보고
+
+#define div0(a, b) (fixed32)(((fixed64)(a) << 16) / (b))
+#define div1(a, b) ((((a) << 8) / (b)) << 8)
+#define div2(a, b) ((a) / ((b) >> 16))
+
+// 나눗셈 연산 : shift 과정에서 나누는 수가 0이 되어 나눠질 수 있으므로 조심해야 한다.
+
+/* <div0>
+* a(나눠지는 수)를 long long으로 캐스팅, 16bit shift 연산 후 b(나누는 수)로 나눔
+* long long 캐스팅: int(32bit)인 a를 long long(64bit)로 캐스팅함으로써 속도가 느려지지만 16bit shift 연산을 할 때 데이터의 손실을 줄일 수 있다.
+* fx_s1516_longlong은 정수형 사칙연산이므로 a와 b가 비슷한 범위의 숫자이거나 실수형으로 계산했을 때 소수점이 나오는 나눗셈인 경우 오차범위가 커지기 때문에 이것을 방지하고자 미리 a를 16bit shift 시킨 후 b로 나눴다.
+
+   <div1>
+* long long으로 캐스팅하지 않고 int형으로 나눠줬기 때문에 연산 속도가 빠르다.
+* 큰 수일 경우 데이터의 손실이 있을 수 있다.
+* Overflow 가능성은 작아진다.
+
+   <div2>
+* div1과 같이 long long으로 캐스팅하지 않았기 때문에 연산 속도가 빠르다.
+* Overflow 발생확률이 높다.
+* b(나누는 수)가 작은 수일 경우 데이터의 손실이 크다.
+*/
\ No newline at end of file