diff --git a/README.md b/README.md index 41bb846e2b942282be822fff867e024587919320..e060f2da5218764e9a4c69c3431d9882f79ee486 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,38 @@ Sign bit를 포함한 fixed point number의 arithmetic 구현 | 최형택 | 201620989 | <br> +## Table of Contents +- [What is Fixed Point sXXYY?](#what-is-fixed-point-sxxyy-) + * [Example](#example) +- [Fixed Point vs Floating Point](#fixed-point-vs-floating-point) +- [How to Convert Fixed Point Binary to Decimal](#how-to-convert-fixed-point-binary-to-decimal) +- [Fixed Point Arithmetic Library](#fixed-point-arithmetic-library) + * [Project1](#project1) + + [Macros](#macros) + + [Functions](#functions) + * [Makefile](#makefile) + * [gcc -O flag](#gcc--o-flag) + + [-O 옵션별 세부 사항](#-o----------) + + [최적화 성능 비교](#---------) + - [결과](#--) + - [원인 분석](#-----) + - [gprof 사용법](#gprof----) + * [Project2](#project2) + + [Macros](#macros-1) + + [Functions](#functions-1) + * [정확도 테스트](#-------) + * [속도 테스트](#------) + * [Sine](#sine) + + [sine table](#sine-table) + + [fx_s1615 sine_fx_s1615_longlong(fx_s1615 angle) function에 대하여...](#fx-s1615-sine-fx-s1615-longlong-fx-s1615-angle--function-----) + * [double vs long long](#double-vs-long-long) +- [0819 과제](#0819---) + * [요구사항 명세](#-------) + * [코딩 규칙 검사(MISRA-C 2012)](#---------misra-2012-) + * [검사 결과 리포트](#---------) +- [0820 과제](#0820---) + + ## What is Fixed Point sXXYY? sXXYY는 2진수로 실수를 표현하는 방법 중 하나다. (1 + XX + YY)개의 비트로 실수를 표현하며 1개 비트는 부호, XX개 비트는 정수부, YY개 비트는 소수부를 표현한다. @@ -105,7 +137,7 @@ s1615를 10진수로 표현하는 방법은 간단하다. #### Functions * `fx_s1615 sine_fx_s1615_int(fx_s1615 a)` - fx_s1615로 표현된 값의 sin 을 구해주는 함수 + fx_s1615로 표현된 값의 sine 을 구해주는 함수 * `fx_s1615 sqrt_fx_s1615_int(fx_s1615 a)` @@ -263,7 +295,7 @@ gprof #### Functions * `fx_s1615 sine_fx_s1615_longlong(fx_s1615 angle)` - fx_s1615로 표현된 각의 sin 을 구해주는 함수 + fx_s1615로 표현된 각의 sine 을 구해주는 함수 @@ -341,14 +373,14 @@ DIV_03의 경우 오차율이 조금 증가하지만 범용적으로 사용할 <br> <br> -### Sin +### Sine -#### sin table -angle 이 0도부터 90도까지인 경우, sin 값을 fx_s1516으로 표현한 SinTable이다. -불필요한 연산을 줄이고자 아래와 같은 SinTable을 사용하게 되었다. +#### Sine Table +angle 이 0도부터 90도까지인 경우, sine 값을 fx_s1516으로 표현한 SineTable이다. +불필요한 연산을 줄이고자 아래와 같은 SineTable을 사용하게 되었다. ``` -const static fx_s1615 fx_1615_SinTable[91] = { +const static fx_s1615 fx_1615_SineTable[91] = { 0, 571, 1143, 1714, 2285, 2855, 3425, 3993, 4560, 5126, 5690, 6252, 6812, 7371, 7927, 8480, 9032, 9580, 10125, 10668, 11207, 11743, 12275, 12803, 13327, 13848, 14364, 14876, 15383, 15886, @@ -367,7 +399,7 @@ const static fx_s1615 fx_1615_SinTable[91] = { #### fx_s1615 sine_fx_s1615_longlong(fx_s1615 angle) function에 대하여... 이 함수는 파라미터를 각도로 받아오는 경우, 해당하는 sin값을 찾아서 반환해주는 함수이다. -sin은 360도를 주기로 하는 함수이기 때문에, angle이 360도로 나누었을때의 나머지에 대한 값의 sin 값을 찾아주고자 하였다. +sin은 360도를 주기로 하는 함수이기 때문에, angle이 360도로 나누었을때의 나머지에 대한 값의 sine 값을 찾아주고자 하였다. ``` idx = angle >> 15; @@ -464,7 +496,7 @@ double로 input을 받아서 fx_s1615로 변환하여 사칙연산을 수행한 | FX_S1615_MUL(a,b) | fx_s1615로 표현된 두 값을 곱해준다. | | | FX_S1615_DIV(a,b) | fx_s1615로 표현된 두 값을 나눠준다. | | | ---- | ---- | ---- | -| fx_s1615 sine_fx_s1615_int(fx_s1615 a) | fx_s1615로 표현된 값의 sin 을 구해준다. | | +| fx_s1615 sine_fx_s1615_int(fx_s1615 a) | fx_s1615로 표현된 값의 sine 을 구해준다. | | | fx_s1615 sqrt_fx_s1615_int(fx_s1615 a) | fx_s1615로 표현된 값의 제곱근을 구해준다. | | | fx_s1615 power_fx_s1615_int(fx_s1615 a, double n) | fx_s1615로 표현된 값의 n승을 구해준다. | | | ---- | ---- | ---- | @@ -507,7 +539,7 @@ double로 input을 받아서 fx_s1615로 변환하여 사칙연산을 수행한 <br> -### 코딩 규칙 검사(MISRA 2012) +### 코딩 규칙 검사(MISRA-C 2012) 총 39였던 오류를 아래의 20개의 오류로 수정하였다. ```