mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
2469 lines
286 KiB
HTML
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: </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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
<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">></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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L182" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L165" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L170" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L167" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L173" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L177" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L163" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L164" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1248" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1212" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L295" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"acosf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L513" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"acos"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L514" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"acoshf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L550" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"acosh"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L551" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L604" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L611" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L608" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L615" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L606" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L613" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"asinf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L504" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"asin"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L505" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"asinhf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L544" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"asinh"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L545" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"atanf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L522" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"atan"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L523" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"atan2f"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L532" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"atan2"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L533" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"atanhf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L556" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"atanh"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L557" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L117" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"cbrtf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L377" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"cbrt"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L378" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"ceilf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L688" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"ceil"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L689" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">>=</span> <span class="DecNumber">0</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span> <span class="Operator">></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"><=</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L925" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1364" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L270" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L245" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"cosf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L459" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"cos"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L460" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"coshf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L486" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"cosh"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L487" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L590" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L597" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L594" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L601" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1148" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1162" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1197" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1179" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1081" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L98" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"erff"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L644" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"erf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L645" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"erfcf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L649" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"erfc"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L650" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L897" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L912" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"expf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L440" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"exp"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L441" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L135" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"floorf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L675" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"floor"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L676" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L860" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L880" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">..<</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L977" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1019" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"tgammaf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L654" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"tgamma"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L655" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1307" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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 "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".</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1286" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1341" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"hypotf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L621" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"hypot"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L622" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L193" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L324" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1353" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1376" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"lgammaf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L666" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"lgamma"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L667" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"logf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L387" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"log"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L388" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L412" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"log2f"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1047" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"log2"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1048" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"log10f"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L428" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"log10"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L429" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"fmodf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L788" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"fmod"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L789" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L339" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"powf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L627" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"pow"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L628" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1133" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1091" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"roundf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L758" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"round"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L759" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">-></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">-></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">-></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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L840" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L592" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L599" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1101" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L231" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"sinf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L450" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"sin"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L451" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"sinhf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L477" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"sinh"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L478" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1061" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"sqrtf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L368" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"sqrt"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L369" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1118" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"tanf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L468" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"tan"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L469" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"tanhf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L495" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"tanh"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L496" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"truncf"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L776" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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">"trunc"</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">"<math.h>"</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>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L777" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</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>
|