KR20030067982A - 오차를 최소화할 수 있는 제곱근기 - Google Patents

오차를 최소화할 수 있는 제곱근기 Download PDF

Info

Publication number
KR20030067982A
KR20030067982A KR1020020007753A KR20020007753A KR20030067982A KR 20030067982 A KR20030067982 A KR 20030067982A KR 1020020007753 A KR1020020007753 A KR 1020020007753A KR 20020007753 A KR20020007753 A KR 20020007753A KR 20030067982 A KR20030067982 A KR 20030067982A
Authority
KR
South Korea
Prior art keywords
value
square root
integer
digit
unit
Prior art date
Application number
KR1020020007753A
Other languages
English (en)
Other versions
KR100402799B1 (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 KR10-2002-0007753A priority Critical patent/KR100402799B1/ko
Priority to CNB031017266A priority patent/CN1205583C/zh
Priority to US10/359,539 priority patent/US7152088B2/en
Publication of KR20030067982A publication Critical patent/KR20030067982A/ko
Application granted granted Critical
Publication of KR100402799B1 publication Critical patent/KR100402799B1/ko

Links

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/552Powers or roots, e.g. Pythagorean sums
    • 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/552Powers or roots, e.g. Pythagorean sums
    • G06F7/5525Roots or inverse roots of single operands

Landscapes

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

Abstract

오차가 거의 없는 제곱근을 산출할 수 있는 제곱근기가 개시된다. 정수산출부는 임의의 정수를 제곱한 값이 입력된 데이터보다 작은 정수들의 집합 중에서 가장 큰 정수를 제곱근의 정수부로 선택한다. 변환부는 정수산출부에 의해 선택된 수를 좌승한 후 자리올림한 값과 임의의 제1최저자리값을 가산한 변환값을 구한다. 또한 변환부는 변환값과 제1최저자리값을 곱한 값이 데이터에서 선택된 정수의 제곱값을 감산한 값의 소수점이하 두자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 제1최저자리값을 제곱근의 소수점이하 첫째자리값으로 한다. 연산부는 정수산출부 및 변환부에 대한 연산처리를 수행하며, 정수산출부에 의해 산출된 정수에 변환부에 의한 첫째자리값을 가산하여 제곱근을 산출한다. 이로써, 본 발명에 따른 제곱근기는 오차가 거의 발생하지 않을 뿐만 아니라, 하드웨어의 크기도 최소화할 수 있게 된다.

Description

오차를 최소화할 수 있는 제곱근기 {SQRT device capable of reducing error}
본 발명은 제곱근기에 관한 것으로서, 보다 상세하게는, 계산량을 줄이면서도 하드웨어의 구성이 간단한 제곱근기에 관한 것이다.
도 1은 시드(seed) 형태로 구하는 제곱근기의 하드웨어 구조를 개략적으로 도시한 도면이다. 도면을 참조하면, 제곱근기(10)는 선택신호 출력부(11), 기울기 저장부(13), y절편 저장부(15), 곱셈기(17), 및 덧셈기(19)를 구비한다.
선택신호 출력부(11)는 입력되는 데이터에 따라 제곱근을 구하는 데 필요한 기울기 및 y절편을 선택할 수 있도록 기울기 저장부(13) 및 y절편 저장부(15)에 각각 기울기 선택신호 및 y절편 선택신호를 송신한다. 또한, 선택신호 출력부(11)는 입력된 데이터를 곱셈기(17)에 송신한다.
기울기 저장부(13)는 제곱근 계산에 필요한 기울기를 저장한다. 기울기 저장부(13)는 선택신호 출력부(11)로부터 기울기 선택신호가 수신되면, 수신된 선택신호에 대응되는 기울기를 곱셈기(17)에 송신한다.
y절편 저장부(15)는 제곱근 계산에 필요한 y절편을 저장한다. y절편 저장부(15)는 선택신호 출력부(11)로부터 y절편 선택신호가 수신되면, 수신된 선택신호에 대응되는 y절편을 덧셈기(19)에 송신한다.
곱셈기(17)는 기울기 저장부(13)로부터 수신된 기울기 및 선택신호 출력부(11)로부터 수신된 데이터를 승산하며, 승산된 값을 덧셈기(19)에 송신한다. 덧셈기(19)는 y절편 저장부(15) 및 곱셈기(17)로부터 각각 수신된 값을 서로 가산하여 출력한다. 상술한 연산관계를 수학식 1로 표시하였다.
출력 데이터 = 기울기 ×입력 데이터 + y절편
일반적으로, 도 1에 의한 제곱근 처리 방법은 도 2와 같이, 미리 결과값을 계산한 후 이 값들을 그래프로 나타낸 다음, 각각의 구간을 나누어 직선의 식으로 근사화하는 방법을 이용한다. 도면을 참조하면, 0 내지 105의 값을 제곱근을 구하여 그래프로 나타내었고, 이 값들을 7구간으로 나누어 각각의 구간을 직선화하였다.
이러한 방법으로 결국 7개의 직선의 방정식이 만들어지게 되며, 이 7개의 직선의 방정식은 각각 7개의 기울기와 y절편값을 가지고 있어야만 입력되는 값의 제곱근을 구할 수 있게 된다. 여기서의 구간은 사용자가 임의로 설정할 수 있다. 만약, 설정되는 구간이 7개 이상인 경우에는 설정된 각각의 구간에 해당되는 기울기와 y절편값이 각각 존재하여야 한다.
도 3은 도 1의 제곱근기에 의한 제곱근 처리방법을 나타낸 흐름도이다. 도면을 참조하면, 선택신호 출력부(11)는 설정된 각각의 구간에 해당하는 주소를 생성한다(S301). 기울기 저장부(13) 및 y절편 저장부(15)는 설정된 각각의 구간에 대응되는 기울기 및 y절편을 각각 저장한다. 선택신호 출력부(11)는 설정된 각각의 구간에 대응되는 기울기 및 y절편이 선택될 수 있도록 생성된 주소에 대응되는 선택신호를 기울기 저장부(13) 및 y절편 저장부(15)에 각각 송신한다. 또한, 선택신호 출력부(11)는 입력 데이터를 곱셈기(17)에 송신한다. 기울기 저장부(13)는 선택신호 출력부(11)에 의해 송신된 선택신호에 해당하는 기울기를 곱셈기(17)로 출력한다. y절편 저장부(15)는 선택신호 출력부(11)에 의해 송신된 선택신호에 해당하는 y절편을 덧셈기(19)로 출력한다(S303). 곱셈기(17)는 수신된 입력 데이터 및 기울기를 서로 승산하여 덧셈기(19)로 출력한다. 덧셈기(19)는 곱셈기(17)로부터 수신된 값과 y절편 저장부(15)로부터 수신된 값을 서로 가산한다(S305). 덧셈기(19)는 수학식 1과 같이 계산된 결과값을 출력한다(S307). 이로써, 제곱근기에 의한 제곱근의 계산은 종료된다.
상술한 방법과 다른 제곱근 처리방법으로 뉴톤-래프슨 알고리듬(Newton-Raphson algorithm)을 이용한 방법이 있다. 뉴톤-래프슨 알고리듬은 수학식 2를 바탕으로 한다.
뉴톤-래프슨 알고리듬에 의하면, 반복적으로 계산 할 수록 정확한 값을 얻을 수 있게 된다. 예컨대, 만약 0.7의 제곱근을 구한다고 가정하면, 표 1과 같이 3번의 반복적인 계산을 하여야 정확한 계산값이 출력됨을 알 수 있다. 이때, X = 0.7이며, Y = 0.5이다.
k 0 1 2 3 4
Yk 0.5 0.95 0.8434 0.8367 0.8367
상술한 두 가지의 방법을 비교하여 볼 때, 시드 형태를 이용한 제곱근기가 뉴톤-래프슨 알고리듬을 이용한 제곱방법보다 좀 더 간편하게 결과값을 얻을 수 있음을 알 수 있다.
그러나, 종래의 제곱근기는 시드 형태로 구성되어 있기 때문에 도 4에 도시된 것처럼, 오차가 발생하게 된다. 즉, 도 5에 도시된 바와 같이, 시드 형태의 제곱근기가 7개의 시드를 가지고 있고 입력 데이터가 1 내지 105의 값이라고 할 경우에 시드 형태의 제곱근과 실제 제곱근 사이에는 최대 6의 오차가 있음을 알 수 있다. 또한, 구간을 나눈 부분의 값들은 오차가 없지만, 구간의 값보다 멀리 떨어진 값(도 4의 화살표 부분)에서 오차가 많이 발생됨을 알 수 있다.
따라서, 이러한 오차를 최소화하기 위해서, 종래의 제곱근기는 구간과 구간 사이를 작게 나누어야 하며, 이 경우에는 저장해야 할 계수들이 더욱 많아지게 된다. 구간을 세분화하여 연산처리를 하는 경우에, 종래의 제곱근기는 나누어진 구간별로 병렬로 연산하여 제곱근을 구하는 경우에는 계산속도는 빨라지지만, 각각의 구간마다 연산처리를 위한 곱셈기, 덧셈기 등이 필요하므로 하드웨어의 부피가 커지게 된다. 구간마다 순차적으로 연산처리를 수행하는 경우에는 하드웨어의 부피는 줄일 수 있으나, 연산처리 속도가 느려지는 단점이 있다.
또한, 뉴톤-래프슨 알고리듬을 수학식 2에서 살펴본 바와 같이, 정확한 값을 얻기 위하여 반복적인 계산을 요하며 또한, 나눗셈기, 미분기, 곱셈기가 필요하기 때문에 하드웨어 구현시 크기가 매우 커지게 되는 단점이 있다.
본 발명은 상기의 문제점을 해결하기 위하여 창안된 것으로서, 오차를 최소화하면서 아울러, 하드웨어의 크기도 최소화할 수 있는 제곱근기 및 그 방법을 제공하는데 그 목적이 있다.
도 1은 종래의 시드 형태로 구하는 제곱근기의 하드웨어 구조를 개략적으로 도시한 도면,
도 2는 도 1에 의한 제곱근 풀이방법을 설명하기 위해 도시된 도면,
도 3은 도 1에 의한 제곱근 풀이과정을 나타낸 흐름도,
도 4는 도 1의 제곱근기를 이용할 경우 나타나는 오차를 보여주기 위해 도시된 도면,
도 5는 1 내지 105의 값에 대해 반올림연산을 취한 경우의 도 2에 의한 시드 형태의 제곱근과 실제 제곱근과의 차이를 그래프로 나타낸 도면,
도 6은 본 발명에 따른 제곱근기를 개략적으로 도시한 블록도,
도 7은 도 6의 제곱근기에 의해 10진수에서의 제곱근을 산출하는 과정을 나타낸 흐름도,
도 8은 도 6의 제곱근기에 의해 2진수에서의 제곱근을 산출하는 과정을 나타낸 흐름도,
도 9는 도 6의 제곱근기에 의해 산출된 제곱근과 실제 제곱근을 도시한 그래프, 그리고,
도 10은 도 6의 제곱근기에 의해 산출된 제곱근과 실제의 제곱근과의 차이를 도시한 그래프이다.
* 도면의 주요부분에 대한 부호의 설명 *
60 : 제곱근기 61 : 정수산출부
63 : 변환부 65 : 연산부
상기의 목적을 달성하기 위한 본 발명의 일 실시예에 따른 제곱근기는, 입력되는 데이터에 대한 제곱근을 산출하는 제곱근기에 있어서, 임의의 정수를 제곱한 값이 상기 데이터보다 작은 정수들의 집합 중에서 가장 큰 정수를 상기 제곱근의 정수부로 선택하는 정수산출부, 상기 정수산출부에 의해 선택된 상기 정수를 상기 제곱근을 구하기 위해 변환시키는 변환부, 및 상기 데이터와 상기 변환부에 의해 변환된 값에 기초하여 상기 제곱근을 연산하는 연산부를 구비한다.
여기서, 상기 변환부는 상기 정수산출부에 의해 선택된 수를 두배하여 제1차변환값을 산출하고, 상기 제1차변환값을 자리올림하여 자리올림된 값에 임의의 제1최저자리값을 가산한 값을 제2차변환값으로 하며, 상기 제2차변환값과 상기 제1최저자리값을 곱한 값이 상기 데이터에서 선택된 상기 정수의 제곱값을 감산한 값의 소수점이하 두자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 상기 제1최저자리값을 상기 제곱근의 소수점이하 첫째자리값으로 하고, 상기 연산부는 상기 정수산출부 및 상기 변환부에 대한 연산처리를 수행하며, 상기 정수산출부에 의해 산출된 상기 정수에 상기 변환부에 의한 상기 첫째자리값을 가산하여 제곱근을 산출한다.
또한, 상기 변환부는 상기 제2차변환값에 상기 첫째자리값을 가산한 값을 제3차변환값으로 하며, 상기 제3차변환값을 자리올림하여 자리올림된 값에 임의의 제2최저자리값을 가산한 값을 제4차변환값으로 하며, 상기 제4차변환값과 상기 제2최저자리값을 곱한 값이 상기 데이터에서 선택된 상기 정수의 제곱값, 및 상기 제2차변환값과 상기 제1최저자리값을 곱한 값을 감산한 값의 소수점이하 네자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 상기 제2최저자리값을 상기 제곱근의 소수점이하 둘째자리값으로 한다.
또한, 상기 변환부는 상기 제(2n)차변환값에 n째자리값을 가산한 값을 제(2n+1)차변환값으로 하며, 상기 제(2n+1)차변환값을 자리올림하여 자리올림된 값에 임의의 제(n+1)최저자리값을 가산한 값을 제2(n+1)차변환값으로 하며, 상기 제2(n+1)차변환값과 상기 제(n+1)최저자리값을 곱한 값이 상기 데이터에서 선택된상기 정수의 제곱값 및을 감산한 값의 소수점이하 2(n+1) 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 상기 제(n+1)최저자리값을 상기 제곱근의 소수점이하 (n+1)자리값으로 한다.
상기의 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 제곱근기는, 입력되는 이진수데이터에 대한 제곱근을 산출하는 이진수제곱근기에 있어서, 임의의 이진수를 제곱한 값이 상기 이진수데이터보다 작은 이진수들의 집합 중에서 가장 큰 이진수를 선택하는 정수산출부, 상기 정수산출부에 의해 선택된 상기 이진수를 상기 제곱근을 구하기 위해 변환시키는 변환부, 및 상기 데이터와 상기 변환부에 의해 변환된 값에 기초하여 상기 제곱근을 연산하는 연산부를 구비한다.
여기서, 상기 변환부는 상기 정수산출부에 의해 선택된 이진수를 두배하여 제1차변환값을 산출하고, 상기 제1차변환값을 자리올림하여 자리올림된 값에 임의의 제1최저자리값을 가산한 값을 제2차변환값으로 하며, 상기 제2차변환값과 상기 제1최저자리값을 곱한 값이 상기 데이터에서 선택된 상기 이진수의 제곱값을 감산한 값의 소수점이하 두자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 상기 제1최저자리값을 상기 제곱근의 소수점이하 첫째자리값으로 한다.
또한, 상기 연산부는 상기 정수산출부 및 상기 변환부에 대한 연산처리를 수행하며, 상기 정수산출부에 의해 산출된 상기 정수에 상기 변환부에 의한 상기 첫째자리값을 가산하여 제곱근을 산출한다.
이로써, 본 발명에 따른 제곱근기는 하드웨어의 크기를 크게 줄일 수 있게될 뿐만아니라, 입력되는 데이터에 대하여 정확한 제곱근을 산출할 수 있게 된다.
이하, 첨부된 도면을 참조하여 본 발명을 보다 상세하게 설명한다.
도 6은 본 발명에 따른 제곱근기를 개략적으로 도시한 블록도이다. 도면을 참조하면, 제곱근기(60)는 정수산출부(61), 변환부(63), 및 연산부(65)를 구비한다.
정수산출부(61)는 임의의 정수를 제곱한 값이 입력되는 데이터보다 작은 정수들의 집합 중에서 가장 큰 정수를 제곱근의 정수부로 선택한다. 여기서, 입력되는 이진수데이터에 대한 이진제곱근을 산출하는 경우에는, 임의의 이진수를 제곱한 값이 상기 이진수데이터보다 작은 이진수들의 집합 중에서 가장 큰 이진수를 정수부로 선택한다.
변환부(63)는 정수산출부(61)에 의해 선택된 상기 정수를 제곱근을 구하기 위해 변환시킨다. 또한, 연산부(65)는 입력된 데이터와 변환부(63)에 의해 변환된 값에 기초하여 제곱근을 연산한다.
여기서, 변환부(63)는 정수산출부(61)에 의해 선택된 수를 두배하여 제1차변환값을 산출하고, 제1차변환값을 자리올림하여 자리올림된 값에 임의의 제1최저자리값을 가산한 값을 제2차변환값으로 하며, 제2차변환값과 제1최저자리값을 곱한 값이 데이터에서 선택된 정수의 제곱값을 감산한 값의 소수점이하 두자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 제1최저자리값을 제곱근의 소수점이하 첫째자리값으로 한다. 또한, 연산부(65)는 정수산출부(61) 및 변환부(63)에 대한 연산처리를 수행하며, 정수산출부(61)에 의해 산출된 정수에 변환부(63)에 의한 첫째자리값을 가산하여 제곱근을 산출한다.
또한, 변환부(73)는 제2차변환값에 첫째자리값을 가산한 값을 제3차변환값으로 하며, 제3차변환값을 자리올림하여 자리올림된 값에 임의의 제2최저자리값을 가산한 값을 제4차변환값으로 하고, 제4차변환값과 제2최저자리값을 곱한 값이 데이터에서 선택된 정수의 제곱값, 및 제2차변환값과 제1최저자리값을 곱한 값을 감산한 값의 소수점이하 네자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 제2최저자리값을 제곱근의 소수점이하 둘째자리값으로 한다. 또한 정수산출부(61)는 적어도 1 이상의 이진수를 선택한다.
또한, 변환부는 제(2n)차변환값에 n째자리값을 가산한 값을 제(2n+1)차변환값으로 하고, 제(2n+1)차변환값을 자리올림하여 자리올림된 값에 임의의 제(n+1)최저자리값을 가산한 값을 제2(n+1)차변환값으로 하며, 제2(n+1)차변환값과 제(n+1)최저자리값을 곱한 값이 데이터에서 제1차변환값 및을 감산한 값의 소수점이하 2(n+1) 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 제(n+1)최저자리값을 제곱근의 소수점이하 (n+1)자리값으로 한다.
여기서, 입력되는 이진수데이터에 대한 이진제곱근을 산출하는 경우에는, 정수산출부(61)에 의해 선택된 이진수를 제곱근을 구하기 위해 변환환다. 또한, 변환부(63)는 정수산출부(61)에 의해 선택된 이진수를 두배하여 제1차변환값을 산출하고, 제1차변환값을 자리올림하여 자리올림된 값에 임의의 제1최저자리값을 가산한 값을 제2차변환값으로 하며, 제2차변환값과 제1최저자리값을 곱한 값이 데이터에서선택된 정수의 제곱값을 감산한 값의 소수점이하 두자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 제1최저자리값을 제곱근의 소수점이하 첫째자리값으로 한다.
또한, 연산부(65)는 정수산출부(61) 및 변환부(63)에 대한 연산처리를 수행하며, 정수산출부(61)에 의해 산출된 정수에 변환부(63)에 의한 첫째자리값을 가산하여 제곱근을 산출한다.
도 7은 도 6의 제곱근기에 의해 10진수에서의 제곱근을 산출하는 과정을 나타낸 흐름도이다. 도면을 참조하면, 정수산출부(61)는 임의의 정수를 제곱한 값이 입력되는 데이터보다 작은 정수들의 집합 중에서 가장 큰 정수를 선택한다(S701). 여기서는, 이해를 돕기 위하여 입려되는 데이터가 2인 경우를 예로서 설명한다.
임의의 정수를 제곱한 값이 입력되는 데이터 즉, 2보다 작은 정수들의 집합 중에서 가장 큰 정수는 1밖에 없다. 따라서, 정수산출부(61)에 의해 선택된 정수는 1이된다. 변환부(63)는 입력되는 데이터의 제곱근을 산출하기 위하여 선택된 정수를 변환한다(S703). 즉, 변환부(63)는 먼저 정수산출부(61)에 의해 선택된 수를 두배하여 제1차변환값을 산출한다. 상기의 예의 경우, 선택된 정수가 1이므로 제1차변환값은 2가된다. 변환부(63)는 제1차변환값을 자리올림하여 자리올림된 값에 임의의 제1최저자리값을 가산한 값을 제2차변환값으로 하여 제2차변환값을 산출한다. 상기의 예의 경우, 제1차변환값 2를 자리올림하면 20이 되고, 임의의 제1최저자리값을 X라고 하면, 제2차변환값은 2X가 된다.
변환부(63)는 제2차변환값과 제1최저자리값을 곱한 값이 데이터에서 제1차변환값을 감산한 값의 소수점이하 두자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 제1최저자리값을 제곱근의 소수점이하 첫째자리값으로 한다(S705). 상기의 예의 경우, 제2차변환값 2X와 제1최저자리값 X를 곱한 값이 데이터에서 제1차변환값을 감산한 값 즉, 2-1=1의 소수점이하 두자리 내의 수보다 작은 수 즉, 1.00보다 작은 수 중에서 가장 큰 수가 되는 값은 0.96이므로 X는 4가 되며, 따라서 제2차변환값은 24이고, 제1최저자리값은 4가 된다.
변환부(63)는 제1최저값 4를 제곱근의 소수점이하 첫째자리값으로 한다. 연산부(65)는 정수산출부(61) 및 변환부(63)에 대한 연산처리를 수행하며, 정수산출부(61)에 의해 산출된 정수 1에 변환부(63)에 의한 첫째자리값 0.4를 가산하여 제곱근을 산출한다. 따라서, 소수점이하 첫째짜리까지 산출된 제곱근은 1.4가 된다.
또한, 변환부(73)는 제2차변환값 24에 첫째자리값 4를 가산한 값 즉, 28을 제3차변환값으로 하며, 제3차변환값을 자리올림하여 자리올림된 값에 임의의 제2최저자리값을 가산한 값 즉, 28Y를 제4차변환값으로 하고, 제4차변환값과 제2최저자리값을 곱한 값이 데이터 2에서 선택된 정수부의 제곱값 1, 및 제2차변환값 24와 제1최저자리값 4를 곱한 값을 감산한 값 2-1.9600=0.0400의 소수점이하 네자리 내의 수보다 작은 수 중에서 가장 큰 수가 되는 값은 281이므로 제2최저값은 1이된다. 변환부(63)는 제2최저자리값 1을 제곱근의 소수점이하 둘째자리값으로 한다(S707). 따라서, 소수점이하 둘째자리까지 산출된 제곱근은 1.41이 된다.
상기와 같은 방법에 의해 소수점이하 n째자리값, n+1째 자리값 등을 산출할 수 있다. 즉, 변환부(63)는 제(2n)차변환값에 n째자리값을 가산한 값을 제(2n+1)차변환값으로 하며, 제(2n+1)차변환값을 자리올림하여 자리올림된 값에 임의의 제(n+1)최저자리값을 가산한 값을 제2(n+1)차변환값으로 하며, 제2(n+1)차변환값과 상기 제(n+1)최저자리값을 곱한 값이 데이터에서 상기 제1차변환값 및을 감산한 값의 소수점이하 2(n+1) 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 제(n+1)최저자리값을 제곱근의 소수점이하 (n+1)자리값으로 한다. 여기서, n = 1, 2, 3, ... , n 이다.
도 8은 도 6의 제곱근기에 의해 2진수에서의 제곱근을 산출하는 과정을 나타낸 흐름도이다. 도면을 참조하면, 정수산출부(61)는 임의의 이진수를 제곱한 값이 입력되는 이진수데이터보다 작은 이진수들의 집합 중에서 가장 큰 이진수를 선택한다(S801). 여기서는, 입려되는 이진수데이터가 10(2)인 경우를 예로서 설명한다.
임의의 이진수를 제곱한 값이 입력되는 이진수데이터 즉, 10(2)보다 작은 이진수들의 집합 중에서 가장 큰 이진수는 1(2)밖에 없다. 따라서, 정수산출부(61)에 의해 선택된 이진수는 1(2)이된다. 변환부(63)는 입력되는 이진수데이터의 제곱근을 산출하기 위하여 선택된 이진수를 변환한다(S803). 즉, 변환부(63)는 먼저 정수산출부(61)에 의해 선택된 이진수를 두배하여 제1차변환값 10(2)을 산출한다. 변환부(63)는 제1차변환값 10(2)을 자리올림하여 자리올림된 값 100(2)에 임의의 제1최저자리값을 가산한 값을 제2차변환값으로 하여 제2차변환값 10X(2)을 산출한다.
변환부(63)는 제2차변환값 10X(2)와 제1최저자리값 X를 곱한 값이 데이터에서 제1차변환값을 감산한 값의 소수점이하 두자리 내의 수 1.00(2)보다 작은 수 중에서 가장 큰 수가 되는 수는 없으므로 따라서 X는 0이 된다. 변환부(63)는 제1최저자리값 0을 제곱근의 소수점이하 첫째자리값으로 한다(S805).
연산부(65)는 정수산출부(61) 및 변환부(63)에 대한 연산처리를 수행하며, 정수산출부(61)에 의해 산출된 이진수 1(2)에 변환부(63)에 의한 첫째자리값 0을 가산하여 제곱근을 산출한다. 따라서, 소수점이하 첫째짜리까지 산출된 제곱근은 1.0(2)가 된다.
또한, 변환부(73)는 제2차변환값 100(2)에 첫째자리값 0을 가산한 값 즉, 100(2)을 제3차변환값으로 하며, 제3차변환값을 자리올림하여 자리올림된 값 1000(2)에 임의의 제2최저자리값을 가산한 값 즉, 100Y(2)를 제4차변환값으로 하고, 제4차변환값100Y(2)와 제2최저자리값 Y(2)를 곱한 값이 이진수데이터 10(2)에서 선택된 이진수의 제곱값 1(2), 및 제2차변환값 100(2)와 제1최저자리값 0을 곱한 값을 감산한 값 10(2)-1(2)=1(2)의 소수점이하 네자리 내의 수 1.0000(2)보다 작은 수 중에서 가장 큰 수가 되는 값은 1001(2)이므로 제2최저값은 1(2)이된다. 변환부(63)는 제2최저자리값 1을 제곱근의 소수점이하 둘째자리값으로 한다(S807). 따라서, 소수점이하 둘째자리까지 산출된 제곱근은 1.01(2)이 된다. 상기한 방법으로 변환부(63)는 제곱근의 소수점이하 n째자리값을 산출할 수 있다. 연산부(65)는 정수산출부(61)에 의해 산출된 이진수에 변환부(63)에 의한 첫째자리값, 둘째자리값, ... , 및 n째자리값을 가산하여 제곱근을 산출한다(S811).
도 9는 도 6의 제곱근기에 의해 산출된 제곱근과 실제 제곱근을 도시한 그래프이고, 도 10은 도 6의 제곱근기에 의해 산출된 제곱근과 실제의 제곱근과의 차이를 도시한 그래프이다.
이진수 제곱근기에 대하여 입력값을 18비트(bit)로 하고, 출력은 16비트(정수 9비트, 소수 7비트)로 구현하고 모든 값을 입력한 경우에, 실제의 제곱근과 본 발명에 따른 제곱근기에 의한 제곱근 사이에는 오차가 전혀 없었다. 따라서, 본 발명에 따른 제곱근기는 일반적인 시드 형태로 구현된 제곱근기보다 오차율 면에서 월등하게 유리한 면을 보이고 있으며, 하드웨어 역시 연산기에 구비되는 소정 개수만을 요하므로 크기가 작아지게 된다.
본 발명에 따르면 제곱근기는 오차가 거의 없는 제곱근을 산출할 수 있을 뿐만아니라, 하드웨어 면에서도 부피 및 크기를 최소화할 수 있게 된다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위 뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (5)

  1. 입력되는 데이터에 대한 제곱근을 산출하는 제곱근기에 있어서,
    임의의 정수를 제곱한 값이 상기 데이터보다 작은 정수들의 집합 중에서 가장 큰 정수를 상기 제곱근의 정수부로 선택하는 정수산출부;
    상기 정수산출부에 의해 선택된 상기 정수를 상기 제곱근을 구하기 위해 변환시키는 변환부; 및
    상기 데이터와 상기 변환부에 의해 변환된 값에 기초하여 상기 제곱근을 연산하는 연산부;를 포함하며,
    상기 변환부는 상기 정수산출부에 의해 선택된 수를 두배하여 제1차변환값을 산출하고, 상기 제1차변환값을 자리올림하여 자리올림된 값에 임의의 제1최저자리값을 가산한 값을 제2차변환값으로 하며, 상기 제2차변환값과 상기 제1최저자리값을 곱한 값이 상기 데이터에서 선택된 상기 정수의 제곱값을 감산한 값의 소수점이하 두자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 상기 제1최저자리값을 상기 제곱근의 소수점이하 첫째자리값으로 하고,
    상기 연산부는 상기 정수산출부 및 상기 변환부에 대한 연산처리를 수행하며, 상기 정수산출부에 의해 산출된 상기 정수에 상기 변환부에 의한 상기 첫째자리값을 가산하여 제곱근을 산출하는 것을 특징으로 하는 제곱근기.
  2. 제 1항에 있어서,
    상기 변환부는 상기 제2차변환값에 상기 첫째자리값을 가산한 값을 제3차변환값으로 하고, 상기 제3차변환값을 자리올림하여 자리올림된 값에 임의의 제2최저자리값을 가산한 값을 제4차변환값으로 하며, 상기 제4차변환값과 상기 제2최저자리값을 곱한 값이 상기 데이터에서 선택된 상기 정수의 제곱값, 및 상기 제2차변환값과 상기 제1최저자리값을 곱한 값을 감산한 값의 소수점이하 네자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 상기 제2최저자리값을 상기 제곱근의 소수점이하 둘째자리값으로 하는 것을 특징으로 하는 제곱근기.
  3. 제 2항에 있어서,
    상기 변환부는 상기 제(2n)차변환값에 n째자리값을 가산한 값을 제(2n+1)차변환값으로 하며, 상기 제(2n+1)차변환값을 자리올림하여 자리올림된 값에 임의의 제(n+1)최저자리값을 가산한 값을 제2(n+1)차변환값으로 하며, 상기 제2(n+1)차변환값과 상기 제(n+1)최저자리값을 곱한 값이 상기 데이터에서 선택된 상기 정수의 제곱값 및을 감산한 값의 소수점이하 2(n+1) 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 상기 제(n+1)최저자리값을 상기 제곱근의 소수점이하 (n+1)자리값으로 하는 것을 특징으로 하는 제곱근기 (여기서, n= 1, 2, 3, ... , n).
  4. 입력되는 이진수데이터에 대한 제곱근을 산출하는 이진수제곱근기에 있어서,
    임의의 이진수를 제곱한 값이 상기 이진수데이터보다 작은 이진수들의 집합 중에서 가장 큰 이진수를 선택하는 정수산출부;
    상기 정수산출부에 의해 선택된 상기 이진수를 상기 제곱근을 구하기 위해 변환시키는 변환부; 및
    상기 데이터와 상기 변환부에 의해 변환된 값에 기초하여 상기 제곱근을 연산하는 연산부;를 포함하며,
    상기 변환부는 상기 정수산출부에 의해 선택된 이진수를 두배하여 제1차변환값을 산출하고, 상기 제1차변환값을 자리올림하여 자리올림된 값에 임의의 제1최저자리값을 가산한 값을 제2차변환값으로 하며, 상기 제2차변환값과 상기 제1최저자리값을 곱한 값이 상기 데이터에서 선택된 상기 이진수의 제곱값을 감산한 값의 소수점이하 두자리 내의 수보다 작은 수 중에서 가장 큰 수가 되도록 하는 상기 제1최저자리값을 상기 제곱근의 소수점이하 첫째자리값으로 하고,
    상기 연산부는 상기 정수산출부 및 상기 변환부에 대한 연산처리를 수행하며, 상기 정수산출부에 의해 산출된 상기 이진수에 상기 변환부에 의한 상기 첫째자리값을 가산하여 제곱근을 산출하는 것을 특징으로 하는 이진수제곱근기.
  5. 제 4항에 있어서,
    상기 정수산출부는 적어도 1 이상의 이진수를 선택하는 것을 특징으로 하는 이진수제곱근기.
KR10-2002-0007753A 2002-02-09 2002-02-09 오차를 최소화할 수 있는 제곱근기 KR100402799B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2002-0007753A KR100402799B1 (ko) 2002-02-09 2002-02-09 오차를 최소화할 수 있는 제곱근기
CNB031017266A CN1205583C (zh) 2002-02-09 2003-01-21 可以减小误差的平方根计算器
US10/359,539 US7152088B2 (en) 2002-02-09 2003-02-07 SQRT calculator capable of reducing error

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0007753A KR100402799B1 (ko) 2002-02-09 2002-02-09 오차를 최소화할 수 있는 제곱근기

Publications (2)

Publication Number Publication Date
KR20030067982A true KR20030067982A (ko) 2003-08-19
KR100402799B1 KR100402799B1 (ko) 2003-10-22

Family

ID=27656435

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0007753A KR100402799B1 (ko) 2002-02-09 2002-02-09 오차를 최소화할 수 있는 제곱근기

Country Status (3)

Country Link
US (1) US7152088B2 (ko)
KR (1) KR100402799B1 (ko)
CN (1) CN1205583C (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040001054A (ko) * 2002-06-26 2004-01-07 칩스브레인(주) 세 제곱근기
CN112152590A (zh) * 2020-08-26 2020-12-29 西安航天精密机电研究所 一种适用于带fpu模块cpu的数字滤波方法及滤波器

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070106719A1 (en) * 2005-11-08 2007-05-10 Lexmark International, Inc. Integer square root algorithm for use in digital image processing
KR100930182B1 (ko) * 2007-09-21 2009-12-07 삼성전기주식회사 제곱근 계산 장치
KR101566008B1 (ko) 2013-12-30 2015-11-05 건국대학교 산학협력단 산술 장치 및 방법
CN108319447A (zh) * 2018-01-22 2018-07-24 成都锐成芯微科技股份有限公司 便于硬件实现的开平方算法
US20210049726A1 (en) * 2019-08-14 2021-02-18 The Action Network, Inc. System, method, and platform for generating real-time portfolio expected value

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4298951A (en) * 1979-11-30 1981-11-03 Bunker Ramo Corporation Nth Root processing apparatus
JPS62182841A (ja) * 1985-09-30 1987-08-11 Yaskawa Electric Mfg Co Ltd 平方根演算方式
DE68928376T2 (de) * 1988-11-04 1998-04-02 Hitachi Eng Co Ltd Vorrichtung zum multiplizieren, teilen und ziehen der quadratwurzel
JPH06187132A (ja) * 1992-12-17 1994-07-08 Matsushita Electric Ind Co Ltd 開平演算装置
US5537345A (en) * 1993-10-14 1996-07-16 Matsushita Electrical Industrial Co. Ltd. Mathematical function processor utilizing table information
KR19990009212A (ko) * 1997-07-08 1999-02-05 김영환 제곱근 근사화 방법
US6115733A (en) * 1997-10-23 2000-09-05 Advanced Micro Devices, Inc. Method and apparatus for calculating reciprocals and reciprocal square roots
US6163791A (en) * 1998-02-02 2000-12-19 International Business Machines Corporation High accuracy estimates of elementary functions

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040001054A (ko) * 2002-06-26 2004-01-07 칩스브레인(주) 세 제곱근기
CN112152590A (zh) * 2020-08-26 2020-12-29 西安航天精密机电研究所 一种适用于带fpu模块cpu的数字滤波方法及滤波器
CN112152590B (zh) * 2020-08-26 2023-08-04 西安航天精密机电研究所 一种适用于带fpu模块cpu的数字滤波方法及滤波器

Also Published As

Publication number Publication date
CN1205583C (zh) 2005-06-08
KR100402799B1 (ko) 2003-10-22
US20030167290A1 (en) 2003-09-04
CN1437155A (zh) 2003-08-20
US7152088B2 (en) 2006-12-19

Similar Documents

Publication Publication Date Title
Jeannerod et al. On relative errors of floating-point operations: optimal bounds and applications
EP0149248B1 (en) Method and apparatus for division using interpolation approximation
KR100756137B1 (ko) 제산 및 제곱근 연산 유닛
US20040098440A1 (en) Multiplication of multi-precision numbers having a size of a power of two
KR920010183B1 (ko) Rom테이블을 갖춘 역수연산회로
CN111488133B (zh) 高基数近似布斯编码方法和混合基数布斯编码近似乘法器
CN110852434A (zh) 基于低精度浮点数的cnn量化方法、前向计算方法及装置
JP2557193B2 (ja) 浮動小数点計算の実行方法及び浮動小数点ユニット
CN109634558A (zh) 可编程的混合精度运算单元
KR100402799B1 (ko) 오차를 최소화할 수 있는 제곱근기
JPH09325955A (ja) 二乗和の平方根演算回路
US7366745B1 (en) High-speed function approximation
US7197526B1 (en) Method and apparatus for calculating the remainder of a modulo division
US5886911A (en) Fast calculation method and its hardware apparatus using a linear interpolation operation
Hertz et al. Parabolic synthesis methodology implemented on the sine function
JP6863907B2 (ja) 演算回路
KR19980032055A (ko) 제산장치
KR100506470B1 (ko) 평방근의 역수 계산 방법, 계산 회로, 및 기록매체
Borchers et al. Package ‘numbers’
US20080021947A1 (en) Triple-base number digital signal and numerical processing system
Hagglund et al. A polynomial-based division algorithm
Pitchika et al. Fast Base Extension using Single Redundant Modulus in a Residue Number System
JPS6155691B2 (ko)
JP2508286B2 (ja) 平方根演算装置
KR940008610B1 (ko) 고속 수렴 인자 결정 방법 및 프로세서

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110929

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20120927

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee