Mathematical Functions and Operators

Table 3-2. Mathematical Operators

NameDescriptionExampleResult
+ Addition2 + 35
- Subtraction2 - 3-1
* Multiplication2 * 36
/ Division (integer division truncates results)4 / 22
% Modulo (remainder)5 % 41
^ Exponentiation2.0 ^ 3.08.0
|/ Square root|/ 25.05.0
||/ Cubic root||/ 27.03
! Factorial5 !120
!! Factorial (prefix operator)!! 5120
@ Absolute value@ -5.05.0
& Binary AND91 & 1511
| Binary OR32 | 335
# Binary XOR17 # 520
~ Binary NOT~1-2
<< Binary shift left1 << 416
>> Binary shift right8 >> 22

The "binary" operators are also available for the bit string types BIT and BIT VARYING.

Table 3-3. Bit String Binary Operators

ExampleResult
B'10001' & B'01101'00001
B'10001' | B'01101'11101
B'10001' # B'01101'11110
~ B'10001'01110
B'10001' << 301000
B'10001' >> 200100
Bit string arguments to &, |, and # must be of equal length. When bit shifting, the original length of the string is preserved, as shown here.

Table 3-4. Mathematical Functions

FunctionReturn TypeDescriptionExampleResult
abs(x)(same as argument type)absolute valueabs(-17.4)17.4
cbrt(double precision)double precisioncube rootcbrt(27.0)3.0
ceil(numeric)numericsmallest integer not less than argumentceil(-42.8)-42
degrees(double precision)double precisionconvert radians to degreesdegrees(0.5)28.6478897565412
exp(double precision)double precisionexponential functionexp(1.0)2.71828182845905
floor(numeric)numericlargest integer not greater than argumentfloor(-42.8)-43
ln(double precision)double precisionnatural logarithmln(2.0)0.693147180559945
log(double precision)double precisionbase 10 logarithmlog(100.0)2.0
log(base numeric, x numeric)numericlogarithm to specified baselog(2.0, 64.0)6.0
mod(y, x)(same as argument types)remainder (modulo) of the division y/xmod(9,4)1
pi()double precision"Pi" constantpi()3.14159265358979
pow(double precision, double precision)double precisionraise a number to the specified exponentpow(9.0, 3.0)729.0
radians(double precision)double precisionconvert degrees to radiansradians(45.0)0.785398163397448
random()double precisiona pseudo-random value between 0.0 to 1.0random() 
round(double precision)double precisionround to nearest integerround(42.4)42
round(value numeric, scale integer)numericround to specified number of decimal placesround(42.4382, 2)42.44
sqrt(double precision)double precisionsquare rootsqrt(2.0)1.4142135623731
trunc(double precision)double precisiontruncate (toward zero)trunc(42.8)42
trunc(value numeric, scale integer)numerictruncate to specified number of decimal placesround(42.4382, 2)42.43

In the table above:

Many of these functions are implemented on top of the host system's C library and behavior in boundary cases could therefore vary depending on the operating system.

Table 3-5. Trigonometric Functions

FunctionDescription
acos(x)inverse cosine
asin(x)inverse sine
atan(x)inverse tangent
atan2(x, y)inverse tangent of y/x
cos(x)cosine
cot(x)cotangent
sin(x)sine
tan(x)tangent

All trigonometric functions have arguments and return values of type double precision.