]> begriffs open source - ai-pg/blob - full-docs/src/sgml/html/functions-math.html
PG 18 docs from https://ftp.postgresql.org/pub/source/v18.0/postgresql-18.0-docs...
[ai-pg] / full-docs / src / sgml / html / functions-math.html
1 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>9.3. Mathematical Functions and Operators</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="functions-comparison.html" title="9.2. Comparison Functions and Operators" /><link rel="next" href="functions-string.html" title="9.4. String Functions and Operators" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">9.3. Mathematical Functions and Operators</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="functions-comparison.html" title="9.2. Comparison Functions and Operators">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="functions.html" title="Chapter 9. Functions and Operators">Up</a></td><th width="60%" align="center">Chapter 9. Functions and Operators</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 18.0 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="functions-string.html" title="9.4. String Functions and Operators">Next</a></td></tr></table><hr /></div><div class="sect1" id="FUNCTIONS-MATH"><div class="titlepage"><div><div><h2 class="title" style="clear: both">9.3. Mathematical Functions and Operators <a href="#FUNCTIONS-MATH" class="id_link">#</a></h2></div></div></div><p>
3     Mathematical operators are provided for many
4     <span class="productname">PostgreSQL</span> types. For types without
5     standard mathematical conventions
6     (e.g., date/time types) we
7     describe the actual behavior in subsequent sections.
8    </p><p>
9     <a class="xref" href="functions-math.html#FUNCTIONS-MATH-OP-TABLE" title="Table 9.4. Mathematical Operators">Table 9.4</a> shows the mathematical
10     operators that are available for the standard numeric types.
11     Unless otherwise noted, operators shown as
12     accepting <em class="replaceable"><code>numeric_type</code></em> are available for all
13     the types <code class="type">smallint</code>, <code class="type">integer</code>,
14     <code class="type">bigint</code>, <code class="type">numeric</code>, <code class="type">real</code>,
15     and <code class="type">double precision</code>.
16     Operators shown as accepting <em class="replaceable"><code>integral_type</code></em>
17     are available for the types <code class="type">smallint</code>, <code class="type">integer</code>,
18     and <code class="type">bigint</code>.
19     Except where noted, each form of an operator returns the same data type
20     as its argument(s).  Calls involving multiple argument data types, such
21     as <code class="type">integer</code> <code class="literal">+</code> <code class="type">numeric</code>,
22     are resolved by using the type appearing later in these lists.
23    </p><div class="table" id="FUNCTIONS-MATH-OP-TABLE"><p class="title"><strong>Table 9.4. Mathematical Operators</strong></p><div class="table-contents"><table class="table" summary="Mathematical Operators" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature">
24         Operator
25        </p>
26        <p>
27         Description
28        </p>
29        <p>
30         Example(s)
31        </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature">
32         <em class="replaceable"><code>numeric_type</code></em> <code class="literal">+</code> <em class="replaceable"><code>numeric_type</code></em>
33         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
34        </p>
35        <p>
36         Addition
37        </p>
38        <p>
39         <code class="literal">2 + 3</code>
40         → <code class="returnvalue">5</code>
41        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
42         <code class="literal">+</code> <em class="replaceable"><code>numeric_type</code></em>
43         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
44        </p>
45        <p>
46         Unary plus (no operation)
47        </p>
48        <p>
49         <code class="literal">+ 3.5</code>
50         → <code class="returnvalue">3.5</code>
51        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
52         <em class="replaceable"><code>numeric_type</code></em> <code class="literal">-</code> <em class="replaceable"><code>numeric_type</code></em>
53         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
54        </p>
55        <p>
56         Subtraction
57        </p>
58        <p>
59         <code class="literal">2 - 3</code>
60         → <code class="returnvalue">-1</code>
61        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
62         <code class="literal">-</code> <em class="replaceable"><code>numeric_type</code></em>
63         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
64        </p>
65        <p>
66         Negation
67        </p>
68        <p>
69         <code class="literal">- (-4)</code>
70         → <code class="returnvalue">4</code>
71        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
72         <em class="replaceable"><code>numeric_type</code></em> <code class="literal">*</code> <em class="replaceable"><code>numeric_type</code></em>
73         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
74        </p>
75        <p>
76         Multiplication
77        </p>
78        <p>
79         <code class="literal">2 * 3</code>
80         → <code class="returnvalue">6</code>
81        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
82         <em class="replaceable"><code>numeric_type</code></em> <code class="literal">/</code> <em class="replaceable"><code>numeric_type</code></em>
83         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
84        </p>
85        <p>
86         Division (for integral types, division truncates the result towards
87         zero)
88        </p>
89        <p>
90         <code class="literal">5.0 / 2</code>
91         → <code class="returnvalue">2.5000000000000000</code>
92        </p>
93        <p>
94         <code class="literal">5 / 2</code>
95         → <code class="returnvalue">2</code>
96        </p>
97        <p>
98         <code class="literal">(-5) / 2</code>
99         → <code class="returnvalue">-2</code>
100        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
101         <em class="replaceable"><code>numeric_type</code></em> <code class="literal">%</code> <em class="replaceable"><code>numeric_type</code></em>
102         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
103        </p>
104        <p>
105         Modulo (remainder); available for <code class="type">smallint</code>,
106         <code class="type">integer</code>, <code class="type">bigint</code>, and <code class="type">numeric</code>
107        </p>
108        <p>
109         <code class="literal">5 % 4</code>
110         → <code class="returnvalue">1</code>
111        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
112         <code class="type">numeric</code> <code class="literal">^</code> <code class="type">numeric</code>
113         → <code class="returnvalue">numeric</code>
114        </p>
115        <p class="func_signature">
116         <code class="type">double precision</code> <code class="literal">^</code> <code class="type">double precision</code>
117         → <code class="returnvalue">double precision</code>
118        </p>
119        <p>
120         Exponentiation
121        </p>
122        <p>
123         <code class="literal">2 ^ 3</code>
124         → <code class="returnvalue">8</code>
125        </p>
126        <p>
127         Unlike typical mathematical practice, multiple uses of
128         <code class="literal">^</code> will associate left to right by default:
129        </p>
130        <p>
131         <code class="literal">2 ^ 3 ^ 3</code>
132         → <code class="returnvalue">512</code>
133        </p>
134        <p>
135         <code class="literal">2 ^ (3 ^ 3)</code>
136         → <code class="returnvalue">134217728</code>
137        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
138         <code class="literal">|/</code> <code class="type">double precision</code>
139         → <code class="returnvalue">double precision</code>
140        </p>
141        <p>
142         Square root
143        </p>
144        <p>
145         <code class="literal">|/ 25.0</code>
146         → <code class="returnvalue">5</code>
147        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
148         <code class="literal">||/</code> <code class="type">double precision</code>
149         → <code class="returnvalue">double precision</code>
150        </p>
151        <p>
152         Cube root
153        </p>
154        <p>
155         <code class="literal">||/ 64.0</code>
156         → <code class="returnvalue">4</code>
157        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
158         <code class="literal">@</code> <em class="replaceable"><code>numeric_type</code></em>
159         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
160        </p>
161        <p>
162         Absolute value
163        </p>
164        <p>
165         <code class="literal">@ -5.0</code>
166         → <code class="returnvalue">5.0</code>
167        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
168         <em class="replaceable"><code>integral_type</code></em> <code class="literal">&amp;</code> <em class="replaceable"><code>integral_type</code></em>
169         → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code>
170        </p>
171        <p>
172         Bitwise AND
173        </p>
174        <p>
175         <code class="literal">91 &amp; 15</code>
176         → <code class="returnvalue">11</code>
177        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
178         <em class="replaceable"><code>integral_type</code></em> <code class="literal">|</code> <em class="replaceable"><code>integral_type</code></em>
179         → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code>
180        </p>
181        <p>
182         Bitwise OR
183        </p>
184        <p>
185         <code class="literal">32 | 3</code>
186         → <code class="returnvalue">35</code>
187        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
188         <em class="replaceable"><code>integral_type</code></em> <code class="literal">#</code> <em class="replaceable"><code>integral_type</code></em>
189         → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code>
190        </p>
191        <p>
192         Bitwise exclusive OR
193        </p>
194        <p>
195         <code class="literal">17 # 5</code>
196         → <code class="returnvalue">20</code>
197        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
198         <code class="literal">~</code> <em class="replaceable"><code>integral_type</code></em>
199         → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code>
200        </p>
201        <p>
202         Bitwise NOT
203        </p>
204        <p>
205         <code class="literal">~1</code>
206         → <code class="returnvalue">-2</code>
207        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
208         <em class="replaceable"><code>integral_type</code></em> <code class="literal">&lt;&lt;</code> <code class="type">integer</code>
209         → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code>
210        </p>
211        <p>
212         Bitwise shift left
213        </p>
214        <p>
215         <code class="literal">1 &lt;&lt; 4</code>
216         → <code class="returnvalue">16</code>
217        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
218         <em class="replaceable"><code>integral_type</code></em> <code class="literal">&gt;&gt;</code> <code class="type">integer</code>
219         → <code class="returnvalue"><em class="replaceable"><code>integral_type</code></em></code>
220        </p>
221        <p>
222         Bitwise shift right
223        </p>
224        <p>
225         <code class="literal">8 &gt;&gt; 2</code>
226         → <code class="returnvalue">2</code>
227        </p></td></tr></tbody></table></div></div><br class="table-break" /><p>
228    <a class="xref" href="functions-math.html#FUNCTIONS-MATH-FUNC-TABLE" title="Table 9.5. Mathematical Functions">Table 9.5</a> shows the available
229    mathematical functions.
230    Many of these functions are provided in multiple forms with different
231    argument types.
232    Except where noted, any given form of a function returns the same
233    data type as its argument(s); cross-type cases are resolved in the
234    same way as explained above for operators.
235    The functions working with <code class="type">double precision</code> data are mostly
236    implemented on top of the host system's C library; accuracy and behavior in
237    boundary cases can therefore vary depending on the host system.
238   </p><div class="table" id="FUNCTIONS-MATH-FUNC-TABLE"><p class="title"><strong>Table 9.5. Mathematical Functions</strong></p><div class="table-contents"><table class="table" summary="Mathematical Functions" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature">
239         Function
240        </p>
241        <p>
242         Description
243        </p>
244        <p>
245         Example(s)
246        </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature">
247         <a id="id-1.5.8.9.6.2.2.1.1.1.1" class="indexterm"></a>
248         <code class="function">abs</code> ( <em class="replaceable"><code>numeric_type</code></em> )
249         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
250        </p>
251        <p>
252         Absolute value
253        </p>
254        <p>
255         <code class="literal">abs(-17.4)</code>
256         → <code class="returnvalue">17.4</code>
257        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
258         <a id="id-1.5.8.9.6.2.2.2.1.1.1" class="indexterm"></a>
259         <code class="function">cbrt</code> ( <code class="type">double precision</code> )
260         → <code class="returnvalue">double precision</code>
261        </p>
262        <p>
263         Cube root
264        </p>
265        <p>
266         <code class="literal">cbrt(64.0)</code>
267         → <code class="returnvalue">4</code>
268        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
269         <a id="id-1.5.8.9.6.2.2.3.1.1.1" class="indexterm"></a>
270         <code class="function">ceil</code> ( <code class="type">numeric</code> )
271         → <code class="returnvalue">numeric</code>
272        </p>
273        <p class="func_signature">
274         <code class="function">ceil</code> ( <code class="type">double precision</code> )
275         → <code class="returnvalue">double precision</code>
276        </p>
277        <p>
278         Nearest integer greater than or equal to argument
279        </p>
280        <p>
281         <code class="literal">ceil(42.2)</code>
282         → <code class="returnvalue">43</code>
283        </p>
284        <p>
285         <code class="literal">ceil(-42.8)</code>
286         → <code class="returnvalue">-42</code>
287        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
288         <a id="id-1.5.8.9.6.2.2.4.1.1.1" class="indexterm"></a>
289         <code class="function">ceiling</code> ( <code class="type">numeric</code> )
290         → <code class="returnvalue">numeric</code>
291        </p>
292        <p class="func_signature">
293         <code class="function">ceiling</code> ( <code class="type">double precision</code> )
294         → <code class="returnvalue">double precision</code>
295        </p>
296        <p>
297         Nearest integer greater than or equal to argument (same
298         as <code class="function">ceil</code>)
299        </p>
300        <p>
301         <code class="literal">ceiling(95.3)</code>
302         → <code class="returnvalue">96</code>
303        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
304         <a id="id-1.5.8.9.6.2.2.5.1.1.1" class="indexterm"></a>
305         <code class="function">degrees</code> ( <code class="type">double precision</code> )
306         → <code class="returnvalue">double precision</code>
307        </p>
308        <p>
309         Converts radians to degrees
310        </p>
311        <p>
312         <code class="literal">degrees(0.5)</code>
313         → <code class="returnvalue">28.64788975654116</code>
314        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
315         <a id="id-1.5.8.9.6.2.2.6.1.1.1" class="indexterm"></a>
316         <code class="function">div</code> ( <em class="parameter"><code>y</code></em> <code class="type">numeric</code>,
317         <em class="parameter"><code>x</code></em> <code class="type">numeric</code> )
318         → <code class="returnvalue">numeric</code>
319        </p>
320        <p>
321         Integer quotient of <em class="parameter"><code>y</code></em>/<em class="parameter"><code>x</code></em>
322         (truncates towards zero)
323        </p>
324        <p>
325         <code class="literal">div(9, 4)</code>
326         → <code class="returnvalue">2</code>
327        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
328         <a id="id-1.5.8.9.6.2.2.7.1.1.1" class="indexterm"></a>
329         <code class="function">erf</code> ( <code class="type">double precision</code> )
330         → <code class="returnvalue">double precision</code>
331        </p>
332        <p>
333         Error function
334        </p>
335        <p>
336         <code class="literal">erf(1.0)</code>
337         → <code class="returnvalue">0.8427007929497149</code>
338        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
339         <a id="id-1.5.8.9.6.2.2.8.1.1.1" class="indexterm"></a>
340         <code class="function">erfc</code> ( <code class="type">double precision</code> )
341         → <code class="returnvalue">double precision</code>
342        </p>
343        <p>
344         Complementary error function (<code class="literal">1 - erf(x)</code>, without
345         loss of precision for large inputs)
346        </p>
347        <p>
348         <code class="literal">erfc(1.0)</code>
349         → <code class="returnvalue">0.15729920705028513</code>
350        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
351         <a id="id-1.5.8.9.6.2.2.9.1.1.1" class="indexterm"></a>
352         <code class="function">exp</code> ( <code class="type">numeric</code> )
353         → <code class="returnvalue">numeric</code>
354        </p>
355        <p class="func_signature">
356         <code class="function">exp</code> ( <code class="type">double precision</code> )
357         → <code class="returnvalue">double precision</code>
358        </p>
359        <p>
360         Exponential (<code class="literal">e</code> raised to the given power)
361        </p>
362        <p>
363         <code class="literal">exp(1.0)</code>
364         → <code class="returnvalue">2.7182818284590452</code>
365        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
366         <a id="FUNCTION-FACTORIAL" class="indexterm"></a>
367         <code class="function">factorial</code> ( <code class="type">bigint</code> )
368         → <code class="returnvalue">numeric</code>
369        </p>
370        <p>
371         Factorial
372        </p>
373        <p>
374         <code class="literal">factorial(5)</code>
375         → <code class="returnvalue">120</code>
376        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
377         <a id="id-1.5.8.9.6.2.2.11.1.1.1" class="indexterm"></a>
378         <code class="function">floor</code> ( <code class="type">numeric</code> )
379         → <code class="returnvalue">numeric</code>
380        </p>
381        <p class="func_signature">
382         <code class="function">floor</code> ( <code class="type">double precision</code> )
383         → <code class="returnvalue">double precision</code>
384        </p>
385        <p>
386         Nearest integer less than or equal to argument
387        </p>
388        <p>
389         <code class="literal">floor(42.8)</code>
390         → <code class="returnvalue">42</code>
391        </p>
392        <p>
393         <code class="literal">floor(-42.8)</code>
394         → <code class="returnvalue">-43</code>
395        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
396         <a id="id-1.5.8.9.6.2.2.12.1.1.1" class="indexterm"></a>
397         <code class="function">gamma</code> ( <code class="type">double precision</code> )
398         → <code class="returnvalue">double precision</code>
399        </p>
400        <p>
401         Gamma function
402        </p>
403        <p>
404         <code class="literal">gamma(0.5)</code>
405         → <code class="returnvalue">1.772453850905516</code>
406        </p>
407        <p>
408         <code class="literal">gamma(6)</code>
409         → <code class="returnvalue">120</code>
410        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
411         <a id="id-1.5.8.9.6.2.2.13.1.1.1" class="indexterm"></a>
412         <code class="function">gcd</code> ( <em class="replaceable"><code>numeric_type</code></em>, <em class="replaceable"><code>numeric_type</code></em> )
413         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
414        </p>
415        <p>
416         Greatest common divisor (the largest positive number that divides both
417         inputs with no remainder); returns <code class="literal">0</code> if both inputs
418         are zero; available for <code class="type">integer</code>, <code class="type">bigint</code>,
419         and <code class="type">numeric</code>
420        </p>
421        <p>
422         <code class="literal">gcd(1071, 462)</code>
423         → <code class="returnvalue">21</code>
424        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
425         <a id="id-1.5.8.9.6.2.2.14.1.1.1" class="indexterm"></a>
426         <code class="function">lcm</code> ( <em class="replaceable"><code>numeric_type</code></em>, <em class="replaceable"><code>numeric_type</code></em> )
427         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
428        </p>
429        <p>
430         Least common multiple (the smallest strictly positive number that is
431         an integral multiple of both inputs); returns <code class="literal">0</code> if
432         either input is zero; available for <code class="type">integer</code>,
433         <code class="type">bigint</code>, and <code class="type">numeric</code>
434        </p>
435        <p>
436         <code class="literal">lcm(1071, 462)</code>
437         → <code class="returnvalue">23562</code>
438        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
439         <a id="id-1.5.8.9.6.2.2.15.1.1.1" class="indexterm"></a>
440         <code class="function">lgamma</code> ( <code class="type">double precision</code> )
441         → <code class="returnvalue">double precision</code>
442        </p>
443        <p>
444         Natural logarithm of the absolute value of the gamma function
445        </p>
446        <p>
447         <code class="literal">lgamma(1000)</code>
448         → <code class="returnvalue">5905.220423209181</code>
449        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
450         <a id="id-1.5.8.9.6.2.2.16.1.1.1" class="indexterm"></a>
451         <code class="function">ln</code> ( <code class="type">numeric</code> )
452         → <code class="returnvalue">numeric</code>
453        </p>
454        <p class="func_signature">
455         <code class="function">ln</code> ( <code class="type">double precision</code> )
456         → <code class="returnvalue">double precision</code>
457        </p>
458        <p>
459         Natural logarithm
460        </p>
461        <p>
462         <code class="literal">ln(2.0)</code>
463         → <code class="returnvalue">0.6931471805599453</code>
464        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
465         <a id="id-1.5.8.9.6.2.2.17.1.1.1" class="indexterm"></a>
466         <code class="function">log</code> ( <code class="type">numeric</code> )
467         → <code class="returnvalue">numeric</code>
468        </p>
469        <p class="func_signature">
470         <code class="function">log</code> ( <code class="type">double precision</code> )
471         → <code class="returnvalue">double precision</code>
472        </p>
473        <p>
474         Base 10 logarithm
475        </p>
476        <p>
477         <code class="literal">log(100)</code>
478         → <code class="returnvalue">2</code>
479        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
480         <a id="id-1.5.8.9.6.2.2.18.1.1.1" class="indexterm"></a>
481         <code class="function">log10</code> ( <code class="type">numeric</code> )
482         → <code class="returnvalue">numeric</code>
483        </p>
484        <p class="func_signature">
485         <code class="function">log10</code> ( <code class="type">double precision</code> )
486         → <code class="returnvalue">double precision</code>
487        </p>
488        <p>
489         Base 10 logarithm (same as <code class="function">log</code>)
490        </p>
491        <p>
492         <code class="literal">log10(1000)</code>
493         → <code class="returnvalue">3</code>
494        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
495         <code class="function">log</code> ( <em class="parameter"><code>b</code></em> <code class="type">numeric</code>,
496         <em class="parameter"><code>x</code></em> <code class="type">numeric</code> )
497         → <code class="returnvalue">numeric</code>
498        </p>
499        <p>
500         Logarithm of <em class="parameter"><code>x</code></em> to base <em class="parameter"><code>b</code></em>
501        </p>
502        <p>
503        <code class="literal">log(2.0, 64.0)</code>
504        → <code class="returnvalue">6.0000000000000000</code>
505        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
506         <a id="id-1.5.8.9.6.2.2.20.1.1.1" class="indexterm"></a>
507         <code class="function">min_scale</code> ( <code class="type">numeric</code> )
508         → <code class="returnvalue">integer</code>
509        </p>
510        <p>
511         Minimum scale (number of fractional decimal digits) needed
512         to represent the supplied value precisely
513        </p>
514        <p>
515         <code class="literal">min_scale(8.4100)</code>
516         → <code class="returnvalue">2</code>
517        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
518         <a id="id-1.5.8.9.6.2.2.21.1.1.1" class="indexterm"></a>
519         <code class="function">mod</code> ( <em class="parameter"><code>y</code></em> <em class="replaceable"><code>numeric_type</code></em>,
520         <em class="parameter"><code>x</code></em> <em class="replaceable"><code>numeric_type</code></em> )
521         → <code class="returnvalue"><em class="replaceable"><code>numeric_type</code></em></code>
522        </p>
523        <p>
524         Remainder of <em class="parameter"><code>y</code></em>/<em class="parameter"><code>x</code></em>;
525         available for <code class="type">smallint</code>, <code class="type">integer</code>,
526         <code class="type">bigint</code>, and <code class="type">numeric</code>
527        </p>
528        <p>
529         <code class="literal">mod(9, 4)</code>
530         → <code class="returnvalue">1</code>
531        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
532         <a id="id-1.5.8.9.6.2.2.22.1.1.1" class="indexterm"></a>
533         <code class="function">pi</code> (  )
534         → <code class="returnvalue">double precision</code>
535        </p>
536        <p>
537         Approximate value of <span class="symbol_font">π</span>
538        </p>
539        <p>
540         <code class="literal">pi()</code>
541         → <code class="returnvalue">3.141592653589793</code>
542        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
543         <a id="id-1.5.8.9.6.2.2.23.1.1.1" class="indexterm"></a>
544         <code class="function">power</code> ( <em class="parameter"><code>a</code></em> <code class="type">numeric</code>,
545         <em class="parameter"><code>b</code></em> <code class="type">numeric</code> )
546         → <code class="returnvalue">numeric</code>
547        </p>
548        <p class="func_signature">
549         <code class="function">power</code> ( <em class="parameter"><code>a</code></em> <code class="type">double precision</code>,
550         <em class="parameter"><code>b</code></em> <code class="type">double precision</code> )
551         → <code class="returnvalue">double precision</code>
552        </p>
553        <p>
554         <em class="parameter"><code>a</code></em> raised to the power of <em class="parameter"><code>b</code></em>
555        </p>
556        <p>
557         <code class="literal">power(9, 3)</code>
558         → <code class="returnvalue">729</code>
559        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
560         <a id="id-1.5.8.9.6.2.2.24.1.1.1" class="indexterm"></a>
561         <code class="function">radians</code> ( <code class="type">double precision</code> )
562         → <code class="returnvalue">double precision</code>
563        </p>
564        <p>
565         Converts degrees to radians
566        </p>
567        <p>
568         <code class="literal">radians(45.0)</code>
569         → <code class="returnvalue">0.7853981633974483</code>
570        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
571         <a id="id-1.5.8.9.6.2.2.25.1.1.1" class="indexterm"></a>
572         <code class="function">round</code> ( <code class="type">numeric</code> )
573         → <code class="returnvalue">numeric</code>
574        </p>
575        <p class="func_signature">
576         <code class="function">round</code> ( <code class="type">double precision</code> )
577         → <code class="returnvalue">double precision</code>
578        </p>
579        <p>
580         Rounds to nearest integer.  For <code class="type">numeric</code>, ties are
581         broken by rounding away from zero.  For <code class="type">double precision</code>,
582         the tie-breaking behavior is platform dependent, but
583         <span class="quote">“<span class="quote">round to nearest even</span>”</span> is the most common rule.
584        </p>
585        <p>
586         <code class="literal">round(42.4)</code>
587         → <code class="returnvalue">42</code>
588        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
589         <code class="function">round</code> ( <em class="parameter"><code>v</code></em> <code class="type">numeric</code>, <em class="parameter"><code>s</code></em> <code class="type">integer</code> )
590         → <code class="returnvalue">numeric</code>
591        </p>
592        <p>
593         Rounds <em class="parameter"><code>v</code></em> to <em class="parameter"><code>s</code></em> decimal
594         places.  Ties are broken by rounding away from zero.
595        </p>
596        <p>
597         <code class="literal">round(42.4382, 2)</code>
598         → <code class="returnvalue">42.44</code>
599        </p>
600        <p>
601         <code class="literal">round(1234.56, -1)</code>
602         → <code class="returnvalue">1230</code>
603        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
604         <a id="id-1.5.8.9.6.2.2.27.1.1.1" class="indexterm"></a>
605         <code class="function">scale</code> ( <code class="type">numeric</code> )
606         → <code class="returnvalue">integer</code>
607        </p>
608        <p>
609         Scale of the argument (the number of decimal digits in the fractional part)
610        </p>
611        <p>
612         <code class="literal">scale(8.4100)</code>
613         → <code class="returnvalue">4</code>
614        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
615         <a id="id-1.5.8.9.6.2.2.28.1.1.1" class="indexterm"></a>
616         <code class="function">sign</code> ( <code class="type">numeric</code> )
617         → <code class="returnvalue">numeric</code>
618        </p>
619        <p class="func_signature">
620         <code class="function">sign</code> ( <code class="type">double precision</code> )
621         → <code class="returnvalue">double precision</code>
622        </p>
623        <p>
624         Sign of the argument (-1, 0, or +1)
625        </p>
626        <p>
627         <code class="literal">sign(-8.4)</code>
628         → <code class="returnvalue">-1</code>
629        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
630         <a id="id-1.5.8.9.6.2.2.29.1.1.1" class="indexterm"></a>
631          <code class="function">sqrt</code> ( <code class="type">numeric</code> )
632          → <code class="returnvalue">numeric</code>
633        </p>
634        <p class="func_signature">
635          <code class="function">sqrt</code> ( <code class="type">double precision</code> )
636          → <code class="returnvalue">double precision</code>
637        </p>
638        <p>
639         Square root
640        </p>
641        <p>
642         <code class="literal">sqrt(2)</code>
643         → <code class="returnvalue">1.4142135623730951</code>
644        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
645         <a id="id-1.5.8.9.6.2.2.30.1.1.1" class="indexterm"></a>
646         <code class="function">trim_scale</code> ( <code class="type">numeric</code> )
647         → <code class="returnvalue">numeric</code>
648        </p>
649        <p>
650         Reduces the value's scale (number of fractional decimal digits) by
651         removing trailing zeroes
652        </p>
653        <p>
654         <code class="literal">trim_scale(8.4100)</code>
655         → <code class="returnvalue">8.41</code>
656        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
657         <a id="id-1.5.8.9.6.2.2.31.1.1.1" class="indexterm"></a>
658         <code class="function">trunc</code> ( <code class="type">numeric</code> )
659         → <code class="returnvalue">numeric</code>
660        </p>
661        <p class="func_signature">
662         <code class="function">trunc</code> ( <code class="type">double precision</code> )
663         → <code class="returnvalue">double precision</code>
664        </p>
665        <p>
666         Truncates to integer (towards zero)
667        </p>
668        <p>
669         <code class="literal">trunc(42.8)</code>
670         → <code class="returnvalue">42</code>
671        </p>
672        <p>
673         <code class="literal">trunc(-42.8)</code>
674         → <code class="returnvalue">-42</code>
675        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
676         <code class="function">trunc</code> ( <em class="parameter"><code>v</code></em> <code class="type">numeric</code>, <em class="parameter"><code>s</code></em> <code class="type">integer</code> )
677        → <code class="returnvalue">numeric</code>
678        </p>
679        <p>
680         Truncates <em class="parameter"><code>v</code></em> to <em class="parameter"><code>s</code></em>
681         decimal places
682        </p>
683        <p>
684         <code class="literal">trunc(42.4382, 2)</code>
685         → <code class="returnvalue">42.43</code>
686        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
687         <a id="id-1.5.8.9.6.2.2.33.1.1.1" class="indexterm"></a>
688         <code class="function">width_bucket</code> ( <em class="parameter"><code>operand</code></em> <code class="type">numeric</code>, <em class="parameter"><code>low</code></em> <code class="type">numeric</code>, <em class="parameter"><code>high</code></em> <code class="type">numeric</code>, <em class="parameter"><code>count</code></em> <code class="type">integer</code> )
689         → <code class="returnvalue">integer</code>
690        </p>
691        <p class="func_signature">
692         <code class="function">width_bucket</code> ( <em class="parameter"><code>operand</code></em> <code class="type">double precision</code>, <em class="parameter"><code>low</code></em> <code class="type">double precision</code>, <em class="parameter"><code>high</code></em> <code class="type">double precision</code>, <em class="parameter"><code>count</code></em> <code class="type">integer</code> )
693         → <code class="returnvalue">integer</code>
694        </p>
695        <p>
696         Returns the number of the bucket in
697         which <em class="parameter"><code>operand</code></em> falls in a histogram
698         having <em class="parameter"><code>count</code></em> equal-width buckets spanning the
699         range <em class="parameter"><code>low</code></em> to <em class="parameter"><code>high</code></em>.
700         The buckets have inclusive lower bounds and exclusive upper bounds.
701         Returns <code class="literal">0</code> for an input less
702         than <em class="parameter"><code>low</code></em>,
703         or <code class="literal"><em class="parameter"><code>count</code></em>+1</code> for an input
704         greater than or equal to <em class="parameter"><code>high</code></em>.
705         If <em class="parameter"><code>low</code></em> &gt; <em class="parameter"><code>high</code></em>,
706         the behavior is mirror-reversed, with bucket <code class="literal">1</code>
707         now being the one just below <em class="parameter"><code>low</code></em>, and the
708         inclusive bounds now being on the upper side.
709        </p>
710        <p>
711         <code class="literal">width_bucket(5.35, 0.024, 10.06, 5)</code>
712         → <code class="returnvalue">3</code>
713        </p>
714        <p>
715         <code class="literal">width_bucket(9, 10, 0, 10)</code>
716         → <code class="returnvalue">2</code>
717        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
718         <code class="function">width_bucket</code> ( <em class="parameter"><code>operand</code></em> <code class="type">anycompatible</code>, <em class="parameter"><code>thresholds</code></em> <code class="type">anycompatiblearray</code> )
719        → <code class="returnvalue">integer</code>
720        </p>
721        <p>
722         Returns the number of the bucket in
723         which <em class="parameter"><code>operand</code></em> falls given an array listing the
724         inclusive lower bounds of the buckets.
725         Returns <code class="literal">0</code> for an input less than the first lower
726         bound.  <em class="parameter"><code>operand</code></em> and the array elements can be
727         of any type having standard comparison operators.
728         The <em class="parameter"><code>thresholds</code></em> array <span class="emphasis"><em>must be
729         sorted</em></span>, smallest first, or unexpected results will be
730         obtained.
731        </p>
732        <p>
733         <code class="literal">width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamptz[])</code>
734         → <code class="returnvalue">2</code>
735        </p></td></tr></tbody></table></div></div><br class="table-break" /><p>
736     <a class="xref" href="functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE" title="Table 9.6. Random Functions">Table 9.6</a> shows functions for
737     generating random numbers.
738   </p><div class="table" id="FUNCTIONS-MATH-RANDOM-TABLE"><p class="title"><strong>Table 9.6. Random Functions</strong></p><div class="table-contents"><table class="table" summary="Random Functions" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature">
739         Function
740        </p>
741        <p>
742         Description
743        </p>
744        <p>
745         Example(s)
746        </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature">
747         <a id="id-1.5.8.9.8.2.2.1.1.1.1" class="indexterm"></a>
748         <code class="function">random</code> ( )
749         → <code class="returnvalue">double precision</code>
750        </p>
751        <p>
752         Returns a random value in the range 0.0 &lt;= x &lt; 1.0
753        </p>
754        <p>
755         <code class="literal">random()</code>
756         → <code class="returnvalue">0.897124072839091</code>
757        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
758         <a id="id-1.5.8.9.8.2.2.2.1.1.1" class="indexterm"></a>
759         <code class="function">random</code> ( <em class="parameter"><code>min</code></em> <code class="type">integer</code>, <em class="parameter"><code>max</code></em> <code class="type">integer</code> )
760         → <code class="returnvalue">integer</code>
761        </p>
762        <p class="func_signature">
763         <code class="function">random</code> ( <em class="parameter"><code>min</code></em> <code class="type">bigint</code>, <em class="parameter"><code>max</code></em> <code class="type">bigint</code> )
764         → <code class="returnvalue">bigint</code>
765        </p>
766        <p class="func_signature">
767         <code class="function">random</code> ( <em class="parameter"><code>min</code></em> <code class="type">numeric</code>, <em class="parameter"><code>max</code></em> <code class="type">numeric</code> )
768         → <code class="returnvalue">numeric</code>
769        </p>
770        <p>
771         Returns a random value in the range
772         <em class="parameter"><code>min</code></em> &lt;= x &lt;= <em class="parameter"><code>max</code></em>.
773         For type <code class="type">numeric</code>, the result will have the same number of
774         fractional decimal digits as <em class="parameter"><code>min</code></em> or
775         <em class="parameter"><code>max</code></em>, whichever has more.
776        </p>
777        <p>
778         <code class="literal">random(1, 10)</code>
779         → <code class="returnvalue">7</code>
780        </p>
781        <p>
782         <code class="literal">random(-0.499, 0.499)</code>
783         → <code class="returnvalue">0.347</code>
784        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
785         <a id="id-1.5.8.9.8.2.2.3.1.1.1" class="indexterm"></a>
786
787          <code class="function">random_normal</code> (
788          [<span class="optional"> <em class="parameter"><code>mean</code></em> <code class="type">double precision</code>
789          [<span class="optional">, <em class="parameter"><code>stddev</code></em> <code class="type">double precision</code> </span>]</span>] )
790          → <code class="returnvalue">double precision</code>
791        </p>
792        <p>
793         Returns a random value from the normal distribution with the given
794         parameters; <em class="parameter"><code>mean</code></em> defaults to 0.0
795         and <em class="parameter"><code>stddev</code></em> defaults to 1.0
796        </p>
797        <p>
798         <code class="literal">random_normal(0.0, 1.0)</code>
799         → <code class="returnvalue">0.051285419</code>
800        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
801         <a id="id-1.5.8.9.8.2.2.4.1.1.1" class="indexterm"></a>
802         <code class="function">setseed</code> ( <code class="type">double precision</code> )
803         → <code class="returnvalue">void</code>
804        </p>
805        <p>
806         Sets the seed for subsequent <code class="literal">random()</code> and
807         <code class="literal">random_normal()</code> calls;
808         argument must be between -1.0 and 1.0, inclusive
809        </p>
810        <p>
811         <code class="literal">setseed(0.12345)</code>
812        </p></td></tr></tbody></table></div></div><br class="table-break" /><p>
813    The <code class="function">random()</code> and <code class="function">random_normal()</code>
814    functions listed in <a class="xref" href="functions-math.html#FUNCTIONS-MATH-RANDOM-TABLE" title="Table 9.6. Random Functions">Table 9.6</a> use a
815    deterministic pseudo-random number generator.
816    It is fast but not suitable for cryptographic
817    applications; see the <a class="xref" href="pgcrypto.html" title="F.26. pgcrypto — cryptographic functions">pgcrypto</a> module for a more
818    secure alternative.
819    If <code class="function">setseed()</code> is called, the series of results of
820    subsequent calls to these functions in the current session
821    can be repeated by re-issuing <code class="function">setseed()</code> with the same
822    argument.
823    Without any prior <code class="function">setseed()</code> call in the same
824    session, the first call to any of these functions obtains a seed
825    from a platform-dependent source of random bits.
826   </p><p>
827    <a class="xref" href="functions-math.html#FUNCTIONS-MATH-TRIG-TABLE" title="Table 9.7. Trigonometric Functions">Table 9.7</a> shows the
828    available trigonometric functions.  Each of these functions comes in
829    two variants, one that measures angles in radians and one that
830    measures angles in degrees.
831   </p><div class="table" id="FUNCTIONS-MATH-TRIG-TABLE"><p class="title"><strong>Table 9.7. Trigonometric Functions</strong></p><div class="table-contents"><table class="table" summary="Trigonometric Functions" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature">
832         Function
833        </p>
834        <p>
835         Description
836        </p>
837        <p>
838         Example(s)
839        </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature">
840         <a id="id-1.5.8.9.11.2.2.1.1.1.1" class="indexterm"></a>
841         <code class="function">acos</code> ( <code class="type">double precision</code> )
842         → <code class="returnvalue">double precision</code>
843        </p>
844        <p>
845         Inverse cosine, result in radians
846        </p>
847        <p>
848         <code class="literal">acos(1)</code>
849         → <code class="returnvalue">0</code>
850        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
851         <a id="id-1.5.8.9.11.2.2.2.1.1.1" class="indexterm"></a>
852         <code class="function">acosd</code> ( <code class="type">double precision</code> )
853         → <code class="returnvalue">double precision</code>
854        </p>
855        <p>
856         Inverse cosine, result in degrees
857        </p>
858        <p>
859         <code class="literal">acosd(0.5)</code>
860         → <code class="returnvalue">60</code>
861        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
862         <a id="id-1.5.8.9.11.2.2.3.1.1.1" class="indexterm"></a>
863         <code class="function">asin</code> ( <code class="type">double precision</code> )
864         → <code class="returnvalue">double precision</code>
865        </p>
866        <p>
867         Inverse sine, result in radians
868        </p>
869        <p>
870         <code class="literal">asin(1)</code>
871         → <code class="returnvalue">1.5707963267948966</code>
872        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
873         <a id="id-1.5.8.9.11.2.2.4.1.1.1" class="indexterm"></a>
874         <code class="function">asind</code> ( <code class="type">double precision</code> )
875         → <code class="returnvalue">double precision</code>
876        </p>
877        <p>
878         Inverse sine, result in degrees
879        </p>
880        <p>
881         <code class="literal">asind(0.5)</code>
882         → <code class="returnvalue">30</code>
883        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
884         <a id="id-1.5.8.9.11.2.2.5.1.1.1" class="indexterm"></a>
885         <code class="function">atan</code> ( <code class="type">double precision</code> )
886         → <code class="returnvalue">double precision</code>
887        </p>
888        <p>
889         Inverse tangent, result in radians
890        </p>
891        <p>
892         <code class="literal">atan(1)</code>
893         → <code class="returnvalue">0.7853981633974483</code>
894        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
895         <a id="id-1.5.8.9.11.2.2.6.1.1.1" class="indexterm"></a>
896         <code class="function">atand</code> ( <code class="type">double precision</code> )
897         → <code class="returnvalue">double precision</code>
898        </p>
899        <p>
900         Inverse tangent, result in degrees
901        </p>
902        <p>
903         <code class="literal">atand(1)</code>
904         → <code class="returnvalue">45</code>
905        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
906         <a id="id-1.5.8.9.11.2.2.7.1.1.1" class="indexterm"></a>
907         <code class="function">atan2</code> ( <em class="parameter"><code>y</code></em> <code class="type">double precision</code>,
908         <em class="parameter"><code>x</code></em> <code class="type">double precision</code> )
909         → <code class="returnvalue">double precision</code>
910        </p>
911        <p>
912         Inverse tangent of
913         <em class="parameter"><code>y</code></em>/<em class="parameter"><code>x</code></em>,
914         result in radians
915        </p>
916        <p>
917         <code class="literal">atan2(1, 0)</code>
918         → <code class="returnvalue">1.5707963267948966</code>
919        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
920         <a id="id-1.5.8.9.11.2.2.8.1.1.1" class="indexterm"></a>
921         <code class="function">atan2d</code> ( <em class="parameter"><code>y</code></em> <code class="type">double precision</code>,
922         <em class="parameter"><code>x</code></em> <code class="type">double precision</code> )
923         → <code class="returnvalue">double precision</code>
924        </p>
925        <p>
926         Inverse tangent of
927         <em class="parameter"><code>y</code></em>/<em class="parameter"><code>x</code></em>,
928         result in degrees
929        </p>
930        <p>
931         <code class="literal">atan2d(1, 0)</code>
932         → <code class="returnvalue">90</code>
933        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
934         <a id="id-1.5.8.9.11.2.2.9.1.1.1" class="indexterm"></a>
935         <code class="function">cos</code> ( <code class="type">double precision</code> )
936         → <code class="returnvalue">double precision</code>
937        </p>
938        <p>
939         Cosine, argument in radians
940        </p>
941        <p>
942         <code class="literal">cos(0)</code>
943         → <code class="returnvalue">1</code>
944        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
945         <a id="id-1.5.8.9.11.2.2.10.1.1.1" class="indexterm"></a>
946         <code class="function">cosd</code> ( <code class="type">double precision</code> )
947         → <code class="returnvalue">double precision</code>
948        </p>
949        <p>
950         Cosine, argument in degrees
951        </p>
952        <p>
953         <code class="literal">cosd(60)</code>
954         → <code class="returnvalue">0.5</code>
955        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
956         <a id="id-1.5.8.9.11.2.2.11.1.1.1" class="indexterm"></a>
957         <code class="function">cot</code> ( <code class="type">double precision</code> )
958         → <code class="returnvalue">double precision</code>
959        </p>
960        <p>
961         Cotangent, argument in radians
962        </p>
963        <p>
964         <code class="literal">cot(0.5)</code>
965         → <code class="returnvalue">1.830487721712452</code>
966        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
967         <a id="id-1.5.8.9.11.2.2.12.1.1.1" class="indexterm"></a>
968         <code class="function">cotd</code> ( <code class="type">double precision</code> )
969         → <code class="returnvalue">double precision</code>
970        </p>
971        <p>
972         Cotangent, argument in degrees
973        </p>
974        <p>
975         <code class="literal">cotd(45)</code>
976         → <code class="returnvalue">1</code>
977        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
978         <a id="id-1.5.8.9.11.2.2.13.1.1.1" class="indexterm"></a>
979         <code class="function">sin</code> ( <code class="type">double precision</code> )
980         → <code class="returnvalue">double precision</code>
981        </p>
982        <p>
983         Sine, argument in radians
984        </p>
985        <p>
986         <code class="literal">sin(1)</code>
987         → <code class="returnvalue">0.8414709848078965</code>
988        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
989         <a id="id-1.5.8.9.11.2.2.14.1.1.1" class="indexterm"></a>
990         <code class="function">sind</code> ( <code class="type">double precision</code> )
991         → <code class="returnvalue">double precision</code>
992        </p>
993        <p>
994         Sine, argument in degrees
995        </p>
996        <p>
997         <code class="literal">sind(30)</code>
998         → <code class="returnvalue">0.5</code>
999        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
1000         <a id="id-1.5.8.9.11.2.2.15.1.1.1" class="indexterm"></a>
1001         <code class="function">tan</code> ( <code class="type">double precision</code> )
1002         → <code class="returnvalue">double precision</code>
1003        </p>
1004        <p>
1005         Tangent, argument in radians
1006        </p>
1007        <p>
1008         <code class="literal">tan(1)</code>
1009         → <code class="returnvalue">1.5574077246549023</code>
1010        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
1011         <a id="id-1.5.8.9.11.2.2.16.1.1.1" class="indexterm"></a>
1012         <code class="function">tand</code> ( <code class="type">double precision</code> )
1013         → <code class="returnvalue">double precision</code>
1014        </p>
1015        <p>
1016         Tangent, argument in degrees
1017        </p>
1018        <p>
1019         <code class="literal">tand(45)</code>
1020         → <code class="returnvalue">1</code>
1021        </p></td></tr></tbody></table></div></div><br class="table-break" /><div class="note"><h3 class="title">Note</h3><p>
1022     Another way to work with angles measured in degrees is to use the unit
1023     transformation functions <code class="literal"><code class="function">radians()</code></code>
1024     and <code class="literal"><code class="function">degrees()</code></code> shown earlier.
1025     However, using the degree-based trigonometric functions is preferred,
1026     as that way avoids round-off error for special cases such
1027     as <code class="literal">sind(30)</code>.
1028    </p></div><p>
1029    <a class="xref" href="functions-math.html#FUNCTIONS-MATH-HYP-TABLE" title="Table 9.8. Hyperbolic Functions">Table 9.8</a> shows the
1030    available hyperbolic functions.
1031   </p><div class="table" id="FUNCTIONS-MATH-HYP-TABLE"><p class="title"><strong>Table 9.8. Hyperbolic Functions</strong></p><div class="table-contents"><table class="table" summary="Hyperbolic Functions" border="1"><colgroup><col /></colgroup><thead><tr><th class="func_table_entry"><p class="func_signature">
1032         Function
1033        </p>
1034        <p>
1035         Description
1036        </p>
1037        <p>
1038         Example(s)
1039        </p></th></tr></thead><tbody><tr><td class="func_table_entry"><p class="func_signature">
1040         <a id="id-1.5.8.9.14.2.2.1.1.1.1" class="indexterm"></a>
1041         <code class="function">sinh</code> ( <code class="type">double precision</code> )
1042         → <code class="returnvalue">double precision</code>
1043        </p>
1044        <p>
1045         Hyperbolic sine
1046        </p>
1047        <p>
1048         <code class="literal">sinh(1)</code>
1049         → <code class="returnvalue">1.1752011936438014</code>
1050        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
1051         <a id="id-1.5.8.9.14.2.2.2.1.1.1" class="indexterm"></a>
1052         <code class="function">cosh</code> ( <code class="type">double precision</code> )
1053         → <code class="returnvalue">double precision</code>
1054        </p>
1055        <p>
1056         Hyperbolic cosine
1057        </p>
1058        <p>
1059         <code class="literal">cosh(0)</code>
1060         → <code class="returnvalue">1</code>
1061        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
1062         <a id="id-1.5.8.9.14.2.2.3.1.1.1" class="indexterm"></a>
1063         <code class="function">tanh</code> ( <code class="type">double precision</code> )
1064         → <code class="returnvalue">double precision</code>
1065        </p>
1066        <p>
1067         Hyperbolic tangent
1068        </p>
1069        <p>
1070         <code class="literal">tanh(1)</code>
1071         → <code class="returnvalue">0.7615941559557649</code>
1072        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
1073         <a id="id-1.5.8.9.14.2.2.4.1.1.1" class="indexterm"></a>
1074         <code class="function">asinh</code> ( <code class="type">double precision</code> )
1075         → <code class="returnvalue">double precision</code>
1076        </p>
1077        <p>
1078         Inverse hyperbolic sine
1079        </p>
1080        <p>
1081         <code class="literal">asinh(1)</code>
1082         → <code class="returnvalue">0.881373587019543</code>
1083        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
1084         <a id="id-1.5.8.9.14.2.2.5.1.1.1" class="indexterm"></a>
1085         <code class="function">acosh</code> ( <code class="type">double precision</code> )
1086         → <code class="returnvalue">double precision</code>
1087        </p>
1088        <p>
1089         Inverse hyperbolic cosine
1090        </p>
1091        <p>
1092         <code class="literal">acosh(1)</code>
1093         → <code class="returnvalue">0</code>
1094        </p></td></tr><tr><td class="func_table_entry"><p class="func_signature">
1095         <a id="id-1.5.8.9.14.2.2.6.1.1.1" class="indexterm"></a>
1096         <code class="function">atanh</code> ( <code class="type">double precision</code> )
1097         → <code class="returnvalue">double precision</code>
1098        </p>
1099        <p>
1100         Inverse hyperbolic tangent
1101        </p>
1102        <p>
1103         <code class="literal">atanh(0.5)</code>
1104         → <code class="returnvalue">0.5493061443340548</code>
1105        </p></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="functions-comparison.html" title="9.2. Comparison Functions and Operators">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="functions.html" title="Chapter 9. Functions and Operators">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="functions-string.html" title="9.4. String Functions and Operators">Next</a></td></tr><tr><td width="40%" align="left" valign="top">9.2. Comparison Functions and Operators </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 18.0 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 9.4. String Functions and Operators</td></tr></table></div></body></html>