math.h 를 구현한 소스 코드

익명 사용자의 이미지

지난번 cibrran 님이었나... 추천해 주셨던 http//www.tek-tips.com
에 가서 안되는 영어로 좀 활동을 했더랍니다. (제 아이디는 greatkingrat
입니다. ) 거기서 느낀 건 거기에서 답변해주는 프로그래머들 중에도 지존
프로그래머는 별로 없다... (당연한가.) 저도 몇군데 포럼에서는
This Forum's Top Experts 중 한사람으로 올라가더랍니다... 한 몇일
하다가, 요즘은 답변하는 게 (게다가 영어로) 별로 쉬운일도 아니고 시간도
꽤 뺐겨서, 별로 글 안올리고 있죠.

하여간 말하려는 게 이게 아니라, math.h 구현 소스 코드입니다. 물론
FPU 를 이용하지 않는 소스죠. 이걸 못찾아서 거기다 질문 올렸다가 결국은
제가 찾았죠. 거기에도 몇사람 URL 을 올려달라고 관심을 보이길래, 혹시
여기에도 관심있는 분 안계실까 해서 올려 봅니다.

http//www.netlib.org/cephes/

혹시 관심있는 분들은 보세요. 이 소스는 제가 팜오에스에 소스를 포팅할 일이
있어서 코드 워리어 사기는 그렇고해서 PRC 툴을 다운 받았습니다. (코드 워리어도
팜오에스에 실수 연산을 잘 지원 못한다는 걸 읽었습니다. ) 그런데, 거기있는
math.h 는 double cos( double ) 이 아니라, float cos( float )
등과 같더군요. 이건 제가 포팅할 소스에는 치명적인 일이기 때문에 뭔가 해결책이
필요했죠. 저 나름대로 고민을 많이 해서 찾아낸 소스가 바로 위에 있는
사이트입니다. 여러 키워드로 찾아도 원하는 소스가 안나오길래, FPU 에뮬레이터
소스를 역어셈블해서 C 로 변환하려고 생각까지 했지만, 그건 너무 시간을 잡아먹을
것 같더구만요.

제 해결책은 다음과 같았습니다. 일단 PRC 툴 소스를 다운 받았습니다.
그리고, 거기서 math 라이브러리를 지원하기 위한 소스는
'Cephes Math Library' 라는 걸 이용했다는 것을 알아냈습니다. 인터넷 검색을
위한 키워드를 찾은거죠.

위 사이트에서 *.shar 파일을 다운 받으셔야 됩니다. 유닉스 sh 명령어가
있어야 *.shar 에서 소스코드를 뽑아낼 수 있습니다. 윈도우즈를 쓰신다면
cygnus-win32 를 이용하시면 되겠습니다.

정확도 테스트를 완전히 하진 못했지만, 코사인 함수에 대한 테스트는
성공적이었습니다. cephes 라이브러리 함수와 표준 math.h 함수에 대한
결과가 완전히 일치한다는 것을 확인했거든요. 저는 Cygnus-win32
에서 테스트 했고, 다른 컴파일러(MS컴파일러 등)에서는 약간의 소스 수정이
필요할 것으로 봅니다.

이 라이브러리의 단정도 실수 버젼이 이미 PRC 툴에 포함되어 있고,
PRC 툴이 팜오에스 개발자에게 공식적으로 배포되고 있기 때문에, 제가
찾은 라이브러리가 쓸만하지 않은가 생각합니다.