상세 컨텐츠

본문 제목

BigFloat로 Pi를 구해보자-0. 시작하며

프로그래밍/Multi precision

by ∫2tdt=t²+c 2012. 10. 16. 00:43

본문


오랜만에 프로그래밍 글을 쓰네요~!

예전에 BigInt를 구현해보는 연재를 잠깐했었는데요, 이번에는 BigInt를 실수범위로 확장시킨것이라고 할 수 있는 BigFloat, 즉 메모리 용량이 허용하는 내로 무한한 소수점을 표현할 수 있는 자료형을 구현해보려고 합니다.

(이전 연재: 2009/03/29 - [프로그래밍/Multi precision] - BigInteger를 구현해보자 - 1. BigInteger의 개요)


BigInt 구현의 최대떡밥이 팩토리알을 계산하는것이라면, BigFloat의 최대떡밥은 Pi를 계산해내는것입니다. 그래서 이번 연재에서는 BigFloat를 구현하고, 여러가지 수치를 연산하는 방법을 탐구해보고, 궁극적으로는 Pi값을 구해내는것을 목표로 하고 있습니다.


예전에는 부동소수점 방식으로 BigFloat를 구현한 적이 있었는데, 덧셈 뺄셈 연산과정에서 자릿수를 맞추기위해 쉬프트연산이 지나치게 자주 사용되더라구요. 최종적으로는 유효 자리 안에 포함되지 못할 연산인데도, 부동소수점으로 계산해내는것이 매우 비효율적이었습니다. 그래서 고정소수점 방식으로 BigFloat를 짜기로 했습니다. 프로젝트 이름은 RealReal.


효율적인 연산 라이브러리를 찾으신다면 여기서 기웃거릴것이 아니라 GMP(Gnu Multi Precision Library)에 가시는게 좋을거 같구요, 어떻게 구현되는지 수학적인, 프로그래밍적인 트릭이 궁금하신 분들은 열심히 보면 좋을겁니다~~




관련글 더보기

댓글 영역