Main Content

factorial

입력값의 계승

설명

예제

f = factorial(n)n보다 작거나 같은 모든 양의 정수의 곱을 반환합니다(이러한 연산 방식을 '계승'이라 일컫기도 함). 여기서 n은 음이 아닌 정수 값입니다. n이 배열인 경우 fn에 있는 각 값의 계승을 포함합니다. f의 데이터형 및 크기는 n의 데이터형 및 크기와 같습니다.

일반적인 수학 표기법에서 n의 계승은 느낌표 문자를 사용하여 작성됩니다(예: n!). 참고로, n!n의 계승을 계산하는 데 유효한 MATLAB® 구문이 아닙니다.

예제

모두 축소

f = factorial(10)
f = 3628800
format long
f = factorial(22)
f = 
     1.124000727777608e+21

이 경우 배정밀도 숫자는 15자리까지만 정확하기 때문에 f는 15자릿수인 1.12400072777760e+21까지만 정확합니다.

출력 형식을 디폴트로 재설정합니다.

format
n = [0 1 2; 3 4 5];
f = factorial(n)
f = 2×3

     1     1     2
     6    24   120

n = uint64([5 10 15 20]);
f = factorial(n)
f = 1x4 uint64 row vector

                   120               3628800         1307674368000   2432902008176640000

입력 인수

모두 축소

입력값으로, 스칼라, 벡터 또는 음이 아닌 실수형 정수로 구성된 배열로 지정됩니다.

예: 5

예: [0 1 2 3 4]

예: int16([10 15 20])

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

제한 사항

  • 배정밀도 입력값의 경우 n21보다 작거나 같을 때 정확한 결과를 구할 수 있습니다. n의 값이 이보다 큰 경우 결과는 올바른 계산 차수를 가지며 처음 15자리만 정확합니다. 이는 배정밀도 숫자가 15자리까지만 정확하기 때문입니다.

  • 단정밀도 입력값의 경우 n13보다 작거나 같을 때 정확한 결과를 구할 수 있습니다. n의 값이 이보다 큰 경우 결과는 올바른 계산 차수를 가지며 처음 8자리만 정확합니다. 이는 단정밀도 숫자가 8자리까지만 정확하기 때문입니다.

포화(Saturation)

  • 아래 표에 factorial 함수와 함께 사용될 때 각 데이터형의 포화(Saturation) 동작이 설명되어 있습니다. 마지막 열의 값은 포화(Saturation) 지점, 즉 실제 계승이 중간 열에 표시된 표현 가능한 최댓값보다 큰 첫 번째 양의 정수를 나타냅니다. single형과 double형의 경우 최댓값보다 큰 모든 값은 Inf로 반환됩니다. 정수(Integer) 데이터형의 경우 포화(Saturation) 값은 중간 열에 표시된 최댓값과 같습니다.

    데이터형최댓값계승 포화(Saturation) 임계값
    doublerealmaxfactorial(171)
    singlerealmax('single')factorial(single(35))
    uint64264-1factorial(uint64(21))
    int64263-1factorial(int64(21))
    uint32232-1factorial(uint32(13))
    int32231-1factorial(int32(13))
    uint16216-1factorial(uint16(9))
    int16215-1factorial(int16(8))
    uint828-1factorial(uint8(6))
    int827-1factorial(int8(6))

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

참고 항목