KR20230015758A - 선형 보간법을 이용한 삼각함수 계산 방법 및 장치 - Google Patents

선형 보간법을 이용한 삼각함수 계산 방법 및 장치 Download PDF

Info

Publication number
KR20230015758A
KR20230015758A KR1020210097295A KR20210097295A KR20230015758A KR 20230015758 A KR20230015758 A KR 20230015758A KR 1020210097295 A KR1020210097295 A KR 1020210097295A KR 20210097295 A KR20210097295 A KR 20210097295A KR 20230015758 A KR20230015758 A KR 20230015758A
Authority
KR
South Korea
Prior art keywords
trigonometric function
input data
module
value
function calculation
Prior art date
Application number
KR1020210097295A
Other languages
English (en)
Other versions
KR102567603B1 (ko
Inventor
박우찬
이진영
Original Assignee
세종대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 세종대학교산학협력단 filed Critical 세종대학교산학협력단
Priority to KR1020210097295A priority Critical patent/KR102567603B1/ko
Publication of KR20230015758A publication Critical patent/KR20230015758A/ko
Application granted granted Critical
Publication of KR102567603B1 publication Critical patent/KR102567603B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/548Trigonometric functions; Co-ordinate transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/04Trigonometric functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 선형 보간법을 이용한 삼각함수 계산 방법 및 장치에 관한 것으로, 상기 방법은 삼각함수 연산의 입력 도메인을 복수의 구간들로 분할하는 단계; 상기 복수의 구간들 각각에 대응하는 선형 방정식을 정의하는 단계; 입력 데이터를 수신하면 상기 복수의 구간들 중에서 상기 입력 데이터에 대응하는 근사 구간을 결정하는 단계; 상기 근사 구간에 대응되는 선형 방정식을 근사 방정식으로 결정하는 단계; 및 상기 근사 방정식을 기초로 상기 삼각함수 연산을 수행하여 상기 입력 데이터의 삼각함수 값을 산출하는 단계;를 포함한다.

Description

선형 보간법을 이용한 삼각함수 계산 방법 및 장치{METHOD AND APPARATUS FOR CALCULATING TRIGONOMETRIC FUNCTION USING LINEAR INTERPOLATION}
본 발명은 삼각함수 계산기 기술에 관한 것으로, 보다 상세하게는 선형 보간법을 통해 작은 오차 범위를 가지면서 동시에 테이블 방식을 적용하여 합리적인 하드웨어 크기를 가지는 효율적인 삼각함수의 하드웨어 구현 방법에 관한 것이다.
삼각함수는 3D 그래픽 컴퓨팅(3D graphics computing), 디지털 신호 처리(digital signal processing), 그리고 통신 시스템(communication systems) 등의 다양한 적용 분야에서 광범위하게 사용되는 가장 중요한 기본 함수 중 하나이다. 이러한 함수들의 소프트웨어(SW) 구현은 수백 개의 범용 명령어가 요구된다. 따라서, 이의 하드웨어 구현은 전력을 절약할 수 있고 속도 측면에서 큰 장점이 있기 때문에 바람직하다.
삼각함수는 기본적으로 알고리즘이 매우 복잡하기 때문에, 이를 하드웨어로 정확하게 구현하기가 매우 어렵다. 또한, 하드웨어 사이즈가 커지고 구현이 어렵다는 문제점이 있다. 이를 극복하기 위한 방법으로써 삼각함수를 간단하면서 빠르게 처리할 수 있는 CORDIC algorithm을 기반으로 한 선형 보간법(linear interpolation), 및 다항식 근사법(polynomial approximation)의 방법들이 사용된다. 이러한 방법들은 높은 메모리 효율과 빠른 처리 속도를 달성하기 위해서 미리 계산된 값들을 저장하는 테이블 방식이 전통적으로 적용된다.
한국공개특허 제10-2016-0120249호 (2016.10.17)
본 발명의 일 실시예는 선형 보간법을 통해 작은 오차 범위를 가지면서 동시에 테이블 방식을 적용하여 합리적인 하드웨어 크기를 가지는 선형 보간법을 이용한 삼각함수 계산 방법 및 장치를 제공하고자 한다.
본 발명의 일 실시예는 삼각함수 도메인을 복수의 구간들로 분할하고 각 구간별 근사식 정보를 서로 다른 참조 테이블에 저장하여 삼각함수 연산을 위한 높은 메모리 효율과 빠른 처리 속도를 달성할 수 있는 선형 보간법을 이용한 삼각함수 계산 방법 및 장치를 제공하고자 한다.
실시예들 중에서, 선형 보간법을 이용한 삼각함수 계산 방법은 삼각함수 연산의 입력 도메인을 복수의 구간들로 분할하는 단계; 상기 복수의 구간들 각각에 대응하는 선형 방정식을 정의하는 단계; 입력 데이터를 수신하면 상기 복수의 구간들 중에서 상기 입력 데이터에 대응하는 근사 구간을 결정하는 단계; 상기 근사 구간에 대응되는 선형 방정식을 근사 방정식으로 결정하는 단계; 및 상기 근사 방정식을 기초로 상기 삼각함수 연산을 수행하여 상기 입력 데이터의 삼각함수 값을 산출하는 단계;를 포함한다.
상기 복수의 구간들로 분할하는 단계는 상기 입력 도메인을 n(상기 n은 자연수)개의 제1 구간들로 분할하는 단계; 및 상기 n개의 제1 구간들 중 특정 제1 구간에 대해 m(상기 m은 자연수)개의 제2 구간들로 분할하는 단계를 포함할 수 있다.
상기 복수의 구간들로 분할하는 단계는 상기 삼각함수 연산의 제한 오차율 또는 목표 정확도에 따라 상기 n 및 m을 각각 결정하는 단계를 포함할 수 있다.
상기 선형 방정식을 정의하는 단계는 상기 선형 방정식의 기울기 및 y절편을 서로 다른 참조 테이블에 각각 저장하는 단계를 포함할 수 있다.
상기 근사 구간을 결정하는 단계는 상기 입력 데이터의 분수 부분에 관한 상위 k(상기 k는 자연수)비트의 값을 기준으로 상기 근사 구간을 결정하는 단계를 포함하고, 상기 k값은 상기 n 및 m 각각의 크기에 따라 결정될 수 있다.
상기 근사 구간을 결정하는 단계는 상기 상위 k비트의 제1 비트 구간을 기초로 상기 복수의 제1 구간들 중 어느 하나를 결정하는 단계; 및 상기 복수의 제1 구간들 중 특정 제1 구간에 대해서는 상기 상위 k비트의 제2 비트 구간을 기초로 상기 복수의 제2 구간들 중 어느 하나를 결정하는 단계를 포함할 수 있다.
상기 근사 방정식으로 결정하는 단계는 상기 근사 구간에 대응되는 테이블 인덱스를 참조하여 상기 서로 다른 참조 테이블 각각에서 상기 근사 방정식의 기울기 및 y절편을 추출하는 단계를 포함할 수 있다.
상기 삼각함수 값을 산출하는 단계는 상기 입력 데이터와 상기 근사 방정식의 기울기 간의 곱 연산을 수행하는 단계; 및 상기 곱 연산의 결과와 상기 근사 방정식의 y 절편 간의 합 연산을 수행하는 단계를 포함할 수 있다.
실시예들 중에서, 선형 보간법을 이용한 삼각함수 계산 장치는 입력 데이터의 언더플로우 또는 오버플로우를 체크하는 체크 모듈; 입력 데이터의 포맷이 부동 소수점인 경우 고정 소수점으로 변환하는 포맷 변환 모듈; 입력 데이터의 분수 부분을 이용하여 참조 테이블의 참조 위치를 계산하고 상기 입력 데이터에 대응되는 선형 방정식의 기울기 및 y절편을 결정하는 주소 산출 모듈; 상기 기울기 및 y절편에 따라 정의되는 선형 방정식을 상기 입력 데이터에 적용하여 삼각함수 값을 산출하는 삼각함수 연산 모듈; 및 상기 삼각함수 값을 연산 결과로서 출력하는 결과 출력 모듈;을 포함한다.
상기 체크 모듈은 상기 입력 데이터의 언더플로우가 검출된 경우 기 설정된 제1 출력 신호를 상기 결과 출력 모듈에 전달하고, 상기 입력 데이터의 오버플로우가 검출된 경우 기 설정된 제2 출력 신호를 상기 결과 출력 모듈에 전달할 수 있다.
상기 주소 산출 모듈은 상기 분수 부분의 상위 k(상기 k는 자연수)비트를 제1 비트 구간과 제2 비트 구간으로 구분하고, 상기 제1 비트 구간의 비트값이 기 설정된 기준값 미만인 경우 해당 비트값을 상기 참조 위치로 결정하며 그렇지 않은 경우 상기 제2 비트 구간의 비트값에 상기 기준값을 더하여 상기 참조 위치를 결정할 수 있다.
상기 주소 산출 모듈은 상기 참조 위치에 따라 상기 기울기를 출력하는 제1 참조 테이블; 및 상기 참조 위치에 따라 상기 y절편을 출력하는 제2 참조 테이블을 포함할 수 있다.
상기 삼각함수 연산 모듈은 상기 입력 데이터와 상기 기울기 간의 곱 연산을 수행하는 곱셈기(multiplier); 및 상기 곱셈기와 연결되어 상기 곱셈기의 출력과 상기 y절편 간의 합 연산을 수행하는 합산기(adder)를 포함할 수 있다.
상기 결과 출력 모듈은 상기 연산 결과의 포맷을 부동 소수점으로 변환하여 출력할 수 있다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 선형 보간법을 이용한 삼각함수 계산 방법 및 장치는 선형 보간법을 통해 작은 오차 범위를 가지면서 동시에 테이블 방식을 적용하여 합리적인 하드웨어 크기를 가질 수 있다.
본 발명의 일 실시예에 따른 선형 보간법을 이용한 삼각함수 계산 방법 및 장치는 삼각함수 도메인을 복수의 구간들로 분할하고 각 구간별 근사식 정보를 서로 다른 참조 테이블에 저장하여 삼각함수 연산을 위한 높은 메모리 효율과 빠른 처리 속도를 달성할 수 있다.
도 1은 본 발명에 따른 삼각함수 계산 시스템을 설명하는 도면이다.
도 2는 삼각함수 중 역 코사인 및 역 사인에 관한 그래프를 설명하는 도면이다.
도 3은 선형 보간법의 일 실시예를 설명하는 도면이다.
도 4는 본 발명에 따른 도메인 분할을 설명하는 도면이다.
도 5는 도메인 [0, 1]에 대한 구간 분할의 일 실시예를 설명하는 도면이다.
도 6은 본 발명에 따른 참조 위치 계산 방법을 설명하는 도면이다.
도 7은 본 발명에 따른 삼각함수 계산 장치의 하드웨어 구조를 설명하는 도면이다.
도 8은 본 발명에 따른 삼각함수 계산 방법을 설명하는 도면이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명에 따른 삼각함수 계산 시스템을 설명하는 도면이다.
도 1을 참조하면, 삼각함수 계산 시스템(100)은 사용자 단말(110), 삼각함수 계산 장치(130) 및 데이터베이스(150)를 포함할 수 있다.
사용자 단말(110)은 삼각함수 계산 장치(130)와 연결되어 삼각함수 계산을 위한 데이터를 입력하고 그에 대한 계산 결과를 수신하여 확인할 수 있는 컴퓨팅 장치에 해당할 수 있다. 사용자 단말(110)은 스마트폰, 노트북 또는 컴퓨터로 구현될 수 있으며, 반드시 이에 한정되지 않고, 태블릿 PC 등 다양한 디바이스로도 구현될 수 있다. 사용자 단말(110)은 삼각함수 계산 장치(130)와 네트워크를 통해 연결될 수 있고, 복수의 사용자 단말(110)들이 삼각함수 계산 장치(130)와 동시에 연결될 수도 있다.
삼각함수 계산 장치(130)는 본 발명에 따른 선형 보간법을 이용한 삼각함수 계산 방법을 수행하는 컴퓨터 또는 프로그램에 해당하는 서버로 구현될 수 있다. 또한, 삼각함수 계산 장치(130)는 본 발명에 따른 선형 보간법을 이용한 삼각함수 계산 방법을 물리적으로 구현한 하드웨어 구조를 포함하여 구현될 수 있다. 삼각함수 계산 장치(130)는 사용자 단말(110)과 유선 또는 무선 네트워크를 통해 연결될 수 있고 상호 간에 데이터를 주고받을 수 있다.
일 실시예에서, 삼각함수 계산 장치(130)는 본 발명에 따른 선형 보간법을 이용한 삼각함수 계산 방법을 수행하는 과정에서 다양한 외부 시스템(또는 서버)과 연동하여 동작할 수 있다. 예를 들어, 삼각함수 계산 장치(130)는 3D 그래픽 시스템, 디지털 신호 처리 시스템 및 통신 시스템과 연결되어 필요한 데이터를 주고 받을 수 있다.
데이터베이스(150)는 삼각함수 계산 장치(130)의 동작 과정에서 필요한 다양한 정보들을 저장하는 저장장치에 해당할 수 있다. 예를 들어, 데이터베이스(150)는 삼각함수 계산을 위한 참조 테이블을 저장할 수 있으며, 반드시 이에 한정되지 않고, 삼각함수 계산 장치(130)가 선형 보간법을 이용한 삼각함수 계산 방법을 수행하는 과정에서 다양한 형태로 수집 또는 가공된 정보들을 저장할 수 있다.
도 2는 삼각함수 중 역 코사인 및 역 사인에 관한 그래프를 설명하는 도면이다.
그림 (a)를 참조하면, 역 코사인 그래프의 도메인(domain)은 [-1, 1]에 해당하고, 범위(range)는 [0, π]에 해당한다. 역 코사인 그래프는 점 [0, π/2]에 대하여 대칭이기 때문에 이에 대한 하드웨어의 구현은 도메인 [0, 1]에 대해서만 고려하면 충분하다. 즉, 도메인 [-1, 0]에 대한 역 코사인의 출력은 하드웨어의 출력에 π를 빼줌으로써 획득할 수 있다.
그림 (b)를 참조하면, 역 사인 그래프의 경우, 도메인은 [-1, 1]에 해당하고, 범위는 [-π/2, π/2]에 해당한다. 역 사인 그래프는 점 [0, 0]에 대하여 대칭이기 때문에 이에 대한 하드웨어의 구현은 도메인 [0, 1]에 대해서만 고려하면 충분하다.
한편, 삼각함수 중 역 탄젠트의 경우, 도메인은 [-∞, ∞]에 해당하고, 범위는 [-π/2, π/2]에 해당한다. 역 탄젠트 그래프는 점 [0, 0]에 대하여 대칭이기 때문에 이에 대한 하드웨어의 구현은 도메인 [0, ∞]에 대해서만 고려하면 충분하다. 이 경우, 도메인은 소정의 범위로 제한될 수 있다.
도 3은 선형 보간법의 일 실시예를 설명하는 도면이다.
도 3을 참조하면, 구간 1에 대해 실제 함수인 g(x)의 출력은 y=mx+b의 출력과의 차이가 매우 작을 수 있다. 즉, 주어진 함수에 대해 함수의 영역을 분할하고 선형 방정식을 사용하면 오차율이 매우 작은 근사식을 획득할 수 있음을 보여준다.
보다 구체적으로, 선형 보간을 위해 삼각함수 그래프의 영역을 k개의 구간들로 분할할 수 있고, 각 분할 구간 (n)에 대응되는 직선의 방정식은 다음의 수학식 1과 같이 표현될 수 있다.
[수학식 1]
Figure pat00001
여기에서, mn은 구간 (n)에 대응되는 직선의 기울기, bn은 구간 (n)에 대응되는 직선의 y절편에 해당한다. 임의의 입력이 주어진 경우, 입력을 포함하는 분할 구간의 직선 방정식을 삼각함수의 근사식으로 활용할 수 있다. 이때, 직선의 방정식은 m(기울기)과 b(y절편)을 이용하여 정의될 수 있다.
도 4는 본 발명에 따른 도메인 분할을 설명하는 도면이다.
도 4를 참조하면, 삼각함수의 도메인은 소정의 구간들로 분할될 수 있다. 예를 들어, 역 코사인 함수의 경우, 도메인 [0, 1]은 임의의 k값으로 분할될 수 있다. 이처럼, 도메인을 세밀하게 분할할수록(또는 k값이 클수록) 오차는 작아지는 반면에 참조 테이블에 저장해야 하는 항목이 많아지기 때문에 참조 테이블의 크기는 증가할 수 있다. 결과적으로, 오차와 참조 테이블의 크기는 상호 상충 관계에 있다는 점에서 구현을 위해서는 우선순위에 따라 합리적인 k값을 선택할 필요가 있다.
한편, 본 발명에 따른 삼각함수 계산 방법의 경우 삼각함수의 도메인에 대해 반복적인 분할을 적용할 수 있다. 예를 들어, 삼각함수 중 역 코사인 함수의 도메인 [0, 1]에 대해 k1개의 분할 구간들로 분할하는 1차 분할 과정을 수행하고, k1개의 분할 구간들 중 일부에 대해 k2개로 분할하는 2차 분할 과정을 수행할 수 있다. 이와 같이, 반복적인 분할을 통해 도메인이 보다 세분화됨으로써 역 코사인 계산의 오차를 최소화시킬 수 있다. 특히, 2차 분할의 경우 1차 분할을 통해 분할된 구간들 중 일부에 대해서만 적용하더라도 역 코사인 연산의 특성에 따라 전체 구간에 대해 분할한 것과 동일한 계산 정확도를 달성할 수 있다.
도 5는 도메인 [0, 1]에 대한 구간 분할의 일 실시예를 설명하는 도면이다.
도 5를 참조하면, 본 발명에 따른 삼각함수 계산 방법은 역 코사인에 대한 선형 보간의 일 실시예로서 도메인 [0, 1]에 대하여 일정 간격으로 균등하게 분할을 수행할 수 있다. 예를 들어, 도 5의 경우 도메인 [0, 1]은 128 등분되어 총 128개의 구간들로 분할될 수 있다. 또한, 좌표가 1에 가까울수록 그래프의 기울기가 급변하기 때문에 오차값이 커질 수 있다. 이러한 오차값을 줄이기 위하여, 마지막 128번째 구간의 경우 다시 64 등분되어 더욱 세밀하게 분할될 수 있다.
즉, 본 발명에 따른 삼각함수 계산 방법은 입력 도메인을 n(상기 n은 자연수)개의 제1 구간들로 분할할 수 있고, n개의 제1 구간들 중 특정 제1 구간에 대해 m(상기 m은 자연수)개의 제2 구간들로 분할할 수 있다. 예를 들어, 삼각함수 중 역 코사인의 경우 제1 구간들 중 마지막 제1 구간에 대해 복수의 제2 구간들로의 분할이 수행될 수 있다.
한편, 필요에 따라 제1 구간들 중 마지막 제1 구간을 포함하여 적어도 하나의 연속된 제1 구간들에 대해 각각 복수의 제2 구간들로의 분할이 수행될 수도 있다. 즉, 위에서는 마지막 하나의 제1 구간을 제2 구간들로 분할하는 경우를 예로 들어 설명하였으나, 경우에 따라 마지막 구간들 중에서 연속하는 두개 이상의 제1 구간들 각각을 제2 구간들로 분할할 수도 있다.
또한, 삼각함수 연산의 제한 오차율 또는 목표 정확도에 따라 n 및 m을 각각 결정할 수 있다. 여기에서, 제한 오차율은 본 발명에 따른 선형 보간법을 이용한 삼각함수 연산의 오차율로서 사전에 설정되는 허용 가능한 범위를 결정하는 기준 오차율에 해당하고, 목표 정확도는 본 발명에 따른 선형 보간법을 이용한 삼각함수 연산을 통해 달성하고자 하는 연산의 정확도에 해당할 수 있다.
예를 들어, 입력 데이터에 관한 삼각함수 연산의 제한 오차율을 0.001 이하로 제한하고자 하는 경우, n*m이 최소 8000 이상의 값을 갖도록 하는 n=128 및 m=64의 값이 각각 결정될 수 있다. 이와 반대로, n=64 및 m=128의 값이 각각 결정되는 경우에도 해당 조건을 충족할 수 있다. 한편, 삼각함수의 제한 오차율이 낮을수록 이와 반대로 목표 정확도는 높아질 수 있다. 따라서, 구현된 삼각함수 연산을 통해 달성하고자 하는 제한 오차율이나 목표 정확도에 따라 입력 도메인을 분할하는 구간들의 개수(즉, n 및 m)가 각각 결정될 수 있다. 결과적으로, 입력 도메인은 총 (n+m-1)개의 구간들로 분할되어 삼각함수에 대한 선형 보간을 위해 사용될 수 있다.
일 실시예에서, 본 발명에 따른 삼각함수 계산 방법의 경우 총 191개의 분할된 각 구간에 대한 기울기와 절편은 2개의 독립된 참조 테이블에 각각 저장될 수 있다. 이와 같은 테이블 참조 방식은 적은 메모리와 단순한 로직만을 필요로 하기 때문에 복잡한 연산을 간단한 테이블 참조만으로 빠르게 처리할 수 있으며 결과적으로 삼각함수 연산에 관한 탁월한 속도와 정확성을 제공할 수 있다.
따라서, 본 발명에 따른 삼각함수 계산 방법은 임의의 입력에 대한 선형 근사식을 테이블 참조만으로 빠르게 정의할 수 있다. 예를 들어, 입력값이 분할 구간 중 150번째에 속한 값에 해당하는 경우 삼각함수 중 역 코사인 함수의 근사식은 다음의 수학식 2와 같이 정의될 수 있다.
[수학식 2]
Figure pat00002
여기에서, m150은 기울기 테이블의 150번째 값에 해당하고, b150은 y절편 테이블의 150번째 값에 해당한다.
도 6은 본 발명에 따른 참조 위치 계산 방법을 설명하는 도면이다.
도 6을 참조하면, 본 발명에 따른 삼각함수 계산 방법은 입력에 대한 근사식을 빠르게 정의하기 위하여 참조 테이블을 활용할 수 있다. 즉, 입력값으로부터 참조 테이블의 참조 위치를 직접 계산함으로써 근사식의 기울기와 y절편을 빠르게 획득할 수 있다.
보다 구체적으로, 임의의 입력값이 주어졌을 때, 삼각함수 중 역 코사인 계산을 위한 참조 테이블의 참조 위치는 입력(x)의 분수 부분(fraction part) 상위 13비트를 이용하여 결정될 수 있다. 만약, 13비트 중 상위 7비트(도 6의 빗금 부분)의 값이 127보다 작은 경우 참조 위치의 값은 13비트 중 상위 7비트의 값이 그대로 참조 위치로 결정될 수 있으며, 13비트 중 상위 7비트의 값이 127인 경우 참조 위치의 값은 13비트 중 하위 6비트(도 6의 음영 부분)의 값에 128을 더한 값이 참조 위치로 결정될 수 있다.
한편, 참조 테이블에 대한 참조 위치의 값은 테이블 인덱스(index)에 해당할 수 있다. 또한, 도메인에 대한 분할 개수에 따라 참조 위치를 결정하기 위한 입력의 분수 부분 상위 비트의 크기가 결정될 수 있다. 예를 들어, 분할 개수가 총 191개이고 1차 분할된 마지막 128번째 구간에 대해 64등분의 2차 분할이 이루어진 경우에는 입력의 분수 부분 상위 13개 비트를 기초로 참조 위치가 결정될 수 있다. 만약 분할 개수가 총 95개이고 1차 분할된 마지막 64번째 구간에 대해 32등분의 2차 분할이 이루어진 경우에는 입력의 분수 부분 상위 11개 비트를 기초로 참조 위치가 결정될 수 있다. 한편, 구현하고자 하는 삼각함수에 따라 1차 분할된 구간들 중에서 2차 분할되는 구간의 위치가 결정될 수 있다.
결과적으로, 입력 데이터의 실수 부분(분수 부분)에 관한 상위 k(상기 k는 자연수)비트의 값을 기준으로 입력 데이터에 대응되는 근사 구간이 결정될 수 있다. 이때, k값은 n 및 m 각각의 크기에 따라 결정될 수 있다. 또한, 입력 데이터에 대해 상위 k비트의 제1 비트 구간을 기초로 1차 분할된 제1 구간들 중 어느 하나가 결정될 수 있고, 복수의 제1 구간들 중 특정 제1 구간에 대해서는 상위 k비트의 제2 비트 구간을 기초로 2차 분할된 제2 구간들 중 어느 하나가 결정될 수 있다.
도 7은 본 발명에 따른 삼각함수 계산 장치의 하드웨어 구조를 설명하는 도면이다.
도 7을 참조하면, 본 발명에 따른 삼각함수 계산 장치(130)는 체크 모듈(710), 포맷 변환 모듈(720), 주소 산출 모듈(730), 삼각함수 연산 모듈(740) 및 결과 출력 모듈(750)을 포함할 수 있다.
체크 모듈(710)은 입력 데이터의 언더플로우(underflow) 또는 오버플로우(overflow)를 체크할 수 있다. 체크 모듈(710)은 입력 데이터의 크기를 비교하여 소정의 범위를 벗어나는 입력에 대해서는 별도의 삼각함수 연산 과정을 거치지 않고 삼각함수 계산 장치(130)가 미리 결정된 결과값을 출력으로 제공하도록 할 수 있다. 체크 모듈(710)은 입력 데이터의 범위에 따라 소정의 삼각함수 연산을 생략하여 불필요한 연산 과정을 줄일 수 있다.
일 실시예에서, 체크 모듈(710)은 입력 데이터의 언더플로우가 검출된 경우 기 설정된 제1 출력 신호를 결과 출력 모듈(750)에 전달하고, 입력 데이터의 오버플로우가 검출된 경우 기 설정된 제2 출력 신호를 결과 출력 모듈(750)에 전달할 수 있다. 예를 들어, 삼각함수 중 역 코사인 연산의 경우, 체크 모듈(710)은 입력 데이터가 언더플로우인 경우 제1 출력 신호를 전달하여 결과 출력 모듈(750)이 연산 결과로서 π/2를 출력하도록 하고, 입력 데이터가 오버플로우인 경우 제2 출력 신호를 전달하여 결과 출력 모듈(750)이 연산 결과로서 0을 출력하도록 할 수 있다. 한편, 체크 모듈(710)은 필요에 따라 언더플로우 및 오버플로우에 대한 검출 동작을 순차적으로 수행할 수 있으며, 언더플로우와 오버플로우의 검출 순서를 상호 변경되어 적용될 수 있다.
포맷 변환 모듈(720)은 입력 데이터의 포맷(format)이 부동 소수점인 경우 고정 소수점으로 변환할 수 있다. 즉, 포맷 변환 모듈(720)은 본 발명에 따른 삼각함수 하드웨어 구현에 따라 입력 데이터의 포맷을 고정 소수점으로 변환할 수 있다. 즉, 삼각함수 연산의 하드웨어 구현에 있어 고정 소수점에 대한 연산 구현이 부동 소수점에 대한 연산 구현보다 상대적으로 용이할 수 있다. 포맷 변환 모듈(720)은 입력 데이터를 전달받아 데이터 포맷을 결정하고 부동 소수점에 해당하는 경우에는 고정 소수점으로의 변환 동작을 수행할 수 있다.
주소 산출 모듈(730)은 입력 데이터의 분수 부분(fraction part)을 이용하여 참조 테이블의 참조 위치를 계산하고 입력 데이터에 대응되는 선형 방정식의 기울기 및 y절편을 결정할 수 있다. 여기에서, 참조 테이블의 참조 위치는 테이블 인덱스(index)로 표현될 수 있으며, 삼각함수 도메인의 분할 구간의 위치에 대응될 수 있다. 주소 산출 모듈(730)은 고정 소수점 포맷으로 변환된 입력 데이터를 수신하여 이에 대응되는 테이블 인덱스를 결정하고 각 참조 테이블에 전달하여 기울기 및 y절편 값을 삼각함수 연산 모듈(740)에 전달할 수 있다.
일 실시예에서, 주소 산출 모듈(730)은 분수 부분의 상위 k(상기 k는 자연수)비트를 제1 비트 구간과 제2 비트 구간으로 구분하고, 제1 비트 구간의 비트값이 기 설정된 기준값 미만인 경우 해당 비트값을 참조 위치로 결정하며 그렇지 않은 경우 제2 비트 구간의 비트값에 기준값을 더하여 참조 위치를 결정할 수 있다. 예를 들어, 삼각함수 중 역 코사인의 도메인이 총 191개의 구간들로 분할된 경우, 주소 산출 모듈(730)은 입력 데이터의 분수 부분에서 상위 13비트를 기초로 참조 위치를 결정할 수 있다. 특히, 주소 산출 모듈(730)은 상위 13비트 중 상위 7비트를 제1 비트 구간으로 결정하여 기 설정된 기준값(예를 들어, 127)과 비교하여 참조 위치를 결정할 수 있다. 만약 제1 비트 구간의 비트값이 기준값과 동일한 경우 주소 산출 모듈(730)은 상위 13비트 중 하위 6비트를 제2 비트 구간으로 결정하여 참조 위치를 결정할 수 있다.
일 실시예에서, 주소 산출 모듈(730)은 참조 위치에 따라 기울기를 출력하는 제1 참조 테이블(731) 및 참조 위치에 따라 y절편을 출력하는 제2 참조 테이블(732)을 포함할 수 있다. 도 7에서, 제1 참조 테이블(731)은 gradient LUT에 해당하고, 제2 참조 테이블(732)은 bias LUT에 해당할 수 있다. 즉, 주소 산출 모듈(730)은 참조 테이블을 참조하기 위한 테이블 인덱스를 결정하는 주소 결정 모듈(도 7의 findAddr Module)과 2개의 서로 다른 참조 테이블들로 구성될 수 있다.
삼각함수 연산 모듈(740)은 기울기 및 y절편에 따라 정의되는 선형 방정식을 입력 데이터에 적용하여 삼각함수 값을 산출할 수 있다. 삼각함수 연산 모듈(740)은 참조 테이블들을 통해 획득한 기울기 및 y절편에 따라 선형 방정식을 정의할 수 있고, 선형 방정식에 입력 데이터를 적용하여 삼각함수 값을 산출할 수 있다. 삼각함수 연산 모듈(740)은 삼각함수 연산을 위해 소정의 순서에 따라 정의된 연산 모듈들로 구성될 수 있다.
일 실시예에서, 삼각함수 연산 모듈(740)은 입력 데이터와 기울기 간의 곱 연산을 수행하는 곱셈기(multiplier)(741) 및 곱셈기와 연결되어 곱셈기의 출력과 y절편 간의 합 연산을 수행하는 합산기(adder)(742)를 포함할 수 있다. 여기에서, 곱셈기(741)는 포맷 변환 모듈(720)과 연결되어 입력 데이터를 수신할 수 있고, 주소 산출 모듈(730)의 제1 참조 테이블(731)과 연결되어 기울기를 수신할 수 있으며, 입력 데이터와 기울기 간의 곱 연산을 수행하여 그 결과를 합산기(742)에 전달할 수 있다. 합산기(742)는 곱셈기(741)로부터 수신한 연산 결과와 주소 산출 모듈(730)의 제2 참조 테이블(732)로부터 수신한 y절편 간의 합 연산을 수행하여 그 결과를 결과 출력 모듈(750)에 전달할 수 있다.
결과 출력 모듈(750)은 삼각함수 값을 연산 결과로서 출력할 수 있다. 결과 출력 모듈(750)은 체크 모듈(710) 및 삼각함수 연산 모듈(740)과 각각 연결될 수 있고, 삼각함수 연산 모듈(740)로부터 수신한 삼각함수 값을 출력으로 생성할 수 있다.
일 실시예에서, 결과 출력 모듈(750)은 연산 결과의 포맷을 부동 소수점으로 변환하여 출력할 수 있다. 삼각함수 연산 과정이 고정 소수점 포맷으로 처리됨에 따라 삼각함수 연산 모듈(740)로부터 제공되는 연산 결과를 부동 소수점으로 변환하는 추가 연산이 수행될 수 있다. 결과 출력 모듈(750)은 부동 소수점으로 변환된 연산 결과를 삼각함수 값으로 최종 출력할 수 있다.
도 8은 본 발명에 따른 삼각함수 계산 방법을 설명하는 도면이다.
도 8을 참조하면, 본 발명에 따른 삼각함수 계산 방법은 총 3 단계로 진행될 수 있다. 먼저 첫 번째 단계는 입력 데이터의 언더플로우(underflow) 및 오버플로우(overflow)를 체크하고 포맷(format)을 고정 소수점으로 변환하며 연산에 필요한 기울기와 절편을 얻는 단계에 해당할 수 있다.
이때, 입력 데이터에 대한 언더플로우 및 오버플로우의 여부는 체크 모듈(underflow/overflow check module)에서 수행될 수 있다. 만약 언더플로우 또는 오버플로우가 검출된 경우 체크 모듈은 해당 발생 신호를 결과 출력 모듈(result formatting module)에 전달할 수 있고, 둘 다 검출되지 않은 경우에는 포맷 변환 모듈(fixed-point formatting module)에 의해 부동 소수점 형태의 입력 데이터가 고정 소수점 형태로 변환될 수 있다.
주소 산출 모듈의 주소 결정 모듈(RefAddr module)에서는 입력의 분수 부분을 이용하여 참조 테이블의 참조 위치가 계산될 수 있다. 참조 위치의 계산은 도 8b의 박스 부분에 해당될 수 있다. 기울기 참조 테이블(Gradient LUT) 및 절편 참조 테이블(Bias LUT)은 주소 결정 모듈(RefAddr module)로부터 참조 위치를 수신할 수 있으며, 해당하는 기울기 및 절편 값을 각각 곱셈기(Multiplier) 및 합산기(Adder) 모듈에 출력할 수 있다.
두 번째 단계에서는 곱셈기(Multiplier)와 합산기(Adder)에서 삼각함수 연산을 위한 개별 연산이 수행될 수 있다. 곱셈기(Multiplier) 모듈에서는 입력 데이터와 기울기 간의 곱 연산이 수행될 수 있고 그 결과는 합산기(Adder) 모듈로 전달될 수 있다. 합산기(Adder) 모듈에서는 곱셈기(Multiplier) 모듈의 결과와 절편 값 간의 덧셈 연산이 수행될 수 있다.
세 번째 단계는 결과 출력 모듈(Result formatting module)을 통해 최종 결과를 출력하는 단계에 해당할 수 있다. 먼저, 삼각함수 중 역 코사인의 경우, 결과 출력 모듈은 첫 번째 단계의 체크 모듈(underflow/overflow module)로부터 전달받은 발생 신호를 확인하여 언더플로우(underflow)가 발생했다면 π/2를 출력하고, 오버플로우(overflow)가 발생했다면 0을 출력할 수 있다. 이때, 발생 신호에 따른 출력값은 삼각함수에 따라 사전에 설정될 수 있다. 만약, 둘 다 발생하지 않았다면 결과 출력 모듈은 합산기(Adder) 모듈로부터 전달받은 값을 부동 소수점 형태로 변환하여 이를 최종 연산 결과로서 출력할 수 있다.
한편, 본 발명에 따른 삼각함수 하드웨어 구조 중 역 코사인 하드웨어 구조에 관한 실험에 의하면, 역 코사인 그래프의 도메인 [0, 1]에 대해서 24비트 부동 소수점 형태로 표현 가능한 모든 수가 입력으로 주어졌을 때 오차가 검출된 입력의 수는 53개로 매우 적었고 평균 오차 값도 0.0002 수준으로 매우 낮으며 최대 오차 값 또한 0.00124로 매우 낮은 사실을 확인할 수 있다. 결과적으로, 본 발명에 따른 삼각함수 하드웨어 구조는 전체적인 도메인 구간에 걸쳐 오차가 매우 낮은 만족스러운 삼각함수의 근사값을 제공할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 삼각함수 계산 시스템
110: 사용자 단말 130: 삼각함수 계산 장치
150: 데이터베이스
710: 체크 모듈 720: 포맷 변환 모듈
730: 주소 산출 모듈 731: 제1 참조 테이블
732: 제2 참조 테이블 740: 삼각함수 연산 모듈
741: 곱셈기 742: 합산기
750: 결과 출력 모듈

Claims (14)

  1. 삼각함수 연산의 입력 도메인을 복수의 구간들로 분할하는 단계;
    상기 복수의 구간들 각각에 대응하는 선형 방정식을 정의하는 단계;
    입력 데이터를 수신하면 상기 복수의 구간들 중에서 상기 입력 데이터에 대응하는 근사 구간을 결정하는 단계;
    상기 근사 구간에 대응되는 선형 방정식을 근사 방정식으로 결정하는 단계; 및
    상기 근사 방정식을 기초로 상기 삼각함수 연산을 수행하여 상기 입력 데이터의 삼각함수 값을 산출하는 단계;를 포함하는 선형 보간법을 이용한 삼각함수 계산 방법.
  2. 제1항에 있어서, 상기 복수의 구간들로 분할하는 단계는
    상기 입력 도메인을 n(상기 n은 자연수)개의 제1 구간들로 분할하는 단계; 및
    상기 n개의 제1 구간들 중 특정 제1 구간에 대해 m(상기 m은 자연수)개의 제2 구간들로 분할하는 단계를 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 방법.
  3. 제2항에 있어서, 상기 복수의 구간들로 분할하는 단계는
    상기 삼각함수 연산의 제한 오차율 또는 목표 정확도에 따라 상기 n 및 m을 각각 결정하는 단계를 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 방법.
  4. 제1항에 있어서, 상기 선형 방정식을 정의하는 단계는
    상기 선형 방정식의 기울기 및 y절편을 서로 다른 참조 테이블에 각각 저장하는 단계를 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 방법.
  5. 제2항에 있어서, 상기 근사 구간을 결정하는 단계는
    상기 입력 데이터의 분수 부분에 관한 상위 k(상기 k는 자연수)비트의 값을 기준으로 상기 근사 구간을 결정하는 단계를 포함하고,
    상기 k값은 상기 n 및 m 각각의 크기에 따라 결정되는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 방법.
  6. 제5항에 있어서, 상기 근사 구간을 결정하는 단계는
    상기 상위 k비트의 제1 비트 구간을 기초로 상기 복수의 제1 구간들 중 어느 하나를 결정하는 단계; 및
    상기 복수의 제1 구간들 중 특정 제1 구간에 대해서는 상기 상위 k비트의 제2 비트 구간을 기초로 상기 복수의 제2 구간들 중 어느 하나를 결정하는 단계를 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 방법.
  7. 제4항에 있어서, 상기 근사 방정식으로 결정하는 단계는
    상기 근사 구간에 대응되는 테이블 인덱스를 참조하여 상기 서로 다른 참조 테이블 각각에서 상기 근사 방정식의 기울기 및 y절편을 추출하는 단계를 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 방법.
  8. 제1항에 있어서, 상기 삼각함수 값을 산출하는 단계는
    상기 입력 데이터와 상기 근사 방정식의 기울기 간의 곱 연산을 수행하는 단계; 및
    상기 곱 연산의 결과와 상기 근사 방정식의 y 절편 간의 합 연산을 수행하는 단계를 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 방법.
  9. 입력 데이터의 언더플로우 또는 오버플로우를 체크하는 체크 모듈;
    입력 데이터의 포맷이 부동 소수점인 경우 고정 소수점으로 변환하는 포맷 변환 모듈;
    입력 데이터의 분수 부분을 이용하여 참조 테이블의 참조 위치를 계산하고 상기 입력 데이터에 대응되는 선형 방정식의 기울기 및 y절편을 결정하는 주소 산출 모듈;
    상기 기울기 및 y절편에 따라 정의되는 선형 방정식을 상기 입력 데이터에 적용하여 삼각함수 값을 산출하는 삼각함수 연산 모듈; 및
    상기 삼각함수 값을 연산 결과로서 출력하는 결과 출력 모듈;을 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 장치.
  10. 제9항에 있어서, 상기 체크 모듈은
    상기 입력 데이터의 언더플로우가 검출된 경우 기 설정된 제1 출력 신호를 상기 결과 출력 모듈에 전달하고,
    상기 입력 데이터의 오버플로우가 검출된 경우 기 설정된 제2 출력 신호를 상기 결과 출력 모듈에 전달하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 장치.
  11. 제9항에 있어서, 상기 주소 산출 모듈은
    상기 분수 부분의 상위 k(상기 k는 자연수)비트를 제1 비트 구간과 제2 비트 구간으로 구분하고, 상기 제1 비트 구간의 비트값이 기 설정된 기준값 미만인 경우 해당 비트값을 상기 참조 위치로 결정하며 그렇지 않은 경우 상기 제2 비트 구간의 비트값에 상기 기준값을 더하여 상기 참조 위치를 결정하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 장치.
  12. 제11항에 있어서, 상기 주소 산출 모듈은
    상기 참조 위치에 따라 상기 기울기를 출력하는 제1 참조 테이블; 및
    상기 참조 위치에 따라 상기 y절편을 출력하는 제2 참조 테이블을 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 장치.
  13. 제12항에 있어서, 상기 삼각함수 연산 모듈은
    상기 입력 데이터와 상기 기울기 간의 곱 연산을 수행하는 곱셈기(multiplier); 및
    상기 곱셈기와 연결되어 상기 곱셈기의 출력과 상기 y절편 간의 합 연산을 수행하는 합산기(adder)를 포함하는 것을 특징으로 하는 선형 보간법을 이용한 삼각함수 계산 장치.
  14. 제9항에 있어서, 상기 결과 출력 모듈은
    상기 연산 결과의 포맷을 부동 소수점으로 변환하여 출력하는 것을 특징을 하는 선형 보간법을 이용한 삼각함수 계산 장치.
KR1020210097295A 2021-07-23 2021-07-23 선형 보간법을 이용한 삼각함수 계산 방법 및 장치 KR102567603B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210097295A KR102567603B1 (ko) 2021-07-23 2021-07-23 선형 보간법을 이용한 삼각함수 계산 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210097295A KR102567603B1 (ko) 2021-07-23 2021-07-23 선형 보간법을 이용한 삼각함수 계산 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20230015758A true KR20230015758A (ko) 2023-01-31
KR102567603B1 KR102567603B1 (ko) 2023-08-17

Family

ID=85109547

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210097295A KR102567603B1 (ko) 2021-07-23 2021-07-23 선형 보간법을 이용한 삼각함수 계산 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102567603B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040011919A (ko) * 2002-07-31 2004-02-11 학교법인연세대학교 선형방정식을 이용한 삼각함수 계산 방법
US20050071401A1 (en) * 2001-07-30 2005-03-31 Ati Technologies, Inc. Method and system for approximating sine and cosine functions
KR20160120249A (ko) 2015-04-07 2016-10-17 비반테 코포레이션 수학적 함수를 연산하는 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071401A1 (en) * 2001-07-30 2005-03-31 Ati Technologies, Inc. Method and system for approximating sine and cosine functions
KR20040011919A (ko) * 2002-07-31 2004-02-11 학교법인연세대학교 선형방정식을 이용한 삼각함수 계산 방법
KR20160120249A (ko) 2015-04-07 2016-10-17 비반테 코포레이션 수학적 함수를 연산하는 시스템 및 방법

Also Published As

Publication number Publication date
KR102567603B1 (ko) 2023-08-17

Similar Documents

Publication Publication Date Title
US20200218509A1 (en) Multiplication Circuit, System on Chip, and Electronic Device
US8719322B2 (en) Floating point format converter
US10540142B2 (en) Accuracy-conserving floating-point value aggregation
US10303438B2 (en) Fused-multiply-add floating-point operations on 128 bit wide operands
CN112506935B (zh) 数据处理方法、装置、电子设备、存储介质及程序产品
US9983850B2 (en) Shared hardware integer/floating point divider and square root logic unit and associated methods
US8751555B2 (en) Rounding unit for decimal floating-point division
US10095475B2 (en) Decimal and binary floating point rounding
CN105389290A (zh) 有效插值
CN112241291A (zh) 用于指数函数实施的浮点单元
WO2023206832A1 (zh) 函数实现方法、逼近区间分段方法、芯片、设备及介质
CN113296732B (zh) 数据处理方法和装置,处理器及数据搜索方法和装置
CN110888623A (zh) 数据转换方法、乘法器、加法器、终端设备及存储介质
CN112085154A (zh) 用于神经网络的压缩和推断加速的非对称量化
CN107220025B (zh) 处理乘加运算的装置和处理乘加运算的方法
US20120121165A1 (en) Method and apparatus for time of flight sensor 2-dimensional and 3-dimensional map generation
KR102567603B1 (ko) 선형 보간법을 이용한 삼각함수 계산 방법 및 장치
US20140101215A1 (en) Dpd/bcd to bid converters
CN113126954B (zh) 浮点数乘法计算的方法、装置和算术逻辑单元
US10303439B2 (en) Logarithm and power (exponentiation) computations using modern computer architectures
CN111984226A (zh) 一种基于双曲cordic的立方根求解装置及求解方法
JP7012766B2 (ja) パラメータテーブルの記憶スペースを削減する方法、装置、デバイス、およびコンピュータ可読記憶媒体
KR20230076641A (ko) 부동-소수점 연산을 위한 장치 및 방법
CN1936830A (zh) 小数取幂的数字实现
CN102609236B (zh) 一种应用于gpu中的幂指数运算装置和运算方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right