@setFloatMode
@setFloatMode
도입
현재 스코프에서 부동소수점 연산이 어떻게 처리될지에 대한 규칙을 바꿔요.
본문
@setFloatMode(comptime mode: FloatMode) void
현재 스코프에서 부동소수점 연산이 정의되는 방식에 대한 규칙을 바꿔요.
-
.strict(기본값) - 부동소수점 연산은 엄격한 IEEE 규정을 따릅니다. -
.optimized- 부동소수점 연산은 다음의 모든 작업을 수행할 수 있습니다:- 인자와 결과가 NaN이 아니라고 가정합니다. 최적화는 NaN에 대해 합법적인 동작을 유지해야 하지만, 결과의 값은 정의되지 않습니다.
- 인자와 결과가 +/-Inf가 아니라고 가정합니다. 최적화는 +/-Inf에 대해 합법적인 동작을 유지해야 하지만, 결과의 값은 정의되지 않습니다.
- 0인 인자나 결과의 부호를 무시합니다.
- 나눗셈을 수행하지 않고 인자의 역수를 사용합니다.
- 부동소수점 수축(contraction)을 수행합니다 (예: 곱셈 후 덧셈을 fused multiply-add로 융합).
- 부동소수점에서 결과를 바꿀 수 있는 대수적으로 동등한 변환을 수행합니다 (예: 재결합).
이는 GCC의
-ffast-math와 동등합니다.
부동소수점 모드는 자식 스코프에 상속되고, 어떤 스코프에서든 재정의할 수 있어요. struct나 모듈 스코프에서 comptime 블록을 사용해 부동소수점 모드를 설정할 수 있어요.
FloatMode는 @import("std").lang.FloatMode로 찾을 수 있어요.
See also: