Q 지수 문자
Q 지수 문자 (Q exponent-letter)
실수 리터럴 상수에서 지수 문자로 Q를 쓰는 오래된 관례를 GNU Fortran이 어떻게 받아들이는지 설명해요. 이런 코드는 보통 REAL(16)이나 REAL(10) 같은 넓은 배정밀도 실수를 지칭할 때 나와요.
본문
GNU Fortran은 지수 문자가 Q인 실수 리터럴 상수를 받아들여요. 예를 들어 1.23Q45 같은 형태지요. 이 상수는 해당 타깃이 이 타입을 지원하면 REAL(16) 엔티티로 해석돼요. 타깃이 REAL(16)은 지원하지 않지만 REAL(10) 타입이 있다면, 실수 리터럴 상수는 REAL(10) 엔티티로 해석돼요. REAL(16)과 REAL(10)이 모두 없으면 오류가 발생해요.
여기서 중요하게 볼 점은 Q가 단순히 "큰 실수"를 뜻하는 게 아니라, 타깃에서 지원하는 가장 넓은 실수 종류로 차례로 대체된다는 거예요. 즉 REAL(16)을 지원하는 시스템에서는 128비트 실수로, 그렇지 않고 REAL(10)(예를 들어 x86 계열의 80비트 확장 배정밀도)만 있다면 그쪽으로 해석되는 식이에요.
이 확장은 HP 같은 특정 벤더의 전통적인 Fortran 관례에서 온 것이에요. 표준 Fortran에서 지수 문자로는 E와 D가 정의되어 있고, Q는 표준에 없는 확장이에요. 따라서 새로 작성하는 코드에서는 가능하면 표준 형태인 E나 D(또는 REAL(KIND=...) 지정)를 쓰는 것이 이식성 측면에서 안전해요. 다만 이미 Q 지수로 쓰인 오래된 수치 코드를 gfortran으로 컴파일해야 한다면, 이 확장 덕분에 별다른 수정 없이도 넓은 실수로 해석되어 처리된다는 점이 도움이 돼요.
더 알아보기
- Extensions implemented in GNU Fortran — gfortran이 구현한 확장 전체 목록
- BOZ literal constants — BOZ 리터럴 상수 확장
- REAL kind에 대한 추가 설명 — 타깃별 지원 실수 종류