KR100974190B1 - 부동 소수점을 이용한 복소수 곱셈방법 - Google Patents

부동 소수점을 이용한 복소수 곱셈방법 Download PDF

Info

Publication number
KR100974190B1
KR100974190B1 KR1020080130221A KR20080130221A KR100974190B1 KR 100974190 B1 KR100974190 B1 KR 100974190B1 KR 1020080130221 A KR1020080130221 A KR 1020080130221A KR 20080130221 A KR20080130221 A KR 20080130221A KR 100974190 B1 KR100974190 B1 KR 100974190B1
Authority
KR
South Korea
Prior art keywords
exponent
significant
sum
complex
complex number
Prior art date
Application number
KR1020080130221A
Other languages
English (en)
Other versions
KR20100071487A (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 KR1020080130221A priority Critical patent/KR100974190B1/ko
Publication of KR20100071487A publication Critical patent/KR20100071487A/ko
Application granted granted Critical
Publication of KR100974190B1 publication Critical patent/KR100974190B1/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/4806Computations with complex numbers
    • G06F7/4812Complex multiplication
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying

Landscapes

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

Abstract

본 발명은 부동 소수점을 이용한 복소수 곱셈 기술에 관한 것으로, 특히 복소수 곱셈을 위해 이루어지는 일련의 부동 소수점 연산에 있어서 각 연산 단계 사이의 출력값과 입력값을 정규화하는 대신 연속 처리되는 다음 연산을 위한 정보를 미리 산출하고 각 연산 단계에서 미리 산출된 연산 정보에 따라 연산이 이루어지는 부동 소수점을 이용한 복소수 곱셈 기술에 관한 것이다. 본 발명에 따르면 DSP 연산에 많이 사용되는 복소수 곱셈 연산을 빠르고 효율적으로 처리할 수 있으며, 특히 OFDM 방식 등의 복소수 연산량이 많은 통신 환경에서 다량의 복소수 곱셈을 신속히 처리하여 원활한 통신 환경을 제공하는 효과가 있다. 또한, 칩 구현에 따른 면적을 크게 줄일 수 있으며, 부동 소수점 연산에 수반되는 오차의 크기를 줄임으로써 높은 정확도로 복소수 곱셈 연산이 이루어지는 효과가 있다.
부동 소수점, 복소수, 곱셈, DSP

Description

부동 소수점을 이용한 복소수 곱셈방법{COMPLEX NUMBER MULTIPLYING METHOD USING FLOATING POINT}
본 발명은 부동 소수점을 이용한 복소수 곱셈 기술에 관한 것으로, 특히 복소수 곱셈을 위해 이루어지는 일련의 부동 소수점 연산에 있어서 각 연산 단계 사이의 출력값과 입력값을 정규화하는 대신 연속 처리되는 다음 연산을 위한 정보를 미리 산출하고 각 연산 단계에서 미리 산출된 연산 정보에 따라 연산이 이루어지는 부동 소수점을 이용한 복소수 곱셈 기술에 관한 것이다.
실수 연산을 CPU에서 보다 효율적으로 처리하기 위해서 부동 소수점(fp : floating point) 방식이 널리 사용된다.
부동 소수점 방식은 실수를 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 표기하는 방식으로, 부호를 나타내는 부호부(sign), 소수점의 위치를 나타내는 지수부(exponent), 유효숫자를 나타내는 유효숫자부(mantissa)로 나누어 표기된다.
2진수로 표기된 부동 소수점 방식은 다음과 같은 [수학식 1]의 형태를 나타낸다.
[수학식 1]
(-1)s × 1.M(2) × 2E-bias
이때, S는 부호부, M은 유효숫자부, E는 지수부, bias는 2(지수부의 비트열 크기-1)-1을 의미한다.
비트열의 크기에 따라 다양한 형태의 부동 소수점 방식이 있으며, 부동 소수점 방식은 대부분 IEEE-754 표준을 따른다. 32비트 단정밀도(single precision)의 경우 부호부 1비트, 지수부 8비트, 유효숫자부 23비트를 사용하며, 64비트 배정밀도(double precision)의 경우에는 부호부 1비트, 지수부 11비트, 유효숫자부 52비트를 사용한다.
32비트 단정밀도의 경우를 예로 들면, 10진수 -0.75는 2진수 -0.11(2)로 표시할 수 있고 위의 부동 소수점 방식으로 (-1)1 × 1.100...0(2) × 2-1(=126-127)로 나타낼 수 있다.
즉, S=1, M=100...000(2), E=126이므로 이를 다음과 같은 비트열로 표시할 수 있다.
Figure 112008087449183-pat00001
이때, 부호부는 1(2), 지수부는 0111 1110(2), 유효숫자부는 100 0000 0000 0000 0000 0000(2)이다.
또한, 부동 소수점 덧셈을 위해서는 입력된 두 수를 위의 형태로 먼저 정규화한다. 그런 후에 지수부의 값을 비교하여 이에 따라 유효숫자부의 값을 쉬프트시킨 후에 두 수의 덧셈 연산을 진행한다. 그리고, 덧셈 연산이 진행된 후에는 결과값을 다시 부동 소수점 형태에 맞춰주는 정규화 과정을 거치게 된다.
부동 소수점 곱셈의 경우에도 마찬가지로 입력된 두 수를 부동 소수점 양식에 맞추어 먼저 정규화한다. 그런 후에 두 수의 지수부를 더하고 유효숫자부를 곱하여 곱셈이 이루어진다. 이때, 지수부에 포함된 바이어스값의 중복이 발생하고 또한 유효숫자부의 곱셈에 따른 캐리값이 발생할 수 있으므로 이를 감안하여 지수부를 조정해준다.
부동 소수점 곱셈의 경우에도 덧셈과 마찬가지로 결과값을 다시 부동 소수점 형태에 맞추는 정규화 과정이 필요하다.
이때, 각 정규화 과정에서는 유효숫자부를 일정한 비트열 범위로 제한하므로 실제 계산값에 비해 어느정도의 오차가 발생할 수 있다. 따라서, 정규화 과정이 누적될수록 오차가 계속 커지는 문제점이 있다.
이상 설명한 부동 소수점 방식을 사용하여 복소수 연산기를 설계할 경우 실제로는 실수 연산의 조합으로 연산처리가 이루어진다.
즉, 2개의 복소수를 A+Bi, C+Di라 할 때, 두 복소수의 곱셈 결과는 (AC-BD) + (AD+BC)i로 나타난다. 즉, A, B, C, D로 이루어진 4개의 실수에 대하여 곱셈 연산과 뺄셈 연산과 덧셈 연산의 조합으로 복소수 연산처리가 이루어진다.
따라서, 곱셈 연산, 뺄셈 연산, 덧셈 연산의 각 단계마다 연산 전 정규화와 연산 후 정규화가 이루어져야 하며, 특히 복소수 연산량이 많은 통신 환경에서 기존의 실수 연산의 조합으로 이루어진 복소수 연산처리를 반복할 경우 매번 정규화 과정이 발생하므로 연산처리 속도의 저하를 가져오게 된다. 또한, 정규화 과정이 누적될수록 오차도 누적되어 연산 정확도를 떨어뜨리게 되는 문제점이 있다.
본 발명의 목적은 부동 소수점을 이용한 복소수 곱셈을 빠르게 처리할 수 있으며 특히 ODFM 방식과 같이 복소수 연산량이 많은 통신 환경에서 다량의 복소수 곱셈을 신속히 처리할 수 있고 높은 정확도로 연산이 이루어지며 칩 구현에 따른 면적을 줄일 수 있는 복소수 곱셈 기술을 제공하는 것이다.
본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법은, (A) 실수부와 허수부로 구성되고 실수부와 허수부는 각각 부호부, 지수부, 유효숫자부를 포함하는 부동 소수점 비트열 형태인 2개의 복소수(이하, '제 1 복소수', '제 2 복소수'라 함)를 입력받는 단계; (B) 제 1 복소수의 실수부와 제 2 복소수의 실수부에 대한 각각의 지수부의 합(이하, 'AC 지수합'이라 함)을 구하고, 제 1 복소수의 허수부와 제 2 복소수의 허수부에 대한 각각의 지수부의 합(이하, 'BD 지수합'이라 함)을 구한 후 두 합의 차의 절대값(이하, '실수부 지수차'라 함)을 산출하는 단계; (C) 제 1 복소수의 실수부와 제 2 복소수의 실수부에 대한 각각의 유효숫자부의 곱(이하, 'AC 유효숫자곱'이라 함)을 구하고, 제 1 복소수의 허수부와 제 2 복소수의 허수부에 대한 각각의 유효숫자부의 곱(이하, 'BD 유효숫자곱'이라 함)을 구하는 단계; (D) AC 유효숫자곱과 BD 유효숫자곱 중 지수부의 합이 작은 값을 실수부 지수차만큼 오른쪽으로 쉬프트시킨 후 두 값의 차를 산출하고 이를 복소수 곱셈 결과값 중 실수부의 유효숫자부로 설정하여 출력하는 단계; 및 (E) AC 지수합과 BD 지수합 중 큰 값에 두 유효숫자곱의 차에 따른 캐리값을 적용하고 바이어스값을 뺀 후 복소수 곱셈 결과값 중 실수부의 지수부로 설정하여 출력하는 단계;를 포함하여 구성된다.
또한, 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법에서 (B) 단계는 제 1 복소수의 실수부와 제 2 복소수의 허수부에 대한 각각의 지수부의 합(이하, 'AD 지수합'이라 함)을 구하고, 제 1 복소수의 허수부와 제 2 복소수의 실수부에 대한 각각의 지수부의 합(이하, 'BC 지수합'이라 함)을 구한 후 두 합의 차의 절대값(이하, '허수부 지수차'라 함)를 산출하는 단계;를 더 포함하고, (C) 단계는 제 1 복소수의 실수부와 제 2 복소수의 허수부에 대한 각각의 유효숫자부의 곱(이하, 'AD 유효숫자곱'이라 함)을 구하고, 제 1 복소수의 허수부와 제 2 복소수의 실수부에 대한 각각의 유효숫자부의 곱(이하, 'BC 유효숫자곱'이라 함)을 구하는 단계;를 더 포함하고, (D) 단계는 AD 유효숫자곱과 BC 유효숫자곱 중 지수부의 합이 작은 값을 허수부 지수차만큼 오른쪽으로 쉬프트시킨 후 두 값의 합을 산출하고 이를 복소수 곱셈 결과값 중 허수부의 유효숫자부로 설정하여 출력하는 단계;를 더 포함하고, (E) 단계는 AD 지수합과 BC 지수합 중 큰 값에 두 유효숫자곱의 합에 따른 캐리값을 적용하고 바이어스값을 뺀 후 복소수 곱셈 결과값 중 허수부의 지수부로 설정하여 출력하는 단계;를 더 포함하여 구성되는 것이 바람직하다.
또한, 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법에서 (D) 단계는, AC 유효숫자곱과 BD 유효숫자곱의 차를 일정 비트열 길이로 라운딩한 후 이를 결과값의 실수부의 유효숫자부로 설정하는 단계; 및 AD 유효숫자곱과 BC 유효숫자 곱의 합을 일정 비트열 길이로 라운딩한 후 이를 결과값의 허수부의 유효숫자부로 설정하는 단계;를 포함하여 구성된 것이 바람직하다.
또한, 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법 (B) 단계는, 제 1 복소수의 실수부, 제 1 복소수의 허수부, 제 2 복소수의 실수부, 제 2 복소수의 허수부에 대한 각각의 유효숫자부를 구성하는 비트열에 1비트를 추가하고 각각의 히든 비트를 추가 비트에 복원하는 단계;를 더 포함하여 구성되는 것이 바람직하다.
본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법은, (A) 부호부, 지수부, 유효숫자부를 포함하는 4개의 부동 소수점 비트열을 입력받는 단계; (B) 부동 소수점 비트열 중 2개 비트열(이하, '1 그룹'이라 함)의 지수부의 합을 구하고 나머지 2개 비트열(이하, '2 그룹'이라 함)의 지수부의 합을 구한 후 두 합의 차(이하, '지수차'라 함)를 산출하는 단계; (C) 1 그룹에 속한 2개 비트열의 유효숫자부의 곱을 구하고, 2 그룹에 속한 2개 비트열의 유효숫자부의 곱을 구하는 단계; (D) 두 곱 중 하나를 지수차만큼 쉬프트시킨 후 두 곱의 합을 산출하고 이를 결과값의 유효숫자부로 설정하여 출력하는 단계; 및 (E) (B) 단계의 두 합 중 큰 값에 두 곱의 합에 따른 캐리값을 적용하고 바이어스값을 뺀 후 결과값의 지수부로 설정하여 출력하는 단계;를 포함하여 구성된다.
또한, 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법에서 (D) 단계는, 두 곱의 합을 일정 비트열 길이로 라운딩한 후 이를 결과값의 유효숫자부로 설정하는 단계;를 포함하여 구성된 것이 바람직하다.
본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법은, (A) 부호부, 지수부, 유효숫자부를 포함하는 4개의 부동 소수점 비트열을 입력받는 단계; (B) 부동 소수점 비트열 중 2개 비트열(이하, '1 그룹'이라 함)의 지수부의 합을 구하고 나머지 2개 비트열(이하, '2 그룹'이라 함)의 지수부의 합을 구한 후 두 합의 차(이하, '지수차'라 함)를 산출하는 단계; (C) 1 그룹에 속한 2개 비트열의 유효숫자부의 곱을 구하고, 2 그룹에 속한 2개 비트열의 유효숫자부의 곱을 구하는 단계; (D) 두 곱 중 하나를 지수차만큼 쉬프트시킨 후 두 곱의 차를 산출하고 이를 결과값의 유효숫자부로 설정하여 출력하는 단계; 및 (E) (B) 단계의 두 합 중 큰 값에 두 곱의 차에 따른 캐리값을 적용하고 바이어스값을 뺀 후 결과값의 지수부로 설정하여 출력하는 단계;를 포함하여 구성된다.
또한, 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법에서 (D) 단계는, 두 곱의 차를 일정 비트열 길이로 라운딩한 후 이를 결과값의 유효숫자부로 설정하는 단계;를 포함하여 구성된 것이 바람직하다.
또한, 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법에서 (B) 단계는 부동 소수점 비트열의 각 유효숫자부에 대하여 1비트를 추가하고 각각의 히든 비트를 추가 비트에 복원하는 단계;를 더 포함하여 구성되는 것이 바람직하다.
본 발명에 따르면 DSP 연산에 많이 사용되는 복소수 곱셈 연산을 빠르고 효율적으로 처리할 수 있으며, 특히 OFDM 방식 등의 복소수 연산량이 많은 통신 환경 에서 다량의 복소수 곱셈을 신속히 처리하여 원활한 통신 환경을 제공하는 효과가 있다.
또한, 칩 구현에 따른 면적을 크게 줄일 수 있으며, 부동 소수점 연산에 수반되는 오차의 크기를 줄임으로써 높은 정확도로 복소수 곱셈 연산이 이루어지는 효과가 있다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
[도 1]은 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법의 개념적인 연산 절차를 나타낸 순서도이다.
본 발명에 따른 복소수 곱셈방법은 전체적으로 4단계를 거쳐 결과가 도출된다. 즉, (1) 연산 전 정규화, (2) 곱셈을 위한 연산 절차, (3) 덧셈과 뺄셈을 위한 연산 절차, (4) 연산 후 정규화를 거쳐 결과가 도출된다. 이상의 과정은 메모리에 저장된 복소수 비트열에 대하여 메인 프로세서와 연산 프로그램을 통해 소프트웨어적으로 처리할 수도 있고, 논리소자의 조합으로 구성된 하드웨어적인 방식으로 구성하여 보다 빠른 연산처리가 이루어지도록 구현할 수도 있다.
먼저, 2개의 복소수 a+bi, c+di를 입력받는다. 이때, a, b, c, d는 모두 부동 소수점 실수를 나타내는 비트열로 구성된다. 즉, 각 비트열은 일정한 비트열 크기의 부호부, 지수부, 유효숫자부의 조합으로 구성된다.
그리고, 본 발명에서 제시하는 연산 전 정규화에 따라 복소수 곱셈을 위한 준비 과정이 이루어진다. 이때, N 비트 크기의 유효숫자부에 히든비트 1이 복원되므로 각 실수 비트열의 유효숫자부의 크기는 N+1 비트가 된다. 그 밖에도, 이후의 연산을 위한 값들이 산출되는데 이에 대해서는 [도 3]과 [도 4]를 통해 보다 자세히 설명하기로 한다.
a, b, c, d에 대한 연산 전 정규화 과정이 끝나면 곱셈 연산에 따라 ac, bd, ad, bc가 산출된다. 따라서, N+1 비트의 유효숫자부 사이의 곱셈이 이루어지므로 곱셈 결과는 2*(N+1) 비트가 된다. 이때, 곱셈 결과를 따로 정규화하는 과정을 거치지 않으므로 외부 출력가능한 형태의 곱셈 결과라기보다는 이후 연산 과정을 위한 중간 결과값이라고 볼 수 있다.
곱셈 연산이 끝나면, 실수부를 얻기 위한 뺄셈 연산을 통해 ac-bd가 산출되고 허수부를 얻기 위한 덧셈 연산을 통해 ad+bc가 산출된다. 뺄셈 연산과 덧셈 연산은 처리 방식이 서로 유사하며, 덧셈 연산의 경우에는 캐리(carry)가 발생할 수 있으므로 유효숫자부의 크기는 2*(N+1)+1 비트가 된다.
이때, 뺄셈 연산과 덧셈 연산이 이루어지기 전에 앞서 연산 전 정규화 과정에서 산출된 값을 사용하여 쉬프트 연산이 이루어지는데 이에 대해서는 이후 [도 3]과 [도 4]를 통해 보다 자세히 설명하기로 한다.
마지막으로 연산 후 정규화를 통해 ac-bd와 ad+bc를 이루는 비트열을 각각 부동 소수점 형태로 맞추어준다. 즉, 2*(N+1)+1 비트 크기의 유효숫자부를 N 비트 크기로 맞춰주는 라운딩처리가 이루어진다.
또한, 앞서 연산 전 정규화 과정을 통해 산출된 값과 이후 연산과정을 통한 결과값을 통해 부호부와 지수부가 결정된다.
이상의 과정을 거쳐 a+bi와 b+di의 곱셈 결과인 (ac-bd)+(ad+bc)i가 산출되며, ac-bd와 ad+bc는 각각 부동 소수점 형태의 비트열로 표현된다. 필요에 따라 곱셈 결과 중 실수부인 ac-bd만을 얻도록 구현할 수도 있으며 또는 허수부인 ad+bc만을 얻도록 구현할 수도 있다.
[도 2]는 [도 1]에서 연산 단계에 따른 유효숫자의 비트 변화를 나타낸 도면이다.
입력된 부동 소수점 비트열은 부호부, 지수부, 유효숫자부로 구성된다. 이때, 부호부는 음수, 양수를 나타내며, 지수부는 바이어스값을 적용한 지수를 나타낸다. 그리고, 유효숫자부에는 소수점 앞의 히든비트값 1을 제외한 소수점 아래의 이진수 값들로 구성되며 N 비트 크기로 제한되어 있다.
곱셈 연산을 하기 전에 우선 히든비트 1을 복원하여 유효숫자값의 맨 앞에 배치한다. 따라서, 유효숫자부는 N+1 비트 크기가 된다.
그리고, 2개의 N+1 비트 크기의 유효숫자부의 곱셈 연산을 수행하여 2*(N+1) 비트 크기의 비트열이 얻어진다.
이후, 다른 2*(N+1) 비트 크기의 비트열과 덧셈을 수행하며, 덧셈결과 자리올림이 발생할 수 있으므로 1비트의 캐리 비트를 더 추가하여 2*(N+1)+1 비트 크기의 비트열이 얻어진다.
현재, 곱셈과 덧셈이 모두 이루어진 상태에서 유효숫자부의 비트열 크기가 2*(N+1)+1 비트이므로 이를 N 비트로 맞춰주는 연산 후 정규화 과정이 필요하다. 이 과정에서 캐리값이 지수부에 반영되고 히든비트는 부동 소수점 표시형식에 따라 기재하지 않으며 나머지 비트열에 대한 라운딩 처리를 통해 유효숫자부가 N 비트의 비트열로 유지된다.
라운딩 처리 기법으로는 다양한 방식이 있으며, 많이 쓰이는 방식으로서 round-to-nearest-even 방식이 있다. 예컨대, 유효숫자가 2비트라면 1.00101의 경우 소수점 아래 2비트를 벗어나는 3개의 비트 1,0,1에 대해 마지막 두 비트 0과 1을 OR 연산처리한 값을 앞 비트 1에 더하고 올림이 발생하므로 라운딩 처리값은 1.01이 된다. 또한, 1.00100의 경우에는 마지막 0과 0을 OR 연산처리하면 0이므로 이를 앞 비트에 더해도 올림이 발생하지 않아 라운딩 처리값은 1.00이 된다.
[도 3]은 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법의 실수부 연산 동작 과정을 나타낸 순서도이다.
즉, 입력되는 2개의 복소수가 X=A+Bi이고 Y=C+Di인 경우 실수부인 AC-BD를 산출하는 과정을 기준으로 설명하였으며, 허수부인 AD+BC의 경우에도 뺄셈이 덧셈으로 바뀐 것을 제외하고는 유사한 과정을 거치므로 [도 3]의 과정을 그대로 적용할 수 있다.
먼저, 2개의 복소수를 입력받는다(S10). 이때, 하나의 복소수는 실수부와 허수부로 구성되며, 실수부와 허수부는 각각 부동 소수점 실수 형태의 비트열로 표현된다. 따라서, 하나의 복소수 입력은 2개의 부동 소수점 실수 입력을 의미하며 결 과적으로 2개의 복소수 입력은 4개의 부동 소수점 실수의 입력을 의미한다.
이하, 입력된 복소수를 구별하기 위해서 하나는 X로 부르고 다른 하나는 Y로 부르기로 한다. 또한, 복소수 X의 실수부와 허수부를 각각 A와 B로 부르기로 하고, 복소수 Y의 실수부와 허수부는 각각 C와 D로 부르기로 한다.
그 다음은 연산 전 정규화 과정으로서, A의 지수부와 C의 지수부의 합을 구하고 B의 지수부와 D의 지수부의 합을 구한다(S20). 이하, A의 지수부와 C의 지수부의 합을 'AC 지수합'이라 부르고, B의 지수부와 D의 지수부의 합을 'BD 지수합'이라 부르기로 한다.
그런 후에 연산 전 정규화 과정의 연속으로서 AC 지수합과 BD 지수합 중 큰 값과 작은 값의 차를 산출한다. 이 값은 곱셈 연산 이후의 뺄셈 또는 덧셈 연산에서 쉬프트 처리에 사용되며 이하 (AC 지수합) - (BD 지수합)의 절대값을 '실수부 지수차'라 부르기로 한다.
그 밖에도 연산 전 정규화 과정에서는 A와 C의 곱셈과 B와 D의 곱셈의 부호결정을 위해 각 부호부에 대한 XOR 연산을 미리 해둔다. 또한, A, B, C, D의 유효숫자부를 구성하는 비트열에 1비트를 추가하고 각각의 히든 비트를 추가된 비트에 복원함으로써 이후의 곱셈연산을 위한 준비를 갖춘다.
그 다음으로 곱셈 연산이 이루어진다(S30). 즉, A와 C의 유효숫자부를 곱하고 B와 D의 유효숫자부를 곱한다. 이하, A와 C의 유효숫자부의 곱을 'AC 유효숫자곱'이라 부르고, B와 D의 유효숫자부의 곱을 'BD 유효숫자곱'이라 부르기로 한다. 유효숫자부의 곱셈 연산된 결과에 대해서는 별도의 라운딩 처리를 하지 않고 다음 의 뺄셈 연산으로 전달되므로 보다 오류없이 정밀한 연산이 가능해진다.
그 다음으로 위의 곱셈 연산결과에 대한 뺄셈 연산이 이루어진다. 이때, 뺄셈 연산을 수행하기 전에 먼저 앞서 산출된 '실수부 지수차'를 이용한 쉬프트 연산이 이루어진다(S40). 즉, AC 유효숫자곱과 BD 유효숫자곱 중 지수부의 합이 작은 값을 실수부 지수차만큼 오른쪽으로 쉬프트시킨다.
예컨대, AC 지수합이 BD 지수합보다 2만큼 작다면 AC 유효숫자곱을 2비트만큼 오른쪽으로 쉬프트시킨다. 이후, 상대적으로 2만큼 큰 BD 지수합을 기준으로 최종 연산결과의 지수부가 설정되므로 AC 지수합은 지수부가 2비트만큼 좌측으로 쉬프트된 대신 반대 방향으로 유효숫자곱을 우측으로 2비트만큼 쉬프트시킨 셈이므로 결국 값 자체에는 변화가 없게 된다.
실수부 지수차를 이용한 쉬프트 연산이 이루어진 후에 (AC 유효숫자곱) - (BD 유효숫자곱)을 산출한다. 이때, 소수점 앞의 숫자가 발생하면 이를 캐리값과 히든 비트로 적용하는 반면 유효숫자부에서는 제외하며, 남은 유효숫자부에 대해서는 유효숫자부의 본래 비트 크기에 맞게 라운딩 처리한다(S50).
그리고, 라운딩 처리된 유효숫자부는 최종적인 복소수 곱셈 결과값 중 실수부 연산값의 유효숫자부로 설정되어 출력된다(S60).
또한, 앞서 연산 전 정규화 과정(S20)에서 산출된 AC 지수합과 BD 지수합 중 큰 값을 기준으로 지수부를 설정한다(S70). 이때, 앞서 유효숫자부의 뺄셈 연산(S50)에서 발생한 캐리값을 지수부에 적용하고 바이어스값을 빼서 복소수 곱셈 결과값 중 실수부의 지수부로 설정하여 출력한다.
예컨대, AC 지수합이 BD 지수합보다 2만큼 작고 캐리값이 1만큼 발생하였다면 '(BD 지수합) + (캐리값 1) - 바이어스값(32비트 단정밀도 실수의 경우에는 127)'이 최종 결과값의 지수부가 된다.
이상의 과정은 복소수 곱셈의 실수부를 얻는 과정을 위주로 설명하였으며 허수부를 얻는 과정도 마찬가지 방식을 적용할 수 있다. 즉, 연산 전 정규화 과정에서는 'AD 지수합'과 'BC 지수합'을 구하여 연산이 이루어지며, 유효숫자부의 곱셈연산에 있어서도 'AD 유효숫자곱'과 'BC 유효숫자곱'을 산출하여 연산이 진행된다. 이후 'AD 유효숫자곱'과 'BC 유효숫자곱'에 대한 덧셈이 이루어지는 점이 뺄셈이 이루어지는 실수부 연산과의 차이점이며 그 밖의 처리 과정은 위에 설명한 실수부 연산을 동일하게 적용할 수 있다.
[도 4]는 [도 3]에 따라 복소수 곱셈 중 실수부의 연산이 각 단계별로 이루어지면서 산출되는 실제 결과값을 나타낸 예시도이다.
입력되는 두 복소수는 a+bi와 c+di이며, a, b, c, d는 각각 부호부 1비트, 지수부 6비트, 유효숫자부 13비트로 구성된 총 20비트 크기의 부동 소수점 비트열로 구성되어 있다.
위 4개의 실수를 10진수로 표현했을 때 a = 4, b = 114, c = 1123, d = -257이라고 가정하면, 이를 각각 부동 소수점 비트열로 나타내면 다음과 같다. 부동 소수점 표현 방식에서 소수점 앞의 1은 히든 비트로서 비트열에 표기되지 않음에 유 의한다. 또한, 지수부의 경우에는 지수값에 바이어스값 31 (=26-1)을 더하여 표시된다.
■ a의 비트열 구성 : 4(10) = 100(2) = 1.0000000000000(2) × 22(=33-31)
Figure 112008087449183-pat00002
■ b의 비트열 구성 : 114(10) = 1110010(2) = 1.1100100000000(2) × 26(=37-31)
Figure 112008087449183-pat00003
■ c의 비트열 구성 : 1123(10) = 10001100011(2) = 1.0001100011000(2) × 210(=41-31)
Figure 112008087449183-pat00004
■ d의 비트열 구성 : -257(10) = -100000001(2) = 1.0000000100000(2) × 28(=39-31)
Figure 112008087449183-pat00005
[도 4]에서 부호부 1비트는 0은 양수, 1은 음수를 나타낸다. 또한, 지수부는 실제 지수값에 바이어스(31)을 더한 값이며, 유효숫자부(Mantissa)는 알아보기 쉽게 16진수로 표시되어 있다.
위 값으로 실제 계산한 복소수 곱셈의 실수부는 ac-bd = 4×1123 - 114×(-257) = 4492 - (-29298) = 33790이며, 부동 소수점 연산에 따르면 약간의 오차가 발생한다. 이는 유효숫자부의 비트폭을 13비트로 한정하였기 때문에 라운딩이 발생하여 숫자 2만큼의 오차가 생기는 것이며, 만약 유효숫자부의 비트폭을 14비트로 설정하였다면 오차는 발생하지 않는다.
먼저, 연산 전 정규화 과정에서 a×c와 b×d의 부호가 산출된다. 이는 부호부를 XOR 연산함으로써 얻을 수 있으며 각각 0과 1이 산출되었다.
그리고, 연산 전 정규화 과정에서 a와 c의 지수부의 합을 구하여 74를 얻고 b와 d의 지수부를 더하여 76을 얻었다. 두 값 중에서 큰 값 76은 나중에 결과값의 지수부를 정하는 기준이 된다. 또한, 큰 값에서 작은 값을 빼서 지수차 2를 얻을 수 있으며 나중에 뺄셈에서 쉬프트 연산에 적용한다.
그리고, 연산 전 정규화 과정에서 a, b, c, d 각각의 유효숫자부에 대하여 1 비트씩을 더 추가하여 14비트의 비트열로 만들고 추가된 비트에 히든비트 1을 복원한다. [도 4]에는 히든비트 1이 복원된 14비트의 유효숫자부가 16진수 형태로 표기되어 있다.
이상의 연산 전 정규화 과정이 끝나면, ac와 bd를 얻는 곱셈 연산이 진행된다.
즉, 16진수로 a의 유효숫자부 0×2000과 c의 유효숫자부 0×2318을 곱하여 ac의 유효숫자부 0×4630000이 얻어지며, b의 유효숫자부 0×3900과 d의 유효숫자부 0×2020을 곱하여 bd의 유효숫자부 0×7272000이 얻어진다.
그리고, 곱셈 연산 이후에는 ac-bd를 얻는 뺄셈 연산이 진행된다.
이때, 뺄셈 연산에 앞서 연산 전 정규화 과정에서 구해진 두 지수부의 합의 차를 적용하여 쉬프트 연산이 이루어진다. 즉, a와 c의 지수부의 합이 b와 d의 지수부의 합보다 작으므로 0×4630000를 앞서 구해진 지수차 2비트만큼 우측으로 쉬프트시켜(4로 나누어) 0×118C000를 얻은 후 뺄셈 연산이 이루어진다.
그리고, 앞서 연산 전 정규화 과정에서 a×c의 부호가 양수이고 b×d의 부호가 음수이므로 ac-bd의 뺄셈은 결국 ac의 유효숫자부와 bd의 유효숫자부의 덧셈이 된다.
따라서, 2비트 우측 쉬프트된 ac의 유효숫자부 0×118C000과 bd의 유효숫자부 0×7272000를 더하면 0×83FE000이 얻어진다.
마지막으로 연산 후 정규화 과정을 통해 결과값의 부호부, 지수부, 유효숫자부가 결정된다.
즉, ac-bd는 양수-음수이므로 전체 부호는 양수이므로 부호부를 0으로 설정한다.
또한, 지수부는 앞서 연산 전 정규화 과정에서 얻어진 지수합 중 큰 값이 76을 기준으로 설정되는데, 앞서 뺄셈 과정에서 얻어진 유효숫자부 0×83FE000는 최초의 a, b, c, d에 비해 캐리값이 1비트 발생하므로 이를 지수부에 적용한다.
따라서, 지수값은 76+1-(바이어스)-(바이어스) 이므로 76+1-31-31=15이며, 여기에 바이어스를 더하여 지수부에 기재하므로 15+31=46(=101110(2))을 지수부에 배치한다.
또한, 앞서 유효숫자 연산을 통해 산출된 0×83FE000는 캐리값과 히든 비트를 제외하고 13비트로 라운딩처리하여 0×0100(=0000100000000(2))이 얻어진다.
따라서, 위 과정에 의해 산출된 ac-bd의 부동 소수점 비트열은 다음과 같은 값을 갖는다.
■ ac-bd의 비트열 구성 : 1.0000100000000(2) × 215(=46-31)= 1000010000000000(2)
= 33792(10)
Figure 112008087449183-pat00006
즉, 부동 소수점 연산이므로 실제 연산과 비교할 때 연산 오차가 발생한다. 여기에서는 2 만큼의 연산 오차가 발생했음을 알 수 있다.
하지만, 일반적으로 각 연산단계마다 라운딩처리를 통해 정규화가 이루어지는 방식에 비해서 오류가 누적되지 않으므로 보다 정확한 연산이 이루어질 수 있으며, 연산 단계가 줄어들기 때문에 보다 신속한 복소수 곱셈 연산이 이루어질 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
[도 1]은 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법의 개념적인 연산 절차를 나타낸 순서도,
[도 2]는 [도 1]에서 연산 단계에 따른 유효숫자의 비트 변화를 나타낸 도면,
[도 3]은 본 발명에 따른 부동 소수점을 이용한 복소수 곱셈방법의 실수부 연산 동작 과정을 나타낸 순서도,
[도 4]는 [도 3]에 따라 복소수 곱셈 중 실수부의 연산이 각 단계별로 이루어지면서 산출되는 실제 결과값을 나타낸 예시도이다.

Claims (9)

  1. (A) 실수부와 허수부로 구성되고 상기 실수부와 상기 허수부는 각각 부호부, 지수부, 유효숫자부를 포함하는 부동 소수점 비트열 형태인 2개의 복소수(이하, '제 1 복소수', '제 2 복소수'라 함)를 입력받는 단계;
    (B) 상기 제 1 복소수의 실수부와 상기 제 2 복소수의 실수부에 대한 각각의 지수부의 합(이하, 'AC 지수합'이라 함)을 구하고, 상기 제 1 복소수의 허수부와 상기 제 2 복소수의 허수부에 대한 각각의 지수부의 합(이하, 'BD 지수합'이라 함)을 구한 후 상기 두 합의 차의 절대값(이하, '실수부 지수차'라 함)을 산출하는 단계;
    (C) 상기 제 1 복소수의 실수부와 상기 제 2 복소수의 실수부에 대한 각각의 유효숫자부의 곱(이하, 'AC 유효숫자곱'이라 함)을 구하고, 상기 제 1 복소수의 허수부와 상기 제 2 복소수의 허수부에 대한 각각의 유효숫자부의 곱(이하, 'BD 유효숫자곱'이라 함)을 구하는 단계;
    (D) 상기 AC 유효숫자곱과 상기 BD 유효숫자곱 중 상기 지수부의 합이 작은 값을 상기 실수부 지수차만큼 오른쪽으로 쉬프트시킨 후 상기 두 값의 차를 산출하고 이를 복소수 곱셈 결과값 중 실수부의 유효숫자부로 설정하여 출력하는 단계; 및
    (E) 상기 AC 지수합과 상기 BD 지수합 중 큰 값에 상기 두 유효숫자곱의 차에 따른 캐리값을 적용하고 바이어스값을 뺀 후 복소수 곱셈 결과값 중 실수부의 지수부로 설정하여 출력하는 단계;
    를 포함하여 구성되는 복소수 곱셈방법.
  2. 청구항 1에 있어서,
    상기 복소수 곱셈방법은,
    상기 (B) 단계는 상기 제 1 복소수의 실수부와 상기 제 2 복소수의 허수부에 대한 각각의 지수부의 합(이하, 'AD 지수합'이라 함)을 구하고, 상기 제 1 복소수의 허수부와 상기 제 2 복소수의 실수부에 대한 각각의 지수부의 합(이하, 'BC 지수합'이라 함)을 구한 후 상기 두 합의 차의 절대값(이하, '허수부 지수차'라 함)를 산출하는 단계;를 더 포함하고,
    상기 (C) 단계는 상기 제 1 복소수의 실수부와 상기 제 2 복소수의 허수부에 대한 각각의 유효숫자부의 곱(이하, 'AD 유효숫자곱'이라 함)을 구하고, 상기 제 1 복소수의 허수부와 상기 제 2 복소수의 실수부에 대한 각각의 유효숫자부의 곱(이하, 'BC 유효숫자곱'이라 함)을 구하는 단계;를 더 포함하고,
    상기 (D) 단계는 상기 AD 유효숫자곱과 상기 BC 유효숫자곱 중 상기 지수부의 합이 작은 값을 상기 허수부 지수차만큼 오른쪽으로 쉬프트시킨 후 상기 두 값의 합을 산출하고 이를 복소수 곱셈 결과값 중 허수부의 유효숫자부로 설정하여 출력하는 단계;를 더 포함하고,
    상기 (E) 단계는 상기 AD 지수합과 상기 BC 지수합 중 큰 값에 상기 두 유효숫자곱의 합에 따른 캐리값을 적용하고 바이어스값을 뺀 후 복소수 곱셈 결과값 중 허수부의 지수부로 설정하여 출력하는 단계;
    를 더 포함하여 구성되는 복소수 곱셈방법.
  3. 청구항 2에 있어서,
    상기 (D) 단계는,
    상기 AC 유효숫자곱과 상기 BD 유효숫자곱의 차를 일정 비트열 길이로 라운딩한 후 이를 상기 결과값의 실수부의 유효숫자부로 설정하는 단계; 및
    상기 AD 유효숫자곱과 상기 BC 유효숫자곱의 합을 일정 비트열 길이로 라운딩한 후 이를 상기 결과값의 허수부의 유효숫자부로 설정하는 단계;
    를 포함하여 구성된 것을 특징으로 하는 복소수 곱셈방법.
  4. 청구항 3에 있어서,
    상기 (B) 단계는,
    상기 제 1 복소수의 실수부, 상기 제 1 복소수의 허수부, 상기 제 2 복소수의 실수부, 상기 제 2 복소수의 허수부에 대한 각각의 유효숫자부를 구성하는 비트열에 1비트를 추가하고 각각의 히든 비트를 상기 추가 비트에 복원하는 단계;
    를 더 포함하여 구성되는 복소수 곱셈방법.
  5. (A) 부호부, 지수부, 유효숫자부를 포함하는 4개의 부동 소수점 비트열을 입력받는 단계;
    (B) 상기 부동 소수점 비트열 중 2개 비트열(이하, '1 그룹'이라 함)의 지수부의 합을 구하고 나머지 2개 비트열(이하, '2 그룹'이라 함)의 지수부의 합을 구한 후 상기 두 합의 차(이하, '지수차'라 함)를 산출하는 단계;
    (C) 상기 1 그룹에 속한 2개 비트열의 유효숫자부의 곱을 구하고, 상기 2 그룹에 속한 2개 비트열의 유효숫자부의 곱을 구하는 단계;
    (D) 상기 두 곱 중 하나를 상기 지수차만큼 쉬프트시킨 후 두 곱의 합을 산출하고 이를 결과값의 유효숫자부로 설정하여 출력하는 단계; 및
    (E) 상기 (B) 단계의 두 합 중 큰 값에 상기 두 곱의 합에 따른 캐리값을 적용하고 바이어스값을 뺀 후 결과값의 지수부로 설정하여 출력하는 단계;
    를 포함하여 구성되는 복소수 곱셈 방법.
  6. 청구항 5에 있어서,
    상기 (D) 단계는,
    상기 두 곱의 합을 일정 비트열 길이로 라운딩한 후 이를 상기 결과값의 유효숫자부로 설정하는 단계;
    를 포함하여 구성된 것을 특징으로 하는 복소수 곱셈 방법.
  7. (A) 부호부, 지수부, 유효숫자부를 포함하는 4개의 부동 소수점 비트열을 입력받는 단계;
    (B) 상기 부동 소수점 비트열 중 2개 비트열(이하, '1 그룹'이라 함)의 지수부의 합을 구하고 나머지 2개 비트열(이하, '2 그룹'이라 함)의 지수부의 합을 구한 후 상기 두 합의 차(이하, '지수차'라 함)를 산출하는 단계;
    (C) 상기 1 그룹에 속한 2개 비트열의 유효숫자부의 곱을 구하고, 상기 2 그룹에 속한 2개 비트열의 유효숫자부의 곱을 구하는 단계;
    (D) 상기 두 곱 중 하나를 상기 지수차만큼 쉬프트시킨 후 두 곱의 차를 산출하고 이를 결과값의 유효숫자부로 설정하여 출력하는 단계; 및
    (E) 상기 (B) 단계의 두 합 중 큰 값에 상기 두 곱의 차에 따른 캐리값을 적용하고 바이어스값을 뺀 후 결과값의 지수부로 설정하여 출력하는 단계;
    를 포함하여 구성되는 복소수 곱셈 방법.
  8. 청구항 7에 있어서,
    상기 (D) 단계는,
    상기 두 곱의 차를 일정 비트열 길이로 라운딩한 후 이를 상기 결과값의 유효숫자부로 설정하는 단계;
    를 포함하여 구성된 것을 특징으로 하는 복소수 곱셈 방법.
  9. 청구항 5 내지 청구항 8 중 어느 한 항에 있어서,
    상기 (B) 단계는 상기 부동 소수점 비트열의 각 유효숫자부에 대하여 1비트를 추가하고 각각의 히든 비트를 상기 추가 비트에 복원하는 단계;
    를 더 포함하여 구성되는 복소수 곱셈 방법.
KR1020080130221A 2008-12-19 2008-12-19 부동 소수점을 이용한 복소수 곱셈방법 KR100974190B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080130221A KR100974190B1 (ko) 2008-12-19 2008-12-19 부동 소수점을 이용한 복소수 곱셈방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080130221A KR100974190B1 (ko) 2008-12-19 2008-12-19 부동 소수점을 이용한 복소수 곱셈방법

Publications (2)

Publication Number Publication Date
KR20100071487A KR20100071487A (ko) 2010-06-29
KR100974190B1 true KR100974190B1 (ko) 2010-08-05

Family

ID=42368979

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080130221A KR100974190B1 (ko) 2008-12-19 2008-12-19 부동 소수점을 이용한 복소수 곱셈방법

Country Status (1)

Country Link
KR (1) KR100974190B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317774B (zh) * 2014-10-14 2017-07-04 中国航天科技集团公司第九研究院第七七一研究所 利用处理器浮点单元进行复数乘和蝶形运算的装置和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020004809A1 (en) * 1998-10-12 2002-01-10 Golliver Roger A. Data manipulation instruction for enhancing value and efficiency of complex arithmetic
JP2003016051A (ja) 2001-06-29 2003-01-17 Nec Corp 複素ベクトル演算プロセッサ
KR20080089313A (ko) * 2007-03-30 2008-10-06 인텔 코오퍼레이션 곱셈 기능을 수행하기 위한 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020004809A1 (en) * 1998-10-12 2002-01-10 Golliver Roger A. Data manipulation instruction for enhancing value and efficiency of complex arithmetic
JP2003016051A (ja) 2001-06-29 2003-01-17 Nec Corp 複素ベクトル演算プロセッサ
KR20080089313A (ko) * 2007-03-30 2008-10-06 인텔 코오퍼레이션 곱셈 기능을 수행하기 위한 방법 및 장치

Also Published As

Publication number Publication date
KR20100071487A (ko) 2010-06-29

Similar Documents

Publication Publication Date Title
CN105468331B (zh) 独立的浮点转换单元
JP6360450B2 (ja) 浮動小数点オペランドを乗算するためのデータ処理装置及び方法
US9367287B2 (en) Mixed precision fused multiply-add operator
KR102627299B1 (ko) 부동소수점 곱셈 장치 및 방법
CN107769791B (zh) 用于定点到浮点的转换的装置和方法及2的负幂检测器
US8046399B1 (en) Fused multiply-add rounding and unfused multiply-add rounding in a single multiply-add module
US8812575B2 (en) Decimal floating-point square-root unit using Newton-Raphson iterations
CN107273090A (zh) 面向神经网络处理器的近似浮点乘法器及浮点数乘法
US20060047739A1 (en) Decimal floating-point adder
CN106250098B (zh) 用于在执行浮点运算时控制舍入的装置及方法
US10949168B2 (en) Compressing like-magnitude partial products in multiply accumulation
CN108196822A (zh) 一种双精度浮点开方运算的方法及系统
CN111936965A (zh) 随机舍入逻辑
WO2010138432A1 (en) Integer multiply and multiply-add operations with saturation
CN116643718A (zh) 一种流水线结构的浮点融合乘加装置、方法及处理器
US7752250B2 (en) Rounding floating point division results
GB2265741A (en) Computation of sticky-bit in parallel with multiplication
JP7285966B2 (ja) 多入力浮動小数点加算器
CN108153513B (zh) 前导零预测
Moroz et al. Efficient floating-point division for digital signal processing application [Tips & Tricks]
US6598065B1 (en) Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal
KR100974190B1 (ko) 부동 소수점을 이용한 복소수 곱셈방법
JP6919539B2 (ja) 演算処理装置および演算処理装置の制御方法
JPH04355827A (ja) 開平演算装置
US20160085508A1 (en) Optimized structure for hexadecimal and binary multiplier array

Legal Events

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

Payment date: 20130604

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140609

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160603

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170607

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180625

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190612

Year of fee payment: 10