더북(TheBook)

요즘은 수학 함수의 구현 품질과 성능은 물론 정밀도도 잘 제어해야 한다. 표 8-3의 함수들은 수학을 좀 아는 프로그래머라면 누구나 구현할 수 있겠지만 기존에 제공되는 함수와 똑같은 것을 직접 만드는 것은 바람직하지 않다. 상당수는 C 함수로만 구현된 것이 아니라 프로세서에 종속적인 인스트럭션을 사용하고 있다. 가령 프로세서에서 sqrtsin 함수의 근사치를 빠르게 구하는 기능을 제공할 수도 있고, 저수준 인스트럭션에서 부동 소수점 곱셈 덧셈(floating-point multiply add)(fma)을 제공할 수도 있다. 특히 부동 소수점 내부를 검사하거나 수정하는 모든 함수(가령 carg, creal, fabs, frexp, ldexp, llround, lround, nearbyint, rint, round, scalbn, trunc)에서 이런 저수준 인스트럭션을 사용하고 있을 가능성이 매우 높다. 따라서 이런 함수를 대체하거나 새로 구현하는 것은 그리 좋은 생각은 아니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.