diff --git a/Images/led_main.mp4 b/Images/led_main.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..4894d682ef136fe8217e037b880b68e4090854cc
Binary files /dev/null and b/Images/led_main.mp4 differ
diff --git a/Images/led_main_1_5.mp4 b/Images/led_main_1_5.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..35d209c781d2504243825ac7c632354abd130757
Binary files /dev/null and b/Images/led_main_1_5.mp4 differ
diff --git a/Images/led_main_2_3.mp4 b/Images/led_main_2_3.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..5e601547ef0f6a290eb928bda20b01da4a2494f0
Binary files /dev/null and b/Images/led_main_2_3.mp4 differ
diff --git a/Images/led_main_3_3.mp4 b/Images/led_main_3_3.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..96cf2a77429050818bf323023979423334134a19
Binary files /dev/null and b/Images/led_main_3_3.mp4 differ
diff --git a/fx_project/Makefile b/fx_project/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..96c6c65720bf75766540e722119773e9c5901f56
--- /dev/null
+++ b/fx_project/Makefile
@@ -0,0 +1,18 @@
+SRCS := test.c fx_s1516_double.c
+OBJS = $(SRCS:.c=.o)
+CC = gcc
+CFLAGS = -c -Wall -g
+# CFLAGS = -c -Wall -O2
+
+fx_x1516_double: $(OBJS)
+	$(CC) -o $@ $^
+
+.c.o: 
+	$(CC) ${CFLAGS} $<
+
+clean:
+	-rm $(OBJS)
+	rm fx_x1516_double
+
+dep:
+	$(CC) -M $(SRCS)
\ No newline at end of file
diff --git a/fx_project/README.md b/fx_project/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..d402b0090d6e8d8748e7024fc666e5400c9380bb
--- /dev/null
+++ b/fx_project/README.md
@@ -0,0 +1,144 @@
+# Battle C Team project - Team 3
+
+## Team members
+
+|  Name  | Student ID |
+| :----: | :--------: |
+| 남도현 | 201620921  |
+| 이장원 | 201920756  |
+| 이화진 | 201723268  |
+| 황영준 | 201420989  |
+
+
+
+## Fixed Point
+
+### What is Fixed point?
+
+- 흔히 사용되는 부동 소수점 방식과 다르게 소수점의 위치를 고정해 놓고 실수를 표현하는 방법이다.
+- 구현이 간편하지만 표현가능한 수의 범위가 좁고 정밀도가 낮다는 단점이 존재한다.
+
+
+
+## fx_s1516 - fixed point number
+
+### fx_s1516
+
+![image-20200809143100791](./images/image-20200809143100791.png)
+
+- 총 32 Bit이며, 맨 앞의 1Bit는 부호를 나타내는 비트로 사용한다.
+- 그 뒤의 15 Bit는 정수부, 16 Bit는 소수부를 표현한다.
+
+### values - min, max, resolution
+
+- minimum value: -32768 (= -2^15)
+- maximum value: 32767.9999847 (= 2^15 - 1/2^16)
+- resolution: 0.00001525878 (= 1/2^16)
+
+
+
+## fx_s1516 Library
+
+### macros
+
+| Macro               | Description                               |
+| ------------------- | ----------------------------------------- |
+| P2_16               | 고정소수점 표현을 위해 필요한 2^16을 정의 |
+| e                   | math.h의 M_E를 활용하여 자연상수 e를 정의 |
+| fx_s1516_PI         | math.h의 M_PI를 활용하여 원주율 PI를 정의 |
+| fx_s1516_INVERSE_PI | 앞서 정의한 PI의 역을 정의                |
+
+### functions
+
+| Name             | Return type | Parameters            | Description                                       |
+| ---------------- | ----------- | --------------------- | ------------------------------------------------- |
+| double_to_fx     | double      | double a              | double형 a값을 fx_s1516형으로 형 변환             |
+| fx_to_double     | double      | fx_s1516 a            | fx_s1516형 a값을 double형으로 형 변환             |
+| fx_s1516_add     | double      | double a, double b    | fx_s1516 연산으로 a + b값을 계산                  |
+| fx_s1516_sub     | double      | double a, double b    | fx_s1516 연산으로 a - b값을 계산                  |
+| fx_s1516_mul     | double      | double a, double b    | fx_s1516 연산으로 a * b값을 계산                  |
+| fx_s1516_div     | double      | double a, double b    | fx_s1516 연산으로 a / b값을 계산                  |
+| degree_to_radian | double      | fx_s1516 a            | fx_s1516형 a값을 radian 값으로 변환               |
+| fx_s1516_sin     | double      | double a              | 라디안 값을 받아 fx_s1516 연산으로 sin값을 계산   |
+| fx_s1516_sqrt    | double      | double a              | fx_s1516 연산으로 a의  제곱근 계산                |
+| fx_s1516_pow     | double      | double a, double b    | fx_s1516 연산으로 a의 b거듭제곱을 계산            |
+| fx_s1516_log     | double      | double a, double b    | fx_s1516 연산으로 b를 밑으로 하는 a의 로그를 계산 |
+| baselog          | double      | double a, double base | base를 밑으로 하는 a의 로그를 계산                |
+
+
+
+## make
+
+### descriptions
+
+- 다수의 모듈로 구성된 프로그램을 효율적으로 유지하고, 관리할 수 있도록 도와주는 도구이다.
+- 여러 파일들 간 의존성을 저장하고 수정된 파일에 연관된 것들만 재 컴파일할 수 있다.
+- 자주 쓰는 명령어를 정의해 자동화할 수 있다.
+
+### codes
+
+- macro: 일반 코딩에서 변수 선언과 같이 단순한 매크로에 여러 파일 혹은 링크 명령어들을 지정할 수 있다.
+
+  ```makefile
+  SRCS := test.c fx_s1516_double.c
+  OBJS = $(SRCS:.c=.o)
+  CC = gcc
+  CFLAGS = -c -Wall -g
+  ```
+
+  - macro 선언에는 '='과 ':=' 표현 중 아무거나 한 개를 쓰면 된다.
+  - $(SRCS:.c=.o)는 SRCS 중에서 .c로 끝나느 파일을 .o로 바꾸어 할당한다는 뜻이다.
+
+- Internal Macro: 기본적으로 내장되어 있는 매크로를 뜻하며 재정의 할 수 없다.
+
+  | name | description                                      |
+  | ---- | ------------------------------------------------ |
+  | $@   | 현재 target명                                    |
+  | $?   | 현재 target보다 더 최근에 갱신된 dependency 명단 |
+  | $<   | dependency중 첫 번째 파일명                      |
+  | $^   | 현재 모든 dependency 명단                        |
+
+- Pre-defined Macro: Internal Macro와 같이 내장되어 있으나 재정의할 수 있다.
+
+  ```makefile
+  CC = gcc
+  ```
+
+  - CC는 기본적으로 ```cc```로 선언되어 있지만 ```gcc```로 재정의하여 사용하였다.
+
+- target과 dependency(pre-requirement): terminal에서 make 명령어 바로 뒤에 올 수 있는 것을 target, 해당 타겟이 실행되기 위해 필요한 것을 dependency라고 한다.
+
+  ```makefile
+  fx_x1516_double: $(OBJS)
+  	$(CC) -o $@ $^
+  ```
+
+  - 매크로를 사용할 때 매크로 이름이 2글자 이상이면 괄호() 또는 중괄호{}로 감싸주어야 한다.
+  - target과 dependency 바로 밑에 해당 타겟이 호출되면 실행될 터미널 명령어를 정의할 수 있는데 앞에는 무조건 ```tab```을 넣어주어야 한다.
+
+- dummy target: dependency 없이 정의된 target을 뜻한다.
+
+  ```makefile
+  clean:
+  	-rm $(OBJS)
+  	rm fx_s1516_double
+  
+  dep:
+  	$(CC) -M $(SRCS)
+  ```
+
+  - clean은 ```make```로 생성되었던 *.o 파일들과 fx_s1516_double 실행 파일을 삭제한다.
+  - 터미널 명령을 정의할 때 맨 앞에 ```-```를 삽입하면 해당 명령어가 정상 실행되지 않더라도 다음 줄의 명령어를 실행한다.
+  - dep는 컴파일 할 명령어에서 사용하고 있는 헤더를 자동으로 찾아서 매핑해주는 역할을 한다.
+
+### commands
+
+- ```make```: *.c 파일을 컴파일하여 *.o 파일을 만들고, fx_s1516_double 실행 파일을 생성한다.
+- ```make clean```: *.o 파일과 fx_s1516_double 실행 파일을 제거한다.
+
+### 
+
+## References
+
+###### Randy Yates, Fixed-Point Arithmetic: An Introudction. pp6-pp11
+
diff --git a/fx_project/fx_s1516_double.c b/fx_project/fx_s1516_double.c
new file mode 100644
index 0000000000000000000000000000000000000000..1acdb27a4215b367d29cbd5e3f2d617650fb7744
--- /dev/null
+++ b/fx_project/fx_s1516_double.c
@@ -0,0 +1,51 @@
+// fx_s1516_double.c file
+#include "fx_s1516_double.h"
+
+double double_to_fx(double a) {
+    return ((a) * P2_16);
+}
+
+double fx_to_double(fx_s1516 a) {
+    return ((double)(a) / P2_16);
+}
+
+double fx_s1516_add(double a, double b){
+    return double_to_fx((a) + (b));
+}
+
+double fx_s1516_sub(double a, double b){
+    return double_to_fx((a) - (b));
+}
+
+double fx_s1516_mul(double a, double b) {
+    return double_to_fx((a) * (b) * P2_16);
+}
+
+double fx_s1516_div(double a, double b) {
+    return double_to_fx((a) / (b) / P2_16);
+}
+
+double degree_to_radian(fx_s1516 a) {
+    return ((a) * M_PI / 180);
+}
+
+double fx_s1516_sin(double a) {
+    return double_to_fx(sin(a * P2_16) / (P2_16));
+}
+
+double fx_s1516_sqrt(double a) {
+    return double_to_fx(sqrt(a) / sqrt(P2_16));
+}
+
+double fx_s1516_pow(double a, double b) {
+    return double_to_fx(pow(a, (double)b) * pow(P2_16, (double)b - 1));
+}
+
+double fx_s1516_log(double a, double b) {
+    return double_to_fx(baselog(a * P2_16, b) / (P2_16));
+}
+
+double baselog(double a, double base)
+{
+	return log(a) / log(base);
+}
\ No newline at end of file
diff --git a/fx_project/fx_s1516_double.h b/fx_project/fx_s1516_double.h
new file mode 100644
index 0000000000000000000000000000000000000000..b65a88560c6ab11e9bc18ed18dca8af2bdeeddf8
--- /dev/null
+++ b/fx_project/fx_s1516_double.h
@@ -0,0 +1,26 @@
+#pragma once
+#define __FX_S1516_DOUBLE_H
+
+typedef int fx_s1516;
+
+#include <stdio.h>
+#define _USE_MATH_DEFINES
+#include <math.h>
+#define P2_16 65536.0f
+#define e M_E
+#define fx_s1516_PI M_PI
+#define fx_s1516_INVERSE_PI 1/M_PI
+
+
+extern double double_to_fx(double a);
+extern double baselog(double a, double base);
+extern double fx_s1516_add(double a, double b);
+extern double fx_s1516_sub(double a, double b);
+extern double fx_s1516_mul(double a, double b);
+extern double fx_s1516_div(double a, double b);
+extern double fx_s1516_sqrt(double a);
+extern double fx_s1516_pow(double a, double b);
+extern double fx_s1516_log(double a, double b);
+extern double degree_to_radian(fx_s1516 a);
+extern double fx_to_double(fx_s1516 a);
+extern double fx_s1516_sin(double a);
\ No newline at end of file
diff --git a/fx_project/test.c b/fx_project/test.c
new file mode 100644
index 0000000000000000000000000000000000000000..6d7b1041d5cfdee7e369f66a5cabd3f5127c621f
--- /dev/null
+++ b/fx_project/test.c
@@ -0,0 +1,33 @@
+#include "fx_s1516_double.h"
+
+#define fx_mul(a, b) ((a)*(b))
+
+/*
+Make first prototype fx_sXXYY_double.c with double and math.h
+define macro fx_sXXYY_double.h program test.c
+*/
+
+int main()
+{
+    fx_s1516 a = 131072;
+	fx_s1516 b = 65536;
+
+    double fa = fx_to_double(a);
+    double fb = fx_to_double(b);
+
+    printf("a : %d b : %d fa : %lf fb : %lf\noriginal a : %lf original b : %lf\n\n", a, b, fa, fb, double_to_fx(fa), double_to_fx(fb));
+    
+	printf("Add  : %-15d %lf\n", a + b, fx_s1516_add(fa, fb));
+    printf("Sub  : %-15d %lf\n", a - b, fx_s1516_sub(fa, fb));
+    printf("Mul  : %-15lld %lf\n", (long long)a * b, fx_s1516_mul(fa, fb));
+    printf("Div  : %-15lf %lf\n\n", (double)a / b, fx_s1516_div(fa, fb));
+    
+    printf("Sin  : %-15lf %lf\n", sin(degree_to_radian(a)), fx_s1516_sin(degree_to_radian(fa)));
+    printf("Sqrt : %-15lf %lf\n", sqrt(a), fx_s1516_sqrt(fa));
+    printf("Sqrt : %-15lf %lf\n", sqrt(b), fx_s1516_sqrt(fb));
+    printf("Pow  : %-15lld %lf\n", (long long)pow(a, 2), fx_s1516_pow(fa, 2));
+    printf("Log  : %-15lf %lf\n\n", baselog(a, e), fx_s1516_log(fa, e));
+
+    printf("PI : %f\n", fx_s1516_PI);
+    printf("INVERSE PI : %f\n", fx_s1516_INVERSE_PI);
+}
diff --git a/fx_project/vgeMath.c b/fx_project/vgeMath.c
new file mode 100644
index 0000000000000000000000000000000000000000..e3719bb2b3d136b16e3bb1285386966a57a42f0d
--- /dev/null
+++ b/fx_project/vgeMath.c
@@ -0,0 +1,339 @@
+// Programmed and Modified by HyunChan Sung@HUONE 2005.9.13
+// V3 add Inverse sqrt by JYY
+// V4 Modify by HYL
+#include "vgePipeline.h"
+
+#if defined(__FX32__)
+
+// sin table
+const fixed32 fx32_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,
+        53019,53683,54331,54963,55577,56175,56755,57319,57864,58393,58903,59395,59870,60326,60763, 61183,61583,61965,62328,62672,62997,63302,63589,63856,64103,64331,
+        64540,64729,64898,65047,65176,65286,65376,65446,65496,65526,65536,65526
+    };
+
+// ##090624 YJY##  Table of Sqrt(fx/1024) * 8 
+// Remove by HYL v4 #if defined(__ALEXVG_NO_64DIV__)
+// Modified by HYL v4, (a) Add [1024] value  (b) New Calculation because of Numerical Error Refer AlexMath.xls
+int sqrt_lut[1025] = {0x00000001,0x01000000,0x016A09E6,0x01BB67AE,0x02000000,0x023C6EF3,0x027311C2,0x02A54FF5,0x02D413CC,0x03000000,0x03298B07,0x03510E52,0x0376CF5D,0x039B0568,0x03BDDD42,0x03DF7BD6,0x04000000,0x041F83D9,0x043E1DB3,0x045BE0CD,0x0478DDE6,0x049523AE,
+0x04B0BF16,0x04CBBB9D,0x04E62385,0x05000000,0x05195957,0x0532370B,0x054A9FEA,0x05629A29,0x057A2B74,0x05915901,0x05A82799,0x05BE9BA8,0x05D4B943,0x05EA8434,0x06000000,0x06152FEC,0x062A1709,0x063EB830,0x0653160E,0x06673326,0x067B11D2,0x068EB44A,0x06A21CA4,0x06B54CDA,
+0x06C846C7,0x06DB0C2E,0x06ED9EBA,0x07000000,0x07123180,0x072434A7,0x07360AD1,0x0747B548,0x07593547,0x076A8BFB,0x077BBA84,0x078CC1F3,0x079DA34E,0x07AE5F91,0x07BEF7AC,0x07CF6C85,0x07DFBEFA,0x07EFEFDF,0x08000000,0x080FF01F,0x081FC0FB,0x082F7347,0x083F07B3,0x084E7EE6,
+0x085DD983,0x086D1826,0x087C3B66,0x088B43D4,0x089A31FD,0x08A90668,0x08B7C19A,0x08C66410,0x08D4EE47,0x08E360B5,0x08F1BBCD,0x09000000,0x090E2DB8,0x091C4560,0x092A475C,0x09383410,0x09460BDC,0x0953CF1D,0x09617E2C,0x096F1963,0x097CA116,0x098A1598,0x0997773A,0x09A4C64B,
+0x09B20318,0x09BF2DEA,0x09CC470A,0x09D94EBE,0x09E6454C,0x09F32AF7,0x0A000000,0x0A0CC4A6,0x0A197927,0x0A261DC1,0x0A32B2AF,0x0A3F382A,0x0A4BAE6A,0x0A5815A7,0x0A646E17,0x0A70B7ED,0x0A7CF35D,0x0A89209A,0x0A953FD4,0x0AA1513C,0x0AAD5500,0x0AB94B4D,0x0AC53452,0x0AD11039,
+0x0ADCDF2E,0x0AE8A15B,0x0AF456E9,0x0B000000,0x0B0B9CC7,0x0B172D66,0x0B22B202,0x0B2E2AC1,0x0B3997C6,0x0B44F936,0x0B504F33,0x0B5B99DF,0x0B66D95D,0x0B720DCD,0x0B7D3750,0x0B885605,0x0B936A0C,0x0B9E7382,0x0BA97286,0x0BB46736,0x0BBF51AE,0x0BCA320B,0x0BD50868,0x0BDFD4E2,
+0x0BEA9792,0x0BF55093,0x0C000000,0x0C0AA5F1,0x0C154280,0x0C1FD5C5,0x0C2A5FD9,0x0C34E0D4,0x0C3F58CC,0x0C49C7D9,0x0C542E12,0x0C5E8B8D,0x0C68E05F,0x0C732C9E,0x0C7D7060,0x0C87ABB9,0x0C91DEBF,0x0C9C0984,0x0CA62C1D,0x0CB0469E,0x0CBA5919,0x0CC463A2,0x0CCE664C,0x0CD86129,
+0x0CE2544B,0x0CEC3FC3,0x0CF623A5,0x0D000000,0x0D09D4E5,0x0D13A267,0x0D1D6895,0x0D27277F,0x0D30DF36,0x0D3A8FCA,0x0D443949,0x0D4DDBC5,0x0D57774B,0x0D610BEB,0x0D6A99B4,0x0D7420B4,0x0D7DA0FA,0x0D871A93,0x0D908D8E,0x0D99F9F8,0x0DA35FE0,0x0DACBF52,0x0DB6185C,0x0DBF6B0A,
+0x0DC8B76B,0x0DD1FD8A,0x0DDB3D74,0x0DE47735,0x0DEDAADA,0x0DF6D86F,0x0E000000,0x0E092197,0x0E123D42,0x0E1B530C,0x0E246300,0x0E2D6D28,0x0E367191,0x0E3F7045,0x0E48694E,0x0E515CB8,0x0E5A4A8D,0x0E6332D8,0x0E6C15A2,0x0E74F2F6,0x0E7DCADD,0x0E869D63,0x0E8F6A90,0x0E98326E,
+0x0EA0F507,0x0EA9B264,0x0EB26A8F,0x0EBB1D90,0x0EC3CB71,0x0ECC743B,0x0ED517F7,0x0EDDB6AE,0x0EE65068,0x0EEEE52E,0x0EF77508,0x0F000000,0x0F08861C,0x0F110766,0x0F1983E6,0x0F21FBA3,0x0F2A6EA6,0x0F32DCF6,0x0F3B469C,0x0F43AB9F,0x0F4C0C07,0x0F5467DB,0x0F5CBF22,0x0F6511E5,
+0x0F6D602A,0x0F75A9F9,0x0F7DEF58,0x0F863050,0x0F8E6CE6,0x0F96A522,0x0F9ED90B,0x0FA708A8,0x0FAF33FE,0x0FB75B16,0x0FBF7DF5,0x0FC79CA3,0x0FCFB724,0x0FD7CD81,0x0FDFDFBF,0x0FE7EDE4,0x0FEFF7F7,0x0FF7FDFE,0x10000000,0x1007FE00,0x100FF807,0x1017EE1A,0x101FE03F,0x1027CE7B,
+0x102FB8D4,0x10379F51,0x103F81F6,0x104760C9,0x104F3BD0,0x10571310,0x105EE68E,0x1066B651,0x106E825D,0x10764AB8,0x107E0F66,0x1085D06E,0x108D8DD3,0x1095479C,0x109CFDCD,0x10A4B06B,0x10AC5F7C,0x10B40B04,0x10BBB307,0x10C3578C,0x10CAF896,0x10D2962A,0x10DA304D,0x10E1C704,
+0x10E95A53,0x10F0EA3F,0x10F876CC,0x11000000,0x110785DD,0x110F0869,0x111687A8,0x111E039F,0x11257C51,0x112CF1C3,0x113463FA,0x113BD2F9,0x11433EC4,0x114AA760,0x11520CD1,0x11596F1A,0x1160CE41,0x11682A48,0x116F8334,0x1176D909,0x117E2BCA,0x11857B7B,0x118CC821,0x119411BF,
+0x119B5859,0x11A29BF2,0x11A9DC8F,0x11B11A32,0x11B854E0,0x11BF8C9D,0x11C6C16B,0x11CDF34E,0x11D5224A,0x11DC4E63,0x11E3779B,0x11EA9DF7,0x11F1C179,0x11F8E226,0x12000000,0x12071B0A,0x120E3349,0x121548BF,0x121C5B70,0x12236B5F,0x122A788F,0x12318304,0x12388AC0,0x123F8FC6,
+0x1246921A,0x124D91BF,0x12548EB9,0x125B8909,0x126280B3,0x126975BA,0x12706821,0x127757EB,0x127E451B,0x12852FB4,0x128C17B9,0x1292FD2C,0x1299E011,0x12A0C06A,0x12A79E3A,0x12AE7984,0x12B5524A,0x12BC2891,0x12C2FC59,0x12C9CDA6,0x12D09C7B,0x12D768DA,0x12DE32C6,0x12E4FA41,
+0x12EBBF4F,0x12F281F2,0x12F9422C,0x13000000,0x1306BB70,0x130D747F,0x13142B30,0x131ADF85,0x13219181,0x13284125,0x132EEE75,0x13359973,0x133C4221,0x1342E881,0x13498C97,0x13502E64,0x1356CDEB,0x135D6B2E,0x13640630,0x136A9EF2,0x13713577,0x1377C9C2,0x137E5BD4,0x1384EBAF,
+0x138B7957,0x139204CD,0x13988E14,0x139F152D,0x13A59A1A,0x13AC1CDF,0x13B29D7D,0x13B91BF6,0x13BF984C,0x13C61282,0x13CC8A99,0x13D30094,0x13D97474,0x13DFE63D,0x13E655EE,0x13ECC38C,0x13F32F17,0x13F99893,0x14000000,0x14066560,0x140CC8B6,0x14132A04,0x1419894C,0x141FE68F,
+0x142641CF,0x142C9B0E,0x1432F24F,0x14394793,0x143F9ADC,0x1445EC2B,0x144C3B83,0x145288E6,0x1458D455,0x145F1DD2,0x1465655F,0x146BAAFD,0x1471EEAF,0x14783076,0x147E7054,0x1484AE4B,0x148AEA5C,0x1491248A,0x14975CD5,0x149D9340,0x14A3C7CC,0x14A9FA7B,0x14B02B4F,0x14B65A49,
+0x14BC876B,0x14C2B2B7,0x14C8DC2E,0x14CF03D2,0x14D529A4,0x14DB4DA6,0x14E16FDA,0x14E79042,0x14EDAEDE,0x14F3CBB1,0x14F9E6BB,0x15000000,0x1506177F,0x150C2D3B,0x15124135,0x1518536F,0x151E63EA,0x152472A7,0x152A7FA9,0x15308AF1,0x15369480,0x153C9C57,0x1542A278,0x1548A6E5,
+0x154EA99F,0x1554AAA7,0x155AAA00,0x1560A7A9,0x1566A3A5,0x156C9DF5,0x1572969B,0x15788D98,0x157E82EC,0x1584769B,0x158A68A4,0x1590590A,0x159647CD,0x159C34F0,0x15A22073,0x15A80A57,0x15ADF29F,0x15B3D94B,0x15B9BE5D,0x15BFA1D6,0x15C583B6,0x15CB6401,0x15D142B6,0x15D71FD8,
+0x15DCFB67,0x15E2D564,0x15E8ADD2,0x15EE84B0,0x15F45A01,0x15FA2DC6,0x16000000,0x1605D0AF,0x160B9FD6,0x16116D75,0x1617398F,0x161D0423,0x1622CD33,0x162894C1,0x162E5ACD,0x16341F58,0x1639E265,0x163FA3F3,0x16456405,0x164B229B,0x1650DFB6,0x16569B58,0x165C5582,0x16620E35,
+0x1667C571,0x166D7B39,0x16732F8D,0x1678E26E,0x167E93DD,0x168443DC,0x1689F26C,0x168F9F8D,0x16954B41,0x169AF589,0x16A09E66,0x16A645D9,0x16ABEBE3,0x16B19084,0x16B733BF,0x16BCD594,0x16C27605,0x16C81511,0x16CDB2BB,0x16D34F03,0x16D8E9EB,0x16DE8372,0x16E41B9B,0x16E9B267,
+0x16EF47D6,0x16F4DBE9,0x16FA6EA1,0x17000000,0x17059005,0x170B1EB4,0x1710AC0B,0x1716380C,0x171BC2B9,0x17214C12,0x1726D418,0x172C5ACC,0x1731E02E,0x17376441,0x173CE704,0x1742687A,0x1747E8A2,0x174D677D,0x1752E50D,0x17586153,0x175DDC4E,0x17635602,0x1768CE6D,0x176E4591,
+0x1773BB6F,0x17793008,0x177EA35D,0x1784156E,0x1789863D,0x178EF5CA,0x17946416,0x1799D123,0x179F3CF0,0x17A4A77F,0x17AA10D1,0x17AF78E6,0x17B4DFC0,0x17BA455F,0x17BFA9C4,0x17C50CEF,0x17CA6EE3,0x17CFCF9F,0x17D52F24,0x17DA8D73,0x17DFEA8E,0x17E54674,0x17EAA126,0x17EFFAA7,
+0x17F552F5,0x17FAAA12,0x18000000,0x180554BD,0x180AA84C,0x180FFAAE,0x18154BE2,0x181A9BEA,0x181FEAC6,0x18253878,0x182A8500,0x182FD05F,0x18351A95,0x183A63A3,0x183FAB8B,0x1844F24C,0x184A37E8,0x184F7C60,0x1854BFB3,0x185A01E3,0x185F42F1,0x186482DD,0x1869C1A8,0x186EFF53,
+0x18743BDE,0x1879774A,0x187EB199,0x1883EAC9,0x188922DE,0x188E59D6,0x18938FB3,0x1898C475,0x189DF81E,0x18A32AAD,0x18A85C24,0x18AD8C84,0x18B2BBCC,0x18B7E9FE,0x18BD171A,0x18C24321,0x18C76E13,0x18CC97F2,0x18D1C0BE,0x18D6E878,0x18DC0F20,0x18E134B6,0x18E6593D,0x18EB7CB4,
+0x18F09F1C,0x18F5C075,0x18FAE0C1,0x19000000,0x19051E32,0x190A3B58,0x190F5773,0x19147284,0x19198C8B,0x191EA589,0x1923BD7E,0x1928D46B,0x192DEA50,0x1932FF2F,0x19381308,0x193D25DB,0x194237AA,0x19474874,0x194C583A,0x195166FE,0x195674BF,0x195B817E,0x19608D3C,0x196597F9,
+0x196AA1B6,0x196FAA74,0x1974B233,0x1979B8F3,0x197EBEB6,0x1983C37C,0x1988C745,0x198DCA13,0x1992CBE5,0x1997CCBC,0x199CCC99,0x19A1CB7D,0x19A6C967,0x19ABC659,0x19B0C253,0x19B5BD55,0x19BAB761,0x19BFB076,0x19C4A896,0x19C99FC1,0x19CE95F7,0x19D38B39,0x19D87F87,0x19DD72E3,
+0x19E2654C,0x19E756C4,0x19EC474A,0x19F136DF,0x19F62584,0x19FB1339,0x1A000000,0x1A04EBD7,0x1A09D6C0,0x1A0EC0BC,0x1A13A9CB,0x1A1891ED,0x1A1D7924,0x1A225F6E,0x1A2744CE,0x1A2C2943,0x1A310CCF,0x1A35EF71,0x1A3AD12A,0x1A3FB1FA,0x1A4491E3,0x1A4970E4,0x1A4E4EFE,0x1A532C32,
+0x1A580880,0x1A5CE3E9,0x1A61BE6C,0x1A66980C,0x1A6B70C7,0x1A70489F,0x1A751F94,0x1A79F5A6,0x1A7ECAD7,0x1A839F26,0x1A887293,0x1A8D4521,0x1A9216CE,0x1A96E79C,0x1A9BB78A,0x1AA0869A,0x1AA554CC,0x1AAA2220,0x1AAEEE97,0x1AB3BA31,0x1AB884EF,0x1ABD4ED1,0x1AC217D7,0x1AC6E003,
+0x1ACBA754,0x1AD06DCB,0x1AD53369,0x1AD9F82D,0x1ADEBC19,0x1AE37F2D,0x1AE84169,0x1AED02CD,0x1AF1C35B,0x1AF68312,0x1AFB41F4,0x1B000000,0x1B04BD36,0x1B097998,0x1B0E3526,0x1B12EFE0,0x1B17A9C7,0x1B1C62DB,0x1B211B1C,0x1B25D28B,0x1B2A8929,0x1B2F3EF5,0x1B33F3F1,0x1B38A81C,
+0x1B3D5B77,0x1B420E03,0x1B46BFC0,0x1B4B70AE,0x1B5020CE,0x1B54D020,0x1B597EA4,0x1B5E2C5B,0x1B62D946,0x1B678565,0x1B6C30B8,0x1B70DB3F,0x1B7584FC,0x1B7A2DED,0x1B7ED615,0x1B837D73,0x1B882408,0x1B8CC9D3,0x1B916ED6,0x1B961311,0x1B9AB684,0x1B9F592F,0x1BA3FB14,0x1BA89C32,
+0x1BAD3C8A,0x1BB1DC1B,0x1BB67AE8,0x1BBB18EF,0x1BBFB632,0x1BC452B0,0x1BC8EE6B,0x1BCD8962,0x1BD22395,0x1BD6BD06,0x1BDB55B5,0x1BDFEDA1,0x1BE484CC,0x1BE91B36,0x1BEDB0DE,0x1BF245C7,0x1BF6D9EF,0x1BFB6D57,0x1C000000,0x1C0491E9,0x1C092314,0x1C0DB381,0x1C12432F,0x1C16D220,
+0x1C1B6054,0x1C1FEDCB,0x1C247A85,0x1C290684,0x1C2D91C6,0x1C321C4D,0x1C36A619,0x1C3B2F2A,0x1C3FB780,0x1C443F1D,0x1C48C600,0x1C4D4C29,0x1C51D19A,0x1C565651,0x1C5ADA51,0x1C5F5D98,0x1C63E028,0x1C686201,0x1C6CE322,0x1C71638D,0x1C75E342,0x1C7A6240,0x1C7EE08A,0x1C835E1D,
+0x1C87DAFC,0x1C8C5727,0x1C90D29D,0x1C954D5F,0x1C99C76D,0x1C9E40C8,0x1CA2B971,0x1CA73166,0x1CABA8AA,0x1CB01F3B,0x1CB4951B,0x1CB90A49,0x1CBD7EC7,0x1CC1F293,0x1CC665B0,0x1CCAD81C,0x1CCF49D9,0x1CD3BAE6,0x1CD82B44,0x1CDC9AF3,0x1CE109F4,0x1CE57847,0x1CE9E5EC,0x1CEE52E3,
+0x1CF2BF2D,0x1CF72ACA,0x1CFB95BB,0x1D000000,0x1D046998,0x1D08D285,0x1D0D3AC6,0x1D11A25C,0x1D160948,0x1D1A6F89,0x1D1ED520,0x1D233A0D,0x1D279E51,0x1D2C01EB,0x1D3064DC,0x1D34C725,0x1D3928C5,0x1D3D89BE,0x1D41EA0E,0x1D4649B7,0x1D4AA8B9,0x1D4F0714,0x1D5364C8,0x1D57C1D6,
+0x1D5C1E3E,0x1D607A01,0x1D64D51E,0x1D692F95,0x1D6D8968,0x1D71E296,0x1D763B20,0x1D7A9306,0x1D7EEA48,0x1D8340E7,0x1D8796E3,0x1D8BEC3C,0x1D9040F2,0x1D949505,0x1D98E877,0x1D9D3B47,0x1DA18D76,0x1DA5DF03,0x1DAA2FEF,0x1DAE803B,0x1DB2CFE6,0x1DB71EF1,0x1DBB6D5C,0x1DBFBB28,
+0x1DC40854,0x1DC854E2,0x1DCCA0D0,0x1DD0EC20,0x1DD536D2,0x1DD980E6,0x1DDDCA5C,0x1DE21335,0x1DE65B70,0x1DEAA30F,0x1DEEEA11,0x1DF33076,0x1DF77640,0x1DFBBB6E,0x1E000000,0x1E0443F6,0x1E088752,0x1E0CCA12,0x1E110C39,0x1E154DC4,0x1E198EB6,0x1E1DCF0E,0x1E220ECD,0x1E264DF2,
+0x1E2A8C7E,0x1E2ECA71,0x1E3307CC,0x1E37448E,0x1E3B80B9,0x1E3FBC4B,0x1E43F746,0x1E4831AA,0x1E4C6B77,0x1E50A4AD,0x1E54DD4C,0x1E591556,0x1E5D4CC9,0x1E6183A6,0x1E65B9ED,0x1E69EFA0,0x1E6E24BD,0x1E725945,0x1E768D39,0x1E7AC099,0x1E7EF364,0x1E83259B,0x1E87573F,0x1E8B884F,
+0x1E8FB8CC,0x1E93E8B7,0x1E98180E,0x1E9C46D3,0x1EA07506,0x1EA4A2A7,0x1EA8CFB6,0x1EACFC33,0x1EB1281F,0x1EB5537B,0x1EB97E45,0x1EBDA87F,0x1EC1D228,0x1EC5FB41,0x1ECA23CA,0x1ECE4BC4,0x1ED2732E,0x1ED69A09,0x1EDAC054,0x1EDEE611,0x1EE30B40,0x1EE72FE0,0x1EEB53F2,0x1EEF7776,
+0x1EF39A6C,0x1EF7BCD5,0x1EFBDEB1,0x1F000000,0x1F0420C1,0x1F0840F7,0x1F0C60A0,0x1F107FBD,0x1F149E4D,0x1F18BC53,0x1F1CD9CC,0x1F20F6BB,0x1F25131E,0x1F292EF7,0x1F2D4A45,0x1F316508,0x1F357F42,0x1F3998F1,0x1F3DB217,0x1F41CAB3,0x1F45E2C6,0x1F49FA4F,0x1F4E1150,0x1F5227C8,
+0x1F563DB7,0x1F5A531E,0x1F5E67FD,0x1F627C54,0x1F669024,0x1F6AA36C,0x1F6EB62D,0x1F72C866,0x1F76DA19,0x1F7AEB45,0x1F7EFBEB,0x1F830C0B,0x1F871BA4,0x1F8B2AB8,0x1F8F3946,0x1F93474E,0x1F9754D1,0x1F9B61D0,0x1F9F6E49,0x1FA37A3E,0x1FA785AE,0x1FAB909A,0x1FAF9B02,0x1FB3A4E7,
+0x1FB7AE47,0x1FBBB724,0x1FBFBF7E,0x1FC3C755,0x1FC7CEA9,0x1FCBD57A,0x1FCFDBC9,0x1FD3E196,0x1FD7E6E0,0x1FDBEBA9,0x1FDFEFEF,0x1FE3F3B5,0x1FE7F6F9,0x1FEBF9BC,0x1FEFFBFD,0x1FF3FDBF,0x1FF7FEFF,0x1FFBFFBF,0x20000000}; // Add 1025th element HYL V4
+
+// Non Interpolate Version
+
+int inverse_sqrt_lut[1025] = { 
+0x02000000,0x01000000,0x00B504F0,0x0093CD38,0x00800000,0x00727C90,0x006882F0,0x0060C240,0x005A8278,0x00555550,0x0050F448,0x004D2FD8,0x0049E698,0x00470068,0x00446B38,0x00421950,0x00400000,0x003E16D0,0x003C56F8,0x003ABAF8,0x00393E48,0x0037DD20,0x00369450,0x00356130,
+0x00344178,0x00333330,0x003234A8,0x00314468,0x00306120,0x002F89B8,0x002EBD28,0x002DFA98,0x002D4138,0x002C9058,0x002BE750,0x002B4598,0x002AAAA8,0x002A1608,0x00298750,0x0028FE28,0x00287A20,0x0027FB00,0x00278068,0x00270A20,0x002697E8,0x00262980,0x0025BEC0,0x00255768,
+0x0024F348,0x00249248,0x00243430,0x0023D8E0,0x00238030,0x00232A08,0x0022D650,0x002284D8,0x00223598,0x0021E870,0x00219D48,0x00215408,0x00210CA8,0x0020C700,0x00208310,0x002040C0,0x00200000,0x001FC0B8,0x001F82E8,0x001F4678,0x001F0B68,0x001ED198,0x001E9908,0x001E61B0,
+0x001E2B78,0x001DF668,0x001DC260,0x001D8F70,0x001D5D78,0x001D2C80,0x001CFC78,0x001CCD60,0x001C9F20,0x001C71C0,0x001C4538,0x001C1980,0x001BEE90,0x001BC460,0x001B9AE8,0x001B7230,0x001B4A28,0x001B22C8,0x001AFC18,0x001AD608,0x001AB098,0x001A8BC0,0x001A6780,0x001A43D8,
+0x001A20B8,0x0019FE28,0x0019DC20,0x0019BA98,0x00199998,0x00197910,0x00195900,0x00193970,0x00191A50,0x0018FBA8,0x0018DD68,0x0018BF98,0x0018A230,0x00188530,0x00186898,0x00184C60,0x00183090,0x00181518,0x0017FA00,0x0017DF40,0x0017C4D8,0x0017AAC8,0x00179110,0x001777A8,
+0x00175E90,0x001745D0,0x00172D58,0x00171528,0x0016FD48,0x0016E5B0,0x0016CE68,0x0016B760,0x0016A098,0x00168A18,0x001673E0,0x00165DE8,0x00164828,0x001632B0,0x00161D70,0x00160870,0x0015F3A8,0x0015DF18,0x0015CAC8,0x0015B6B0,0x0015A2C8,0x00158F20,0x00157BA8,0x00156860,
+0x00155550,0x00154270,0x00152FC8,0x00151D50,0x00150B00,0x0014F8E8,0x0014E6F8,0x0014D538,0x0014C3A8,0x0014B240,0x0014A108,0x00148FF8,0x00147F10,0x00146E50,0x00145DC0,0x00144D50,0x00143D10,0x00142CF0,0x00141CF8,0x00140D28,0x0013FD80,0x0013EDF8,0x0013DE90,0x0013CF50,
+0x0013C030,0x0013B138,0x0013A260,0x001393A8,0x00138510,0x00137698,0x00136840,0x00135A08,0x00134BF0,0x00133DF8,0x00133020,0x00132260,0x001314C0,0x00130740,0x0012F9D8,0x0012EC88,0x0012DF60,0x0012D248,0x0012C550,0x0012B870,0x0012ABB0,0x00129F08,0x00129278,0x00128600,
+0x001279A0,0x00126D60,0x00126130,0x00125520,0x00124920,0x00123D38,0x00123170,0x001225B8,0x00121A18,0x00120E88,0x00120318,0x0011F7B8,0x0011EC70,0x0011E138,0x0011D618,0x0011CB10,0x0011C018,0x0011B538,0x0011AA68,0x00119FA8,0x00119500,0x00118A70,0x00117FF0,0x00117580,
+0x00116B28,0x001160D8,0x001156A8,0x00114C80,0x00114268,0x00113868,0x00112E78,0x00112498,0x00111AC8,0x00111110,0x00110760,0x0010FDC0,0x0010F438,0x0010EAB8,0x0010E150,0x0010D7F0,0x0010CEA0,0x0010C560,0x0010BC38,0x0010B318,0x0010AA00,0x0010A100,0x00109810,0x00108F28,
+0x00108650,0x00107D88,0x001074D0,0x00106C20,0x00106380,0x00105AF0,0x00105268,0x001049F0,0x00104188,0x00103928,0x001030D8,0x00102898,0x00102060,0x00101830,0x00101018,0x00100800,0x00100000,0x000FF800,0x000FF010,0x000FE830,0x000FE058,0x000FD890,0x000FD0D0,0x000FC918,
+0x000FC170,0x000FB9D8,0x000FB240,0x000FAAB8,0x000FA338,0x000F9BC8,0x000F9460,0x000F8D00,0x000F85B0,0x000F7E68,0x000F7728,0x000F6FF8,0x000F68C8,0x000F61A8,0x000F5A90,0x000F5388,0x000F4C80,0x000F4588,0x000F3E98,0x000F37B0,0x000F30D8,0x000F2A00,0x000F2338,0x000F1C70,
+0x000F15B8,0x000F0F08,0x000F0868,0x000F01C8,0x000EFB30,0x000EF4A0,0x000EEE20,0x000EE7A0,0x000EE130,0x000EDAC8,0x000ED460,0x000ECE08,0x000EC7B8,0x000EC168,0x000EBB28,0x000EB4F0,0x000EAEB8,0x000EA890,0x000EA270,0x000E9C50,0x000E9640,0x000E9030,0x000E8A30,0x000E8430,
+0x000E7E38,0x000E7850,0x000E7268,0x000E6C88,0x000E66B0,0x000E60D8,0x000E5B10,0x000E5548,0x000E4F90,0x000E49D8,0x000E4428,0x000E3E80,0x000E38E0,0x000E3348,0x000E2DB0,0x000E2820,0x000E2298,0x000E1D18,0x000E17A0,0x000E1228,0x000E0CC0,0x000E0758,0x000E01F8,0x000DFC98,
+0x000DF748,0x000DF1F8,0x000DECB0,0x000DE768,0x000DE230,0x000DDCF8,0x000DD7C0,0x000DD298,0x000DCD70,0x000DC850,0x000DC338,0x000DBE28,0x000DB918,0x000DB408,0x000DAF08,0x000DAA08,0x000DA510,0x000DA020,0x000D9B30,0x000D9648,0x000D9160,0x000D8C88,0x000D87A8,0x000D82D8,
+0x000D7E08,0x000D7940,0x000D7478,0x000D6FB8,0x000D6B00,0x000D6648,0x000D6198,0x000D5CF0,0x000D5848,0x000D53A8,0x000D4F08,0x000D4A70,0x000D45E0,0x000D4150,0x000D3CC8,0x000D3840,0x000D33C0,0x000D2F40,0x000D2AC8,0x000D2658,0x000D21E8,0x000D1D80,0x000D1918,0x000D14B8,
+0x000D1058,0x000D0C00,0x000D07B0,0x000D0360,0x000CFF10,0x000CFAC8,0x000CF688,0x000CF248,0x000CEE10,0x000CE9D8,0x000CE5A0,0x000CE178,0x000CDD48,0x000CD928,0x000CD500,0x000CD0E0,0x000CCCC8,0x000CC8B0,0x000CC4A0,0x000CC090,0x000CBC88,0x000CB880,0x000CB478,0x000CB078,
+0x000CAC80,0x000CA888,0x000CA490,0x000CA0A0,0x000C9CB8,0x000C98D0,0x000C94E8,0x000C9108,0x000C8D28,0x000C8948,0x000C8578,0x000C81A0,0x000C7DD0,0x000C7A00,0x000C7638,0x000C7278,0x000C6EB0,0x000C6AF0,0x000C6738,0x000C6380,0x000C5FC8,0x000C5C18,0x000C5868,0x000C54C0,
+0x000C5118,0x000C4D70,0x000C49D0,0x000C4630,0x000C4298,0x000C3F00,0x000C3B68,0x000C37D8,0x000C3448,0x000C30C0,0x000C2D38,0x000C29B0,0x000C2630,0x000C22B0,0x000C1F38,0x000C1BB8,0x000C1848,0x000C14D0,0x000C1160,0x000C0DF8,0x000C0A88,0x000C0720,0x000C03C0,0x000C0060,
+0x000BFD00,0x000BF9A0,0x000BF648,0x000BF2F0,0x000BEFA0,0x000BEC50,0x000BE900,0x000BE5B0,0x000BE268,0x000BDF28,0x000BDBE0,0x000BD8A0,0x000BD560,0x000BD228,0x000BCEF0,0x000BCBB8,0x000BC888,0x000BC558,0x000BC228,0x000BBEF8,0x000BBBD0,0x000BB8A8,0x000BB588,0x000BB268,
+0x000BAF48,0x000BAC28,0x000BA910,0x000BA5F8,0x000BA2E8,0x000B9FD0,0x000B9CC0,0x000B99B8,0x000B96A8,0x000B93A0,0x000B9098,0x000B8D98,0x000B8A90,0x000B8790,0x000B8498,0x000B8198,0x000B7EA0,0x000B7BB0,0x000B78B8,0x000B75C8,0x000B72D8,0x000B6FE8,0x000B6D00,0x000B6A18,
+0x000B6730,0x000B6450,0x000B6168,0x000B5E88,0x000B5BB0,0x000B58D0,0x000B55F8,0x000B5320,0x000B5048,0x000B4D78,0x000B4AA8,0x000B47D8,0x000B4508,0x000B4240,0x000B3F78,0x000B3CB0,0x000B39F0,0x000B3728,0x000B3468,0x000B31B0,0x000B2EF0,0x000B2C38,0x000B2980,0x000B26C8,
+0x000B2410,0x000B2160,0x000B1EB0,0x000B1C00,0x000B1958,0x000B16A8,0x000B1400,0x000B1158,0x000B0EB8,0x000B0C10,0x000B0970,0x000B06D0,0x000B0438,0x000B0198,0x000AFF00,0x000AFC68,0x000AF9D0,0x000AF740,0x000AF4A8,0x000AF218,0x000AEF88,0x000AED00,0x000AEA70,0x000AE7E8,
+0x000AE560,0x000AE2D8,0x000AE058,0x000ADDD8,0x000ADB58,0x000AD8D8,0x000AD658,0x000AD3E0,0x000AD160,0x000ACEE8,0x000ACC78,0x000ACA00,0x000AC790,0x000AC518,0x000AC2A8,0x000AC040,0x000ABDD0,0x000ABB68,0x000AB900,0x000AB698,0x000AB430,0x000AB1C8,0x000AAF68,0x000AAD08,
+0x000AAAA8,0x000AA848,0x000AA5F0,0x000AA390,0x000AA138,0x000A9EE0,0x000A9C88,0x000A9A38,0x000A97E0,0x000A9590,0x000A9340,0x000A90F0,0x000A8EA8,0x000A8C58,0x000A8A10,0x000A87C8,0x000A8580,0x000A8338,0x000A80F8,0x000A7EB0,0x000A7C70,0x000A7A30,0x000A77F0,0x000A75B8,
+0x000A7378,0x000A7140,0x000A6F08,0x000A6CD0,0x000A6A98,0x000A6868,0x000A6630,0x000A6400,0x000A61D0,0x000A5FA0,0x000A5D78,0x000A5B48,0x000A5920,0x000A56F8,0x000A54D0,0x000A52A8,0x000A5080,0x000A4E60,0x000A4C38,0x000A4A18,0x000A47F8,0x000A45D8,0x000A43C0,0x000A41A0,
+0x000A3F88,0x000A3D70,0x000A3B58,0x000A3940,0x000A3728,0x000A3510,0x000A3300,0x000A30F0,0x000A2EE0,0x000A2CD0,0x000A2AC0,0x000A28B0,0x000A26A8,0x000A24A0,0x000A2298,0x000A2090,0x000A1E88,0x000A1C80,0x000A1A78,0x000A1878,0x000A1678,0x000A1478,0x000A1278,0x000A1078,
+0x000A0E78,0x000A0C80,0x000A0A88,0x000A0888,0x000A0690,0x000A0498,0x000A02A8,0x000A00B0,0x0009FEC0,0x0009FCC8,0x0009FAD8,0x0009F8E8,0x0009F6F8,0x0009F508,0x0009F320,0x0009F130,0x0009EF48,0x0009ED60,0x0009EB70,0x0009E990,0x0009E7A8,0x0009E5C0,0x0009E3E0,0x0009E1F8,
+0x0009E018,0x0009DE38,0x0009DC58,0x0009DA78,0x0009D898,0x0009D6C0,0x0009D4E0,0x0009D308,0x0009D130,0x0009CF58,0x0009CD80,0x0009CBA8,0x0009C9D0,0x0009C800,0x0009C628,0x0009C458,0x0009C288,0x0009C0B8,0x0009BEE8,0x0009BD18,0x0009BB48,0x0009B980,0x0009B7B0,0x0009B5E8,
+0x0009B420,0x0009B258,0x0009B090,0x0009AEC8,0x0009AD00,0x0009AB40,0x0009A978,0x0009A7B8,0x0009A5F8,0x0009A438,0x0009A278,0x0009A0B8,0x00099EF8,0x00099D40,0x00099B80,0x000999C8,0x00099810,0x00099650,0x00099498,0x000992E8,0x00099130,0x00098F78,0x00098DC8,0x00098C10,
+0x00098A60,0x000988B0,0x000986F8,0x00098548,0x000983A0,0x000981F0,0x00098040,0x00097E98,0x00097CE8,0x00097B40,0x00097998,0x000977E8,0x00097640,0x000974A0,0x000972F8,0x00097150,0x00096FB0,0x00096E08,0x00096C68,0x00096AC0,0x00096920,0x00096780,0x000965E0,0x00096448,
+0x000962A8,0x00096108,0x00095F70,0x00095DD0,0x00095C38,0x00095AA0,0x00095908,0x00095770,0x000955D8,0x00095440,0x000952A8,0x00095118,0x00094F80,0x00094DF0,0x00094C58,0x00094AC8,0x00094938,0x000947A8,0x00094618,0x00094488,0x00094300,0x00094170,0x00093FE8,0x00093E58,
+0x00093CD0,0x00093B48,0x000939C0,0x00093838,0x000936B0,0x00093528,0x000933A0,0x00093218,0x00093098,0x00092F10,0x00092D90,0x00092C10,0x00092A90,0x00092908,0x00092790,0x00092610,0x00092490,0x00092310,0x00092190,0x00092018,0x00091E98,0x00091D20,0x00091BA8,0x00091A30,
+0x000918B8,0x00091740,0x000915C8,0x00091450,0x000912D8,0x00091160,0x00090FF0,0x00090E78,0x00090D08,0x00090B98,0x00090A28,0x000908B0,0x00090740,0x000905D0,0x00090468,0x000902F8,0x00090188,0x00090018,0x0008FEB0,0x0008FD40,0x0008FBD8,0x0008FA70,0x0008F908,0x0008F7A0,
+0x0008F638,0x0008F4D0,0x0008F368,0x0008F200,0x0008F098,0x0008EF38,0x0008EDD0,0x0008EC70,0x0008EB08,0x0008E9A8,0x0008E848,0x0008E6E8,0x0008E588,0x0008E428,0x0008E2C8,0x0008E168,0x0008E008,0x0008DEB0,0x0008DD50,0x0008DBF0,0x0008DA98,0x0008D940,0x0008D7E0,0x0008D688,
+0x0008D530,0x0008D3D8,0x0008D280,0x0008D128,0x0008CFD0,0x0008CE80,0x0008CD28,0x0008CBD0,0x0008CA80,0x0008C930,0x0008C7D8,0x0008C688,0x0008C538,0x0008C3E8,0x0008C298,0x0008C148,0x0008BFF8,0x0008BEA8,0x0008BD58,0x0008BC08,0x0008BAC0,0x0008B970,0x0008B828,0x0008B6D8,
+0x0008B590,0x0008B448,0x0008B300,0x0008B1B8,0x0008B068,0x0008AF28,0x0008ADE0,0x0008AC98,0x0008AB50,0x0008AA08,0x0008A8C8,0x0008A780,0x0008A640,0x0008A4F8,0x0008A3B8,0x0008A278,0x0008A130,0x00089FF0,0x00089EB0,0x00089D70,0x00089C30,0x00089AF0,0x000899B8,0x00089878,
+0x00089738,0x00089600,0x000894C0,0x00089388,0x00089248,0x00089110,0x00088FD8,0x00088EA0,0x00088D60,0x00088C28,0x00088AF0,0x000889B8,0x00088888,0x00088750,0x00088618,0x000884E0,0x000883B0,0x00088278,0x00088148,0x00088010,0x00087EE0,0x00087DB0,0x00087C78,0x00087B48,
+0x00087A18,0x000878E8,0x000877B8,0x00087688,0x00087558,0x00087430,0x00087300,0x000871D0,0x000870A8,0x00086F78,0x00086E50,0x00086D20,0x00086BF8,0x00086AC8,0x000869A0,0x00086878,0x00086750,0x00086628,0x00086500,0x000863D8,0x000862B0,0x00086188,0x00086060,0x00085F40,
+0x00085E18,0x00085CF0,0x00085BD0,0x00085AA8,0x00085988,0x00085868,0x00085740,0x00085620,0x00085500,0x000853E0,0x000852C0,0x000851A0,0x00085080,0x00084F60,0x00084E40,0x00084D20,0x00084C08,0x00084AE8,0x000849C8,0x000848B0,0x00084790,0x00084678,0x00084558,0x00084440,
+0x00084328,0x00084210,0x000840F0,0x00083FD8,0x00083EC0,0x00083DA8,0x00083C90,0x00083B78,0x00083A68,0x00083950,0x00083838,0x00083720,0x00083610,0x000834F8,0x000833E8,0x000832D0,0x000831C0,0x000830A8,0x00082F98,0x00082E88,0x00082D78,0x00082C60,0x00082B50,0x00082A40,
+0x00082930,0x00082820,0x00082710,0x00082608,0x000824F8,0x000823E8,0x000822D8,0x000821D0,0x000820C0,0x00081FB8,0x00081EA8,0x00081DA0,0x00081C90,0x00081B88,0x00081A80,0x00081970,0x00081868,0x00081760,0x00081658,0x00081550,0x00081448,0x00081340,0x00081238,0x00081130,
+0x00081030,0x00080F28,0x00080E20,0x00080D20,0x00080C18,0x00080B10,0x00080A10,0x00080908,0x00080808,0x00080708,0x00080600,0x00080500,0x00080400,0x00080300,0x00080200,0x00080100,0x00080000
+} ;
+
+fixed32 fx32_sqrt_inv( fixed32 fa )
+{
+    int s=0; 
+	int fr, ans;
+	if (fa < 1024 )
+	{
+	if (fa <= 0 )
+			return(0);					// Error it must Return NaN
+		return ((inverse_sqrt_lut[fa]));
+	}
+	do {
+        fa>>=2;
+        s++; 
+    } while(fa >= 1024*64);				// 6 bit of fractional Data
+	fr = fa & 0x3F;
+	fa >>= 6;
+	s +=3;
+	ans = inverse_sqrt_lut[fa];
+	ans += ((inverse_sqrt_lut[fa+1] - ans)*fr)>>6;
+    return (ans>>s);
+}
+
+fixed32 fx32_sqrt (fixed32 fa)
+{
+    int s=16; 
+	int fr, ans;
+	if (fa < 1024 )
+	{
+		if (fa <= 0 )
+			return(0);					// Error it must Return NaN
+		return ((sqrt_lut[fa])>>16);
+	}
+	do {
+        fa>>=2;
+        --s; 
+    } while(fa >= 1024*64);				// 6 bit of fractional Data
+	fr = fa & 0x3F;
+	fa >>= 6;
+	s -=3;
+	ans = sqrt_lut[fa];
+	ans += ((sqrt_lut[fa+1] - ans)*fr)>>6;
+    return (ans>>s);
+}
+
+// V4 HYL : NEED ��ġ ������ ���� ���� �ʿ�
+fixed32 fx32_norm2(fixed32 fa, fixed32 fb)
+{
+    fixed32 ans; 
+    fixed64 Lans; 
+    ufixed32 ua, ub; 
+    ua = abs(fa); ub = abs(fb);
+    if ( ua < 32768  && ub < 32768) 
+    {
+        ua = (ua*ua);
+        ub = (ub*ub);
+        ans = fx32_sqrt(ua+ub); 
+        ans >>= 8; 
+		if ( ans == 0 ) // v4 HYL Not to make divide by 0
+			ans++;
+		return(ans);
+    }
+    else
+    {
+        fixed64 la, lb;
+        la = ua; lb = ub;
+        Lans = la*la + lb*lb;
+        ans = (fixed32) (Lans >> 16);
+        return (fx32_sqrt(ans)); 
+    }
+}
+
+
+// V4 HYL : NEED ��ġ ������ ���� ���� �ʿ�
+fixed32 fx32_normalize(fixed32 fa, fixed32 fb, fixed32q14 *nx, fixed32q14 *ny)
+{
+    fixed32 ans;
+    fixed64 Lans; 
+    fixed64 la, lb;
+    fixed32 ua, ub; 
+    ua = ABS(fa); ub = ABS(fb);
+
+    if ( ua < 32768  && ub < 32768) 
+    {
+        ua = (ua*ua);
+        ub = (ub*ub);
+        ans = fx32_sqrt_inv(ua+ub);
+        *nx = (fa*ans)>>8;
+        *ny = (fb*ans)>>8;
+        return (ans);
+    }
+    else
+    {
+        la = fa; lb = fb;
+        Lans = la*la + lb*lb;
+        ans = (fixed32) (Lans >> 16);
+        ans = fx32_sqrt_inv(ans);
+        *nx = ((fa>>8) * ans)>>8;
+        *ny = ((fb>>8) * ans)>>8;
+        return(ans);
+    }
+}
+
+fixed32 fx32_sind(fixed32 fa)
+{
+    int sign = 1;   
+    fixed32 ret0, diff;
+    int idx; 
+    if ( fa < 0 ) 
+    {
+        sign = -1;
+        fa *= -1; 
+    }
+    fa = fa % FX32_360; 
+    if ( fa >= FX32_180 ) 
+    {
+        sign *= -1;
+        fa -= FX32_180;
+    }
+    if ( fa > FX32_90 ) 
+        fa = FX32_180 - fa;
+    idx = fa>>16; 
+    ret0 = fx32_SinTable[idx]; 
+    diff = fx32_SinTable[idx+1]-ret0;
+    return ( sign *( ret0 + ((diff*(fa&0xFFFF))>>16) )); 
+}
+
+void fx32_sincosd(fixed32 fa, fixed32 *fb, fixed32 *fc)
+{
+    *fb = fx32_sind( fa );
+    *fc = fx32_cosd( fa );  // cosd is MACRO in vgeMath.h
+}
+
+// V4 HYL New Atan Function : Table Search is not used anymore
+#define __SQ2P1		0x00026A09
+#define __SQ2M1		0x00006A09
+#define __P4		0x00102755
+#define __P3		0x010C6CEC
+#define __P2		0x04810783
+#define __P1		0x06F46804
+#define __P0		0x0380C935
+#define __Q4		0x003AF4FC
+#define __Q3		0x021843EF
+#define __Q2		0x0682C8A8
+#define __Q1		0x081F55C0
+#define __Q0		0x0380C935
+#define __PIO2		0x0001921F
+
+fixed32 _fx32_msatand(fixed32 fx)
+{
+    fixed64 arg, argsq, value;
+
+	if(fx < __SQ2M1)
+	{
+		arg = fx;
+		argsq = (arg* arg)>>16;
+		value = ((((((((((((argsq*__P4)>>16) + __P3)*argsq)>>16) + __P2)*argsq)>>16) + __P1)*argsq)>>16) + __P0);
+		value *= arg*FX32_180_PI; 
+    	value /= ((((((((((((argsq + __Q4)*argsq)>>16) + __Q3)*argsq)>>16) + __Q2)*argsq)>>16) + __Q1)*argsq)>>16) + __Q0;
+    	return ((fixed32) (value>>16));
+	}
+    if(fx > __SQ2P1)
+	{
+		arg = FX64_1 / fx;
+		argsq = (arg* arg)>>16;
+		value = ((((((((((((argsq*__P4)>>16) + __P3)*argsq)>>16) + __P2)*argsq)>>16) + __P1)*argsq)>>16) + __P0);
+		value *= arg*FX32_180_PI; 
+    	value /= ((((((((((((argsq + __Q4)*argsq)>>16) + __Q3)*argsq)>>16) + __Q2)*argsq)>>16) + __Q1)*argsq)>>16) + __Q0;
+    	return ((fixed32) ((90<<16)-(value>>16)));
+	}
+
+	arg = fx-(1<<16); 
+	arg = (arg<<16)/(arg+(2<<16));
+	argsq = (arg* arg)>>16;
+    value = ((((((((((((argsq*__P4)>>16) + __P3)*argsq)>>16) + __P2)*argsq)>>16) + __P1)*argsq)>>16) + __P0);
+	value *= arg*FX32_180_PI; 
+    value /= ((((((((((((argsq + __Q4)*argsq)>>16) + __Q3)*argsq)>>16) + __Q2)*argsq)>>16) + __Q1)*argsq)>>16) + __Q0;
+    return ((fixed32) ((45<<16)+(value>>16)));
+}
+
+fixed32 fx32_atand(fixed32 arg)
+{
+    if(arg > 0)
+            return _fx32_msatand(arg);
+    return -_fx32_msatand(-arg);
+}
+
+fixed32 fx32_atan2d(fixed32 arg1, fixed32 arg2) // Y, X
+{
+	fixed32 ret;
+    if(arg1+arg2 == arg1)
+    {
+         if(arg1 >= 0)
+            return FX32_90;
+         return -FX32_90;
+    }
+    ret = fx32_atand(fx32_div(arg1,arg2));
+    if(arg2 < 0)
+    {
+         if(arg1 <= 0)
+             return ret + FX32_180;
+         return ret - FX32_180;
+    }
+    return ret;
+}
+
+fixed32 fx32_asind(fixed32 arg)
+{
+     fixed32 temp;
+     int sign;
+
+     sign = 1;
+     if(arg < 0)
+     {
+        arg = -arg;
+        sign= -1;
+     }
+     if(arg > FX32_1)
+        return 0;  // Nan
+     temp = fx32_sqrt(FX32_1 - ((arg*arg)>>16));
+     if(arg > 0.7)
+        temp = FX32_90 - fx32_atand(fx32_div(temp,arg));
+     else
+        temp = fx32_atand(fx32_div(temp,arg));
+     temp *= sign;
+     return temp;
+}
+
+#endif // __FX32__
diff --git a/fx_project/vgeMath.h b/fx_project/vgeMath.h
new file mode 100644
index 0000000000000000000000000000000000000000..898e9f01b965e15f24d8d268364611b91e5d0767
--- /dev/null
+++ b/fx_project/vgeMath.h
@@ -0,0 +1,189 @@
+#ifndef __VGE_MATH_H__
+#define __VGE_MATH_H__
+
+#include <math.h>
+
+#ifndef VGE_API_CALL
+#define VGE_API_CALL extern
+#endif
+
+#ifndef VGE_EXT_CALL
+#define VGE_EXT_CALL extern
+#endif
+
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+typedef long				fixed32;
+typedef long				fixed32q14;
+typedef unsigned long       ufixed32;
+#if defined(WIN32)
+typedef __int64				fixed64;
+#else
+typedef long long  fixed64;
+#endif
+
+#define __FX32__
+#define FX32_QNUM                          16
+#define FX32_QMULT                         65536
+#define FLOAT_QMULT                        65536.0F
+#define FX32_QMASK                         0x0000FFFF
+#define FX32_IMASK                         0xFFFF0000
+#define FX32_MAX_VALUE                     0x7FFFFF7C
+#define FX32_1_1000                        0x00000041
+#define FX32_25_100                        0x00004000
+#define FX32_99_100                        0x0000FD70
+#define FX32_0                             0x00000000
+#define FX32_1_2                           0x00008000
+#define FX32_1_3                           0x00005555
+#define FX32_1                             0x00010000
+#define FX64_1                             ((fixed64)(0x0000000100000000))
+#define FX32_2                             0x00020000
+#define FX32_3                             0x00030000
+#define FX32_4                             0x00040000
+#define FX32_5                             0x00050000
+#define FX32_6                             0x00060000
+#define FX32_8                             0x00080000
+#define FX32_10                            0x000A0000
+#define FX32_15                            0x000F0000
+#define FX32_30                            0x001E0000
+#define FX32_45                            0x002D0000
+#define FX32_90                            0x005A0000
+#define FX32_128                           0x00800000
+#define FX32_180                           0x00B40000
+#define FX32_255                           0x00FF0000
+#define FX32_360                           0x01680000
+#define FX32_100                           0x00640000
+#define FX32_1000                          0x03E80000
+#define FX32_10000                         0x27100000
+#define FX32_GAUSSIANBLUR                  0x00006620
+#define FX32_GAUSSIAN_TOLERANCE            0x00027B47
+#define FX32_SIN45                         0x0000B504
+#define FX32_SIN30                         0x00008000
+#define FX32_SIN15                         0x00004241
+#define FX32_SIN10                         0x00002C74
+#define FX32_SIN5                          0x00001653
+#define FX32_COS45                         0x0000B504
+#define FX32_COS30                         0x0000DDB3
+#define FX32_COS15                         0x0000F746
+#define FX32_COS10                         0x0000FC1C
+#define FX32_COS5                          0x0000FF07
+#define FX32_PI                            0x0003243F
+#define FX32_180_PI                        0x00394BB8
+#define FX32_PI_180                        0x00000477
+#define FX32_RT2                           0x00016A09
+#define FX32_1_RT2                         0x0000B504
+
+#define int_fx32(__a)					(fixed32) ((__a) << (FX32_QNUM))
+#define fx32_int(__a)					((__a) >> FX32_QNUM)
+#define float_fx32(__a)					((fixed32)((__a) * FLOAT_QMULT))
+#define fx32_float(__a)					((float)(__a) / (FLOAT_QMULT)) 
+
+#define fx32_abs(__a)					((__a) >= 0 ? (__a) : (-(__a)))
+#define fx32_round_to_int(__x)			((__x + 0x8000) >> FX32_QNUM)
+#define fx32_degree(__r)				(fx32_mul((__r),FX32_180_PI))
+#define fx32_radian(__d)				(fx32_mul((__d),FX32_PI_180))
+#define fx32_floor(x)					((fixed32)((x)&0xFFFF0000))
+#define fx32_round(x)					((fixed32)(((x)+0x00008000)&0xFFFF0000))					// V4 HYL Moved from vgeMath.c
+#define fx32_ceil(x)					((fixed32)(((x)+0x0000FFFF)&0xFFFF0000))					// V4 HYL Moved from vgeMath.c
+#define fx32_round_at(x,n)				((fixed32)(((x)&(0xFFFFFFFF<<(n+1)))+(((x)&(1<<(n))<<1))))	// V4 HYL Moved from vgeMath.c
+
+#define fx32_lmul(fa, fb)				(fixed32)(((fixed64)(fa) * (fb)) >> FX32_QNUM )				// be careful : Overflow
+#define fx32_mul(fa, fb)				(fixed32)(((fixed64)(fa) * (fb)) >> FX32_QNUM )				// be careful : Overflow
+#define fx32_qmul_dcs(fa, fb)           ((fixed32)(((fa>>11) * fb)>>5))								// only use dynamic curve slice
+#define fx32_imul(fa, k)				((fa) * (k))							                    // be careful : Overflow
+#define fx32_muli(fa, k)				((fa) * (k))							                    // be careful : Overflow
+#define fx32q14_mul(a,b)				(((a) * (b)) >> 14)                                         // it is used for 0.xxxx x 0.yyyyyy 
+#define fx32_mul_q16q14(fa, fb)			(((fa)>>8) * ((fb)>>6))			                        	// Return Value is fx32q16
+#define fx32_mul_q14q16(fa, fb)			(((fa)>>6) * ((fb)>>8))				                        // Return Value is fx32q16
+
+#if defined(__ALEXVG_CTS_PASS__)
+#define fx32_qmul(fa, fb)               fx32_mul(fa, fb)
+#define fx32_qmul106(fa, fb)            fx32_mul(fa, fb)
+#define fx32_qmul97(fa, fb)             fx32_mul(fa, fb)
+#define fx32_Nmul(fa, fb)               fx32_mul(fa, fb)
+#define fx32_tmul(__a,__b)              fx32_mul(fa,fb)
+
+#define fx32_qdiv(fa, fb)               fx32_div(fa,fb)
+#define fx32_qdiv2(fa, fb)              fx32_div(fa,fb)
+#define fx32_qdiv3(fa, fb)              fx32_div(fa,fb)
+#else
+#define fx32_qmul(fa, fb)				(((fa)>>10) * ((fb)>>6))
+//#define fx32_qmul(fa, fb) fx32_mul(fa, fb)
+#define fx32_qmul106(fa, fb)			(((fa)>>10) * ((fb)>>6))
+#define fx32_qmul97(fa, fb)				(((fa)>>9) * ((fb)>>7))
+#define fx32_Nmul(fa, fb)				((((fa)>>2) * ((fb)>>2))>>12)								// For Normalize Multiply
+#define fx32_tmul(__a,__b)				(((__a) * (__b)) >> FX32_QNUM                               // it is used for 0.xxxx x 0.yyyyyy
+
+#define fx32_qdiv(fa, fb)				((((0x7FFFFFFF/fb))*(fa>>5))>>10)	                    	// HYL It is used only for Rasterization
+#define fx32_qdiv2(fa, fb)				((((fa)<<8)/(fb))<<8)								        // It Cannot be used for Big Number 
+#define fx32_qdiv3(fa, fb)				((fa)/((fb)>>16))								            // It Cannot be used for Big Number 
+#endif
+
+#define fx32_div(fa, fb)				(fixed32)( (((fixed64)(fa) << FX32_QNUM) /(fb)))            // be careful : Overflow & divide by 0
+#define fx32_div_q16q14(fa, fb)			(fixed32)( (((fixed64)(fa) << 14) /(fb)))                   // be careful : Overflow & divide by 0
+#define fx32_divi(fa, ia)				((fa)/(ia))											        // be careful : Overflow & divide by 0
+#define fx32_idiv(ia, fb)				(fixed32)( (((ia)<<FX32_QNUM)/((fb)>>8)) >>8)
+#define fx32_mod(__a, __b)				(((__b) == 0) ? 0 : ((__a) % (__b)))
+#define fx32_exp( __a)					float_fx32((float)(exp ( fx32_float((__a)) )))              //window �Լ� ����ص� ���ɿ� ���� ����.
+
+#define fx32_cosd(fa)					fx32_sind(FX32_90 - (fixed32)fa)   
+#define fx32_tand(fa)					fx32_mul ( fx32_sind((fixed32)fa) , fx32_secd((fixed32)fa) )//fixed32 fx32_tand(fixed32 fa);   
+#define fx32_cosecd(fa)					fx32_secd( (fixed32)fa - FX32_90);                          //fixed32 fx32_cosecd(fixed32 fa);             // 1/sind(__a)              
+#define fx32_acosd(fa)					(FX32_90-fx32_asind((fixed32)fa))                           //fixed32 fx32_acosd (fixed32 fa);
+
+#define fx32_cosec(__a)					fx32_cosecd(fx32_degree(__a))                               // 1/sin(__a)
+#define fx32_sec(__a)					fx32_secd(fx32_degree(__a))                                 // 1/cos(__a) 
+#define fx32_cotan(__a)					fx32_cotand(fx32_degree(__a))                               // 1/tan(__a)
+
+#define fx32_asin(__a)					fx32_asind(fx32_degree(__a))
+#define fx32_acos(__a)					fx32_acosd(fx32_degree(__a))
+#define fx32_atan(__a)					fx32_atand(fx32_degree(__a))
+#define fx32_atan2(_y, _x )				fx32_radian(fx32_atan2d(fx32_degree(_y), fx32_degree(_x)))
+#define fx32_PbyMA(R,P,M)				{(R)[0]=(fixed32)(((fixed64)((M)[0])*(fixed64)((P)[0])+(fixed64)((M)[3])*(fixed64)((P)[1]))>>16)+((M)[6]);\
+                                         (R)[1]=(fixed32)(((fixed64)((M)[1])*(fixed64)((P)[0])+(fixed64)((M)[4])*(fixed64)((P)[1]))>>16)+((M)[7]);}
+										//{(R)[0]=(fixed32)(((fixed64)((M)[0])*(P)[0]+(M)[3]*(P)[1])>>16)+(M)[6];\ (R)[1]=(fixed32)(((fixed64)((M)[1])*(P)[0]+(M)[4]*(P)[1])>>16)+(M)[7];}
+
+fixed32 fx32_sqrt   (fixed32 fa);
+fixed32 fx32_sqrt_inv   (fixed32 fa);
+fixed32 fx32_norm2  (fixed32 fa, fixed32 fb);
+fixed32 fx32_normalize (fixed32 fa, fixed32 fb, fixed32q14 *na, fixed32q14 *nb);
+
+fixed32 fx32_sind   (fixed32 fa);
+fixed32 fx32_secd   (fixed32 fa);       // 1/cosd(__a)
+fixed32 fx32_cotand (fixed32 fa);       // 1/tand(__a)
+
+fixed32 fx32_asind  (fixed32 fa);
+fixed32 fx32_atand  (fixed32 fa);
+fixed32 fx32_atan2d (fixed32 fy, fixed32 fx);
+
+void fx32_sincosd(fixed32 fa, fixed32 *fb, fixed32 *fc);
+
+/* �������� ����ϴ� Common Function. */
+#define   EPSILON_ZERO                          FX32_1_1000
+#define   EPSILON_ONE                           0xFFFF
+#define   PI                                    FX32_PI
+
+#define   MINMAX( X, L, H )                     ( (((X) > (H)) ? (H) : ((X) < (L)) ? (L) : (X)) )
+#define   MAX( X, Y )                           ( ( (X) > (Y) ) ?  (X) : (Y) )
+#define   MIN( X, Y )                           ( ( (X) < (Y) ) ?  (X) : (Y) )
+#define   ABS( X )                              ( ( (X) <  0  ) ? -(X) : (X) )
+#define   CROSSPRODUCT( a0, a1, b0, b1 )        ( fx32_mul(a0,b1) - fx32_mul(a1,b0) )
+
+/* Platform dependent Stdlib Function */
+#define   MOD                                   fx32_mod
+#define   FLOOR                                 fx32_floor  
+#define   CEIL	                                fx32_ceil  
+#define   SQRT                                  fx32_sqrt
+#define   SINCOS                                fx32_sincosd
+#define   ATAN                                  fx32_atand
+#define   ATAN2                                 fx32_atan2d
+#define   NORM2									fx32_norm2
+
+#if defined(__cplusplus) 
+} /* extern "C" */
+#endif
+
+#endif