mirror of
https://github.com/postgres/postgres.git
synced 2025-10-10 00:03:27 -04:00
func.sgml has grown over the years to the point where it is very difficult to manage. This commit splits out each sect1 piece into its own file, which is then included in the main file, so that the built documentation should be identical to the pre-split documentation. All these new files are placed in a new "func" subdirectory, and the previous func.sgml is removed. Done using scripts developed by: Author: jian he <jian.universality@gmail.com> Discussion: https://postgr.es/m/CACJufxFgAh1--EMwOjMuANe=VTmjkNaZjH+AzSe04-8ZCGiESA@mail.gmail.com
1616 lines
50 KiB
Plaintext
1616 lines
50 KiB
Plaintext
<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>
|
|
<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"/> 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>
|