mirror of https://github.com/postgres/postgres
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1616 lines
50 KiB
1616 lines
50 KiB
<sect1 id="functions-math">
|
|
<title>Mathematical Functions and Operators</title>
|
|
|
|
<para>
|
|
Mathematical operators are provided for many
|
|
<productname>PostgreSQL</productname> types. For types without
|
|
standard mathematical conventions
|
|
(e.g., date/time types) we
|
|
describe the actual behavior in subsequent sections.
|
|
</para>
|
|
|
|
<para>
|
|
<xref linkend="functions-math-op-table"/> shows the mathematical
|
|
operators that are available for the standard numeric types.
|
|
Unless otherwise noted, operators shown as
|
|
accepting <replaceable>numeric_type</replaceable> are available for all
|
|
the types <type>smallint</type>, <type>integer</type>,
|
|
<type>bigint</type>, <type>numeric</type>, <type>real</type>,
|
|
and <type>double precision</type>.
|
|
Operators shown as accepting <replaceable>integral_type</replaceable>
|
|
are available for the types <type>smallint</type>, <type>integer</type>,
|
|
and <type>bigint</type>.
|
|
Except where noted, each form of an operator returns the same data type
|
|
as its argument(s). Calls involving multiple argument data types, such
|
|
as <type>integer</type> <literal>+</literal> <type>numeric</type>,
|
|
are resolved by using the type appearing later in these lists.
|
|
</para>
|
|
|
|
<table id="functions-math-op-table">
|
|
<title>Mathematical Operators</title>
|
|
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
Operator
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para>
|
|
<para>
|
|
Example(s)
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>numeric_type</replaceable> <literal>+</literal> <replaceable>numeric_type</replaceable>
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Addition
|
|
</para>
|
|
<para>
|
|
<literal>2 + 3</literal>
|
|
<returnvalue>5</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<literal>+</literal> <replaceable>numeric_type</replaceable>
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Unary plus (no operation)
|
|
</para>
|
|
<para>
|
|
<literal>+ 3.5</literal>
|
|
<returnvalue>3.5</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>numeric_type</replaceable> <literal>-</literal> <replaceable>numeric_type</replaceable>
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Subtraction
|
|
</para>
|
|
<para>
|
|
<literal>2 - 3</literal>
|
|
<returnvalue>-1</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<literal>-</literal> <replaceable>numeric_type</replaceable>
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Negation
|
|
</para>
|
|
<para>
|
|
<literal>- (-4)</literal>
|
|
<returnvalue>4</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>numeric_type</replaceable> <literal>*</literal> <replaceable>numeric_type</replaceable>
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Multiplication
|
|
</para>
|
|
<para>
|
|
<literal>2 * 3</literal>
|
|
<returnvalue>6</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>numeric_type</replaceable> <literal>/</literal> <replaceable>numeric_type</replaceable>
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Division (for integral types, division truncates the result towards
|
|
zero)
|
|
</para>
|
|
<para>
|
|
<literal>5.0 / 2</literal>
|
|
<returnvalue>2.5000000000000000</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>5 / 2</literal>
|
|
<returnvalue>2</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>(-5) / 2</literal>
|
|
<returnvalue>-2</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>numeric_type</replaceable> <literal>%</literal> <replaceable>numeric_type</replaceable>
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Modulo (remainder); available for <type>smallint</type>,
|
|
<type>integer</type>, <type>bigint</type>, and <type>numeric</type>
|
|
</para>
|
|
<para>
|
|
<literal>5 % 4</literal>
|
|
<returnvalue>1</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<type>numeric</type> <literal>^</literal> <type>numeric</type>
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<type>double precision</type> <literal>^</literal> <type>double precision</type>
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Exponentiation
|
|
</para>
|
|
<para>
|
|
<literal>2 ^ 3</literal>
|
|
<returnvalue>8</returnvalue>
|
|
</para>
|
|
<para>
|
|
Unlike typical mathematical practice, multiple uses of
|
|
<literal>^</literal> will associate left to right by default:
|
|
</para>
|
|
<para>
|
|
<literal>2 ^ 3 ^ 3</literal>
|
|
<returnvalue>512</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>2 ^ (3 ^ 3)</literal>
|
|
<returnvalue>134217728</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<literal>|/</literal> <type>double precision</type>
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Square root
|
|
</para>
|
|
<para>
|
|
<literal>|/ 25.0</literal>
|
|
<returnvalue>5</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<literal>||/</literal> <type>double precision</type>
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Cube root
|
|
</para>
|
|
<para>
|
|
<literal>||/ 64.0</literal>
|
|
<returnvalue>4</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<literal>@</literal> <replaceable>numeric_type</replaceable>
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Absolute value
|
|
</para>
|
|
<para>
|
|
<literal>@ -5.0</literal>
|
|
<returnvalue>5.0</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>integral_type</replaceable> <literal>&</literal> <replaceable>integral_type</replaceable>
|
|
<returnvalue><replaceable>integral_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Bitwise AND
|
|
</para>
|
|
<para>
|
|
<literal>91 & 15</literal>
|
|
<returnvalue>11</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>integral_type</replaceable> <literal>|</literal> <replaceable>integral_type</replaceable>
|
|
<returnvalue><replaceable>integral_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Bitwise OR
|
|
</para>
|
|
<para>
|
|
<literal>32 | 3</literal>
|
|
<returnvalue>35</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>integral_type</replaceable> <literal>#</literal> <replaceable>integral_type</replaceable>
|
|
<returnvalue><replaceable>integral_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Bitwise exclusive OR
|
|
</para>
|
|
<para>
|
|
<literal>17 # 5</literal>
|
|
<returnvalue>20</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<literal>~</literal> <replaceable>integral_type</replaceable>
|
|
<returnvalue><replaceable>integral_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Bitwise NOT
|
|
</para>
|
|
<para>
|
|
<literal>~1</literal>
|
|
<returnvalue>-2</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>integral_type</replaceable> <literal><<</literal> <type>integer</type>
|
|
<returnvalue><replaceable>integral_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Bitwise shift left
|
|
</para>
|
|
<para>
|
|
<literal>1 << 4</literal>
|
|
<returnvalue>16</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<replaceable>integral_type</replaceable> <literal>>></literal> <type>integer</type>
|
|
<returnvalue><replaceable>integral_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Bitwise shift right
|
|
</para>
|
|
<para>
|
|
<literal>8 >> 2</literal>
|
|
<returnvalue>2</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
<xref linkend="functions-math-func-table"/> shows the available
|
|
mathematical functions.
|
|
Many of these functions are provided in multiple forms with different
|
|
argument types.
|
|
Except where noted, any given form of a function returns the same
|
|
data type as its argument(s); cross-type cases are resolved in the
|
|
same way as explained above for operators.
|
|
The functions working with <type>double precision</type> data are mostly
|
|
implemented on top of the host system's C library; accuracy and behavior in
|
|
boundary cases can therefore vary depending on the host system.
|
|
</para>
|
|
|
|
<table id="functions-math-func-table">
|
|
<title>Mathematical Functions</title>
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
Function
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para>
|
|
<para>
|
|
Example(s)
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>abs</primary>
|
|
</indexterm>
|
|
<function>abs</function> ( <replaceable>numeric_type</replaceable> )
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Absolute value
|
|
</para>
|
|
<para>
|
|
<literal>abs(-17.4)</literal>
|
|
<returnvalue>17.4</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>cbrt</primary>
|
|
</indexterm>
|
|
<function>cbrt</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Cube root
|
|
</para>
|
|
<para>
|
|
<literal>cbrt(64.0)</literal>
|
|
<returnvalue>4</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>ceil</primary>
|
|
</indexterm>
|
|
<function>ceil</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>ceil</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Nearest integer greater than or equal to argument
|
|
</para>
|
|
<para>
|
|
<literal>ceil(42.2)</literal>
|
|
<returnvalue>43</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>ceil(-42.8)</literal>
|
|
<returnvalue>-42</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>ceiling</primary>
|
|
</indexterm>
|
|
<function>ceiling</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>ceiling</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Nearest integer greater than or equal to argument (same
|
|
as <function>ceil</function>)
|
|
</para>
|
|
<para>
|
|
<literal>ceiling(95.3)</literal>
|
|
<returnvalue>96</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>degrees</primary>
|
|
</indexterm>
|
|
<function>degrees</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Converts radians to degrees
|
|
</para>
|
|
<para>
|
|
<literal>degrees(0.5)</literal>
|
|
<returnvalue>28.64788975654116</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>div</primary>
|
|
</indexterm>
|
|
<function>div</function> ( <parameter>y</parameter> <type>numeric</type>,
|
|
<parameter>x</parameter> <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para>
|
|
Integer quotient of <parameter>y</parameter>/<parameter>x</parameter>
|
|
(truncates towards zero)
|
|
</para>
|
|
<para>
|
|
<literal>div(9, 4)</literal>
|
|
<returnvalue>2</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>erf</primary>
|
|
</indexterm>
|
|
<function>erf</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Error function
|
|
</para>
|
|
<para>
|
|
<literal>erf(1.0)</literal>
|
|
<returnvalue>0.8427007929497149</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>erfc</primary>
|
|
</indexterm>
|
|
<function>erfc</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Complementary error function (<literal>1 - erf(x)</literal>, without
|
|
loss of precision for large inputs)
|
|
</para>
|
|
<para>
|
|
<literal>erfc(1.0)</literal>
|
|
<returnvalue>0.15729920705028513</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>exp</primary>
|
|
</indexterm>
|
|
<function>exp</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>exp</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Exponential (<literal>e</literal> raised to the given power)
|
|
</para>
|
|
<para>
|
|
<literal>exp(1.0)</literal>
|
|
<returnvalue>2.7182818284590452</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm id="function-factorial">
|
|
<primary>factorial</primary>
|
|
</indexterm>
|
|
<function>factorial</function> ( <type>bigint</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para>
|
|
Factorial
|
|
</para>
|
|
<para>
|
|
<literal>factorial(5)</literal>
|
|
<returnvalue>120</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>floor</primary>
|
|
</indexterm>
|
|
<function>floor</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>floor</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Nearest integer less than or equal to argument
|
|
</para>
|
|
<para>
|
|
<literal>floor(42.8)</literal>
|
|
<returnvalue>42</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>floor(-42.8)</literal>
|
|
<returnvalue>-43</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>gamma</primary>
|
|
</indexterm>
|
|
<function>gamma</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Gamma function
|
|
</para>
|
|
<para>
|
|
<literal>gamma(0.5)</literal>
|
|
<returnvalue>1.772453850905516</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>gamma(6)</literal>
|
|
<returnvalue>120</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>gcd</primary>
|
|
</indexterm>
|
|
<function>gcd</function> ( <replaceable>numeric_type</replaceable>, <replaceable>numeric_type</replaceable> )
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Greatest common divisor (the largest positive number that divides both
|
|
inputs with no remainder); returns <literal>0</literal> if both inputs
|
|
are zero; available for <type>integer</type>, <type>bigint</type>,
|
|
and <type>numeric</type>
|
|
</para>
|
|
<para>
|
|
<literal>gcd(1071, 462)</literal>
|
|
<returnvalue>21</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>lcm</primary>
|
|
</indexterm>
|
|
<function>lcm</function> ( <replaceable>numeric_type</replaceable>, <replaceable>numeric_type</replaceable> )
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Least common multiple (the smallest strictly positive number that is
|
|
an integral multiple of both inputs); returns <literal>0</literal> if
|
|
either input is zero; available for <type>integer</type>,
|
|
<type>bigint</type>, and <type>numeric</type>
|
|
</para>
|
|
<para>
|
|
<literal>lcm(1071, 462)</literal>
|
|
<returnvalue>23562</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>lgamma</primary>
|
|
</indexterm>
|
|
<function>lgamma</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Natural logarithm of the absolute value of the gamma function
|
|
</para>
|
|
<para>
|
|
<literal>lgamma(1000)</literal>
|
|
<returnvalue>5905.220423209181</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>ln</primary>
|
|
</indexterm>
|
|
<function>ln</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>ln</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Natural logarithm
|
|
</para>
|
|
<para>
|
|
<literal>ln(2.0)</literal>
|
|
<returnvalue>0.6931471805599453</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>log</primary>
|
|
</indexterm>
|
|
<function>log</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>log</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Base 10 logarithm
|
|
</para>
|
|
<para>
|
|
<literal>log(100)</literal>
|
|
<returnvalue>2</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>log10</primary>
|
|
</indexterm>
|
|
<function>log10</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>log10</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Base 10 logarithm (same as <function>log</function>)
|
|
</para>
|
|
<para>
|
|
<literal>log10(1000)</literal>
|
|
<returnvalue>3</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<function>log</function> ( <parameter>b</parameter> <type>numeric</type>,
|
|
<parameter>x</parameter> <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para>
|
|
Logarithm of <parameter>x</parameter> to base <parameter>b</parameter>
|
|
</para>
|
|
<para>
|
|
<literal>log(2.0, 64.0)</literal>
|
|
<returnvalue>6.0000000000000000</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>min_scale</primary>
|
|
</indexterm>
|
|
<function>min_scale</function> ( <type>numeric</type> )
|
|
<returnvalue>integer</returnvalue>
|
|
</para>
|
|
<para>
|
|
Minimum scale (number of fractional decimal digits) needed
|
|
to represent the supplied value precisely
|
|
</para>
|
|
<para>
|
|
<literal>min_scale(8.4100)</literal>
|
|
<returnvalue>2</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>mod</primary>
|
|
</indexterm>
|
|
<function>mod</function> ( <parameter>y</parameter> <replaceable>numeric_type</replaceable>,
|
|
<parameter>x</parameter> <replaceable>numeric_type</replaceable> )
|
|
<returnvalue><replaceable>numeric_type</replaceable></returnvalue>
|
|
</para>
|
|
<para>
|
|
Remainder of <parameter>y</parameter>/<parameter>x</parameter>;
|
|
available for <type>smallint</type>, <type>integer</type>,
|
|
<type>bigint</type>, and <type>numeric</type>
|
|
</para>
|
|
<para>
|
|
<literal>mod(9, 4)</literal>
|
|
<returnvalue>1</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>pi</primary>
|
|
</indexterm>
|
|
<function>pi</function> ( )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Approximate value of <phrase role="symbol_font">π</phrase>
|
|
</para>
|
|
<para>
|
|
<literal>pi()</literal>
|
|
<returnvalue>3.141592653589793</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>power</primary>
|
|
</indexterm>
|
|
<function>power</function> ( <parameter>a</parameter> <type>numeric</type>,
|
|
<parameter>b</parameter> <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>power</function> ( <parameter>a</parameter> <type>double precision</type>,
|
|
<parameter>b</parameter> <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
<parameter>a</parameter> raised to the power of <parameter>b</parameter>
|
|
</para>
|
|
<para>
|
|
<literal>power(9, 3)</literal>
|
|
<returnvalue>729</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>radians</primary>
|
|
</indexterm>
|
|
<function>radians</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Converts degrees to radians
|
|
</para>
|
|
<para>
|
|
<literal>radians(45.0)</literal>
|
|
<returnvalue>0.7853981633974483</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>round</primary>
|
|
</indexterm>
|
|
<function>round</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>round</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Rounds to nearest integer. For <type>numeric</type>, ties are
|
|
broken by rounding away from zero. For <type>double precision</type>,
|
|
the tie-breaking behavior is platform dependent, but
|
|
<quote>round to nearest even</quote> is the most common rule.
|
|
</para>
|
|
<para>
|
|
<literal>round(42.4)</literal>
|
|
<returnvalue>42</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<function>round</function> ( <parameter>v</parameter> <type>numeric</type>, <parameter>s</parameter> <type>integer</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para>
|
|
Rounds <parameter>v</parameter> to <parameter>s</parameter> decimal
|
|
places. Ties are broken by rounding away from zero.
|
|
</para>
|
|
<para>
|
|
<literal>round(42.4382, 2)</literal>
|
|
<returnvalue>42.44</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>round(1234.56, -1)</literal>
|
|
<returnvalue>1230</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>scale</primary>
|
|
</indexterm>
|
|
<function>scale</function> ( <type>numeric</type> )
|
|
<returnvalue>integer</returnvalue>
|
|
</para>
|
|
<para>
|
|
Scale of the argument (the number of decimal digits in the fractional part)
|
|
</para>
|
|
<para>
|
|
<literal>scale(8.4100)</literal>
|
|
<returnvalue>4</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>sign</primary>
|
|
</indexterm>
|
|
<function>sign</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>sign</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Sign of the argument (-1, 0, or +1)
|
|
</para>
|
|
<para>
|
|
<literal>sign(-8.4)</literal>
|
|
<returnvalue>-1</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>sqrt</primary>
|
|
</indexterm>
|
|
<function>sqrt</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>sqrt</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Square root
|
|
</para>
|
|
<para>
|
|
<literal>sqrt(2)</literal>
|
|
<returnvalue>1.4142135623730951</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>trim_scale</primary>
|
|
</indexterm>
|
|
<function>trim_scale</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para>
|
|
Reduces the value's scale (number of fractional decimal digits) by
|
|
removing trailing zeroes
|
|
</para>
|
|
<para>
|
|
<literal>trim_scale(8.4100)</literal>
|
|
<returnvalue>8.41</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>trunc</primary>
|
|
</indexterm>
|
|
<function>trunc</function> ( <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>trunc</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Truncates to integer (towards zero)
|
|
</para>
|
|
<para>
|
|
<literal>trunc(42.8)</literal>
|
|
<returnvalue>42</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>trunc(-42.8)</literal>
|
|
<returnvalue>-42</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<function>trunc</function> ( <parameter>v</parameter> <type>numeric</type>, <parameter>s</parameter> <type>integer</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para>
|
|
Truncates <parameter>v</parameter> to <parameter>s</parameter>
|
|
decimal places
|
|
</para>
|
|
<para>
|
|
<literal>trunc(42.4382, 2)</literal>
|
|
<returnvalue>42.43</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>width_bucket</primary>
|
|
</indexterm>
|
|
<function>width_bucket</function> ( <parameter>operand</parameter> <type>numeric</type>, <parameter>low</parameter> <type>numeric</type>, <parameter>high</parameter> <type>numeric</type>, <parameter>count</parameter> <type>integer</type> )
|
|
<returnvalue>integer</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>width_bucket</function> ( <parameter>operand</parameter> <type>double precision</type>, <parameter>low</parameter> <type>double precision</type>, <parameter>high</parameter> <type>double precision</type>, <parameter>count</parameter> <type>integer</type> )
|
|
<returnvalue>integer</returnvalue>
|
|
</para>
|
|
<para>
|
|
Returns the number of the bucket in
|
|
which <parameter>operand</parameter> falls in a histogram
|
|
having <parameter>count</parameter> equal-width buckets spanning the
|
|
range <parameter>low</parameter> to <parameter>high</parameter>.
|
|
The buckets have inclusive lower bounds and exclusive upper bounds.
|
|
Returns <literal>0</literal> for an input less
|
|
than <parameter>low</parameter>,
|
|
or <literal><parameter>count</parameter>+1</literal> for an input
|
|
greater than or equal to <parameter>high</parameter>.
|
|
If <parameter>low</parameter> > <parameter>high</parameter>,
|
|
the behavior is mirror-reversed, with bucket <literal>1</literal>
|
|
now being the one just below <parameter>low</parameter>, and the
|
|
inclusive bounds now being on the upper side.
|
|
</para>
|
|
<para>
|
|
<literal>width_bucket(5.35, 0.024, 10.06, 5)</literal>
|
|
<returnvalue>3</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>width_bucket(9, 10, 0, 10)</literal>
|
|
<returnvalue>2</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<function>width_bucket</function> ( <parameter>operand</parameter> <type>anycompatible</type>, <parameter>thresholds</parameter> <type>anycompatiblearray</type> )
|
|
<returnvalue>integer</returnvalue>
|
|
</para>
|
|
<para>
|
|
Returns the number of the bucket in
|
|
which <parameter>operand</parameter> falls given an array listing the
|
|
inclusive lower bounds of the buckets.
|
|
Returns <literal>0</literal> for an input less than the first lower
|
|
bound. <parameter>operand</parameter> and the array elements can be
|
|
of any type having standard comparison operators.
|
|
The <parameter>thresholds</parameter> array <emphasis>must be
|
|
sorted</emphasis>, smallest first, or unexpected results will be
|
|
obtained.
|
|
</para>
|
|
<para>
|
|
<literal>width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamptz[])</literal>
|
|
<returnvalue>2</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
<xref linkend="functions-math-random-table"/> shows functions for
|
|
generating random numbers.
|
|
</para>
|
|
|
|
<table id="functions-math-random-table">
|
|
<title>Random Functions</title>
|
|
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
Function
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para>
|
|
<para>
|
|
Example(s)
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>random</primary>
|
|
</indexterm>
|
|
<function>random</function> ( )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Returns a random value in the range 0.0 <= x < 1.0
|
|
</para>
|
|
<para>
|
|
<literal>random()</literal>
|
|
<returnvalue>0.897124072839091</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>random</primary>
|
|
</indexterm>
|
|
<function>random</function> ( <parameter>min</parameter> <type>integer</type>, <parameter>max</parameter> <type>integer</type> )
|
|
<returnvalue>integer</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>random</function> ( <parameter>min</parameter> <type>bigint</type>, <parameter>max</parameter> <type>bigint</type> )
|
|
<returnvalue>bigint</returnvalue>
|
|
</para>
|
|
<para role="func_signature">
|
|
<function>random</function> ( <parameter>min</parameter> <type>numeric</type>, <parameter>max</parameter> <type>numeric</type> )
|
|
<returnvalue>numeric</returnvalue>
|
|
</para>
|
|
<para>
|
|
Returns a random value in the range
|
|
<parameter>min</parameter> <= x <= <parameter>max</parameter>.
|
|
For type <type>numeric</type>, the result will have the same number of
|
|
fractional decimal digits as <parameter>min</parameter> or
|
|
<parameter>max</parameter>, whichever has more.
|
|
</para>
|
|
<para>
|
|
<literal>random(1, 10)</literal>
|
|
<returnvalue>7</returnvalue>
|
|
</para>
|
|
<para>
|
|
<literal>random(-0.499, 0.499)</literal>
|
|
<returnvalue>0.347</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>random_normal</primary>
|
|
</indexterm>
|
|
|
|
<function>random_normal</function> (
|
|
<optional> <parameter>mean</parameter> <type>double precision</type>
|
|
<optional>, <parameter>stddev</parameter> <type>double precision</type> </optional></optional> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Returns a random value from the normal distribution with the given
|
|
parameters; <parameter>mean</parameter> defaults to 0.0
|
|
and <parameter>stddev</parameter> defaults to 1.0
|
|
</para>
|
|
<para>
|
|
<literal>random_normal(0.0, 1.0)</literal>
|
|
<returnvalue>0.051285419</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm id="function-setseed">
|
|
<primary>setseed</primary>
|
|
</indexterm>
|
|
<function>setseed</function> ( <type>double precision</type> )
|
|
<returnvalue>void</returnvalue>
|
|
</para>
|
|
<para>
|
|
Sets the seed for subsequent <literal>random()</literal> and
|
|
<literal>random_normal()</literal> calls;
|
|
argument must be between -1.0 and 1.0, inclusive
|
|
</para>
|
|
<para>
|
|
<literal>setseed(0.12345)</literal>
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<para>
|
|
The <function>random()</function> and <function>random_normal()</function>
|
|
functions listed in <xref linkend="functions-math-random-table"/> and
|
|
<xref linkend="functions-datetime-table"/> use a
|
|
deterministic pseudo-random number generator.
|
|
It is fast but not suitable for cryptographic
|
|
applications; see the <xref linkend="pgcrypto"/> module for a more
|
|
secure alternative.
|
|
If <function>setseed()</function> is called, the series of results of
|
|
subsequent calls to these functions in the current session
|
|
can be repeated by re-issuing <function>setseed()</function> with the same
|
|
argument.
|
|
Without any prior <function>setseed()</function> call in the same
|
|
session, the first call to any of these functions obtains a seed
|
|
from a platform-dependent source of random bits.
|
|
</para>
|
|
|
|
<para>
|
|
<xref linkend="functions-math-trig-table"/> shows the
|
|
available trigonometric functions. Each of these functions comes in
|
|
two variants, one that measures angles in radians and one that
|
|
measures angles in degrees.
|
|
</para>
|
|
|
|
<table id="functions-math-trig-table">
|
|
<title>Trigonometric Functions</title>
|
|
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
Function
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para>
|
|
<para>
|
|
Example(s)
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>acos</primary>
|
|
</indexterm>
|
|
<function>acos</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse cosine, result in radians
|
|
</para>
|
|
<para>
|
|
<literal>acos(1)</literal>
|
|
<returnvalue>0</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>acosd</primary>
|
|
</indexterm>
|
|
<function>acosd</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse cosine, result in degrees
|
|
</para>
|
|
<para>
|
|
<literal>acosd(0.5)</literal>
|
|
<returnvalue>60</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>asin</primary>
|
|
</indexterm>
|
|
<function>asin</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse sine, result in radians
|
|
</para>
|
|
<para>
|
|
<literal>asin(1)</literal>
|
|
<returnvalue>1.5707963267948966</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>asind</primary>
|
|
</indexterm>
|
|
<function>asind</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse sine, result in degrees
|
|
</para>
|
|
<para>
|
|
<literal>asind(0.5)</literal>
|
|
<returnvalue>30</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>atan</primary>
|
|
</indexterm>
|
|
<function>atan</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse tangent, result in radians
|
|
</para>
|
|
<para>
|
|
<literal>atan(1)</literal>
|
|
<returnvalue>0.7853981633974483</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>atand</primary>
|
|
</indexterm>
|
|
<function>atand</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse tangent, result in degrees
|
|
</para>
|
|
<para>
|
|
<literal>atand(1)</literal>
|
|
<returnvalue>45</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>atan2</primary>
|
|
</indexterm>
|
|
<function>atan2</function> ( <parameter>y</parameter> <type>double precision</type>,
|
|
<parameter>x</parameter> <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse tangent of
|
|
<parameter>y</parameter>/<parameter>x</parameter>,
|
|
result in radians
|
|
</para>
|
|
<para>
|
|
<literal>atan2(1, 0)</literal>
|
|
<returnvalue>1.5707963267948966</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>atan2d</primary>
|
|
</indexterm>
|
|
<function>atan2d</function> ( <parameter>y</parameter> <type>double precision</type>,
|
|
<parameter>x</parameter> <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse tangent of
|
|
<parameter>y</parameter>/<parameter>x</parameter>,
|
|
result in degrees
|
|
</para>
|
|
<para>
|
|
<literal>atan2d(1, 0)</literal>
|
|
<returnvalue>90</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>cos</primary>
|
|
</indexterm>
|
|
<function>cos</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Cosine, argument in radians
|
|
</para>
|
|
<para>
|
|
<literal>cos(0)</literal>
|
|
<returnvalue>1</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>cosd</primary>
|
|
</indexterm>
|
|
<function>cosd</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Cosine, argument in degrees
|
|
</para>
|
|
<para>
|
|
<literal>cosd(60)</literal>
|
|
<returnvalue>0.5</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>cot</primary>
|
|
</indexterm>
|
|
<function>cot</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Cotangent, argument in radians
|
|
</para>
|
|
<para>
|
|
<literal>cot(0.5)</literal>
|
|
<returnvalue>1.830487721712452</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>cotd</primary>
|
|
</indexterm>
|
|
<function>cotd</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Cotangent, argument in degrees
|
|
</para>
|
|
<para>
|
|
<literal>cotd(45)</literal>
|
|
<returnvalue>1</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>sin</primary>
|
|
</indexterm>
|
|
<function>sin</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Sine, argument in radians
|
|
</para>
|
|
<para>
|
|
<literal>sin(1)</literal>
|
|
<returnvalue>0.8414709848078965</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>sind</primary>
|
|
</indexterm>
|
|
<function>sind</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Sine, argument in degrees
|
|
</para>
|
|
<para>
|
|
<literal>sind(30)</literal>
|
|
<returnvalue>0.5</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>tan</primary>
|
|
</indexterm>
|
|
<function>tan</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Tangent, argument in radians
|
|
</para>
|
|
<para>
|
|
<literal>tan(1)</literal>
|
|
<returnvalue>1.5574077246549023</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>tand</primary>
|
|
</indexterm>
|
|
<function>tand</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Tangent, argument in degrees
|
|
</para>
|
|
<para>
|
|
<literal>tand(45)</literal>
|
|
<returnvalue>1</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
<note>
|
|
<para>
|
|
Another way to work with angles measured in degrees is to use the unit
|
|
transformation functions <literal><function>radians()</function></literal>
|
|
and <literal><function>degrees()</function></literal> shown earlier.
|
|
However, using the degree-based trigonometric functions is preferred,
|
|
as that way avoids round-off error for special cases such
|
|
as <literal>sind(30)</literal>.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
<xref linkend="functions-math-hyp-table"/> shows the
|
|
available hyperbolic functions.
|
|
</para>
|
|
|
|
<table id="functions-math-hyp-table">
|
|
<title>Hyperbolic Functions</title>
|
|
|
|
<tgroup cols="1">
|
|
<thead>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
Function
|
|
</para>
|
|
<para>
|
|
Description
|
|
</para>
|
|
<para>
|
|
Example(s)
|
|
</para></entry>
|
|
</row>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>sinh</primary>
|
|
</indexterm>
|
|
<function>sinh</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Hyperbolic sine
|
|
</para>
|
|
<para>
|
|
<literal>sinh(1)</literal>
|
|
<returnvalue>1.1752011936438014</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>cosh</primary>
|
|
</indexterm>
|
|
<function>cosh</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Hyperbolic cosine
|
|
</para>
|
|
<para>
|
|
<literal>cosh(0)</literal>
|
|
<returnvalue>1</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>tanh</primary>
|
|
</indexterm>
|
|
<function>tanh</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Hyperbolic tangent
|
|
</para>
|
|
<para>
|
|
<literal>tanh(1)</literal>
|
|
<returnvalue>0.7615941559557649</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>asinh</primary>
|
|
</indexterm>
|
|
<function>asinh</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse hyperbolic sine
|
|
</para>
|
|
<para>
|
|
<literal>asinh(1)</literal>
|
|
<returnvalue>0.881373587019543</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>acosh</primary>
|
|
</indexterm>
|
|
<function>acosh</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse hyperbolic cosine
|
|
</para>
|
|
<para>
|
|
<literal>acosh(1)</literal>
|
|
<returnvalue>0</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
|
|
<row>
|
|
<entry role="func_table_entry"><para role="func_signature">
|
|
<indexterm>
|
|
<primary>atanh</primary>
|
|
</indexterm>
|
|
<function>atanh</function> ( <type>double precision</type> )
|
|
<returnvalue>double precision</returnvalue>
|
|
</para>
|
|
<para>
|
|
Inverse hyperbolic tangent
|
|
</para>
|
|
<para>
|
|
<literal>atanh(0.5)</literal>
|
|
<returnvalue>0.5493061443340548</returnvalue>
|
|
</para></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
|
|
</sect1>
|
|
|