| |||
| Home > 컴파일러 명령 행 옵션 > 명령 행 옵션 > --fpmode=model | |||
이 옵션은 부동 소수점 규칙을 지정하고 라이브러리 속성 및 부동 소수점 최적화를 설정합니다.
--fpmode=model
여기서 은 다음
중 하나입니다.model
ieee_fullIEEE 표준이 보장하는 모든 기능 작업 및 표현이 단정밀도와 배정밀도로 제공됩니다. 런타임에 연산 모드를 동적으로 선택할 수 있습니다.
다음과 같은 기호를 정의합니다.
__FP_IEEE __FP_FENV_EXCEPTIONS __FP_FENV_ROUNDING __FP_INEXACT_EXCEPTION
ieee_fixed가장 가까운 수로 반올림되며 부정확한 예외가 생성되지 않는 IEEE 표준입니다.
다음과 같은 기호를 정의합니다.
__FP_IEEE __FP_FENV_EXCEPTIONS
ieee_no_fenv가장 가까운 수로 반올림되며 예외가 생성되지 않는 IEEE 표준입니다. 이 모드는 상태를 저장하지 않으며 Java 부동 소수점 산술 모델과 호환됩니다.
기호 __FP_IEEE를 정의합니다.
stdIEEE 유한 값은 비정규 flush-to-zero, 가장 가까운 수로 반올림 및 예외 없음을 지원합니다. 표준 C 및 C++과 호환되며 기본 옵션입니다.
기본 유한 값은 IEEE 표준에서 예고한 값입니다. 그러나 다음 사항에 유의해야 합니다.
IEEE 모델에서 정의한 모든 환경에서 NaN 및 무한대가 생성되지 않을 수 있습니다. 생성되었을 경우 동일한 부호를 갖지 않을 수도 있습니다.
부호 0은 IEEE 모델에서 예고한 것과 다를 수 있습니다.
fast정확도가
조금 낮아지는 반면 성능을 크게 향상시킬 수 있는 보다 적극적인 부동 소수점 최적화를 수행합니다. 이 옵션은 __FP_FAST 기호를
정의합니다.
이 옵션을 사용하면 ISO C 및 C++ 표준과 부분적으로만 호환되는 동작이 발생하지만 강력한 수치 제어 부동 소수점 프로그램은 올바르게 작동합니다.
다음과 같은 여러 변환이 수행될 수 있습니다.
모든 부동 소수점 인수를 정확히 단정밀도 값으로 나타낼 수 있는 경우 배정밀도 수학 함수가 단정밀도 수학 함수로 변환될 수 있으며 그 결과는 즉시 단정밀도 값으로 변환됩니다.
예를 들어 선택한 라이브러리가 rvct 또는 aeabi_glibc인
경우와 같이 선택한 라이브러리에 함수와 같은 단정밀도가 포함되는 경우에만 이 변환이 수행됩니다.
예를 들면 다음과 같습니다.
float f(float a)
{
return sqrt(a);
}
위 옵션이 다음과 같이 변환됩니다.
float f(float a)
{
return sqrtf(a);
}.
단정밀도로 축소된 배정밀도 부동 소수점 식을 단정밀도로 계산하는 것이 유용한 경우에는
그렇게 계산됩니다. 예를 들어 float y = (float)(x
+ 1.0)은 float y = (float)x
+ 1.0f로 평가됩니다.
부동 소수점 상수로 나누기는 역수로 곱하기로 바뀝니다. 예를 들어 x
/ 3.0은 x * (1.0 / 3.0)으로 평가됩니다.
수학 함수가 호출된 후에는 errno의 값이 ISO
C 또는 C++ 표준과 호환되지 않을 수 있습니다. 이 옵션은 컴파일러에서 sqrt() 또는 sqrtf()를
호출하는 대신 VFP 제곱근 명령어를 인라인하도록 합니다.
VFP를 사용하기 위해 초기화 코드가 필요할 수 있습니다. 자세한 내용은 컴파일러 사용 설명서에서 5-36페이지의 VFP 지원을 참조하십시오.