TAKEAWAY 5.65 부동 소수점 연산에 대해서는 결합법칙, 교환법칙, 분배법칙이 성립하지 않는다.
결국 우리가 수학에서 알던 대수 속성은 거의 만족하지 않는다고 할 수 있다. 특히 자릿수가 크게 다른 값끼리 계산할 때 이런 문제가 두드러진다.Exs 18 예를 들어 지수가 –p보다 작은, 아주 조그만 부동 소수점 값 x를 1보다 큰 y에 더하면 결과는 그냥 y가 나온다. 따라서 두 연산의 결과가 서로 같음을 보이려면 좀 더 자세히 살펴봐야 한다. 그런데 이렇게 살펴보는 과정 자체가 최신 연구 주제인 경우가 많다. 따라서 두 값의 동등(equility) 여부를 정확히 알아내기는 힘들고, 결과가 서로 비슷하다고만 말할 수 있다.
TAKEAWAY 5.66 부동 소수점 값끼리는 동등 여부를 비교하지 않는다.
복소수 타입을 표현하는 과정은 간단하다. 부동 소수점 실수 타입 원소 두 개로 구성된 배열과 같고, 복소수의 실수부와 허수부에 접근하도록 tgmath.h 헤더에 두 가지 타입 독립(type-generic) 매크로인 creal과 cimag를 제공한다. 세 가지 복소수 타입 중 하나인 z에 대해 z == creal(z) + cimag(z) * I가 성립한다.11
Exs 18 1.0E-13 + 1.0E-13과 (1.0E-13 + (1.0E-13 + 1.0)) - 1.0의 결과를 출력해 보자.
11 이렇게 함수처럼 생긴 매크로에 대해서는 8.1.2절에서 자세히 소개한다.