The improved Goldschmidt floating point reciprocal algorithm

개선한 Goldschmidt 부동소수점 역수 알고리즘

  • 한경헌 (부경대학교 대학원 컴퓨터공학과) ;
  • 최명용 (부경대학교 대학원 컴퓨터공학) ;
  • 김성기 (부경대학교 대학원 컴퓨터공학) ;
  • 조경연 (부경대학교 대학원 컴퓨터공학과)
  • Published : 2004.05.01

Abstract

Goldschmidt 알고리즘에 의한 부동소수점 1.f2의 역수는 q=NK1K2....Kn (Ki=1+Aj, j=2i)이다. 본 논문에서는 N과 A 값을 1.f2의 값에 따라서 선정하고 Aj의 값이 유효자리수의 반이하 값을 가지면 연산을 종료하는 개선된 Goldschmidt 부동소수점 역수 알고리즘을 제안한다. 1.f2가 1.01012보다 작으면 N=2-1.f2, A=1.f2-1로 하며, 1.01012보다 크거나 같으면 N=2-0.lf2, A=1-0.lf2로 한다. 한편 Goldschmidt 알고리즘은 곱셈을 반복해서 수행하므로 계산 오류가 누적이 된다. 이러한 누적 오류를 감안하면 배정도실수 역수에서는 2-57, 단정도실수 역수에서는 2-28의 유효자리수까지 연산해야 한다. 따라서 Aj가 배정도실수 역수에서는 2-29, 단정도실수 역수에서는 2-14 보다 작아지면 연산을 종료한다. 본 논문에서 제안한 개선한 Goldschmidt 역수 알고리즘은 N=2-0.1f2, A=1-0.lf2로 계산하는 종래 알고리즘과 비교하여 곱셈 연산 회수가 배정도실수 역수는 22%, 단정도실수 역수는 29% 감소하였다. 본 논문의 연구 결과는 테이블을 사용하는 Goldschmidt 역수 알고리즘에 적용해서 연산 시간을 줄일 수 있다.

Keywords