LISP-숫자

Common Lisp는 여러 종류의 숫자를 정의합니다. 그만큼number 데이터 유형에는 LISP에서 지원하는 다양한 종류의 숫자가 포함됩니다.

LISP에서 지원하는 숫자 유형은 다음과 같습니다.

  • Integers
  • Ratios
  • 부동 소수점 숫자
  • 복소수

다음 다이어그램은 LISP에서 사용할 수있는 숫자 계층 구조와 다양한 숫자 데이터 유형을 보여줍니다.

LISP의 다양한 숫자 유형

다음 표는 LISP에서 사용할 수있는 다양한 숫자 유형 데이터를 설명합니다.

Sr. 아니. 데이터 유형 및 설명
1

fixnum

이 데이터 유형은 너무 크지 않고 대부분 -215에서 215-1 범위에있는 정수를 나타냅니다 (기계에 따라 다름).

2

bignum

이들은 LISP에 할당 된 메모리 양에 의해 크기가 제한되는 매우 큰 숫자이며 fixnum 숫자가 아닙니다.

ratio

분자 / 분모 형식으로 두 숫자의 비율을 나타냅니다. / 함수는 인수가 정수인 경우 항상 비율로 결과를 생성합니다.

4

float

정수가 아닌 숫자를 나타냅니다. 정밀도가 증가하는 4 개의 float 데이터 유형이 있습니다.

5

complex

#c로 표시되는 복소수를 나타냅니다. 실수 부와 허수 부는 모두 유리수 또는 부동 소수점 수일 수 있습니다.

main.lisp라는 새 소스 코드 파일을 만들고 그 안에 다음 코드를 입력합니다.

(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))

코드를 실행하면 다음 결과가 반환됩니다.

1/2
5/4
#C(4 -2)

숫자 함수

다음 표는 일반적으로 사용되는 몇 가지 숫자 함수를 설명합니다.

Sr. 아니. 기능 및 설명
1

+, -, *, /

각 산술 연산

2

sin, cos, tan, acos, asin, atan

각 삼각 함수.

sinh, cosh, tanh, acosh, asinh, atanh

각 쌍곡선 함수.

4

exp

지수 함수. e x를 계산합니다.

5

expt

지수 함수는 밑과 거듭 제곱을 모두 취합니다.

6

sqrt

숫자의 제곱근을 계산합니다.

7

log

대수 함수. 하나의 매개 변수가 주어지면 자연 로그를 계산합니다. 그렇지 않으면 두 번째 매개 변수가 밑으로 사용됩니다.

8

conjugate

숫자의 켤레 복소수를 계산합니다. 실수의 경우 숫자 자체를 반환합니다.

9

abs

숫자의 절대 값 (또는 크기)을 반환합니다.

10

gcd

주어진 숫자의 최대 공약수를 계산합니다.

11

lcm

주어진 숫자의 최소 공배수를 계산합니다.

12

isqrt

주어진 자연수의 정확한 제곱근보다 작거나 같은 가장 큰 정수를 제공합니다.

13

floor, ceiling, truncate, round

이 모든 함수는 두 개의 인수를 숫자로 취하고 몫을 반환합니다. floor 비율보다 크지 않은 가장 큰 정수를 반환합니다. ceiling 비율보다 큰 작은 정수를 선택합니다. truncate 비율의 절대 값보다 작은 절대 값이 가장 큰 비율과 같은 부호의 정수를 선택하고 round 비율에 가장 가까운 정수를 선택합니다.

14

ffloor, fceiling, ftruncate, fround

위와 동일하지만 몫을 부동 소수점 숫자로 반환합니다.

15

mod, rem

나누기 연산의 나머지를 반환합니다.

16

float

실수를 부동 소수점 숫자로 변환합니다.

17

rational, rationalize

실수를 유리수로 변환합니다.

18

numerator, denominator

유리수의 각 부분을 반환합니다.

19

realpart, imagpart

복소수의 실수 부와 허수 부를 반환합니다.

main.lisp라는 새 소스 코드 파일을 만들고 그 안에 다음 코드를 입력합니다.

(write (/ 45 78))
(terpri)
(write (floor 45 78))
(terpri)
(write (/ 3456 75))
(terpri)
(write (floor 3456 75))
(terpri)
(write (ceiling 3456 75))
(terpri)
(write (truncate 3456 75))
(terpri)
(write (round 3456 75))
(terpri)
(write (ffloor 3456 75))
(terpri)
(write (fceiling 3456 75))
(terpri)
(write (ftruncate 3456 75))
(terpri)
(write (fround 3456 75))
(terpri)
(write (mod 3456 75))
(terpri)
(setq c (complex 6 7))
(write c)
(terpri)
(write (complex 5 -9))
(terpri)
(write (realpart c))
(terpri)
(write (imagpart c))

코드를 실행하면 다음 결과가 반환됩니다.

15/26
0
1152/25
46
47
46
46
46.0
47.0
46.0
46.0
6
#C(6 7)
#C(5 -9)
6
7