math — 수학 함수
math — 수학 함수
math 모듈은 C 표준에 정의된 것들을 포함한 일반적인 수학 함수와 상수에 대한 접근을 제공해요. 이 함수들은 복소수와는 사용할 수 없어요. 복소수 지원이 필요하면 cmath 모듈의 같은 이름의 함수를 사용해요.
복소수를 지원하는 함수와 그렇지 않은 함수를 구분하는 이유는 대부분의 사용자가 복소수를 이해하는 데 필요한 수학만큼 배우고 싶어 하지 않기 때문이에요. 복소수 결과 대신 예외를 받으면 예상치 못한 복소수가 파라미터로 사용된 것을 더 일찍 감지할 수 있어, 프로그래머가 그것이 처음에 어떻게 그리고 왜 생성되었는지 판단할 수 있게 해줘요.
명시적으로 달리 언급되지 않는 한, 모든 반환값은 float예요.
본문
정수론 함수
math.comb(n, k) — n개의 항목에서 반복 없이, 순서 없이 k개를 선택하는 방법의 수를 반환해요. k <= n일 때 n! / (k! * (n - k)!)로 평가되고 k > n일 때 0으로 평가돼요. 이항 계수(binomial coefficient)라고도 불러요. 두 인자 중 하나라도 정수가 아니면 TypeError, 음수이면 ValueError가 발생해요. 버전 3.8에서 추가됨.
math.factorial(n) — 음이 아닌 정수 n의 팩토리얼을 반환해요. 버전 3.10에서 변경: 정수 값의 float(5.0 같은)는 더 이상 허용되지 않아요.
math.gcd(*integers) — 지정된 정수 인자들의 최대 공약수를 반환해요. 모든 인자가 0이면 반환값은 0이에요. 버전 3.9에서 변경: 임의 개수의 인자 지원.
math.isqrt(n) — 음이 아닌 정수 n의 정수 제곱근을 반환해요. n의 정확한 제곱근의 바닥, 즉 a² ≤ n을 만족하는 가장 큰 정수 a예요. 버전 3.8에서 추가됨.
math.lcm(*integers) — 지정된 정수 인자들의 최소 공배수를 반환해요. 어떤 인자라도 0이면 반환값은 0이에요. 버전 3.9에서 추가됨.
math.perm(n, k=None) — n개의 항목에서 반복 없이, 순서 있게 k개를 선택하는 방법의 수를 반환해요. k가 지정되지 않거나 None이면 k는 n으로 기본 설정되고 함수는 n!을 반환해요. 버전 3.8에서 추가됨.
부동소수점 산술
math.ceil(x) — x의 천장(ceiling), 즉 x보다 크거나 같은 가장 작은 정수를 반환해요. math.fabs(x) — x의 절댓값. math.floor(x) — x의 바닥(floor), 즉 x보다 작거나 같은 가장 큰 정수. math.fma(x, y, z) — 융합 곱셈-덧셈. (x * y) + z를 무한 정밀도·범위로 계산한 후 float 형식에 한 번 반올림한 것처럼 반환해요. 버전 3.13에서 추가됨. math.fmod(x, y) — platform C 라이브러리 함수 fmod(x, y)가 정의한 x / y의 부동소수점 나머지. math.modf(x) — x의 분수와 정수 부분 반환. math.remainder(x, y) — x의 y에 대한 IEEE 754 스타일 나머지. math.trunc(x) — 분수 부분을 제거한 x의 정수 부분 반환.
부동소수점 조작 함수
math.copysign(x, y) — x의 크기(절댓값)와 y의 부호를 가진 float 반환. math.frexp(x) — x의 가수와 지수를 쌍 (m, e)으로 반환. math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) — 값 a와 b가 서로 가까우면 True를, 아니면 False를 반환. abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)이면 가깝다고 본다. 버전 3.5에서 추가됨. math.isfinite(x) — x가 무한대도 NaN도 아니면 True. math.isinf(x) — x가 양·음의 무한대이면 True. math.isnan(x) — x가 NaN이면 True. math.ldexp(x, i) — x * (2**i) 반환. math.nextafter(x, y, steps=1) — y 방향으로 x에서 steps 단계 뒤의 부동소수점 값. math.ulp(x) — float x의 최하위 비트 값.
거듭제곱, 지수, 로그 함수
math.cbrt(x) — x의 세제곱근. 버전 3.11에서 추가됨. math.exp(x) — e의 x제곱. math.exp2(x) — 2의 x제곱. math.expm1(x) — e의 x제곱에서 1을 뺀 값. 작은 x에서 정밀도 유지. math.log(x[, base]) — 인자 하나로 x의 자연로그(base e), 인자 둘로 주어진 base의 로그 반환. math.log1p(x) — 1+x의 자연로그(base e). math.log2(x) — x의 밑 2 로그. math.log10(x) — x의 밑 10 로그. math.pow(x, y) — x의 y제곱. math.sqrt(x) — x의 제곱근.
합과 곱 함수
math.dist(p, q) — 좌표의 시퀀스·iterable로 주어진 두 점 p와 q 사이의 유클리드 거리. 버전 3.8에서 추가됨. math.fsum(iterable) — iterable의 값의 정확한 부동소수점 합. math.hypot(*coordinates) — sqrt(sum(x**2 for x in coordinates))인 유클리드 노름. math.prod(iterable, *, start=1) — 입력 iterable의 모든 요소의 곱. math.sumprod(p, q) — 두 iterable p와 q의 값의 곱들의 합. 버전 3.12에서 추가됨.
각도 변환
math.degrees(x) — 라디안에서 도로 변환. math.radians(x) — 도에서 라디안으로 변환.
삼각 함수
math.acos(x) — 라디안 단위의 x의 아크 코사인. math.asin(x) — 아크 사인. math.atan(x) — 아크 탄젠트. math.atan2(y, x) — atan(y / x) 반환. 두 입력의 부호를 알므로 각도의 올바른 사분면을 계산할 수 있어요. math.cos(x) — 코사인. math.sin(x) — 사인. math.tan(x) — 탄젠트.
쌍곡선 함수
math.acosh(x) — x의 역쌍곡 코사인. math.asinh(x) — 역쌍곡 사인. math.atanh(x) — 역쌍곡 탄젠트. math.cosh(x) — 쌍곡 코사인. math.sinh(x) — 쌍곡 사인. math.tanh(x) — 쌍곡 탄젠트.
특수 함수
math.erf(x) — x에서의 오차 함수(error function). 버전 3.2에서 추가됨. math.erfc(x) — x에서의 상보 오차 함수. 1.0 - erf(x). math.gamma(x) — x에서의 감마 함수. math.lgamma(x) — x에서 감마 함수 절댓값의 자연 로그.
상수
math.pi — 수학 상수 π = 3.141592… math.e — 수학 상수 e = 2.718281… math.tau — 원 상수 τ = 6.283185…, 2π와 동일. math.inf — 양의 무한대. (음의 무한대는 -math.inf.) math.nan — “not a number”(NaN) 부동소수점 값. isnan()으로 NaN인지 검사해야 한다.
주의 사항: math 모듈은 주로 플랫폼 C 수학 라이브러리 함수의 얇은 래퍼로 구성돼요. sqrt(-1.0)이나 log(0.0) 같은 무효 연산의 경우 ValueError를, 오버플로우 결과(예: exp(1000.0))의 경우 OverflowError를 발생시켜요. 위 함수 중 어떤 것도 입력 인자 중 하나가 NaN이 아니면 NaN을 반환하지 않아요.
참고
- 모듈
cmath— 이 함수들 중 많은 것의 복소수 버전.