Математические функции
atan()
Синтаксис:
atan(x)
Функция atan() возвращает арктангенс аргумента х, относящегося к типу double recision. Фактически является обратной по отношению к функции tan(). Результат представляет собой угол (в радианах) в интервале от -π/2 до π/2, выраженный типом double precision.
Пример:
testdb=# SELECT atan(l) .atan(O) .atan(-l), testdb-# atan(tand)) AS inverse_example; atan atan | atan | inverse_example 0.785398163397448 | 0 | -0.785398163397448 | 1 (1 row)
atan2()
Синтаксис:
atan2(x.y)
По аналогии с функцией atan(), функция atan2() возвращает арктангенс, то есть угол (в радианах) в интервале от -π/2 до π/2, выраженный типом double precision. Однако в отличие от atan() она получает два аргумента типа double precision вместо одного и возвращает арктангенс величины, полученной делением первого аргумента на второй.
В общем случае вызов функции atan2(x,y) эквивалентен вызову atan(x/y), но при передаче аргумента у=0 функции atan2() не происходит ошибки деления на ноль, как при вызове atan() для величины х/у. Если аргумент у равен нулю, функция atan2() возвращает π/2 для положительных значений х, -π/2 для отрицательных х и 0 для х=0.
Пример:
testdb=# SELECT atan2(0, 1) .atan2(l, 1), testdb-# atanCO / 1) AS functionally. testdb-# atand / 1) AS identical; atan2 atan2 | functionally identical 0 i 0.785398163397448 | 0 | 0.785398163397448 (1 row) testdb=# SELECT atan2(l, 0) AS positive_x. testdb-# atan2(-l, 0) AS negative_x, testdb-# atan2(0, 0) AS zero_x, testdb-i pi() / 2 AS pi_over_two: positive_x | negative_x | zero_x \ pi_over_two 1.5707963267949 | -1.5707963267949 | 0 | 1.5707963267949 (1 row)
cbrt()
Синтаксис:
cbrt()
Функция cbrt () получает один числовой аргумент х типа double precision и возвращает кубический корень, также представленный типом double precision. Фактически является обратной по отношению к функции pow(), выполняющей возведение в третью степень.
Пример:
testdb=# SELECT pow(2.0. 3) AS "two cubed". testdb-# cbrt(8.0) AS "eight's cube root"; two cubed | eight's cube root 8 | 2 (1 row)