diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c08a3260ef0865d4b98c8a1ed83fb23b1bb496d2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.out
+*.exe
diff --git a/fx_s2308_double.c b/fx_s2308_double.c
index 9034b54a90d7f1a17ff4bdff787ddb5522eb3307..185fe35db82db92fa1f676f084d5b9e9e14af081 100644
--- a/fx_s2308_double.c
+++ b/fx_s2308_double.c
@@ -1,2 +1,19 @@
+#include "fx_s2308_double.h"
 #include <math.h>
-typedef double fx_s2308;
+
+#define PI 3.1415926535897
+#define to_radian(a) (a*(PI/180))
+
+fx_s2308 fx_sine(fx_s2308 a){
+	double f_a=fx_to_double(a);
+	f_a=to_radian(f_a);
+	return double_to_fx(sin(f_a));
+}
+fx_s2308 fx_sqrt(fx_s2308 a){
+	double f_a=fx_to_double(a);
+	return double_to_fx(sqrt(f_a));
+}
+fx_s2308 fx_pow(fx_s2308 a, double n){
+	double f_a=fx_to_double(a);
+	return double_to_fx(pow(f_a,n));
+}
diff --git a/fx_s2308_double.h b/fx_s2308_double.h
index 24d61e015dfe62816f3ea05fdf851c94703cbb0a..6236b0946856664e48ffcc82921276ac6db292f7 100644
--- a/fx_s2308_double.h
+++ b/fx_s2308_double.h
@@ -5,4 +5,9 @@ typedef double fx_s2308;
 #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_div(a,b) double_to_fx((fx_to_double(a)/fx_to_double(b)))
\ No newline at end of file
+#define fx_div(a,b) double_to_fx((fx_to_double(a)/fx_to_double(b)))
+
+fx_s2308 fx_sine(fx_s2308 a);
+fx_s2308 fx_sqrt(fx_s2308 a);
+fx_s2308 fx_power(fx_s2308 a, double n);
+
diff --git a/test.c b/test.c
index a1b7c25f71335d47aedcd03eb20ec3a943af6322..f20dc2e33edc6aa65de1ec0aa31168027c2b26c4 100644
--- a/test.c
+++ b/test.c
@@ -1,11 +1,31 @@
 #include <stdio.h>
 #include "fx_s2308_double.h"
 
-typedef double fx_s2308;
 int main() {
 	fx_s2308 a = 200;
 	fx_s2308 b = 100;
 	fx_s2308 output = fx_mul(a, b);
-	printf("%lf",output);
+	printf("%lf\n",output);
+	
+	printf("===sine test===\n");
+	double a1=30.0;
+	fx_s2308 f_a1=double_to_fx(a1);
+	fx_s2308 sine_a1=fx_sine(f_a1);
+	printf("%lf %lf %lf\n",a1,f_a1,fx_to_double(sine_a1));
+
+	printf("===sqrt test===\n");
+	double a2=100.0;
+	fx_s2308 f_a2=double_to_fx(a2);
+	fx_s2308 sqrt_a2=fx_sqrt(f_a2);
+	printf("%lf %lf %lf\n",a2,f_a2,fx_to_double(sqrt_a2));
+	
+	printf("===power test===\n");
+	double a3=64.0;
+	fx_s2308 f_a3=double_to_fx(a3);
+	fx_s2308 pow_a3=fx_pow(f_a3,2.0);
+	printf("%lf %lf %lf\n",a3,f_a3,fx_to_double(pow_a3));
+	
+
+
 	return 0;
-}
\ No newline at end of file
+}