본문 바로가기
WIKI 기술 지식 베이스

수학 함수

원문 보기 위키 갱신

수학 함수 (Math Functions)

Turso는 SQLite의 수학 함수를 모두 제공해요. 이 함수들은 수치 값을 다루고, 특별한 언급이 없는 한 REAL을 반환해요. 인수 중 하나라도 NULL이면 함수는 NULL을 반환해요. 인수가 수치가 아니고 변환도 불가능하면 함수에 따라 NULL 또는 0.0을 반환해요.

출처: 문서

본문

함수 레퍼런스

삼각 함수

함수 설명 반환 타입
acos(X) X의 역코사인(라디안). X는 -1.0과 1.0 사이여야 해요 REAL
asin(X) X의 역사인(라디안). X는 -1.0과 1.0 사이여야 해요 REAL
atan(X) X의 역탄젠트(라디안) REAL
atan2(Y, X) Y/X의 역탄젠트(라디안). 두 인수의 부호로 사분면을 결정해요 REAL
cos(X) X의 코사인. X는 라디안 REAL
sin(X) X의 사인. X는 라디안 REAL
tan(X) X의 탄젠트. X는 라디안 REAL

쌍곡선 함수

함수 설명 반환 타입
acosh(X) X의 역쌍곡선 코사인. X는 >= 1.0이어야 해요 REAL
asinh(X) X의 역쌍곡선 사인 REAL
atanh(X) X의 역쌍곡선 탄젠트. X는 -1.0과 1.0 사이여야 해요 REAL
cosh(X) X의 쌍곡선 코사인 REAL
sinh(X) X의 쌍곡선 사인 REAL
tanh(X) X의 쌍곡선 탄젠트 REAL

각도 변환

함수 설명 반환 타입
degrees(X) X를 라디안에서 도(degree)로 변환 REAL
radians(X) X를 도에서 라디안으로 변환 REAL

반올림과 절단

함수 설명 반환 타입
ceil(X) X보다 작지 않은 가장 작은 정수 INTEGER
ceiling(X) ceil(X)의 별칭 INTEGER
floor(X) X보다 크지 않은 가장 큰 정수 INTEGER
trunc(X) X의 정수부 (0쪽으로 절단) INTEGER

로그와 지수 함수

함수 설명 반환 타입
exp(X) e의 X승 REAL
ln(X) X의 자연로그. X는 > 0이어야 해요 REAL
log(X) X의 자연로그 (ln(X)와 동일) REAL
log(B, X) 밑 B인 X의 로그. 둘 다 > 0이고 B != 1이어야 해요 REAL
log10(X) X의 상용로그(밑 10). X는 > 0이어야 해요 REAL
log2(X) X의 밑 2 로그. X는 > 0이어야 해요 REAL
인수 하나짜리 `log(X)`는 자연로그(밑 e)를 반환해요. SQLite 동작과 같아요. 일부 다른 데이터베이스에서 `log(X)`가 상용로그(밑 10)를 반환하는 것과는 다르니 주의하세요.

산술 함수

함수 설명 반환 타입
mod(X, Y) X를 Y로 나눈 나머지 REAL
pow(X, Y) X의 Y승 REAL
power(X, Y) pow(X, Y)의 별칭 REAL
sqrt(X) X의 제곱근. X는 >= 0이어야 해요 REAL
sign(X) X가 음수면 -1, 0이면 0, 양수면 +1 INTEGER
gcd(A, B) 두 정수의 최대공약수 INTEGER
lcm(A, B) 두 정수의 최소공배수 INTEGER

상수

함수 설명 반환 타입
pi() 파이 값 반환 (3.141592653589793) REAL

시그니처

acos()

acos(X)
매개변수 타입 설명
X REAL or INTEGER -1.0과 1.0 사이의 값

반환: REAL. 코사인이 X가 되는 각도(라디안). X가 [-1.0, 1.0] 범위를 벗어나면 NULL.


acosh()

acosh(X)
매개변수 타입 설명
X REAL or INTEGER 1.0 이상의 값

반환: REAL. X의 역쌍곡선 코사인. X \< 1.0이면 NULL.


asin()

asin(X)
매개변수 타입 설명
X REAL or INTEGER -1.0과 1.0 사이의 값

반환: REAL. 사인이 X가 되는 각도(라디안). X가 [-1.0, 1.0] 범위를 벗어나면 NULL.


asinh()

