@mulAdd — 융합 곱셈-덧셈

@mulAdd — 융합 곱셈-덧셈

실수 연산에서 곱셈과 덧셈을 한 번에 처리하는 내장 함수예요. 반올림이 한 번만 일어나서 더 정확한 결과를 얻을 수 있죠.

출처: Zig Documentation

본문

@mulAdd융합 곱셈-덧셈(fused multiply-add) 내장 함수예요. 이름 그대로 곱셈과 덧셈을 하나로 융합해 계산합니다. 동작은 (a * b) + c와 비슷해요.

@mulAdd(comptime T: type, a: T, b: T, c: T) T

여기서 핵심은 반올림이 한 번만 일어난다는 점이에요. 보통 (a * b) + c처럼 곱셈과 덧셈을 따로 하면, 중간 결과 a * b에서 이미 반올림이 일어나고 덧셈에서 한 번 더 반올림이 일어나죠. 반면 @mulAdd는 곱셈과 덧셈을 하나의 연산으로 묶어서 마지막에 딱 한 번만 반올림하므로, 그만큼 정확도가 높아집니다.

지원하는 타입은 Floats(부동소수점)와, Vectors of floats(부동소수점으로 이루어진 벡터)예요. 벡터를 넣으면 각 요소에 대해 같은 연산이 벡터 형태로 한 번에 적용된답니다.

더 알아보기(Learn more)

  • Floats — 부동소수점 타입에 대한 자세한 설명
  • Vectors — 벡터 타입과 요소별 연산에 대한 자세한 설명