시스템 클래스 COMPLEX — 복소수(complex)
시스템 클래스 COMPLEX — 복소수(complex)
허수부를 가진 수를 다뤄야 할 때가 있죠. Common Lisp은 수학적 복소수를 그대로 표현하는 COMPLEX 타입을 제공합니다. 복소수가 어떻게 표현되고, 타입 지정자(type specifier)로는 어떻게 쓰는지 정리한 페이지예요.
클래스 우선순위 목록
complex, number, t
본문 (Description)
복소수(complex) 타입은 rational 타입에 포함되지 않는 모든 수학적 복소수를 포함합니다. 복소수는 직교 좌표(Cartesian) 형태로 표현되는데, 실수부(real part) 와 허수부(imaginary part) 로 이루어져 있고, 각각은 real 타입이에요.
여기서 꼭 기억할 규칙이 하나 있어요.
- 실수부와 허수부는 둘 다 rational 이거나, 둘 다 같은 float 타입이어야 합니다.
- 허수부는 float 0일 수 있지만, rational 0는 될 수 없어요. 그런 수는 Common Lisp에서 복소수가 아니라 항상 rational로 표현되거든요.
복합 타입 지정자 (Compound Type Specifier)
- Kind: Specializing
- 구문:
complex [typespec | *]
-
인자:
typespec—real타입의 하위 타입을 나타내는 타입 지정자
complex 타입 지정자는 specializing 종류라서, 주어진 typespec의 실수부·허수부 타입을 더 구체화한 복소수 타입을 만듭니다. 복소수의 각 원소는 (upgraded-complex-part-type typespec) 타입이에요.
complex 타입 지정자는 typespec 타입의 수를 complex 함수에 넘겨 얻을 수 있는 복소수 전부를 가리키는데, 같은 특화 표현(specialized representation)을 가진 다른 복소수들까지 포함합니다.
입력 구문과 Notes
복소수의 입력 구문은 실수부 r, 허수부 i에 대해 다음과 같은 형태입니다.
#C(r i)
예를 들어 허수부가 0인 #C(1.0 0.0) 같은 형태로 쓸 수 있죠. 자세한 내용은 Section 2.4 (Standard Macro Characters)에서 다뤄요.
또한 모든 float n에 대해, 같은 수학적 수를 나타내는 복소수가 존재하며 (COERCE n 'COMPLEX)로 얻을 수 있어요.