기본 지수(Default exponents)

기본 지수(Default exponents)

GNU Fortran이 옛 코드와의 호환을 위해 실수 상수에서 기본 지수를 어떻게 다루는지 설명하는 짧은 문서예요. -fdec와 함께 쓸 때 9e 같은 표기가 오류가 아니라 9e0으로 읽히는 걸 보여주죠. 평소에는 볼 일이 없지만, 옛 DEC 계열 코드를 마이그레이션할 때는 꼭 알아두어야 할 규칙이에요.

출처: Default exponents (The GNU Fortran Compiler)

본문

호환성을 위해 GNU Fortran은 -fdec 옵션과 함께 쓰면 실수 상수에서 기본 지수를 0으로 간주해요. 예를 들어 9e라는 상수는 오류를 내는 대신 9e0으로 해석돼요.

! -fdec 옵션과 함께 컴파일했을 때
REAL :: x
x = 9e    ! 9e0 과 같은 의미로 해석돼요

일반적인 Fortran 표기법에서는 9e처럼 지수가 빠진 채 e만 나오면 형식이 잘못된 상수라서 컴파일 오류가 나요. 그런데 DEC 계열 확장 모드인 -fdec가 켜져 있으면, 실수 상수의 지수부가 생략되었을 때 그 지수를 0으로 가정해서 처리하는 거예요. 그래서 9e9e0(즉 값 9.0)으로 읽히는 거죠.

이 동작의 핵심은 '오류로 처리할지, 유효한 상수로 받아들일지'를 옵션 하나로 바꾸는 데 있어요. 레거시 코드를 그대로 컴파일해야 하는 상황이라면 -fdec를 켜서 이런 표기가 프로그램을 막지 않게 할 수 있어요. 다만 이건 표준 Fortran 문법이 아니므로, 새 코드에서는 쓰지 않는 편이 좋아요. 굳이 호환성이 필요하지 않다면 실수 상수에 지수를 명시하는 습관이 안전해요.

-fdec 옵션 하나로 켜지는 확장은 기본 지수만 있는 게 아니에요. DEC 호환을 위한 여러 표기법이 함께 활성화되므로, 옵션 문서에서 전체 목록을 확인한 뒤 쓰는 걸 추천해요.

더 알아보기

  • 기본 지수 확장은 GNU Fortran의 DEC(Digital Equipment Corporation) 계열 확장 기능의 일부예요. -fdec, -fdec-math-fdec* 옵션군을 함께 살펴보면 전체 그림이 보여요.
  • -fdec 모드는 옛 코드에서 흔히 쓰던 여러 편의 표기(예: -fdec-blank-format-item, 특수 상수 표기 등)를 묶어서 켜주는 경우가 많아요. 각 옵션의 의미를 확인하는 걸 추천해요.
  • 표준을 지키는 코드라면 실수 상자에 항상 명시적인 지수를 쓰는 게 좋아요. 호환 모드가 아니라면 9e 같은 표기는 컴파일 오류가 되니까요.
  • 레거시 코드를 포팅할 때는 -fdec 때문에 어떤 표기가 통과됐는지 감각적으로 알 수 있도록, 이 문서와 함께 '확장 기능' 전반 문서를 읽어 두면 도움이 돼요.