asinh(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: REAL. X의 역쌍곡선 사인.


atan()

atan(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: REAL. 탄젠트가 X가 되는 각도(라디안). 결과는 (-pi/2, pi/2) 범위에 있어요.


atan2()

atan2(Y, X)
매개변수 타입 설명
Y REAL or INTEGER y 좌표
X REAL or INTEGER x 좌표

반환: REAL. 양의 x축과 점 (X, Y) 사이의 각도(라디안). 결과는 (-pi, pi] 범위에 있어요. atan(Y/X)와 달리, atan2는 모든 사분면과 X가 0인 경우를 올바르게 처리해요.


atanh()

atanh(X)
매개변수 타입 설명
X REAL or INTEGER -1.0과 1.0 사이의 값 (배타적)

반환: REAL. X의 역쌍곡선 탄젠트. X가 (-1.0, 1.0) 범위를 벗어나면 NULL.


ceil() / ceiling()

ceil(X)
ceiling(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: INTEGER. X보다 작지 않은 가장 작은 정수.

SELECT ceil(3.2);    -- 4
SELECT ceil(-3.2);   -- -3
SELECT ceiling(5.0); -- 5

cos()

cos(X)
매개변수 타입 설명
X REAL or INTEGER 라디안 각도

반환: REAL. X의 코사인.


cosh()

cosh(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: REAL. X의 쌍곡선 코사인.


degrees()

degrees(X)
매개변수 타입 설명
X REAL or INTEGER 라디안 각도

반환: REAL. 라디안에서 도(degree)로 변환된 X.

SELECT degrees(pi());   -- 180.0
SELECT degrees(pi()/2); -- 90.0

exp()

exp(X)
매개변수 타입 설명
X REAL or INTEGER 지수

반환: REAL. e의 X승.

SELECT exp(0);   -- 1.0
SELECT exp(1);   -- 2.718281828459045

gcd()

gcd(A, B)
매개변수 타입 설명
A INTEGER 첫 번째 피연산자
B INTEGER 두 번째 피연산자

반환: INTEGER. A와 B의 최대공약수. 입력 부호와 무관하게 결과는 항상 음수가 아니에요. gcd(0, 0)은 0을 반환해요. 인수 중 하나라도 NULL이면 NULL을 반환해요. 결과가 부호 있는 64비트 정수로 표현 불가능하면 정수 오버플로 오류가 발생해요 (그런 경우는 -9223372036854775808이 유일해요).

SELECT gcd(12, 8);     -- 4
SELECT gcd(-12, 8);    -- 4
SELECT gcd(0, 7);      -- 7
SELECT gcd(0, 0);      -- 0
SELECT gcd(NULL, 7);   -- NULL
`gcd`와 `lcm`은 SQLite에 없는 PostgreSQL/MySQL/Oracle 호환 추가 기능이에요. 부호 있는 64비트 정수로 동작하고, 파싱할 수 없는 비정수 텍스트 입력은 NULL을 반환해요.

lcm()

lcm(A, B)
매개변수 타입 설명
A INTEGER 첫 번째 피연산자
B INTEGER 두 번째 피연산자

반환: INTEGER. A와 B의 최소공배수. 입력 부호와 무관하게 결과는 항상 음수가 아니에요. lcm(_, 0)과 lcm(0, _)는 0을 반환해요. 인수 중 하나라도 NULL이면 NULL을 반환해요. 곱이 부호 있는 64비트 정수에 들어가지 않으면 정수 오버플로 오류가 발생해요.

SELECT lcm(4, 6);      -- 12
SELECT lcm(-4, 6);     -- 12
SELECT lcm(5, 0);      -- 0
SELECT lcm(NULL, 7);   -- NULL

floor()

floor(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: INTEGER. X보다 크지 않은 가장 큰 정수.

SELECT floor(3.7);   -- 3
SELECT floor(-3.2);  -- -4
SELECT floor(5.0);   -- 5

ln()

ln(X)
매개변수 타입 설명
X REAL or INTEGER 0보다 큰 값

반환: REAL. X의 자연로그(밑 e). X \<= 0이면 NULL.

SELECT ln(1);         -- 0.0
SELECT ln(exp(1));    -- 1.0
SELECT ln(2);         -- 0.6931471805599453

log()

log(X)
log(B, X)
매개변수 타입 설명
X REAL or INTEGER 0보다 큰 값
B REAL or INTEGER 밑. 0보다 크고 1이 아니어야 해요 (선택)

반환: REAL. 인수가 하나면 X의 자연로그를 반환해요 (ln(X)와 동일). 인수가 두 개면 밑 B인 X의 로그를 반환해요.

SELECT log(10);      -- 2.302585... (natural log)
SELECT log(10, 100); -- 2.0 (log base 10 of 100)
SELECT log(2, 256);  -- 8.0 (log base 2 of 256)

log10()

log10(X)
매개변수 타입 설명
X REAL or INTEGER 0보다 큰 값

반환: REAL. X의 상용로그(밑 10). X \<= 0이면 NULL.

SELECT log10(100);   -- 2.0
SELECT log10(1000);  -- 3.0

log2()

log2(X)
매개변수 타입 설명
X REAL or INTEGER 0보다 큰 값

반환: REAL. X의 밑 2 로그. X \<= 0이면 NULL.

SELECT log2(256);   -- 8.0
SELECT log2(1024);  -- 10.0

mod()

mod(X, Y)
매개변수 타입 설명
X REAL or INTEGER 피제수
Y REAL or INTEGER 제수

반환: REAL. X를 Y로 나눈 나머지. Y가 0이면 NULL.

SELECT mod(10, 3);    -- 1.0
SELECT mod(10.5, 3);  -- 1.5
SELECT mod(-10, 3);   -- -1.0

pi()

pi()

매개변수를 받지 않아요.

반환: REAL. 수학 상수 파이 (3.141592653589793).

SELECT pi();           -- 3.141592653589793
SELECT 2 * pi() * 5;  -- 31.41592653589793 (circumference of circle with radius 5)

pow() / power()

pow(X, Y)
power(X, Y)
매개변수 타입 설명
X REAL or INTEGER 밑
Y REAL or INTEGER 지수

반환: REAL. X의 Y승.

SELECT pow(2, 10);      -- 1024.0
SELECT power(3, 3);     -- 27.0
SELECT pow(100, 0.5);   -- 10.0 (square root)

radians()

radians(X)
매개변수 타입 설명
X REAL or INTEGER 도(degree) 각도

반환: REAL. 도에서 라디안으로 변환된 X.

SELECT radians(180);   -- 3.141592653589793
SELECT radians(90);    -- 1.5707963267948966

sign()

sign(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: INTEGER. X가 음수면 -1, 0이면 0, 양수면 +1. X가 NULL이면 NULL.

SELECT sign(-42);  -- -1
SELECT sign(0);    -- 0
SELECT sign(3.14); -- 1

sin()

sin(X)
매개변수 타입 설명
X REAL or INTEGER 라디안 각도

반환: REAL. X의 사인.


sinh()

sinh(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: REAL. X의 쌍곡선 사인.


sqrt()

sqrt(X)
매개변수 타입 설명
X REAL or INTEGER 0 이상의 값

반환: REAL. X의 제곱근. X가 음수면 NULL.

SELECT sqrt(144);  -- 12.0
SELECT sqrt(2);    -- 1.4142135623730951

tan()

tan(X)
매개변수 타입 설명
X REAL or INTEGER 라디안 각도

반환: REAL. X의 탄젠트.


tanh()

tanh(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: REAL. X의 쌍곡선 탄젠트. 결과는 항상 (-1.0, 1.0) 범위에 있어요.


trunc()

trunc(X)
매개변수 타입 설명
X REAL or INTEGER 모든 수치 값

반환: INTEGER. 소수 자릿수를 제거한 X의 정수부. 0쪽으로 절단해요.

SELECT trunc(3.7);   -- 3
SELECT trunc(-3.7);  -- -3
SELECT trunc(5.0);   -- 5

예제

삼각법

-- Sine and cosine of 45 degrees
SELECT sin(radians(45));  -- 0.7071067811865475
SELECT cos(radians(45));  -- 0.7071067811865476

-- Angle from coordinates
SELECT degrees(atan2(1, 1));  -- 45.0

-- Verify the Pythagorean identity: sin^2 + cos^2 = 1
SELECT pow(sin(1.0), 2) + pow(cos(1.0), 2);  -- 1.0

반올림

-- Different rounding behaviors
SELECT ceil(2.3), floor(2.3), trunc(2.3);
-- 3, 2, 2

SELECT ceil(-2.3), floor(-2.3), trunc(-2.3);
-- -2, -3, -2

로그

-- Compute the number of bits needed to represent N
SELECT ceil(log2(1000));  -- 10

-- Decibel conversion
SELECT 10 * log10(100);  -- 20.0

-- Verify log identities
SELECT ln(exp(5));  -- 5.0

거리 계산

-- Euclidean distance between two points
SELECT sqrt(pow(3 - 0, 2) + pow(4 - 0, 2));
-- 5.0 (3-4-5 triangle)

더 알아보기 (Learn more)