Files
Nim/math.html
github-actions[bot] ef3d9e7b38 Deploy to GitHub pages
2025-12-28 15:55:52 +00:00

2469 lines
286 KiB
HTML

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>std/math</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.3.1">
<!-- JS -->
<script type="text/javascript" src="dochack.js?v=2.3.1"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">std/math</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple-boot">
<li><a href="manual.html">Manual</a></li>
<li><a href="lib.html">Standard library</a></li>
<li> <a id="indexLink" href="theindex.html">Index</a></li>
<li><a href="compiler/theindex.html">Compiler docs</a></li>
<li><a href="https://nim-lang.github.io/fusion/theindex.html">Fusion docs</a></li>
<li><a href="https://nim-lang.github.io/Nim/">devel</a>, <a href="https://nim-lang.org/documentation.html">stable</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput"
oninput="search()" />
</div>
<ul class="simple simple-toc" id="toc-list">
<li><a class="reference" id="see-also_toc" href="#see-also">See also</a></li>
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#FloatClass" title="FloatClass = enum
fcNormal, ## value is an ordinary nonzero floating point value
fcSubnormal, ## value is a subnormal (a very small) floating point value
fcZero, ## value is zero
fcNegZero, ## value is the negative zero
fcNan, ## value is Not a Number (NaN)
fcInf, ## value is positive infinity
fcNegInf ## value is negative infinity">FloatClass</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#E" title="E = 2.718281828459045">E</a></li>
<li><a class="reference" href="#MaxFloat32Precision" title="MaxFloat32Precision = 8">MaxFloat32Precision</a></li>
<li><a class="reference" href="#MaxFloat64Precision" title="MaxFloat64Precision = 16">MaxFloat64Precision</a></li>
<li><a class="reference" href="#MaxFloatPrecision" title="MaxFloatPrecision = 16">MaxFloatPrecision</a></li>
<li><a class="reference" href="#MinFloatNormal" title="MinFloatNormal = 2.225073858507201e-308">MinFloatNormal</a></li>
<li><a class="reference" href="#PI" title="PI = 3.141592653589793">PI</a></li>
<li><a class="reference" href="#TAU" title="TAU = 6.283185307179586">TAU</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">^
<li><a class="reference" href="#%5E%2CT%2CU" title="`^`[T: SomeNumber; U: SomeFloat](x: T; y: U): float">`^`[T: SomeNumber; U: SomeFloat](x: T; y: U): float</a></li>
<li><a class="reference" href="#%5E%2CT%2CNatural" title="`^`[T: SomeNumber](x: T; y: Natural): T">`^`[T: SomeNumber](x: T; y: Natural): T</a></li>
</ul>
<ul class="simple nested-toc-section">almostEqual
<li><a class="reference" href="#almostEqual%2CT%2CT%2CNatural" title="almostEqual[T: SomeFloat](x, y: T; unitsInLastPlace: Natural = 4): bool">almostEqual[T: SomeFloat](x, y: T; unitsInLastPlace: Natural = 4): bool</a></li>
</ul>
<ul class="simple nested-toc-section">arccos
<li><a class="reference" href="#arccos%2Cfloat32" title="arccos(x: float32): float32">arccos(x: float32): float32</a></li>
<li><a class="reference" href="#arccos%2Cfloat64" title="arccos(x: float64): float64">arccos(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">arccosh
<li><a class="reference" href="#arccosh%2Cfloat32" title="arccosh(x: float32): float32">arccosh(x: float32): float32</a></li>
<li><a class="reference" href="#arccosh%2Cfloat64" title="arccosh(x: float64): float64">arccosh(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">arccot
<li><a class="reference" href="#arccot%2CT" title="arccot[T: float32 | float64](x: T): T">arccot[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">arccoth
<li><a class="reference" href="#arccoth%2CT" title="arccoth[T: float32 | float64](x: T): T">arccoth[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">arccsc
<li><a class="reference" href="#arccsc%2CT" title="arccsc[T: float32 | float64](x: T): T">arccsc[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">arccsch
<li><a class="reference" href="#arccsch%2CT" title="arccsch[T: float32 | float64](x: T): T">arccsch[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">arcsec
<li><a class="reference" href="#arcsec%2CT" title="arcsec[T: float32 | float64](x: T): T">arcsec[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">arcsech
<li><a class="reference" href="#arcsech%2CT" title="arcsech[T: float32 | float64](x: T): T">arcsech[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">arcsin
<li><a class="reference" href="#arcsin%2Cfloat32" title="arcsin(x: float32): float32">arcsin(x: float32): float32</a></li>
<li><a class="reference" href="#arcsin%2Cfloat64" title="arcsin(x: float64): float64">arcsin(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">arcsinh
<li><a class="reference" href="#arcsinh%2Cfloat32" title="arcsinh(x: float32): float32">arcsinh(x: float32): float32</a></li>
<li><a class="reference" href="#arcsinh%2Cfloat64" title="arcsinh(x: float64): float64">arcsinh(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">arctan
<li><a class="reference" href="#arctan%2Cfloat32" title="arctan(x: float32): float32">arctan(x: float32): float32</a></li>
<li><a class="reference" href="#arctan%2Cfloat64" title="arctan(x: float64): float64">arctan(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">arctan2
<li><a class="reference" href="#arctan2%2Cfloat32%2Cfloat32" title="arctan2(y, x: float32): float32">arctan2(y, x: float32): float32</a></li>
<li><a class="reference" href="#arctan2%2Cfloat64%2Cfloat64" title="arctan2(y, x: float64): float64">arctan2(y, x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">arctanh
<li><a class="reference" href="#arctanh%2Cfloat32" title="arctanh(x: float32): float32">arctanh(x: float32): float32</a></li>
<li><a class="reference" href="#arctanh%2Cfloat64" title="arctanh(x: float64): float64">arctanh(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">binom
<li><a class="reference" href="#binom%2Cint%2Cint" title="binom(n, k: int): int">binom(n, k: int): int</a></li>
</ul>
<ul class="simple nested-toc-section">cbrt
<li><a class="reference" href="#cbrt%2Cfloat32" title="cbrt(x: float32): float32">cbrt(x: float32): float32</a></li>
<li><a class="reference" href="#cbrt%2Cfloat64" title="cbrt(x: float64): float64">cbrt(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">ceil
<li><a class="reference" href="#ceil%2Cfloat32" title="ceil(x: float32): float32">ceil(x: float32): float32</a></li>
<li><a class="reference" href="#ceil%2Cfloat64" title="ceil(x: float64): float64">ceil(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">ceilDiv
<li><a class="reference" href="#ceilDiv%2CT%2CT" title="ceilDiv[T: SomeInteger](x, y: T): T">ceilDiv[T: SomeInteger](x, y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">clamp
<li><a class="reference" href="#clamp%2CT%2CSlice%5BT%5D" title="clamp[T](val: T; bounds: Slice[T]): T">clamp[T](val: T; bounds: Slice[T]): T</a></li>
</ul>
<ul class="simple nested-toc-section">classify
<li><a class="reference" href="#classify%2Cfloat" title="classify(x: float): FloatClass">classify(x: float): FloatClass</a></li>
</ul>
<ul class="simple nested-toc-section">copySign
<li><a class="reference" href="#copySign%2CT%2CT" title="copySign[T: SomeFloat](x, y: T): T">copySign[T: SomeFloat](x, y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">cos
<li><a class="reference" href="#cos%2Cfloat32" title="cos(x: float32): float32">cos(x: float32): float32</a></li>
<li><a class="reference" href="#cos%2Cfloat64" title="cos(x: float64): float64">cos(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">cosh
<li><a class="reference" href="#cosh%2Cfloat32" title="cosh(x: float32): float32">cosh(x: float32): float32</a></li>
<li><a class="reference" href="#cosh%2Cfloat64" title="cosh(x: float64): float64">cosh(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">cot
<li><a class="reference" href="#cot%2CT" title="cot[T: float32 | float64](x: T): T">cot[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">coth
<li><a class="reference" href="#coth%2CT" title="coth[T: float32 | float64](x: T): T">coth[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">csc
<li><a class="reference" href="#csc%2CT" title="csc[T: float32 | float64](x: T): T">csc[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">csch
<li><a class="reference" href="#csch%2CT" title="csch[T: float32 | float64](x: T): T">csch[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">cumprod
<li><a class="reference" href="#cumprod%2CopenArray%5BT%5D" title="cumprod[T](x: var openArray[T])">cumprod[T](x: var openArray[T])</a></li>
</ul>
<ul class="simple nested-toc-section">cumproded
<li><a class="reference" href="#cumproded%2CopenArray%5BT%5D" title="cumproded[T](x: openArray[T]): seq[T]">cumproded[T](x: openArray[T]): seq[T]</a></li>
</ul>
<ul class="simple nested-toc-section">cumsum
<li><a class="reference" href="#cumsum%2CopenArray%5BT%5D" title="cumsum[T](x: var openArray[T])">cumsum[T](x: var openArray[T])</a></li>
</ul>
<ul class="simple nested-toc-section">cumsummed
<li><a class="reference" href="#cumsummed%2CopenArray%5BT%5D" title="cumsummed[T](x: openArray[T]): seq[T]">cumsummed[T](x: openArray[T]): seq[T]</a></li>
</ul>
<ul class="simple nested-toc-section">degToRad
<li><a class="reference" href="#degToRad%2CT" title="degToRad[T: float32 | float64](d: T): T">degToRad[T: float32 | float64](d: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">divmod
<li><a class="reference" href="#divmod%2CT%2CT" title="divmod[T: SomeInteger](x, y: T): (T, T)">divmod[T: SomeInteger](x, y: T): (T, T)</a></li>
</ul>
<ul class="simple nested-toc-section">erf
<li><a class="reference" href="#erf%2Cfloat32" title="erf(x: float32): float32">erf(x: float32): float32</a></li>
<li><a class="reference" href="#erf%2Cfloat64" title="erf(x: float64): float64">erf(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">erfc
<li><a class="reference" href="#erfc%2Cfloat32" title="erfc(x: float32): float32">erfc(x: float32): float32</a></li>
<li><a class="reference" href="#erfc%2Cfloat64" title="erfc(x: float64): float64">erfc(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">euclDiv
<li><a class="reference" href="#euclDiv%2CT%2CT" title="euclDiv[T: SomeInteger](x, y: T): T">euclDiv[T: SomeInteger](x, y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">euclMod
<li><a class="reference" href="#euclMod%2CT%2CT" title="euclMod[T: SomeNumber](x, y: T): T">euclMod[T: SomeNumber](x, y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">exp
<li><a class="reference" href="#exp%2Cfloat32" title="exp(x: float32): float32">exp(x: float32): float32</a></li>
<li><a class="reference" href="#exp%2Cfloat64" title="exp(x: float64): float64">exp(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">fac
<li><a class="reference" href="#fac%2Cint" title="fac(n: int): int">fac(n: int): int</a></li>
</ul>
<ul class="simple nested-toc-section">floor
<li><a class="reference" href="#floor%2Cfloat32" title="floor(x: float32): float32">floor(x: float32): float32</a></li>
<li><a class="reference" href="#floor%2Cfloat64" title="floor(x: float64): float64">floor(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">floorDiv
<li><a class="reference" href="#floorDiv%2CT%2CT" title="floorDiv[T: SomeInteger](x, y: T): T">floorDiv[T: SomeInteger](x, y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">floorMod
<li><a class="reference" href="#floorMod%2CT%2CT" title="floorMod[T: SomeNumber](x, y: T): T">floorMod[T: SomeNumber](x, y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">frexp
<li><a class="reference" href="#frexp%2CT" title="frexp[T: float32 | float64](x: T): tuple[frac: T, exp: int]">frexp[T: float32 | float64](x: T): tuple[frac: T, exp: int]</a></li>
<li><a class="reference" href="#frexp%2CT%2Cint" title="frexp[T: float32 | float64](x: T; exponent: var int): T">frexp[T: float32 | float64](x: T; exponent: var int): T</a></li>
</ul>
<ul class="simple nested-toc-section">gamma
<li><a class="reference" href="#gamma%2Cfloat32" title="gamma(x: float32): float32">gamma(x: float32): float32</a></li>
<li><a class="reference" href="#gamma%2Cfloat64" title="gamma(x: float64): float64">gamma(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">gcd
<li><a class="reference" href="#gcd%2CSomeInteger%2CSomeInteger" title="gcd(x, y: SomeInteger): SomeInteger">gcd(x, y: SomeInteger): SomeInteger</a></li>
<li><a class="reference" href="#gcd%2CT%2CT" title="gcd[T](x, y: T): T">gcd[T](x, y: T): T</a></li>
<li><a class="reference" href="#gcd%2CopenArray%5BT%5D" title="gcd[T](x: openArray[T]): T">gcd[T](x: openArray[T]): T</a></li>
</ul>
<ul class="simple nested-toc-section">hypot
<li><a class="reference" href="#hypot%2Cfloat32%2Cfloat32" title="hypot(x, y: float32): float32">hypot(x, y: float32): float32</a></li>
<li><a class="reference" href="#hypot%2Cfloat64%2Cfloat64" title="hypot(x, y: float64): float64">hypot(x, y: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">isNaN
<li><a class="reference" href="#isNaN%2CSomeFloat" title="isNaN(x: SomeFloat): bool">isNaN(x: SomeFloat): bool</a></li>
</ul>
<ul class="simple nested-toc-section">isPowerOfTwo
<li><a class="reference" href="#isPowerOfTwo%2Cint" title="isPowerOfTwo(x: int): bool">isPowerOfTwo(x: int): bool</a></li>
</ul>
<ul class="simple nested-toc-section">lcm
<li><a class="reference" href="#lcm%2CT%2CT" title="lcm[T](x, y: T): T">lcm[T](x, y: T): T</a></li>
<li><a class="reference" href="#lcm%2CopenArray%5BT%5D" title="lcm[T](x: openArray[T]): T">lcm[T](x: openArray[T]): T</a></li>
</ul>
<ul class="simple nested-toc-section">lgamma
<li><a class="reference" href="#lgamma%2Cfloat32" title="lgamma(x: float32): float32">lgamma(x: float32): float32</a></li>
<li><a class="reference" href="#lgamma%2Cfloat64" title="lgamma(x: float64): float64">lgamma(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">ln
<li><a class="reference" href="#ln%2Cfloat32" title="ln(x: float32): float32">ln(x: float32): float32</a></li>
<li><a class="reference" href="#ln%2Cfloat64" title="ln(x: float64): float64">ln(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">log
<li><a class="reference" href="#log%2CT%2CT" title="log[T: SomeFloat](x, base: T): T">log[T: SomeFloat](x, base: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">log2
<li><a class="reference" href="#log2%2Cfloat32" title="log2(x: float32): float32">log2(x: float32): float32</a></li>
<li><a class="reference" href="#log2%2Cfloat64" title="log2(x: float64): float64">log2(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">log10
<li><a class="reference" href="#log10%2Cfloat32" title="log10(x: float32): float32">log10(x: float32): float32</a></li>
<li><a class="reference" href="#log10%2Cfloat64" title="log10(x: float64): float64">log10(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">mod
<li><a class="reference" href="#mod%2Cfloat32%2Cfloat32" title="`mod`(x, y: float32): float32">`mod`(x, y: float32): float32</a></li>
<li><a class="reference" href="#mod%2Cfloat64%2Cfloat64" title="`mod`(x, y: float64): float64">`mod`(x, y: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">nextPowerOfTwo
<li><a class="reference" href="#nextPowerOfTwo%2Cint" title="nextPowerOfTwo(x: int): int">nextPowerOfTwo(x: int): int</a></li>
</ul>
<ul class="simple nested-toc-section">pow
<li><a class="reference" href="#pow%2Cfloat32%2Cfloat32" title="pow(x, y: float32): float32">pow(x, y: float32): float32</a></li>
<li><a class="reference" href="#pow%2Cfloat64%2Cfloat64" title="pow(x, y: float64): float64">pow(x, y: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">prod
<li><a class="reference" href="#prod%2CopenArray%5BT%5D" title="prod[T](x: openArray[T]): T">prod[T](x: openArray[T]): T</a></li>
</ul>
<ul class="simple nested-toc-section">radToDeg
<li><a class="reference" href="#radToDeg%2CT" title="radToDeg[T: float32 | float64](d: T): T">radToDeg[T: float32 | float64](d: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">round
<li><a class="reference" href="#round%2Cfloat32" title="round(x: float32): float32">round(x: float32): float32</a></li>
<li><a class="reference" href="#round%2Cfloat64" title="round(x: float64): float64">round(x: float64): float64</a></li>
<li><a class="reference" href="#round%2CT%2Cint" title="round[T: float32 | float64](x: T; places: int): T">round[T: float32 | float64](x: T; places: int): T</a></li>
</ul>
<ul class="simple nested-toc-section">sec
<li><a class="reference" href="#sec%2CT" title="sec[T: float32 | float64](x: T): T">sec[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">sech
<li><a class="reference" href="#sech%2CT" title="sech[T: float32 | float64](x: T): T">sech[T: float32 | float64](x: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">sgn
<li><a class="reference" href="#sgn%2CT" title="sgn[T: SomeNumber](x: T): int">sgn[T: SomeNumber](x: T): int</a></li>
</ul>
<ul class="simple nested-toc-section">signbit
<li><a class="reference" href="#signbit%2CSomeFloat" title="signbit(x: SomeFloat): bool">signbit(x: SomeFloat): bool</a></li>
</ul>
<ul class="simple nested-toc-section">sin
<li><a class="reference" href="#sin%2Cfloat32" title="sin(x: float32): float32">sin(x: float32): float32</a></li>
<li><a class="reference" href="#sin%2Cfloat64" title="sin(x: float64): float64">sin(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">sinh
<li><a class="reference" href="#sinh%2Cfloat32" title="sinh(x: float32): float32">sinh(x: float32): float32</a></li>
<li><a class="reference" href="#sinh%2Cfloat64" title="sinh(x: float64): float64">sinh(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">splitDecimal
<li><a class="reference" href="#splitDecimal%2CT" title="splitDecimal[T: float32 | float64](x: T): tuple[intpart: T, floatpart: T]">splitDecimal[T: float32 | float64](x: T): tuple[intpart: T, floatpart: T]</a></li>
</ul>
<ul class="simple nested-toc-section">sqrt
<li><a class="reference" href="#sqrt%2Cfloat32" title="sqrt(x: float32): float32">sqrt(x: float32): float32</a></li>
<li><a class="reference" href="#sqrt%2Cfloat64" title="sqrt(x: float64): float64">sqrt(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">sum
<li><a class="reference" href="#sum%2CopenArray%5BT%5D" title="sum[T](x: openArray[T]): T">sum[T](x: openArray[T]): T</a></li>
</ul>
<ul class="simple nested-toc-section">tan
<li><a class="reference" href="#tan%2Cfloat32" title="tan(x: float32): float32">tan(x: float32): float32</a></li>
<li><a class="reference" href="#tan%2Cfloat64" title="tan(x: float64): float64">tan(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">tanh
<li><a class="reference" href="#tanh%2Cfloat32" title="tanh(x: float32): float32">tanh(x: float32): float32</a></li>
<li><a class="reference" href="#tanh%2Cfloat64" title="tanh(x: float64): float64">tanh(x: float64): float64</a></li>
</ul>
<ul class="simple nested-toc-section">trunc
<li><a class="reference" href="#trunc%2Cfloat32" title="trunc(x: float32): float32">trunc(x: float32): float32</a></li>
<li><a class="reference" href="#trunc%2Cfloat64" title="trunc(x: float64): float64">trunc(x: float64): float64</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p><em>Constructive mathematics is naturally typed.</em> -- Simon Thompson</p>
<p>Basic math routines for Nim.</p>
<p>Note that the trigonometric functions naturally operate on radians. The helper functions <a class="reference external" href="#degToRad,T">degToRad</a> and <a class="reference external" href="#radToDeg,T">radToDeg</a> provide conversion between radians and degrees.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">math</span>
<span class="Keyword">from</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">fenv</span> <span class="Keyword">import</span> <span class="Identifier">epsilon</span>
<span class="Keyword">from</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">random</span> <span class="Keyword">import</span> <span class="Identifier">rand</span>
<span class="Keyword">proc</span> <span class="Identifier">generateGaussianNoise</span><span class="Punctuation">(</span><span class="Identifier">mu</span><span class="Punctuation">:</span> <span class="Identifier">float</span> <span class="Operator">=</span> <span class="FloatNumber">0.0</span><span class="Punctuation">,</span> <span class="Identifier">sigma</span><span class="Punctuation">:</span> <span class="Identifier">float</span> <span class="Operator">=</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Punctuation">(</span><span class="Identifier">float</span><span class="Punctuation">,</span> <span class="Identifier">float</span><span class="Punctuation">)</span> <span class="Operator">=</span>
<span class="Comment"># Generates values from a normal distribution.</span>
<span class="Comment"># Translated from https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform#Implementation.</span>
<span class="Keyword">var</span> <span class="Identifier">u1</span><span class="Punctuation">:</span> <span class="Identifier">float</span>
<span class="Keyword">var</span> <span class="Identifier">u2</span><span class="Punctuation">:</span> <span class="Identifier">float</span>
<span class="Keyword">while</span> <span class="Identifier">true</span><span class="Punctuation">:</span>
<span class="Identifier">u1</span> <span class="Operator">=</span> <span class="Identifier">rand</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span>
<span class="Identifier">u2</span> <span class="Operator">=</span> <span class="Identifier">rand</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span>
<span class="Keyword">if</span> <span class="Identifier">u1</span> <span class="Operator">&gt;</span> <span class="Identifier">epsilon</span><span class="Punctuation">(</span><span class="Identifier">float</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Keyword">break</span>
<span class="Keyword">let</span> <span class="Identifier">mag</span> <span class="Operator">=</span> <span class="Identifier">sigma</span> <span class="Operator">*</span> <span class="Identifier">sqrt</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">2</span> <span class="Operator">*</span> <span class="Identifier">ln</span><span class="Punctuation">(</span><span class="Identifier">u1</span><span class="Punctuation">)</span><span class="Punctuation">)</span>
<span class="Keyword">let</span> <span class="Identifier">z0</span> <span class="Operator">=</span> <span class="Identifier">mag</span> <span class="Operator">*</span> <span class="Identifier">cos</span><span class="Punctuation">(</span><span class="DecNumber">2</span> <span class="Operator">*</span> <span class="Identifier">PI</span> <span class="Operator">*</span> <span class="Identifier">u2</span><span class="Punctuation">)</span> <span class="Operator">+</span> <span class="Identifier">mu</span>
<span class="Keyword">let</span> <span class="Identifier">z1</span> <span class="Operator">=</span> <span class="Identifier">mag</span> <span class="Operator">*</span> <span class="Identifier">sin</span><span class="Punctuation">(</span><span class="DecNumber">2</span> <span class="Operator">*</span> <span class="Identifier">PI</span> <span class="Operator">*</span> <span class="Identifier">u2</span><span class="Punctuation">)</span> <span class="Operator">+</span> <span class="Identifier">mu</span>
<span class="Punctuation">(</span><span class="Identifier">z0</span><span class="Punctuation">,</span> <span class="Identifier">z1</span><span class="Punctuation">)</span>
<span class="Identifier">echo</span> <span class="Identifier">generateGaussianNoise</span><span class="Punctuation">(</span><span class="Punctuation">)</span></pre>This module is available for the <a class="reference external" href="backends.html#backends-the-javascript-target">JavaScript target</a>.
<h1><a class="toc-backref" id="see-also" href="#see-also">See also</a></h1><ul class="simple"><li><a class="reference external" href="complex.html">complex module</a> for complex numbers and their mathematical operations</li>
<li><a class="reference external" href="rationals.html">rationals module</a> for rational numbers and their mathematical operations</li>
<li><a class="reference external" href="fenv.html">fenv module</a> for handling of floating-point rounding and exceptions (overflow, zero-divide, etc.)</li>
<li><a class="reference external" href="random.html">random module</a> for a fast and tiny random number generator</li>
<li><a class="reference external" href="stats.html">stats module</a> for statistical analysis</li>
<li><a class="reference external" href="strformat.html">strformat module</a> for formatting floats for printing</li>
<li><a class="reference external" href="system.html">system module</a> for some very basic and trivial math operators (<tt class="docutils literal"><span class="pre"><span class="Keyword">shr</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Keyword">shl</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Keyword">xor</span></span></tt>, <tt class="docutils literal"><span class="pre"><span class="Identifier">clamp</span></span></tt>, etc.)</li>
</ul>
this func uses bitwise comparisons from C compilers, which are not always available.</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="since.html">since</a>, <a class="reference external" href="bitops.html">bitops</a>, <a class="reference external" href="fenv.html">fenv</a>, <a class="reference external" href="countbits_impl.html">countbits_impl</a>, <a class="reference external" href="assertions.html">assertions</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="FloatClass">
<dt><pre><a href="math.html#FloatClass"><span class="Identifier">FloatClass</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">fcNormal</span><span class="Other">,</span> <span class="Comment">## value is an ordinary nonzero floating point value</span>
<span class="Identifier">fcSubnormal</span><span class="Other">,</span> <span class="Comment">## value is a subnormal (a very small) floating point value</span>
<span class="Identifier">fcZero</span><span class="Other">,</span> <span class="Comment">## value is zero</span>
<span class="Identifier">fcNegZero</span><span class="Other">,</span> <span class="Comment">## value is the negative zero</span>
<span class="Identifier">fcNan</span><span class="Other">,</span> <span class="Comment">## value is Not a Number (NaN)</span>
<span class="Identifier">fcInf</span><span class="Other">,</span> <span class="Comment">## value is positive infinity</span>
<span class="Identifier">fcNegInf</span> <span class="Comment">## value is negative infinity</span></pre></dt>
<dd>
Describes the class a floating point value belongs to. This is the type that is returned by the <a class="reference external" href="#classify,float">classify func</a>.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L182" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L182" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<div id="E">
<dt><pre><a href="math.html#E"><span class="Identifier">E</span></a> <span class="Other">=</span> <span class="FloatNumber">2.718281828459045</span></pre></dt>
<dd>
Euler's number.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L165" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L165" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="MaxFloat32Precision">
<dt><pre><a href="math.html#MaxFloat32Precision"><span class="Identifier">MaxFloat32Precision</span></a> <span class="Other">=</span> <span class="DecNumber">8</span></pre></dt>
<dd>
Maximum number of meaningful digits after the decimal point for Nim's <tt class="docutils literal"><span class="pre"><span class="Identifier">float32</span></span></tt> type.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L170" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L170" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="MaxFloat64Precision">
<dt><pre><a href="math.html#MaxFloat64Precision"><span class="Identifier">MaxFloat64Precision</span></a> <span class="Other">=</span> <span class="DecNumber">16</span></pre></dt>
<dd>
Maximum number of meaningful digits after the decimal point for Nim's <tt class="docutils literal"><span class="pre"><span class="Identifier">float64</span></span></tt> type.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L167" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L167" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="MaxFloatPrecision">
<dt><pre><a href="math.html#MaxFloatPrecision"><span class="Identifier">MaxFloatPrecision</span></a> <span class="Other">=</span> <span class="DecNumber">16</span></pre></dt>
<dd>
Maximum number of meaningful digits after the decimal point for Nim's <tt class="docutils literal"><span class="pre"><span class="Identifier">float</span></span></tt> type.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L173" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L173" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="MinFloatNormal">
<dt><pre><a href="math.html#MinFloatNormal"><span class="Identifier">MinFloatNormal</span></a> <span class="Other">=</span> <span class="FloatNumber">2.225073858507201e-308</span></pre></dt>
<dd>
Smallest normal number for Nim's <tt class="docutils literal"><span class="pre"><span class="Identifier">float</span></span></tt> type (= 2^-1022).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L177" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L177" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="PI">
<dt><pre><a href="math.html#PI"><span class="Identifier">PI</span></a> <span class="Other">=</span> <span class="FloatNumber">3.141592653589793</span></pre></dt>
<dd>
The circle constant PI (Ludolph's number).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L163" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L163" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="TAU">
<dt><pre><a href="math.html#TAU"><span class="Identifier">TAU</span></a> <span class="Other">=</span> <span class="FloatNumber">6.283185307179586</span></pre></dt>
<dd>
The circle constant TAU (= 2 * PI).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L164" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L164" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="^-procs-all">
<div id="^,T,U">
<dt><pre><span class="Keyword">func</span> <a href="#%5E%2CT%2CU"><span class="Identifier">`^`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeNumber"><span class="Identifier">SomeNumber</span></a><span class="Other">;</span> <span class="Identifier">U</span><span class="Other">:</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">U</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a></pre></dt>
<dd>
<p>Computes <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> to the power of <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>.</p>
<p>Error handling follows the C++ specification even for the JS backend <a class="reference external" href="https://en.cppreference.com/w/cpp/numeric/math/pow">https://en.cppreference.com/w/cpp/numeric/math/pow</a></p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#^,T,Natural">^ func</a></li>
<li><a class="reference external" href="#pow,float64,float64">pow func</a> for <tt class="docutils literal"><span class="pre"><span class="Identifier">float32</span></span></tt> or <tt class="docutils literal"><span class="pre"><span class="Identifier">float64</span></span></tt> output</li>
<li><a class="reference external" href="#sqrt,float64">sqrt func</a></li>
<li><a class="reference external" href="#cbrt,float64">cbrt func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="FloatNumber">5.5</span> <span class="Operator">^</span> <span class="FloatNumber">2.2</span><span class="Punctuation">,</span> <span class="FloatNumber">42.540042248725975</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="FloatNumber">1.0</span> <span class="Operator">^</span> <span class="Identifier">Inf</span> <span class="Operator">==</span> <span class="FloatNumber">1.0</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1248" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1248" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="^,T,Natural">
<dt><pre><span class="Keyword">func</span> <a href="#%5E%2CT%2CNatural"><span class="Identifier">`^`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeNumber"><span class="Identifier">SomeNumber</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Computes <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> to the power of <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>.</p>
<p>The exponent <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt> must be non-negative, use <a class="reference external" href="#pow,float64,float64">pow</a> for negative exponents.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#^,T,U">^ func</a> for negative exponent or floats</li>
<li><a class="reference external" href="#pow,float64,float64">pow func</a> for <tt class="docutils literal"><span class="pre"><span class="Identifier">float32</span></span></tt> or <tt class="docutils literal"><span class="pre"><span class="Identifier">float64</span></span></tt> output</li>
<li><a class="reference external" href="#sqrt,float64">sqrt func</a></li>
<li><a class="reference external" href="#cbrt,float64">cbrt func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Operator">-</span><span class="DecNumber">3</span> <span class="Operator">^</span> <span class="DecNumber">0</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Operator">-</span><span class="DecNumber">3</span> <span class="Operator">^</span> <span class="DecNumber">1</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">3</span>
<span class="Identifier">doAssert</span> <span class="Operator">-</span><span class="DecNumber">3</span> <span class="Operator">^</span> <span class="DecNumber">2</span> <span class="Operator">==</span> <span class="DecNumber">9</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1212" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1212" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="almostEqual-procs-all">
<div id="almostEqual,T,T,Natural">
<dt><pre><span class="Keyword">func</span> <a href="#almostEqual%2CT%2CT%2CNatural"><span class="Identifier">almostEqual</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">unitsInLastPlace</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a> <span class="Other">=</span> <span class="DecNumber">4</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.
<span class="Identifier">inline</span>.}</pre></dt>
<dd>
<p>Checks if two float values are almost equal, using the <a class="reference external" href="https://en.wikipedia.org/wiki/Machine_epsilon">machine epsilon</a>.</p>
<p><tt class="docutils literal"><span class="pre"><span class="Identifier">unitsInLastPlace</span></span></tt> is the max number of <a class="reference external" href="https://en.wikipedia.org/wiki/Unit_in_the_last_place">units in the last place</a> difference tolerated when comparing two numbers. The larger the value, the more error is allowed. A <tt class="docutils literal"><span class="pre"><span class="DecNumber">0</span></span></tt> value means that two numbers must be exactly the same to be considered equal.</p>
<p>The machine epsilon has to be scaled to the magnitude of the values used and multiplied by the desired precision in ULPs unless the difference is subnormal. </p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">PI</span><span class="Punctuation">,</span> <span class="FloatNumber">3.14159265358979</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">Inf</span><span class="Punctuation">,</span> <span class="Identifier">Inf</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">NaN</span><span class="Punctuation">,</span> <span class="Identifier">NaN</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L295" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L295" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arccos-procs-all">
<div id="arccos,float32">
<dt><pre><span class="Keyword">func</span> <a href="#arccos%2Cfloat32"><span class="Identifier">arccos</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;acosf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L513" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L513" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="arccos,float64">
<dt><pre><span class="Keyword">func</span> <a href="#arccos%2Cfloat64"><span class="Identifier">arccos</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;acos&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the arc cosine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#cos,float64">cos func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">radToDeg</span><span class="Punctuation">(</span><span class="Identifier">arccos</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">90.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">radToDeg</span><span class="Punctuation">(</span><span class="Identifier">arccos</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L514" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L514" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arccosh-procs-all">
<div id="arccosh,float32">
<dt><pre><span class="Keyword">func</span> <a href="#arccosh%2Cfloat32"><span class="Identifier">arccosh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;acoshf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L550" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L550" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="arccosh,float64">
<dt><pre><span class="Keyword">func</span> <a href="#arccosh%2Cfloat64"><span class="Identifier">arccosh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;acosh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the inverse hyperbolic cosine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#cosh,float64">cosh func</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L551" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L551" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arccot-procs-all">
<div id="arccot,T">
<dt><pre><span class="Keyword">func</span> <a href="#arccot%2CT"><span class="Identifier">arccot</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the inverse cotangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">arctan</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L604" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L604" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arccoth-procs-all">
<div id="arccoth,T">
<dt><pre><span class="Keyword">func</span> <a href="#arccoth%2CT"><span class="Identifier">arccoth</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the inverse hyperbolic cotangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">arctanh</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L611" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L611" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arccsc-procs-all">
<div id="arccsc,T">
<dt><pre><span class="Keyword">func</span> <a href="#arccsc%2CT"><span class="Identifier">arccsc</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the inverse cosecant of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">arcsin</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L608" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L608" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arccsch-procs-all">
<div id="arccsch,T">
<dt><pre><span class="Keyword">func</span> <a href="#arccsch%2CT"><span class="Identifier">arccsch</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the inverse hyperbolic cosecant of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">arcsinh</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L615" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L615" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arcsec-procs-all">
<div id="arcsec,T">
<dt><pre><span class="Keyword">func</span> <a href="#arcsec%2CT"><span class="Identifier">arcsec</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the inverse secant of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">arccos</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L606" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L606" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arcsech-procs-all">
<div id="arcsech,T">
<dt><pre><span class="Keyword">func</span> <a href="#arcsech%2CT"><span class="Identifier">arcsech</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the inverse hyperbolic secant of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">arccosh</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L613" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L613" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arcsin-procs-all">
<div id="arcsin,float32">
<dt><pre><span class="Keyword">func</span> <a href="#arcsin%2Cfloat32"><span class="Identifier">arcsin</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;asinf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L504" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L504" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="arcsin,float64">
<dt><pre><span class="Keyword">func</span> <a href="#arcsin%2Cfloat64"><span class="Identifier">arcsin</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;asin&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the arc sine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#sin,float64">sin func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">radToDeg</span><span class="Punctuation">(</span><span class="Identifier">arcsin</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">radToDeg</span><span class="Punctuation">(</span><span class="Identifier">arcsin</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">90.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L505" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L505" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arcsinh-procs-all">
<div id="arcsinh,float32">
<dt><pre><span class="Keyword">func</span> <a href="#arcsinh%2Cfloat32"><span class="Identifier">arcsinh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;asinhf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L544" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L544" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="arcsinh,float64">
<dt><pre><span class="Keyword">func</span> <a href="#arcsinh%2Cfloat64"><span class="Identifier">arcsinh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;asinh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the inverse hyperbolic sine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#sinh,float64">sinh func</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L545" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L545" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arctan-procs-all">
<div id="arctan,float32">
<dt><pre><span class="Keyword">func</span> <a href="#arctan%2Cfloat32"><span class="Identifier">arctan</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atanf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L522" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L522" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="arctan,float64">
<dt><pre><span class="Keyword">func</span> <a href="#arctan%2Cfloat64"><span class="Identifier">arctan</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atan&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Calculate the arc tangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#arctan2,float64,float64">arctan2 func</a></li>
<li><a class="reference external" href="#tan,float64">tan func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">arctan</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.7853981633974483</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">radToDeg</span><span class="Punctuation">(</span><span class="Identifier">arctan</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">45.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L523" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L523" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arctan2-procs-all">
<div id="arctan2,float32,float32">
<dt><pre><span class="Keyword">func</span> <a href="#arctan2%2Cfloat32%2Cfloat32"><span class="Identifier">arctan2</span></a><span class="Other">(</span><span class="Identifier">y</span><span class="Other">,</span> <span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atan2f&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L532" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L532" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="arctan2,float64,float64">
<dt><pre><span class="Keyword">func</span> <a href="#arctan2%2Cfloat64%2Cfloat64"><span class="Identifier">arctan2</span></a><span class="Other">(</span><span class="Identifier">y</span><span class="Other">,</span> <span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atan2&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Calculate the arc tangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span><span class="Operator">/</span><span class="Identifier">x</span></span></tt>.</p>
<p>It produces correct results even when the resulting angle is near <tt class="docutils literal"><span class="pre"><span class="Identifier">PI</span><span class="Operator">/</span><span class="DecNumber">2</span></span></tt> or <tt class="docutils literal"><span class="pre"><span class="Operator">-</span><span class="Identifier">PI</span><span class="Operator">/</span><span class="DecNumber">2</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> near 0).</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#arctan,float64">arctan func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">arctan2</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Identifier">PI</span> <span class="Operator">/</span> <span class="FloatNumber">2.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">radToDeg</span><span class="Punctuation">(</span><span class="Identifier">arctan2</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">90.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L533" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L533" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="arctanh-procs-all">
<div id="arctanh,float32">
<dt><pre><span class="Keyword">func</span> <a href="#arctanh%2Cfloat32"><span class="Identifier">arctanh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atanhf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L556" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L556" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="arctanh,float64">
<dt><pre><span class="Keyword">func</span> <a href="#arctanh%2Cfloat64"><span class="Identifier">arctanh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atanh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the inverse hyperbolic tangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#tanh,float64">tanh func</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L557" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L557" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="binom-procs-all">
<div id="binom,int,int">
<dt><pre><span class="Keyword">func</span> <a href="#binom%2Cint%2Cint"><span class="Identifier">binom</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">,</span> <span class="Identifier">k</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Binomial_coefficient">binomial coefficient</a>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">binom</span><span class="Punctuation">(</span><span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">15</span>
<span class="Identifier">doAssert</span> <span class="Identifier">binom</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">binom</span><span class="Punctuation">(</span><span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L117" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L117" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cbrt-procs-all">
<div id="cbrt,float32">
<dt><pre><span class="Keyword">func</span> <a href="#cbrt%2Cfloat32"><span class="Identifier">cbrt</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cbrtf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L377" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L377" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="cbrt,float64">
<dt><pre><span class="Keyword">func</span> <a href="#cbrt%2Cfloat64"><span class="Identifier">cbrt</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cbrt&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the cube root of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#sqrt,float64">sqrt func</a> for the square root</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">cbrt</span><span class="Punctuation">(</span><span class="FloatNumber">8.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">2.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">cbrt</span><span class="Punctuation">(</span><span class="FloatNumber">2.197</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.3</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">cbrt</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">27.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="FloatNumber">3.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L378" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L378" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="ceil-procs-all">
<div id="ceil,float32">
<dt><pre><span class="Keyword">func</span> <a href="#ceil%2Cfloat32"><span class="Identifier">ceil</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;ceilf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L688" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L688" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="ceil,float64">
<dt><pre><span class="Keyword">func</span> <a href="#ceil%2Cfloat64"><span class="Identifier">ceil</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;ceil&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the ceiling function (i.e. the smallest integer not smaller than <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>).</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#floor,float64">floor func</a></li>
<li><a class="reference external" href="#round,float64">round func</a></li>
<li><a class="reference external" href="#trunc,float64">trunc func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">ceil</span><span class="Punctuation">(</span><span class="FloatNumber">2.1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">ceil</span><span class="Punctuation">(</span><span class="FloatNumber">2.9</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">ceil</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">2.1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="FloatNumber">2.0</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L689" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L689" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="ceilDiv-procs-all">
<div id="ceilDiv,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#ceilDiv%2CT%2CT"><span class="Identifier">ceilDiv</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
<p>Ceil division is conceptually defined as <tt class="docutils literal"><span class="pre"><span class="Identifier">ceil</span><span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Operator">/</span> <span class="Identifier">y</span><span class="Punctuation">)</span></span></tt>.</p>
<p>Assumes <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span> <span class="Operator">&gt;=</span> <span class="DecNumber">0</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span> <span class="Operator">&gt;</span> <span class="DecNumber">0</span></span></tt> (and <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span> <span class="Operator">+</span> <span class="Identifier">y</span> <span class="Operator">-</span> <span class="DecNumber">1</span> <span class="Operator">&lt;=</span> <span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">T</span><span class="Punctuation">)</span></span></tt> if T is SomeUnsignedInt).</p>
<p>This is different from the <a class="reference external" href="system.html#div,int,int">system.div</a> operator, which works like <tt class="docutils literal"><span class="pre"><span class="Identifier">trunc</span><span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Operator">/</span> <span class="Identifier">y</span><span class="Punctuation">)</span></span></tt>. That is, <tt class="docutils literal"><span class="pre"><span class="Keyword">div</span></span></tt> rounds towards <tt class="docutils literal"><span class="pre"><span class="DecNumber">0</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">ceilDiv</span></span></tt> rounds up.</p>
<p>This function has the above input limitation, because that allows the compiler to generate faster code and it is rarely used with negative values or unsigned integers close to <tt class="docutils literal"><span class="pre"><span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">T</span><span class="Punctuation">)</span><span class="Operator">/</span><span class="DecNumber">2</span></span></tt>. If you need a <tt class="docutils literal"><span class="pre"><span class="Identifier">ceilDiv</span></span></tt> that works with any input, see: <a class="reference external" href="https://github.com/demotomohiro/divmath">https://github.com/demotomohiro/divmath</a>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="system.html#div,int,int">system.div proc</a> for integer division</li>
<li><a class="reference external" href="#floorDiv,T,T">floorDiv func</a> for integer division which rounds down.</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span> <span class="Identifier">ceilDiv</span><span class="Punctuation">(</span><span class="DecNumber">12</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">4</span>
<span class="Identifier">assert</span> <span class="Identifier">ceilDiv</span><span class="Punctuation">(</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">5</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L925" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L925" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="clamp-procs-all">
<div id="clamp,T,Slice[T]">
<dt><pre><span class="Keyword">func</span> <a href="#clamp%2CT%2CSlice%5BT%5D"><span class="Identifier">clamp</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">val</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">bounds</span><span class="Other">:</span> <a href="system.html#Slice"><span class="Identifier">Slice</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
Like <tt class="docutils literal"><span class="pre"><span class="Identifier">system</span><span class="Operator">.</span><span class="Identifier">clamp</span></span></tt>, but takes a slice, so you can easily clamp within a range.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span> <span class="Identifier">clamp</span><span class="Punctuation">(</span><span class="DecNumber">10</span><span class="Punctuation">,</span> <span class="DecNumber">1</span> <span class="Operator">..</span> <span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">5</span>
<span class="Identifier">assert</span> <span class="Identifier">clamp</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span> <span class="Operator">..</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Keyword">type</span> <span class="Identifier">A</span> <span class="Operator">=</span> <span class="Keyword">enum</span> <span class="Identifier">a0</span><span class="Punctuation">,</span> <span class="Identifier">a1</span><span class="Punctuation">,</span> <span class="Identifier">a2</span><span class="Punctuation">,</span> <span class="Identifier">a3</span><span class="Punctuation">,</span> <span class="Identifier">a4</span><span class="Punctuation">,</span> <span class="Identifier">a5</span>
<span class="Identifier">assert</span> <span class="Identifier">a1</span><span class="Operator">.</span><span class="Identifier">clamp</span><span class="Punctuation">(</span><span class="Identifier">a2</span><span class="Operator">..</span><span class="Identifier">a4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">a2</span>
<span class="Identifier">assert</span> <span class="Identifier">clamp</span><span class="Punctuation">(</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">..</span> <span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">9</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">9</span><span class="Punctuation">)</span>
<span class="Identifier">doAssertRaises</span><span class="Punctuation">(</span><span class="Identifier">AssertionDefect</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Keyword">discard</span> <span class="Identifier">clamp</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="FloatNumber">3.</span><span class="Operator">.</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Comment"># invalid bounds</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1364" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1364" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="classify-procs-all">
<div id="classify,float">
<dt><pre><span class="Keyword">func</span> <a href="#classify%2Cfloat"><span class="Identifier">classify</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="math.html#FloatClass"><span class="Identifier">FloatClass</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Classifies a floating point value.</p>
<p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>'s class as specified by the <a class="reference external" href="#FloatClass">FloatClass enum</a>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">classify</span><span class="Punctuation">(</span><span class="FloatNumber">0.3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">fcNormal</span>
<span class="Identifier">doAssert</span> <span class="Identifier">classify</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">fcZero</span>
<span class="Identifier">doAssert</span> <span class="Identifier">classify</span><span class="Punctuation">(</span><span class="FloatNumber">0.3</span> <span class="Operator">/</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">fcInf</span>
<span class="Identifier">doAssert</span> <span class="Identifier">classify</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">0.3</span> <span class="Operator">/</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">fcNegInf</span>
<span class="Identifier">doAssert</span> <span class="Identifier">classify</span><span class="Punctuation">(</span><span class="FloatNumber">5.0e-324</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">fcSubnormal</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L270" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L270" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="copySign-procs-all">
<div id="copySign,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#copySign%2CT%2CT"><span class="Identifier">copySign</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
Returns a value with the magnitude of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> and the sign of <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>; this works even if x or y are NaN, infinity or zero, all of which can carry a sign.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">copySign</span><span class="Punctuation">(</span><span class="FloatNumber">10.0</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">10.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">copySign</span><span class="Punctuation">(</span><span class="FloatNumber">10.0</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="FloatNumber">10.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">copySign</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="Identifier">Inf</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="Identifier">Inf</span>
<span class="Identifier">doAssert</span> <span class="Identifier">copySign</span><span class="Punctuation">(</span><span class="Identifier">NaN</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">isNaN</span>
<span class="Identifier">doAssert</span> <span class="Identifier">copySign</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">,</span> <span class="Identifier">copySign</span><span class="Punctuation">(</span><span class="Identifier">NaN</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="FloatNumber">1.0</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L245" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L245" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cos-procs-all">
<div id="cos,float32">
<dt><pre><span class="Keyword">func</span> <a href="#cos%2Cfloat32"><span class="Identifier">cos</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cosf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L459" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L459" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="cos,float64">
<dt><pre><span class="Keyword">func</span> <a href="#cos%2Cfloat64"><span class="Identifier">cos</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cos&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the cosine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#arccos,float64">arccos func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">cos</span><span class="Punctuation">(</span><span class="DecNumber">2</span> <span class="Operator">*</span> <span class="Identifier">PI</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">cos</span><span class="Punctuation">(</span><span class="Identifier">degToRad</span><span class="Punctuation">(</span><span class="FloatNumber">60.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.5</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L460" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L460" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cosh-procs-all">
<div id="cosh,float32">
<dt><pre><span class="Keyword">func</span> <a href="#cosh%2Cfloat32"><span class="Identifier">cosh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;coshf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L486" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L486" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="cosh,float64">
<dt><pre><span class="Keyword">func</span> <a href="#cosh%2Cfloat64"><span class="Identifier">cosh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cosh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Hyperbolic_function#Definitions">hyperbolic cosine</a> of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#arccosh,float64">arccosh func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">cosh</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">cosh</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.543080634815244</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L487" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L487" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cot-procs-all">
<div id="cot,T">
<dt><pre><span class="Keyword">func</span> <a href="#cot%2CT"><span class="Identifier">cot</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the cotangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">tan</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L590" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L590" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="coth-procs-all">
<div id="coth,T">
<dt><pre><span class="Keyword">func</span> <a href="#coth%2CT"><span class="Identifier">coth</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the hyperbolic cotangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">tanh</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L597" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L597" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="csc-procs-all">
<div id="csc,T">
<dt><pre><span class="Keyword">func</span> <a href="#csc%2CT"><span class="Identifier">csc</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the cosecant of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">sin</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L594" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L594" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="csch-procs-all">
<div id="csch,T">
<dt><pre><span class="Keyword">func</span> <a href="#csch%2CT"><span class="Identifier">csch</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the hyperbolic cosecant of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">sinh</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L601" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L601" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cumprod-procs-all">
<div id="cumprod,openArray[T]">
<dt><pre><span class="Keyword">func</span> <a href="#cumprod%2CopenArray%5BT%5D"><span class="Identifier">cumprod</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span></pre></dt>
<dd>
<p>Transforms <tt class="docutils literal"><span class="pre">x</span></tt> in-place (must be declared as <tt class="docutils literal"><span class="pre"><span class="Keyword">var</span></span></tt>) into its product.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#sum,openArray[T]">prod proc</a></li>
<li><a class="reference external" href="#cumproded,openArray[T]">cumproded proc</a> for a version which returns cumproded sequence</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span>
<span class="Identifier">cumprod</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">24</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1148" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1148" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cumproded-procs-all">
<div id="cumproded,openArray[T]">
<dt><pre><span class="Keyword">func</span> <a href="#cumproded%2CopenArray%5BT%5D"><span class="Identifier">cumproded</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span></pre></dt>
<dd>
<p>Return cumulative (aka prefix) product of <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#prod,openArray[T]">prod proc</a></li>
<li><a class="reference external" href="#cumprod,openArray[T]">cumprod proc</a> for the in-place version</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span>
<span class="Identifier">doAssert</span> <span class="Identifier">cumproded</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">24</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1162" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1162" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cumsum-procs-all">
<div id="cumsum,openArray[T]">
<dt><pre><span class="Keyword">func</span> <a href="#cumsum%2CopenArray%5BT%5D"><span class="Identifier">cumsum</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span></pre></dt>
<dd>
<p>Transforms <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> in-place (must be declared as <tt class="docutils literal"><span class="pre"><span class="Keyword">var</span></span></tt>) into its cumulative (aka prefix) summation.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#sum,openArray[T]">sum func</a></li>
<li><a class="reference external" href="#cumsummed,openArray[T]">cumsummed func</a> for a version which returns a cumsummed sequence</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span>
<span class="Identifier">cumsum</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">10</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1197" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1197" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cumsummed-procs-all">
<div id="cumsummed,openArray[T]">
<dt><pre><span class="Keyword">func</span> <a href="#cumsummed%2CopenArray%5BT%5D"><span class="Identifier">cumsummed</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span></pre></dt>
<dd>
<p>Returns the cumulative (aka prefix) summation of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p>If <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is empty, <tt class="docutils literal"><span class="pre"><span class="Operator">@</span><span class="Punctuation">[</span><span class="Punctuation">]</span></span></tt> is returned.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#sum,openArray[T]">sum func</a></li>
<li><a class="reference external" href="#cumsum,openArray[T]">cumsum func</a> for the in-place version</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">cumsummed</span><span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">10</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1179" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1179" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="degToRad-procs-all">
<div id="degToRad,T">
<dt><pre><span class="Keyword">func</span> <a href="#degToRad%2CT"><span class="Identifier">degToRad</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
<p>Converts from degrees to radians.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#radToDeg,T">radToDeg func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">degToRad</span><span class="Punctuation">(</span><span class="FloatNumber">180.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Identifier">PI</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1081" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1081" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="divmod-procs-all">
<div id="divmod,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#divmod%2CT%2CT"><span class="Identifier">divmod</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">)</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
Specialized instructions for computing both division and modulus. Return structure is: (quotient, remainder)
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">divmod</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">divmod</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L98" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L98" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="erf-procs-all">
<div id="erf,float32">
<dt><pre><span class="Keyword">func</span> <a href="#erf%2Cfloat32"><span class="Identifier">erf</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;erff&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L644" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L644" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="erf,float64">
<dt><pre><span class="Keyword">func</span> <a href="#erf%2Cfloat64"><span class="Identifier">erf</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;erf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Error_function">error function</a> for <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>Note:</strong> Not available for the JS backend.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L645" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L645" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="erfc-procs-all">
<div id="erfc,float32">
<dt><pre><span class="Keyword">func</span> <a href="#erfc%2Cfloat32"><span class="Identifier">erfc</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;erfcf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L649" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L649" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="erfc,float64">
<dt><pre><span class="Keyword">func</span> <a href="#erfc%2Cfloat64"><span class="Identifier">erfc</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;erfc&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Error_function#Complementary_error_function">complementary error function</a> for <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>Note:</strong> Not available for the JS backend.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L650" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L650" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="euclDiv-procs-all">
<div id="euclDiv,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#euclDiv%2CT%2CT"><span class="Identifier">euclDiv</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Returns euclidean division of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> by <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">euclDiv</span><span class="Punctuation">(</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">4</span>
<span class="Identifier">doAssert</span> <span class="Identifier">euclDiv</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">5</span>
<span class="Identifier">doAssert</span> <span class="Identifier">euclDiv</span><span class="Punctuation">(</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">4</span>
<span class="Identifier">doAssert</span> <span class="Identifier">euclDiv</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">5</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L897" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L897" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="euclMod-procs-all">
<div id="euclMod,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#euclMod%2CT%2CT"><span class="Identifier">euclMod</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeNumber"><span class="Identifier">SomeNumber</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Returns euclidean modulo of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> by <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>. <tt class="docutils literal"><span class="pre"><span class="Identifier">euclMod</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">,</span> <span class="Identifier">y</span><span class="Punctuation">)</span></span></tt> is non-negative.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">euclMod</span><span class="Punctuation">(</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">euclMod</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span>
<span class="Identifier">doAssert</span> <span class="Identifier">euclMod</span><span class="Punctuation">(</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">euclMod</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L912" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L912" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="exp-procs-all">
<div id="exp,float32">
<dt><pre><span class="Keyword">func</span> <a href="#exp%2Cfloat32"><span class="Identifier">exp</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;expf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L440" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L440" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="exp,float64">
<dt><pre><span class="Keyword">func</span> <a href="#exp%2Cfloat64"><span class="Identifier">exp</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;exp&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the exponential function of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="Identifier">e</span><span class="Operator">^</span><span class="Identifier">x</span></span></tt>).</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#ln,float64">ln func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">exp</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Identifier">E</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">ln</span><span class="Punctuation">(</span><span class="Identifier">exp</span><span class="Punctuation">(</span><span class="FloatNumber">4.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">4.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">exp</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L441" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L441" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="fac-procs-all">
<div id="fac,int">
<dt><pre><span class="Keyword">func</span> <a href="#fac%2Cint"><span class="Identifier">fac</span></a><span class="Other">(</span><span class="Identifier">n</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Factorial">factorial</a> of a non-negative integer <tt class="docutils literal"><span class="pre"><span class="Identifier">n</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#prod,openArray[T]">prod func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">fac</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">fac</span><span class="Punctuation">(</span><span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">24</span>
<span class="Identifier">doAssert</span> <span class="Identifier">fac</span><span class="Punctuation">(</span><span class="DecNumber">10</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">3628800</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L135" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L135" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="floor-procs-all">
<div id="floor,float32">
<dt><pre><span class="Keyword">func</span> <a href="#floor%2Cfloat32"><span class="Identifier">floor</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;floorf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L675" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L675" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="floor,float64">
<dt><pre><span class="Keyword">func</span> <a href="#floor%2Cfloat64"><span class="Identifier">floor</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;floor&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the floor function (i.e. the largest integer not greater than <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>).</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#ceil,float64">ceil func</a></li>
<li><a class="reference external" href="#round,float64">round func</a></li>
<li><a class="reference external" href="#trunc,float64">trunc func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">floor</span><span class="Punctuation">(</span><span class="FloatNumber">2.1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">2.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">floor</span><span class="Punctuation">(</span><span class="FloatNumber">2.9</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">2.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">floor</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">3.5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="FloatNumber">4.0</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L676" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L676" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="floorDiv-procs-all">
<div id="floorDiv,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#floorDiv%2CT%2CT"><span class="Identifier">floorDiv</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Floor division is conceptually defined as <tt class="docutils literal"><span class="pre"><span class="Identifier">floor</span><span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Operator">/</span> <span class="Identifier">y</span><span class="Punctuation">)</span></span></tt>.</p>
<p>This is different from the <a class="reference external" href="system.html#div,int,int">system.div</a> operator, which is defined as <tt class="docutils literal"><span class="pre"><span class="Identifier">trunc</span><span class="Punctuation">(</span><span class="Identifier">x</span> <span class="Operator">/</span> <span class="Identifier">y</span><span class="Punctuation">)</span></span></tt>. That is, <tt class="docutils literal"><span class="pre"><span class="Keyword">div</span></span></tt> rounds towards <tt class="docutils literal"><span class="pre"><span class="DecNumber">0</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">floorDiv</span></span></tt> rounds down.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="system.html#div,int,int">system.div proc</a> for integer division</li>
<li><a class="reference external" href="#floorMod,T,T">floorMod func</a> for Python-like (<tt class="docutils literal"><span class="pre"><span class="Operator">%</span></span></tt> operator) behavior</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">floorDiv</span><span class="Punctuation">(</span> <span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">4</span>
<span class="Identifier">doAssert</span> <span class="Identifier">floorDiv</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">5</span>
<span class="Identifier">doAssert</span> <span class="Identifier">floorDiv</span><span class="Punctuation">(</span> <span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">5</span>
<span class="Identifier">doAssert</span> <span class="Identifier">floorDiv</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">4</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L860" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L860" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="floorMod-procs-all">
<div id="floorMod,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#floorMod%2CT%2CT"><span class="Identifier">floorMod</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeNumber"><span class="Identifier">SomeNumber</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Floor modulo is conceptually defined as <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span> <span class="Operator">-</span> <span class="Punctuation">(</span><span class="Identifier">floorDiv</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">,</span> <span class="Identifier">y</span><span class="Punctuation">)</span> <span class="Operator">*</span> <span class="Identifier">y</span><span class="Punctuation">)</span></span></tt>.</p>
<p>This func behaves the same as the <tt class="docutils literal"><span class="pre"><span class="Operator">%</span></span></tt> operator in Python.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#mod,float64,float64">mod func</a></li>
<li><a class="reference external" href="#floorDiv,T,T">floorDiv func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">floorMod</span><span class="Punctuation">(</span> <span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">floorMod</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span>
<span class="Identifier">doAssert</span> <span class="Identifier">floorMod</span><span class="Punctuation">(</span> <span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">2</span>
<span class="Identifier">doAssert</span> <span class="Identifier">floorMod</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">1</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L880" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L880" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="frexp-procs-all">
<div id="frexp,T">
<dt><pre><span class="Keyword">func</span> <a href="#frexp%2CT"><span class="Identifier">frexp</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">frac</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">exp</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">]</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
Splits <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> into a normalized fraction <tt class="docutils literal"><span class="pre"><span class="Identifier">frac</span></span></tt> and an integral power of 2 <tt class="docutils literal"><span class="pre"><span class="Identifier">exp</span></span></tt>, such that <tt class="docutils literal"><span class="pre"><span class="Identifier">abs</span><span class="Punctuation">(</span><span class="Identifier">frac</span><span class="Punctuation">)</span> <span class="Keyword">in</span> <span class="FloatNumber">0.5</span><span class="Operator">..&lt;</span><span class="DecNumber">1</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span> <span class="Operator">==</span> <span class="Identifier">frac</span> <span class="Operator">*</span> <span class="DecNumber">2</span> <span class="Operator">^</span> <span class="Identifier">exp</span></span></tt>, except for special cases shown below.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">frexp</span><span class="Punctuation">(</span><span class="FloatNumber">8.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="FloatNumber">0.5</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">frexp</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">8.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">0.5</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">frexp</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Comment"># special cases:</span>
<span class="Keyword">when</span> <span class="Identifier">sizeof</span><span class="Punctuation">(</span><span class="Identifier">int</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">8</span><span class="Punctuation">:</span>
<span class="Identifier">doAssert</span> <span class="Identifier">frexp</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">frac</span><span class="Operator">.</span><span class="Identifier">signbit</span> <span class="Comment"># signbit preserved for +-0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">frexp</span><span class="Punctuation">(</span><span class="Identifier">Inf</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">frac</span> <span class="Operator">==</span> <span class="Identifier">Inf</span> <span class="Comment"># +- Inf preserved</span>
<span class="Identifier">doAssert</span> <span class="Identifier">frexp</span><span class="Punctuation">(</span><span class="Identifier">NaN</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">frac</span><span class="Operator">.</span><span class="Identifier">isNaN</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L977" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L977" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="frexp,T,int">
<dt><pre><span class="Keyword">func</span> <a href="#frexp%2CT%2Cint"><span class="Identifier">frexp</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">exponent</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
Overload of <tt class="docutils literal"><span class="pre"><span class="Identifier">frexp</span></span></tt> that calls <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">result</span><span class="Punctuation">,</span> <span class="Identifier">exponent</span><span class="Punctuation">)</span> <span class="Operator">=</span> <span class="Identifier">frexp</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">x</span><span class="Punctuation">:</span> <span class="Identifier">int</span>
<span class="Identifier">doAssert</span> <span class="Identifier">frexp</span><span class="Punctuation">(</span><span class="FloatNumber">5.0</span><span class="Punctuation">,</span> <span class="Identifier">x</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">0.625</span>
<span class="Identifier">doAssert</span> <span class="Identifier">x</span> <span class="Operator">==</span> <span class="DecNumber">3</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1019" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1019" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="gamma-procs-all">
<div id="gamma,float32">
<dt><pre><span class="Keyword">func</span> <a href="#gamma%2Cfloat32"><span class="Identifier">gamma</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tgammaf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L654" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L654" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="gamma,float64">
<dt><pre><span class="Keyword">func</span> <a href="#gamma%2Cfloat64"><span class="Identifier">gamma</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tgamma&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Gamma_function">gamma function</a> for <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>Note:</strong> Not available for the JS backend.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#lgamma,float64">lgamma func</a> for the natural logarithm of the gamma function</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">gamma</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">gamma</span><span class="Punctuation">(</span><span class="FloatNumber">4.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">6.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">gamma</span><span class="Punctuation">(</span><span class="FloatNumber">11.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">3628800.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L655" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L655" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="gcd-procs-all">
<div id="gcd,SomeInteger,SomeInteger">
<dt><pre><span class="Keyword">func</span> <a href="#gcd%2CSomeInteger%2CSomeInteger"><span class="Identifier">gcd</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">SomeInteger</span></pre></dt>
<dd>
<p>Computes the greatest common (positive) divisor of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>, using the binary GCD (aka Stein's) algorithm.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#gcd,T,T">gcd func</a> for a float version</li>
<li><a class="reference external" href="#lcm,T,T">lcm func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">gcd</span><span class="Punctuation">(</span><span class="DecNumber">12</span><span class="Punctuation">,</span> <span class="DecNumber">8</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">4</span>
<span class="Identifier">doAssert</span> <span class="Identifier">gcd</span><span class="Punctuation">(</span><span class="DecNumber">17</span><span class="Punctuation">,</span> <span class="DecNumber">63</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1307" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1307" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="gcd,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#gcd%2CT%2CT"><span class="Identifier">gcd</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Computes the greatest common (positive) divisor of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>.</p>
<p>Note that for floats, the result cannot always be interpreted as &quot;greatest decimal <tt class="docutils literal"><span class="pre"><span class="Identifier">z</span></span></tt> such that <tt class="docutils literal"><span class="pre"><span class="Identifier">z</span><span class="Operator">*</span><span class="Identifier">N</span> <span class="Operator">==</span> <span class="Identifier">x</span> <span class="Keyword">and</span> <span class="Identifier">z</span><span class="Operator">*</span><span class="Identifier">M</span> <span class="Operator">==</span> <span class="Identifier">y</span></span></tt> where N and M are positive integers&quot;.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#gcd,SomeInteger,SomeInteger">gcd func</a> for an integer version</li>
<li><a class="reference external" href="#lcm,T,T">lcm func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">gcd</span><span class="Punctuation">(</span><span class="FloatNumber">13.5</span><span class="Punctuation">,</span> <span class="FloatNumber">9.0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">4.5</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1286" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1286" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="gcd,openArray[T]">
<dt><pre><span class="Keyword">func</span> <a href="#gcd%2CopenArray%5BT%5D"><span class="Identifier">gcd</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Computes the greatest common (positive) divisor of the elements of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#gcd,T,T">gcd func</a> for a version with two arguments</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">gcd</span><span class="Punctuation">(</span><span class="Operator">@</span><span class="Punctuation">[</span><span class="FloatNumber">13.5</span><span class="Punctuation">,</span> <span class="FloatNumber">9.0</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">4.5</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1341" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1341" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="hypot-procs-all">
<div id="hypot,float32,float32">
<dt><pre><span class="Keyword">func</span> <a href="#hypot%2Cfloat32%2Cfloat32"><span class="Identifier">hypot</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;hypotf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L621" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L621" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="hypot,float64,float64">
<dt><pre><span class="Keyword">func</span> <a href="#hypot%2Cfloat64%2Cfloat64"><span class="Identifier">hypot</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;hypot&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Computes the length of the hypotenuse of a right-angle triangle with <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> as its base and <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt> as its height. Equivalent to <tt class="docutils literal"><span class="pre"><span class="Identifier">sqrt</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Operator">*</span><span class="Identifier">x</span> <span class="Operator">+</span> <span class="Identifier">y</span><span class="Operator">*</span><span class="Identifier">y</span><span class="Punctuation">)</span></span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">hypot</span><span class="Punctuation">(</span><span class="FloatNumber">3.0</span><span class="Punctuation">,</span> <span class="FloatNumber">4.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">5.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L622" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L622" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isNaN-procs-all">
<div id="isNaN,SomeFloat">
<dt><pre><span class="Keyword">func</span> <a href="#isNaN%2CSomeFloat"><span class="Identifier">isNaN</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
Returns whether <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is a <tt class="docutils literal"><span class="pre"><span class="Identifier">NaN</span></span></tt>, more efficiently than via <tt class="docutils literal"><span class="pre"><span class="Identifier">classify</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">fcNan</span></span></tt>. Works even with <tt class="docutils literal"><span class="pre"><span class="Operator">--</span><span class="Identifier">passc</span><span class="Punctuation">:</span><span class="Operator">-</span><span class="Identifier">ffast</span><span class="Operator">-</span><span class="Identifier">math</span></span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">NaN</span><span class="Operator">.</span><span class="Identifier">isNaN</span>
<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">Inf</span><span class="Operator">.</span><span class="Identifier">isNaN</span>
<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">isNaN</span><span class="Punctuation">(</span><span class="FloatNumber">3.1415926</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L193" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L193" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isPowerOfTwo-procs-all">
<div id="isPowerOfTwo,int">
<dt><pre><span class="Keyword">func</span> <a href="#isPowerOfTwo%2Cint"><span class="Identifier">isPowerOfTwo</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">true</span></span></tt>, if <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is a power of two, <tt class="docutils literal"><span class="pre"><span class="Identifier">false</span></span></tt> otherwise.</p>
<p>Zero and negative numbers are not a power of two.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#nextPowerOfTwo,int">nextPowerOfTwo func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">isPowerOfTwo</span><span class="Punctuation">(</span><span class="DecNumber">16</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">isPowerOfTwo</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">isPowerOfTwo</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">isPowerOfTwo</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">16</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L324" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L324" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="lcm-procs-all">
<div id="lcm,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#lcm%2CT%2CT"><span class="Identifier">lcm</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Computes the least common multiple of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#gcd,T,T">gcd func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">lcm</span><span class="Punctuation">(</span><span class="DecNumber">24</span><span class="Punctuation">,</span> <span class="DecNumber">30</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">120</span>
<span class="Identifier">doAssert</span> <span class="Identifier">lcm</span><span class="Punctuation">(</span><span class="DecNumber">13</span><span class="Punctuation">,</span> <span class="DecNumber">39</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">39</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1353" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1353" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="lcm,openArray[T]">
<dt><pre><span class="Keyword">func</span> <a href="#lcm%2CopenArray%5BT%5D"><span class="Identifier">lcm</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Computes the least common multiple of the elements of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#lcm,T,T">lcm func</a> for a version with two arguments</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">lcm</span><span class="Punctuation">(</span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">24</span><span class="Punctuation">,</span> <span class="DecNumber">30</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">120</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1376" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1376" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="lgamma-procs-all">
<div id="lgamma,float32">
<dt><pre><span class="Keyword">func</span> <a href="#lgamma%2Cfloat32"><span class="Identifier">lgamma</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;lgammaf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L666" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L666" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="lgamma,float64">
<dt><pre><span class="Keyword">func</span> <a href="#lgamma%2Cfloat64"><span class="Identifier">lgamma</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;lgamma&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the natural logarithm of the gamma function for <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>Note:</strong> Not available for the JS backend.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#gamma,float64">gamma func</a> for gamma function</li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L667" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L667" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="ln-procs-all">
<div id="ln,float32">
<dt><pre><span class="Keyword">func</span> <a href="#ln%2Cfloat32"><span class="Identifier">ln</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;logf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L387" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L387" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="ln,float64">
<dt><pre><span class="Keyword">func</span> <a href="#ln%2Cfloat64"><span class="Identifier">ln</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Natural_logarithm">natural logarithm</a> of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#log,T,T">log func</a></li>
<li><a class="reference external" href="#log10,float64">log10 func</a></li>
<li><a class="reference external" href="#log2,float64">log2 func</a></li>
<li><a class="reference external" href="#exp,float64">exp func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">ln</span><span class="Punctuation">(</span><span class="Identifier">exp</span><span class="Punctuation">(</span><span class="FloatNumber">4.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">4.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">ln</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">ln</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="Identifier">Inf</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">ln</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">7.0</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">isNaN</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L388" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L388" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="log-procs-all">
<div id="log,T,T">
<dt><pre><span class="Keyword">func</span> <a href="#log%2CT%2CT"><span class="Identifier">log</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">base</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Computes the logarithm of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> to base <tt class="docutils literal"><span class="pre"><span class="Identifier">base</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#ln,float64">ln func</a></li>
<li><a class="reference external" href="#log10,float64">log10 func</a></li>
<li><a class="reference external" href="#log2,float64">log2 func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">log</span><span class="Punctuation">(</span><span class="FloatNumber">9.0</span><span class="Punctuation">,</span> <span class="FloatNumber">3.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">2.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">log</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">,</span> <span class="FloatNumber">2.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="Identifier">Inf</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">log</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">7.0</span><span class="Punctuation">,</span> <span class="FloatNumber">4.0</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">isNaN</span>
<span class="Identifier">doAssert</span> <span class="Identifier">log</span><span class="Punctuation">(</span><span class="FloatNumber">8.0</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="FloatNumber">2.0</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">isNaN</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L412" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L412" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="log2-procs-all">
<div id="log2,float32">
<dt><pre><span class="Keyword">func</span> <a href="#log2%2Cfloat32"><span class="Identifier">log2</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log2f&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1047" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1047" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="log2,float64">
<dt><pre><span class="Keyword">func</span> <a href="#log2%2Cfloat64"><span class="Identifier">log2</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log2&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the binary logarithm (base 2) of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#log,T,T">log func</a></li>
<li><a class="reference external" href="#log10,float64">log10 func</a></li>
<li><a class="reference external" href="#ln,float64">ln func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">log2</span><span class="Punctuation">(</span><span class="FloatNumber">8.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">3.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">log2</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">log2</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="Identifier">Inf</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">log2</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">2.0</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">isNaN</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1048" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1048" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="log10-procs-all">
<div id="log10,float32">
<dt><pre><span class="Keyword">func</span> <a href="#log10%2Cfloat32"><span class="Identifier">log10</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log10f&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L428" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L428" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="log10,float64">
<dt><pre><span class="Keyword">func</span> <a href="#log10%2Cfloat64"><span class="Identifier">log10</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log10&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the common logarithm (base 10) of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#ln,float64">ln func</a></li>
<li><a class="reference external" href="#log,T,T">log func</a></li>
<li><a class="reference external" href="#log2,float64">log2 func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">log10</span><span class="Punctuation">(</span><span class="FloatNumber">100.0</span><span class="Punctuation">)</span> <span class="Punctuation">,</span> <span class="FloatNumber">2.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">log10</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="Identifier">Inf</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">log10</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">100.0</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">isNaN</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L429" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L429" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="mod-procs-all">
<div id="mod,float32,float32">
<dt><pre><span class="Keyword">func</span> <a href="#mod%2Cfloat32%2Cfloat32"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;fmodf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L788" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L788" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="mod,float64,float64">
<dt><pre><span class="Keyword">func</span> <a href="#mod%2Cfloat64%2Cfloat64"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;fmod&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the modulo operation for float values (the remainder of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> divided by <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>).</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#floorMod,T,T">floorMod func</a> for Python-like (<tt class="docutils literal"><span class="pre"><span class="Operator">%</span></span></tt> operator) behavior</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="FloatNumber">6.5</span> <span class="Keyword">mod</span> <span class="FloatNumber">2.5</span> <span class="Operator">==</span> <span class="FloatNumber">1.5</span>
<span class="Identifier">doAssert</span> <span class="Operator">-</span><span class="FloatNumber">6.5</span> <span class="Keyword">mod</span> <span class="FloatNumber">2.5</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="FloatNumber">1.5</span>
<span class="Identifier">doAssert</span> <span class="FloatNumber">6.5</span> <span class="Keyword">mod</span> <span class="Operator">-</span><span class="FloatNumber">2.5</span> <span class="Operator">==</span> <span class="FloatNumber">1.5</span>
<span class="Identifier">doAssert</span> <span class="Operator">-</span><span class="FloatNumber">6.5</span> <span class="Keyword">mod</span> <span class="Operator">-</span><span class="FloatNumber">2.5</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="FloatNumber">1.5</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L789" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L789" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="nextPowerOfTwo-procs-all">
<div id="nextPowerOfTwo,int">
<dt><pre><span class="Keyword">func</span> <a href="#nextPowerOfTwo%2Cint"><span class="Identifier">nextPowerOfTwo</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> rounded up to the nearest power of two.</p>
<p>Zero and negative numbers get rounded up to 1.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#isPowerOfTwo,int">isPowerOfTwo func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">nextPowerOfTwo</span><span class="Punctuation">(</span><span class="DecNumber">16</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">16</span>
<span class="Identifier">doAssert</span> <span class="Identifier">nextPowerOfTwo</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">8</span>
<span class="Identifier">doAssert</span> <span class="Identifier">nextPowerOfTwo</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">nextPowerOfTwo</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">16</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L339" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L339" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="pow-procs-all">
<div id="pow,float32,float32">
<dt><pre><span class="Keyword">func</span> <a href="#pow%2Cfloat32%2Cfloat32"><span class="Identifier">pow</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;powf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L627" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L627" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="pow,float64,float64">
<dt><pre><span class="Keyword">func</span> <a href="#pow%2Cfloat64%2Cfloat64"><span class="Identifier">pow</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;pow&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> raised to the power of <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span></span></tt>.</p>
<p>You may use the <a class="reference external" href="#^, T, U">^ func</a> instead.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#^,T,Natural">^ (SomeNumber, Natural) func</a></li>
<li><a class="reference external" href="#^,T,U">^ (SomeNumber, SomeFloat) func</a></li>
<li><a class="reference external" href="#sqrt,float64">sqrt func</a></li>
<li><a class="reference external" href="#cbrt,float64">cbrt func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">pow</span><span class="Punctuation">(</span><span class="DecNumber">100</span><span class="Punctuation">,</span> <span class="FloatNumber">1.5</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1000.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">pow</span><span class="Punctuation">(</span><span class="FloatNumber">16.0</span><span class="Punctuation">,</span> <span class="FloatNumber">0.5</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">4.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L628" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L628" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="prod-procs-all">
<div id="prod,openArray[T]">
<dt><pre><span class="Keyword">func</span> <a href="#prod%2CopenArray%5BT%5D"><span class="Identifier">prod</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Computes the product of the elements in <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p>If <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is empty, 1 is returned.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#sum,openArray[T]">sum func</a></li>
<li><a class="reference external" href="#fac,int">fac func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">prod</span><span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">24</span>
<span class="Identifier">doAssert</span> <span class="Identifier">prod</span><span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">-</span><span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">60</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1133" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1133" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="radToDeg-procs-all">
<div id="radToDeg,T">
<dt><pre><span class="Keyword">func</span> <a href="#radToDeg%2CT"><span class="Identifier">radToDeg</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">d</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
<p>Converts from radians to degrees.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#degToRad,T">degToRad func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">radToDeg</span><span class="Punctuation">(</span><span class="DecNumber">2</span> <span class="Operator">*</span> <span class="Identifier">PI</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">360.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1091" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1091" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="round-procs-all">
<div id="round,float32">
<dt><pre><span class="Keyword">func</span> <a href="#round%2Cfloat32"><span class="Identifier">round</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;roundf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L758" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L758" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="round,float64">
<dt><pre><span class="Keyword">func</span> <a href="#round%2Cfloat64"><span class="Identifier">round</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;round&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Rounds a float to zero decimal places.</p>
<p>Used internally by the <a class="reference external" href="#round,T,int">round func</a> when the specified number of places is 0.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#round,T,int">round func</a> for rounding to the specific number of decimal places</li>
<li><a class="reference external" href="#floor,float64">floor func</a></li>
<li><a class="reference external" href="#ceil,float64">ceil func</a></li>
<li><a class="reference external" href="#trunc,float64">trunc func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">3.4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">3.5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">4.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">4.5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">5.0</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L759" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L759" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="round,T,int">
<dt><pre><span class="Keyword">func</span> <a href="#round%2CT%2Cint"><span class="Identifier">round</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">places</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Decimal rounding on a binary floating point number.</p>
<p>This function is NOT reliable. Floating point numbers cannot hold non integer decimals precisely. If <tt class="docutils literal"><span class="pre"><span class="Identifier">places</span></span></tt> is 0 (or omitted), round to the nearest integral value following normal mathematical rounding rules (e.g. <tt class="docutils literal"><span class="pre"><span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">54.5</span><span class="Punctuation">)</span> <span class="Operator">-&gt;</span> <span class="FloatNumber">55.0</span></span></tt>). If <tt class="docutils literal"><span class="pre"><span class="Identifier">places</span></span></tt> is greater than 0, round to the given number of decimal places, e.g. <tt class="docutils literal"><span class="pre"><span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">54.346</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">-&gt;</span> <span class="FloatNumber">54.350000000000001421</span><span class="Identifier"></span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">places</span></span></tt> is negative, round to the left of the decimal place, e.g. <tt class="docutils literal"><span class="pre"><span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">537.345</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">-&gt;</span> <span class="FloatNumber">540.0</span></span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">round</span><span class="Punctuation">(</span><span class="Identifier">PI</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.14</span>
<span class="Identifier">doAssert</span> <span class="Identifier">round</span><span class="Punctuation">(</span><span class="Identifier">PI</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.1416</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L840" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L840" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sec-procs-all">
<div id="sec,T">
<dt><pre><span class="Keyword">func</span> <a href="#sec%2CT"><span class="Identifier">sec</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the secant of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">cos</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L592" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L592" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sech-procs-all">
<div id="sech,T">
<dt><pre><span class="Keyword">func</span> <a href="#sech%2CT"><span class="Identifier">sech</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
Computes the hyperbolic secant of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="DecNumber">1</span><span class="Operator">/</span><span class="Identifier">cosh</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span></span></tt>).
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L599" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L599" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sgn-procs-all">
<div id="sgn,T">
<dt><pre><span class="Keyword">func</span> <a href="#sgn%2CT"><span class="Identifier">sgn</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeNumber"><span class="Identifier">SomeNumber</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
<p>Sign function.</p>
<p>Returns:</p>
<ul class="simple"><li><tt class="docutils literal"><span class="pre"><span class="Operator">-</span><span class="DecNumber">1</span></span></tt> for negative numbers and <tt class="docutils literal"><span class="pre"><span class="Identifier">NegInf</span></span></tt>,</li>
<li><tt class="docutils literal"><span class="pre"><span class="DecNumber">1</span></span></tt> for positive numbers and <tt class="docutils literal"><span class="pre"><span class="Identifier">Inf</span></span></tt>,</li>
<li><tt class="docutils literal"><span class="pre"><span class="DecNumber">0</span></span></tt> for positive zero, negative zero and <tt class="docutils literal"><span class="pre"><span class="Identifier">NaN</span></span></tt></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">sgn</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">sgn</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">sgn</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">4.1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">1</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1101" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1101" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="signbit-procs-all">
<div id="signbit,SomeFloat">
<dt><pre><span class="Keyword">proc</span> <a href="#signbit%2CSomeFloat"><span class="Identifier">signbit</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span class="Identifier">inline</span>.}</pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is negative, false otherwise.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">signbit</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">signbit</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">signbit</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">0.1</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">signbit</span><span class="Punctuation">(</span><span class="FloatNumber">0.1</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L231" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L231" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sin-procs-all">
<div id="sin,float32">
<dt><pre><span class="Keyword">func</span> <a href="#sin%2Cfloat32"><span class="Identifier">sin</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sinf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L450" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L450" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="sin,float64">
<dt><pre><span class="Keyword">func</span> <a href="#sin%2Cfloat64"><span class="Identifier">sin</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sin&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the sine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#arcsin,float64">arcsin func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">sin</span><span class="Punctuation">(</span><span class="Identifier">PI</span> <span class="Operator">/</span> <span class="DecNumber">6</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.5</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">sin</span><span class="Punctuation">(</span><span class="Identifier">degToRad</span><span class="Punctuation">(</span><span class="FloatNumber">90.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L451" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L451" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sinh-procs-all">
<div id="sinh,float32">
<dt><pre><span class="Keyword">func</span> <a href="#sinh%2Cfloat32"><span class="Identifier">sinh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sinhf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L477" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L477" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="sinh,float64">
<dt><pre><span class="Keyword">func</span> <a href="#sinh%2Cfloat64"><span class="Identifier">sinh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sinh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Hyperbolic_function#Definitions">hyperbolic sine</a> of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#arcsinh,float64">arcsinh func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">sinh</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">sinh</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.175201193643801</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L478" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L478" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="splitDecimal-procs-all">
<div id="splitDecimal,T">
<dt><pre><span class="Keyword">func</span> <a href="#splitDecimal%2CT"><span class="Identifier">splitDecimal</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">intpart</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">floatpart</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">]</span></pre></dt>
<dd>
<p>Breaks <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> into an integer and a fractional part.</p>
<p>Returns a tuple containing <tt class="docutils literal"><span class="pre"><span class="Identifier">intpart</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">floatpart</span></span></tt>, representing the integer part and the fractional part, respectively.</p>
<p>Both parts have the same sign as <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>. Analogous to the <tt class="docutils literal"><span class="pre"><span class="Identifier">modf</span></span></tt> function in C.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">splitDecimal</span><span class="Punctuation">(</span><span class="FloatNumber">5.25</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="Identifier">intpart</span><span class="Punctuation">:</span> <span class="FloatNumber">5.0</span><span class="Punctuation">,</span> <span class="Identifier">floatpart</span><span class="Punctuation">:</span> <span class="FloatNumber">0.25</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">splitDecimal</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">2.73</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Punctuation">(</span><span class="Identifier">intpart</span><span class="Punctuation">:</span> <span class="Operator">-</span><span class="FloatNumber">2.0</span><span class="Punctuation">,</span> <span class="Identifier">floatpart</span><span class="Punctuation">:</span> <span class="Operator">-</span><span class="FloatNumber">0.73</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1061" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1061" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sqrt-procs-all">
<div id="sqrt,float32">
<dt><pre><span class="Keyword">func</span> <a href="#sqrt%2Cfloat32"><span class="Identifier">sqrt</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sqrtf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L368" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L368" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="sqrt,float64">
<dt><pre><span class="Keyword">func</span> <a href="#sqrt%2Cfloat64"><span class="Identifier">sqrt</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sqrt&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the square root of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#cbrt,float64">cbrt func</a> for the cube root</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">sqrt</span><span class="Punctuation">(</span><span class="FloatNumber">4.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">2.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">sqrt</span><span class="Punctuation">(</span><span class="FloatNumber">1.44</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.2</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L369" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L369" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="sum-procs-all">
<div id="sum,openArray[T]">
<dt><pre><span class="Keyword">func</span> <a href="#sum%2CopenArray%5BT%5D"><span class="Identifier">sum</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Computes the sum of the elements in <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p>If <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is empty, 0 is returned.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#prod,openArray[T]">prod func</a></li>
<li><a class="reference external" href="#cumsum,openArray[T]">cumsum func</a></li>
<li><a class="reference external" href="#cumsummed,openArray[T]">cumsummed func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">sum</span><span class="Punctuation">(</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">10</span>
<span class="Identifier">doAssert</span> <span class="Identifier">sum</span><span class="Punctuation">(</span><span class="Punctuation">[</span><span class="Operator">-</span><span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">4</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1118" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1118" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="tan-procs-all">
<div id="tan,float32">
<dt><pre><span class="Keyword">func</span> <a href="#tan%2Cfloat32"><span class="Identifier">tan</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tanf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L468" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L468" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="tan,float64">
<dt><pre><span class="Keyword">func</span> <a href="#tan%2Cfloat64"><span class="Identifier">tan</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tan&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the tangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#arctan,float64">arctan func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">tan</span><span class="Punctuation">(</span><span class="Identifier">degToRad</span><span class="Punctuation">(</span><span class="FloatNumber">45.0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">tan</span><span class="Punctuation">(</span><span class="Identifier">PI</span> <span class="Operator">/</span> <span class="DecNumber">4</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">1.0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L469" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L469" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="tanh-procs-all">
<div id="tanh,float32">
<dt><pre><span class="Keyword">func</span> <a href="#tanh%2Cfloat32"><span class="Identifier">tanh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tanhf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L495" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L495" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="tanh,float64">
<dt><pre><span class="Keyword">func</span> <a href="#tanh%2Cfloat64"><span class="Identifier">tanh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tanh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Hyperbolic_function#Definitions">hyperbolic tangent</a> of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#arctanh,float64">arctanh func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">tanh</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">almostEqual</span><span class="Punctuation">(</span><span class="Identifier">tanh</span><span class="Punctuation">(</span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="FloatNumber">0.7615941559557649</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L496" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L496" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="trunc-procs-all">
<div id="trunc,float32">
<dt><pre><span class="Keyword">func</span> <a href="#trunc%2Cfloat32"><span class="Identifier">trunc</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;truncf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L776" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L776" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="trunc,float64">
<dt><pre><span class="Keyword">func</span> <a href="#trunc%2Cfloat64"><span class="Identifier">trunc</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;trunc&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Truncates <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> to the decimal point.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="#floor,float64">floor func</a></li>
<li><a class="reference external" href="#ceil,float64">ceil func</a></li>
<li><a class="reference external" href="#round,float64">round func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">trunc</span><span class="Punctuation">(</span><span class="Identifier">PI</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="FloatNumber">3.0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">trunc</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">1.85</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="FloatNumber">1.0</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L777" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L777" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2025-12-28 15:54:42 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>