math.html 286 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <!-- This file is generated by Nim. -->
  4. <html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  8. <title>std/math</title>
  9. <!-- Google fonts -->
  10. <link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
  11. <link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
  12. <!-- Favicon -->
  13. <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=="/>
  14. <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=">
  15. <!-- CSS -->
  16. <link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.3.1">
  17. <!-- JS -->
  18. <script type="text/javascript" src="dochack.js?v=2.3.1"></script>
  19. </head>
  20. <body>
  21. <div class="document" id="documentId">
  22. <div class="container">
  23. <h1 class="title">std/math</h1>
  24. <div class="row">
  25. <div class="three columns">
  26. <div class="theme-select-wrapper">
  27. <label for="theme-select">Theme:&nbsp;</label>
  28. <select id="theme-select" onchange="setTheme(this.value)">
  29. <option value="auto">🌗 Match OS</option>
  30. <option value="dark">🌑 Dark</option>
  31. <option value="light">🌕 Light</option>
  32. </select>
  33. </div>
  34. <div id="global-links">
  35. <ul class="simple-boot">
  36. <li><a href="manual.html">Manual</a></li>
  37. <li><a href="lib.html">Standard library</a></li>
  38. <li> <a id="indexLink" href="theindex.html">Index</a></li>
  39. <li><a href="compiler/theindex.html">Compiler docs</a></li>
  40. <li><a href="https://nim-lang.github.io/fusion/theindex.html">Fusion docs</a></li>
  41. <li><a href="https://nim-lang.github.io/Nim/">devel</a>, <a href="https://nim-lang.org/documentation.html">stable</a></li>
  42. </ul>
  43. </div>
  44. <div id="searchInputDiv">
  45. Search: <input type="search" id="searchInput"
  46. oninput="search()" />
  47. </div>
  48. <ul class="simple simple-toc" id="toc-list">
  49. <li><a class="reference" id="see-also_toc" href="#see-also">See also</a></li>
  50. <li>
  51. <a class="reference reference-toplevel" href="#6" id="56">Imports</a>
  52. </li>
  53. <li>
  54. <details open>
  55. <summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
  56. <ul class="simple simple-toc-section">
  57. <li><a class="reference" href="#FloatClass" title="FloatClass = enum
  58. fcNormal, ## value is an ordinary nonzero floating point value
  59. fcSubnormal, ## value is a subnormal (a very small) floating point value
  60. fcZero, ## value is zero
  61. fcNegZero, ## value is the negative zero
  62. fcNan, ## value is Not a Number (NaN)
  63. fcInf, ## value is positive infinity
  64. fcNegInf ## value is negative infinity">FloatClass</a></li>
  65. </ul>
  66. </details>
  67. </li>
  68. <li>
  69. <details open>
  70. <summary><a class="reference reference-toplevel" href="#10" id="60">Consts</a></summary>
  71. <ul class="simple simple-toc-section">
  72. <li><a class="reference" href="#E" title="E = 2.718281828459045">E</a></li>
  73. <li><a class="reference" href="#MaxFloat32Precision" title="MaxFloat32Precision = 8">MaxFloat32Precision</a></li>
  74. <li><a class="reference" href="#MaxFloat64Precision" title="MaxFloat64Precision = 16">MaxFloat64Precision</a></li>
  75. <li><a class="reference" href="#MaxFloatPrecision" title="MaxFloatPrecision = 16">MaxFloatPrecision</a></li>
  76. <li><a class="reference" href="#MinFloatNormal" title="MinFloatNormal = 2.225073858507201e-308">MinFloatNormal</a></li>
  77. <li><a class="reference" href="#PI" title="PI = 3.141592653589793">PI</a></li>
  78. <li><a class="reference" href="#TAU" title="TAU = 6.283185307179586">TAU</a></li>
  79. </ul>
  80. </details>
  81. </li>
  82. <li>
  83. <details open>
  84. <summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
  85. <ul class="simple simple-toc-section">
  86. <ul class="simple nested-toc-section">^
  87. <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>
  88. <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>
  89. </ul>
  90. <ul class="simple nested-toc-section">almostEqual
  91. <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>
  92. </ul>
  93. <ul class="simple nested-toc-section">arccos
  94. <li><a class="reference" href="#arccos%2Cfloat32" title="arccos(x: float32): float32">arccos(x: float32): float32</a></li>
  95. <li><a class="reference" href="#arccos%2Cfloat64" title="arccos(x: float64): float64">arccos(x: float64): float64</a></li>
  96. </ul>
  97. <ul class="simple nested-toc-section">arccosh
  98. <li><a class="reference" href="#arccosh%2Cfloat32" title="arccosh(x: float32): float32">arccosh(x: float32): float32</a></li>
  99. <li><a class="reference" href="#arccosh%2Cfloat64" title="arccosh(x: float64): float64">arccosh(x: float64): float64</a></li>
  100. </ul>
  101. <ul class="simple nested-toc-section">arccot
  102. <li><a class="reference" href="#arccot%2CT" title="arccot[T: float32 | float64](x: T): T">arccot[T: float32 | float64](x: T): T</a></li>
  103. </ul>
  104. <ul class="simple nested-toc-section">arccoth
  105. <li><a class="reference" href="#arccoth%2CT" title="arccoth[T: float32 | float64](x: T): T">arccoth[T: float32 | float64](x: T): T</a></li>
  106. </ul>
  107. <ul class="simple nested-toc-section">arccsc
  108. <li><a class="reference" href="#arccsc%2CT" title="arccsc[T: float32 | float64](x: T): T">arccsc[T: float32 | float64](x: T): T</a></li>
  109. </ul>
  110. <ul class="simple nested-toc-section">arccsch
  111. <li><a class="reference" href="#arccsch%2CT" title="arccsch[T: float32 | float64](x: T): T">arccsch[T: float32 | float64](x: T): T</a></li>
  112. </ul>
  113. <ul class="simple nested-toc-section">arcsec
  114. <li><a class="reference" href="#arcsec%2CT" title="arcsec[T: float32 | float64](x: T): T">arcsec[T: float32 | float64](x: T): T</a></li>
  115. </ul>
  116. <ul class="simple nested-toc-section">arcsech
  117. <li><a class="reference" href="#arcsech%2CT" title="arcsech[T: float32 | float64](x: T): T">arcsech[T: float32 | float64](x: T): T</a></li>
  118. </ul>
  119. <ul class="simple nested-toc-section">arcsin
  120. <li><a class="reference" href="#arcsin%2Cfloat32" title="arcsin(x: float32): float32">arcsin(x: float32): float32</a></li>
  121. <li><a class="reference" href="#arcsin%2Cfloat64" title="arcsin(x: float64): float64">arcsin(x: float64): float64</a></li>
  122. </ul>
  123. <ul class="simple nested-toc-section">arcsinh
  124. <li><a class="reference" href="#arcsinh%2Cfloat32" title="arcsinh(x: float32): float32">arcsinh(x: float32): float32</a></li>
  125. <li><a class="reference" href="#arcsinh%2Cfloat64" title="arcsinh(x: float64): float64">arcsinh(x: float64): float64</a></li>
  126. </ul>
  127. <ul class="simple nested-toc-section">arctan
  128. <li><a class="reference" href="#arctan%2Cfloat32" title="arctan(x: float32): float32">arctan(x: float32): float32</a></li>
  129. <li><a class="reference" href="#arctan%2Cfloat64" title="arctan(x: float64): float64">arctan(x: float64): float64</a></li>
  130. </ul>
  131. <ul class="simple nested-toc-section">arctan2
  132. <li><a class="reference" href="#arctan2%2Cfloat32%2Cfloat32" title="arctan2(y, x: float32): float32">arctan2(y, x: float32): float32</a></li>
  133. <li><a class="reference" href="#arctan2%2Cfloat64%2Cfloat64" title="arctan2(y, x: float64): float64">arctan2(y, x: float64): float64</a></li>
  134. </ul>
  135. <ul class="simple nested-toc-section">arctanh
  136. <li><a class="reference" href="#arctanh%2Cfloat32" title="arctanh(x: float32): float32">arctanh(x: float32): float32</a></li>
  137. <li><a class="reference" href="#arctanh%2Cfloat64" title="arctanh(x: float64): float64">arctanh(x: float64): float64</a></li>
  138. </ul>
  139. <ul class="simple nested-toc-section">binom
  140. <li><a class="reference" href="#binom%2Cint%2Cint" title="binom(n, k: int): int">binom(n, k: int): int</a></li>
  141. </ul>
  142. <ul class="simple nested-toc-section">cbrt
  143. <li><a class="reference" href="#cbrt%2Cfloat32" title="cbrt(x: float32): float32">cbrt(x: float32): float32</a></li>
  144. <li><a class="reference" href="#cbrt%2Cfloat64" title="cbrt(x: float64): float64">cbrt(x: float64): float64</a></li>
  145. </ul>
  146. <ul class="simple nested-toc-section">ceil
  147. <li><a class="reference" href="#ceil%2Cfloat32" title="ceil(x: float32): float32">ceil(x: float32): float32</a></li>
  148. <li><a class="reference" href="#ceil%2Cfloat64" title="ceil(x: float64): float64">ceil(x: float64): float64</a></li>
  149. </ul>
  150. <ul class="simple nested-toc-section">ceilDiv
  151. <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>
  152. </ul>
  153. <ul class="simple nested-toc-section">clamp
  154. <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>
  155. </ul>
  156. <ul class="simple nested-toc-section">classify
  157. <li><a class="reference" href="#classify%2Cfloat" title="classify(x: float): FloatClass">classify(x: float): FloatClass</a></li>
  158. </ul>
  159. <ul class="simple nested-toc-section">copySign
  160. <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>
  161. </ul>
  162. <ul class="simple nested-toc-section">cos
  163. <li><a class="reference" href="#cos%2Cfloat32" title="cos(x: float32): float32">cos(x: float32): float32</a></li>
  164. <li><a class="reference" href="#cos%2Cfloat64" title="cos(x: float64): float64">cos(x: float64): float64</a></li>
  165. </ul>
  166. <ul class="simple nested-toc-section">cosh
  167. <li><a class="reference" href="#cosh%2Cfloat32" title="cosh(x: float32): float32">cosh(x: float32): float32</a></li>
  168. <li><a class="reference" href="#cosh%2Cfloat64" title="cosh(x: float64): float64">cosh(x: float64): float64</a></li>
  169. </ul>
  170. <ul class="simple nested-toc-section">cot
  171. <li><a class="reference" href="#cot%2CT" title="cot[T: float32 | float64](x: T): T">cot[T: float32 | float64](x: T): T</a></li>
  172. </ul>
  173. <ul class="simple nested-toc-section">coth
  174. <li><a class="reference" href="#coth%2CT" title="coth[T: float32 | float64](x: T): T">coth[T: float32 | float64](x: T): T</a></li>
  175. </ul>
  176. <ul class="simple nested-toc-section">csc
  177. <li><a class="reference" href="#csc%2CT" title="csc[T: float32 | float64](x: T): T">csc[T: float32 | float64](x: T): T</a></li>
  178. </ul>
  179. <ul class="simple nested-toc-section">csch
  180. <li><a class="reference" href="#csch%2CT" title="csch[T: float32 | float64](x: T): T">csch[T: float32 | float64](x: T): T</a></li>
  181. </ul>
  182. <ul class="simple nested-toc-section">cumprod
  183. <li><a class="reference" href="#cumprod%2CopenArray%5BT%5D" title="cumprod[T](x: var openArray[T])">cumprod[T](x: var openArray[T])</a></li>
  184. </ul>
  185. <ul class="simple nested-toc-section">cumproded
  186. <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>
  187. </ul>
  188. <ul class="simple nested-toc-section">cumsum
  189. <li><a class="reference" href="#cumsum%2CopenArray%5BT%5D" title="cumsum[T](x: var openArray[T])">cumsum[T](x: var openArray[T])</a></li>
  190. </ul>
  191. <ul class="simple nested-toc-section">cumsummed
  192. <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>
  193. </ul>
  194. <ul class="simple nested-toc-section">degToRad
  195. <li><a class="reference" href="#degToRad%2CT" title="degToRad[T: float32 | float64](d: T): T">degToRad[T: float32 | float64](d: T): T</a></li>
  196. </ul>
  197. <ul class="simple nested-toc-section">divmod
  198. <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>
  199. </ul>
  200. <ul class="simple nested-toc-section">erf
  201. <li><a class="reference" href="#erf%2Cfloat32" title="erf(x: float32): float32">erf(x: float32): float32</a></li>
  202. <li><a class="reference" href="#erf%2Cfloat64" title="erf(x: float64): float64">erf(x: float64): float64</a></li>
  203. </ul>
  204. <ul class="simple nested-toc-section">erfc
  205. <li><a class="reference" href="#erfc%2Cfloat32" title="erfc(x: float32): float32">erfc(x: float32): float32</a></li>
  206. <li><a class="reference" href="#erfc%2Cfloat64" title="erfc(x: float64): float64">erfc(x: float64): float64</a></li>
  207. </ul>
  208. <ul class="simple nested-toc-section">euclDiv
  209. <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>
  210. </ul>
  211. <ul class="simple nested-toc-section">euclMod
  212. <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>
  213. </ul>
  214. <ul class="simple nested-toc-section">exp
  215. <li><a class="reference" href="#exp%2Cfloat32" title="exp(x: float32): float32">exp(x: float32): float32</a></li>
  216. <li><a class="reference" href="#exp%2Cfloat64" title="exp(x: float64): float64">exp(x: float64): float64</a></li>
  217. </ul>
  218. <ul class="simple nested-toc-section">fac
  219. <li><a class="reference" href="#fac%2Cint" title="fac(n: int): int">fac(n: int): int</a></li>
  220. </ul>
  221. <ul class="simple nested-toc-section">floor
  222. <li><a class="reference" href="#floor%2Cfloat32" title="floor(x: float32): float32">floor(x: float32): float32</a></li>
  223. <li><a class="reference" href="#floor%2Cfloat64" title="floor(x: float64): float64">floor(x: float64): float64</a></li>
  224. </ul>
  225. <ul class="simple nested-toc-section">floorDiv
  226. <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>
  227. </ul>
  228. <ul class="simple nested-toc-section">floorMod
  229. <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>
  230. </ul>
  231. <ul class="simple nested-toc-section">frexp
  232. <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>
  233. <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>
  234. </ul>
  235. <ul class="simple nested-toc-section">gamma
  236. <li><a class="reference" href="#gamma%2Cfloat32" title="gamma(x: float32): float32">gamma(x: float32): float32</a></li>
  237. <li><a class="reference" href="#gamma%2Cfloat64" title="gamma(x: float64): float64">gamma(x: float64): float64</a></li>
  238. </ul>
  239. <ul class="simple nested-toc-section">gcd
  240. <li><a class="reference" href="#gcd%2CSomeInteger%2CSomeInteger" title="gcd(x, y: SomeInteger): SomeInteger">gcd(x, y: SomeInteger): SomeInteger</a></li>
  241. <li><a class="reference" href="#gcd%2CT%2CT" title="gcd[T](x, y: T): T">gcd[T](x, y: T): T</a></li>
  242. <li><a class="reference" href="#gcd%2CopenArray%5BT%5D" title="gcd[T](x: openArray[T]): T">gcd[T](x: openArray[T]): T</a></li>
  243. </ul>
  244. <ul class="simple nested-toc-section">hypot
  245. <li><a class="reference" href="#hypot%2Cfloat32%2Cfloat32" title="hypot(x, y: float32): float32">hypot(x, y: float32): float32</a></li>
  246. <li><a class="reference" href="#hypot%2Cfloat64%2Cfloat64" title="hypot(x, y: float64): float64">hypot(x, y: float64): float64</a></li>
  247. </ul>
  248. <ul class="simple nested-toc-section">isNaN
  249. <li><a class="reference" href="#isNaN%2CSomeFloat" title="isNaN(x: SomeFloat): bool">isNaN(x: SomeFloat): bool</a></li>
  250. </ul>
  251. <ul class="simple nested-toc-section">isPowerOfTwo
  252. <li><a class="reference" href="#isPowerOfTwo%2Cint" title="isPowerOfTwo(x: int): bool">isPowerOfTwo(x: int): bool</a></li>
  253. </ul>
  254. <ul class="simple nested-toc-section">lcm
  255. <li><a class="reference" href="#lcm%2CT%2CT" title="lcm[T](x, y: T): T">lcm[T](x, y: T): T</a></li>
  256. <li><a class="reference" href="#lcm%2CopenArray%5BT%5D" title="lcm[T](x: openArray[T]): T">lcm[T](x: openArray[T]): T</a></li>
  257. </ul>
  258. <ul class="simple nested-toc-section">lgamma
  259. <li><a class="reference" href="#lgamma%2Cfloat32" title="lgamma(x: float32): float32">lgamma(x: float32): float32</a></li>
  260. <li><a class="reference" href="#lgamma%2Cfloat64" title="lgamma(x: float64): float64">lgamma(x: float64): float64</a></li>
  261. </ul>
  262. <ul class="simple nested-toc-section">ln
  263. <li><a class="reference" href="#ln%2Cfloat32" title="ln(x: float32): float32">ln(x: float32): float32</a></li>
  264. <li><a class="reference" href="#ln%2Cfloat64" title="ln(x: float64): float64">ln(x: float64): float64</a></li>
  265. </ul>
  266. <ul class="simple nested-toc-section">log
  267. <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>
  268. </ul>
  269. <ul class="simple nested-toc-section">log2
  270. <li><a class="reference" href="#log2%2Cfloat32" title="log2(x: float32): float32">log2(x: float32): float32</a></li>
  271. <li><a class="reference" href="#log2%2Cfloat64" title="log2(x: float64): float64">log2(x: float64): float64</a></li>
  272. </ul>
  273. <ul class="simple nested-toc-section">log10
  274. <li><a class="reference" href="#log10%2Cfloat32" title="log10(x: float32): float32">log10(x: float32): float32</a></li>
  275. <li><a class="reference" href="#log10%2Cfloat64" title="log10(x: float64): float64">log10(x: float64): float64</a></li>
  276. </ul>
  277. <ul class="simple nested-toc-section">mod
  278. <li><a class="reference" href="#mod%2Cfloat32%2Cfloat32" title="`mod`(x, y: float32): float32">`mod`(x, y: float32): float32</a></li>
  279. <li><a class="reference" href="#mod%2Cfloat64%2Cfloat64" title="`mod`(x, y: float64): float64">`mod`(x, y: float64): float64</a></li>
  280. </ul>
  281. <ul class="simple nested-toc-section">nextPowerOfTwo
  282. <li><a class="reference" href="#nextPowerOfTwo%2Cint" title="nextPowerOfTwo(x: int): int">nextPowerOfTwo(x: int): int</a></li>
  283. </ul>
  284. <ul class="simple nested-toc-section">pow
  285. <li><a class="reference" href="#pow%2Cfloat32%2Cfloat32" title="pow(x, y: float32): float32">pow(x, y: float32): float32</a></li>
  286. <li><a class="reference" href="#pow%2Cfloat64%2Cfloat64" title="pow(x, y: float64): float64">pow(x, y: float64): float64</a></li>
  287. </ul>
  288. <ul class="simple nested-toc-section">prod
  289. <li><a class="reference" href="#prod%2CopenArray%5BT%5D" title="prod[T](x: openArray[T]): T">prod[T](x: openArray[T]): T</a></li>
  290. </ul>
  291. <ul class="simple nested-toc-section">radToDeg
  292. <li><a class="reference" href="#radToDeg%2CT" title="radToDeg[T: float32 | float64](d: T): T">radToDeg[T: float32 | float64](d: T): T</a></li>
  293. </ul>
  294. <ul class="simple nested-toc-section">round
  295. <li><a class="reference" href="#round%2Cfloat32" title="round(x: float32): float32">round(x: float32): float32</a></li>
  296. <li><a class="reference" href="#round%2Cfloat64" title="round(x: float64): float64">round(x: float64): float64</a></li>
  297. <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>
  298. </ul>
  299. <ul class="simple nested-toc-section">sec
  300. <li><a class="reference" href="#sec%2CT" title="sec[T: float32 | float64](x: T): T">sec[T: float32 | float64](x: T): T</a></li>
  301. </ul>
  302. <ul class="simple nested-toc-section">sech
  303. <li><a class="reference" href="#sech%2CT" title="sech[T: float32 | float64](x: T): T">sech[T: float32 | float64](x: T): T</a></li>
  304. </ul>
  305. <ul class="simple nested-toc-section">sgn
  306. <li><a class="reference" href="#sgn%2CT" title="sgn[T: SomeNumber](x: T): int">sgn[T: SomeNumber](x: T): int</a></li>
  307. </ul>
  308. <ul class="simple nested-toc-section">signbit
  309. <li><a class="reference" href="#signbit%2CSomeFloat" title="signbit(x: SomeFloat): bool">signbit(x: SomeFloat): bool</a></li>
  310. </ul>
  311. <ul class="simple nested-toc-section">sin
  312. <li><a class="reference" href="#sin%2Cfloat32" title="sin(x: float32): float32">sin(x: float32): float32</a></li>
  313. <li><a class="reference" href="#sin%2Cfloat64" title="sin(x: float64): float64">sin(x: float64): float64</a></li>
  314. </ul>
  315. <ul class="simple nested-toc-section">sinh
  316. <li><a class="reference" href="#sinh%2Cfloat32" title="sinh(x: float32): float32">sinh(x: float32): float32</a></li>
  317. <li><a class="reference" href="#sinh%2Cfloat64" title="sinh(x: float64): float64">sinh(x: float64): float64</a></li>
  318. </ul>
  319. <ul class="simple nested-toc-section">splitDecimal
  320. <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>
  321. </ul>
  322. <ul class="simple nested-toc-section">sqrt
  323. <li><a class="reference" href="#sqrt%2Cfloat32" title="sqrt(x: float32): float32">sqrt(x: float32): float32</a></li>
  324. <li><a class="reference" href="#sqrt%2Cfloat64" title="sqrt(x: float64): float64">sqrt(x: float64): float64</a></li>
  325. </ul>
  326. <ul class="simple nested-toc-section">sum
  327. <li><a class="reference" href="#sum%2CopenArray%5BT%5D" title="sum[T](x: openArray[T]): T">sum[T](x: openArray[T]): T</a></li>
  328. </ul>
  329. <ul class="simple nested-toc-section">tan
  330. <li><a class="reference" href="#tan%2Cfloat32" title="tan(x: float32): float32">tan(x: float32): float32</a></li>
  331. <li><a class="reference" href="#tan%2Cfloat64" title="tan(x: float64): float64">tan(x: float64): float64</a></li>
  332. </ul>
  333. <ul class="simple nested-toc-section">tanh
  334. <li><a class="reference" href="#tanh%2Cfloat32" title="tanh(x: float32): float32">tanh(x: float32): float32</a></li>
  335. <li><a class="reference" href="#tanh%2Cfloat64" title="tanh(x: float64): float64">tanh(x: float64): float64</a></li>
  336. </ul>
  337. <ul class="simple nested-toc-section">trunc
  338. <li><a class="reference" href="#trunc%2Cfloat32" title="trunc(x: float32): float32">trunc(x: float32): float32</a></li>
  339. <li><a class="reference" href="#trunc%2Cfloat64" title="trunc(x: float64): float64">trunc(x: float64): float64</a></li>
  340. </ul>
  341. </ul>
  342. </details>
  343. </li>
  344. </ul>
  345. </div>
  346. <div class="nine columns" id="content">
  347. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  348. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  349. <div id="tocRoot"></div>
  350. <p class="module-desc"><p><em>Constructive mathematics is naturally typed.</em> -- Simon Thompson</p>
  351. <p>Basic math routines for Nim.</p>
  352. <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>
  353. <p><strong class="examples_text">Example:</strong></p>
  354. <pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">math</span>
  355. <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>
  356. <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>
  357. <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>
  358. <span class="Comment"># Generates values from a normal distribution.</span>
  359. <span class="Comment"># Translated from https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform#Implementation.</span>
  360. <span class="Keyword">var</span> <span class="Identifier">u1</span><span class="Punctuation">:</span> <span class="Identifier">float</span>
  361. <span class="Keyword">var</span> <span class="Identifier">u2</span><span class="Punctuation">:</span> <span class="Identifier">float</span>
  362. <span class="Keyword">while</span> <span class="Identifier">true</span><span class="Punctuation">:</span>
  363. <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>
  364. <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>
  365. <span class="Keyword">if</span> <span class="Identifier">u1</span> <span class="Operator">&gt;</span> <span class="Identifier">epsilon</span><span class="Punctuation">(</span><span class="Identifier">float</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Keyword">break</span>
  366. <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>
  367. <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>
  368. <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>
  369. <span class="Punctuation">(</span><span class="Identifier">z0</span><span class="Punctuation">,</span> <span class="Identifier">z1</span><span class="Punctuation">)</span>
  370. <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>.
  371. <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>
  372. <li><a class="reference external" href="rationals.html">rationals module</a> for rational numbers and their mathematical operations</li>
  373. <li><a class="reference external" href="fenv.html">fenv module</a> for handling of floating-point rounding and exceptions (overflow, zero-divide, etc.)</li>
  374. <li><a class="reference external" href="random.html">random module</a> for a fast and tiny random number generator</li>
  375. <li><a class="reference external" href="stats.html">stats module</a> for statistical analysis</li>
  376. <li><a class="reference external" href="strformat.html">strformat module</a> for formatting floats for printing</li>
  377. <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>
  378. </ul>
  379. this func uses bitwise comparisons from C compilers, which are not always available.</p>
  380. <div class="section" id="6">
  381. <h1><a class="toc-backref" href="#6">Imports</a></h1>
  382. <dl class="item">
  383. <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>
  384. </dl>
  385. </div>
  386. <div class="section" id="7">
  387. <h1><a class="toc-backref" href="#7">Types</a></h1>
  388. <dl class="item">
  389. <div id="FloatClass">
  390. <dt><pre><a href="math.html#FloatClass"><span class="Identifier">FloatClass</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
  391. <span class="Identifier">fcNormal</span><span class="Other">,</span> <span class="Comment">## value is an ordinary nonzero floating point value</span>
  392. <span class="Identifier">fcSubnormal</span><span class="Other">,</span> <span class="Comment">## value is a subnormal (a very small) floating point value</span>
  393. <span class="Identifier">fcZero</span><span class="Other">,</span> <span class="Comment">## value is zero</span>
  394. <span class="Identifier">fcNegZero</span><span class="Other">,</span> <span class="Comment">## value is the negative zero</span>
  395. <span class="Identifier">fcNan</span><span class="Other">,</span> <span class="Comment">## value is Not a Number (NaN)</span>
  396. <span class="Identifier">fcInf</span><span class="Other">,</span> <span class="Comment">## value is positive infinity</span>
  397. <span class="Identifier">fcNegInf</span> <span class="Comment">## value is negative infinity</span></pre></dt>
  398. <dd>
  399. 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>.
  400. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L182" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  401. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L182" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  402. </dd>
  403. </div>
  404. </dl>
  405. </div>
  406. <div class="section" id="10">
  407. <h1><a class="toc-backref" href="#10">Consts</a></h1>
  408. <dl class="item">
  409. <div id="E">
  410. <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>
  411. <dd>
  412. Euler's number.
  413. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L165" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  414. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L165" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  415. </dd>
  416. </div>
  417. <div id="MaxFloat32Precision">
  418. <dt><pre><a href="math.html#MaxFloat32Precision"><span class="Identifier">MaxFloat32Precision</span></a> <span class="Other">=</span> <span class="DecNumber">8</span></pre></dt>
  419. <dd>
  420. 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.
  421. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L170" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  422. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L170" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  423. </dd>
  424. </div>
  425. <div id="MaxFloat64Precision">
  426. <dt><pre><a href="math.html#MaxFloat64Precision"><span class="Identifier">MaxFloat64Precision</span></a> <span class="Other">=</span> <span class="DecNumber">16</span></pre></dt>
  427. <dd>
  428. 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.
  429. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L167" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  430. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L167" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  431. </dd>
  432. </div>
  433. <div id="MaxFloatPrecision">
  434. <dt><pre><a href="math.html#MaxFloatPrecision"><span class="Identifier">MaxFloatPrecision</span></a> <span class="Other">=</span> <span class="DecNumber">16</span></pre></dt>
  435. <dd>
  436. 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.
  437. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L173" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  438. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L173" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  439. </dd>
  440. </div>
  441. <div id="MinFloatNormal">
  442. <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>
  443. <dd>
  444. Smallest normal number for Nim's <tt class="docutils literal"><span class="pre"><span class="Identifier">float</span></span></tt> type (= 2^-1022).
  445. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L177" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  446. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L177" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  447. </dd>
  448. </div>
  449. <div id="PI">
  450. <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>
  451. <dd>
  452. The circle constant PI (Ludolph's number).
  453. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L163" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  454. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L163" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  455. </dd>
  456. </div>
  457. <div id="TAU">
  458. <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>
  459. <dd>
  460. The circle constant TAU (= 2 * PI).
  461. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L164" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  462. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L164" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  463. </dd>
  464. </div>
  465. </dl>
  466. </div>
  467. <div class="section" id="12">
  468. <h1><a class="toc-backref" href="#12">Procs</a></h1>
  469. <dl class="item">
  470. <div id="^-procs-all">
  471. <div id="^,T,U">
  472. <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>
  473. <dd>
  474. <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>
  475. <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>
  476. <p><strong>See also:</strong></p>
  477. <ul class="simple"><li><a class="reference external" href="#^,T,Natural">^ func</a></li>
  478. <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>
  479. <li><a class="reference external" href="#sqrt,float64">sqrt func</a></li>
  480. <li><a class="reference external" href="#cbrt,float64">cbrt func</a></li>
  481. </ul>
  482. <p><strong class="examples_text">Example:</strong></p>
  483. <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>
  484. <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>
  485. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1248" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  486. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1248" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  487. </dd>
  488. </div>
  489. <div id="^,T,Natural">
  490. <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>
  491. <dd>
  492. <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>
  493. <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>
  494. <p><strong>See also:</strong></p>
  495. <ul class="simple"><li><a class="reference external" href="#^,T,U">^ func</a> for negative exponent or floats</li>
  496. <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>
  497. <li><a class="reference external" href="#sqrt,float64">sqrt func</a></li>
  498. <li><a class="reference external" href="#cbrt,float64">cbrt func</a></li>
  499. </ul>
  500. <p><strong class="examples_text">Example:</strong></p>
  501. <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>
  502. <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>
  503. <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>
  504. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1212" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  505. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1212" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  506. </dd>
  507. </div>
  508. </div>
  509. <div id="almostEqual-procs-all">
  510. <div id="almostEqual,T,T,Natural">
  511. <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> {.
  512. <span class="Identifier">inline</span>.}</pre></dt>
  513. <dd>
  514. <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>
  515. <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>
  516. <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>
  517. <p><strong class="examples_text">Example:</strong></p>
  518. <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>
  519. <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>
  520. <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>
  521. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L295" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  522. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L295" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  523. </dd>
  524. </div>
  525. </div>
  526. <div id="arccos-procs-all">
  527. <div id="arccos,float32">
  528. <dt><pre><span class="Keyword">func</span> <a href="#arccos%2Cfloat32"><span class="Identifier">arccos</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;acosf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  529. <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>
  530. <dd>
  531. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L513" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  532. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L513" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  533. </dd>
  534. </div>
  535. <div id="arccos,float64">
  536. <dt><pre><span class="Keyword">func</span> <a href="#arccos%2Cfloat64"><span class="Identifier">arccos</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;acos&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  537. <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>
  538. <dd>
  539. <p>Computes the arc cosine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  540. <p><strong>See also:</strong></p>
  541. <ul class="simple"><li><a class="reference external" href="#cos,float64">cos func</a></li>
  542. </ul>
  543. <p><strong class="examples_text">Example:</strong></p>
  544. <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>
  545. <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>
  546. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L514" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  547. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L514" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  548. </dd>
  549. </div>
  550. </div>
  551. <div id="arccosh-procs-all">
  552. <div id="arccosh,float32">
  553. <dt><pre><span class="Keyword">func</span> <a href="#arccosh%2Cfloat32"><span class="Identifier">arccosh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;acoshf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  554. <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>
  555. <dd>
  556. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L550" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  557. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L550" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  558. </dd>
  559. </div>
  560. <div id="arccosh,float64">
  561. <dt><pre><span class="Keyword">func</span> <a href="#arccosh%2Cfloat64"><span class="Identifier">arccosh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;acosh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  562. <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>
  563. <dd>
  564. <p>Computes the inverse hyperbolic cosine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  565. <p><strong>See also:</strong></p>
  566. <ul class="simple"><li><a class="reference external" href="#cosh,float64">cosh func</a></li>
  567. </ul>
  568. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L551" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  569. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L551" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  570. </dd>
  571. </div>
  572. </div>
  573. <div id="arccot-procs-all">
  574. <div id="arccot,T">
  575. <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>
  576. <dd>
  577. 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>).
  578. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L604" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  579. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L604" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  580. </dd>
  581. </div>
  582. </div>
  583. <div id="arccoth-procs-all">
  584. <div id="arccoth,T">
  585. <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>
  586. <dd>
  587. 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>).
  588. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L611" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  589. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L611" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  590. </dd>
  591. </div>
  592. </div>
  593. <div id="arccsc-procs-all">
  594. <div id="arccsc,T">
  595. <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>
  596. <dd>
  597. 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>).
  598. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L608" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  599. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L608" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  600. </dd>
  601. </div>
  602. </div>
  603. <div id="arccsch-procs-all">
  604. <div id="arccsch,T">
  605. <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>
  606. <dd>
  607. 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>).
  608. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L615" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  609. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L615" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  610. </dd>
  611. </div>
  612. </div>
  613. <div id="arcsec-procs-all">
  614. <div id="arcsec,T">
  615. <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>
  616. <dd>
  617. 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>).
  618. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L606" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  619. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L606" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  620. </dd>
  621. </div>
  622. </div>
  623. <div id="arcsech-procs-all">
  624. <div id="arcsech,T">
  625. <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>
  626. <dd>
  627. 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>).
  628. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L613" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  629. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L613" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  630. </dd>
  631. </div>
  632. </div>
  633. <div id="arcsin-procs-all">
  634. <div id="arcsin,float32">
  635. <dt><pre><span class="Keyword">func</span> <a href="#arcsin%2Cfloat32"><span class="Identifier">arcsin</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;asinf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  636. <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>
  637. <dd>
  638. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L504" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  639. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L504" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  640. </dd>
  641. </div>
  642. <div id="arcsin,float64">
  643. <dt><pre><span class="Keyword">func</span> <a href="#arcsin%2Cfloat64"><span class="Identifier">arcsin</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;asin&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  644. <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>
  645. <dd>
  646. <p>Computes the arc sine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  647. <p><strong>See also:</strong></p>
  648. <ul class="simple"><li><a class="reference external" href="#sin,float64">sin func</a></li>
  649. </ul>
  650. <p><strong class="examples_text">Example:</strong></p>
  651. <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>
  652. <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>
  653. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L505" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  654. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L505" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  655. </dd>
  656. </div>
  657. </div>
  658. <div id="arcsinh-procs-all">
  659. <div id="arcsinh,float32">
  660. <dt><pre><span class="Keyword">func</span> <a href="#arcsinh%2Cfloat32"><span class="Identifier">arcsinh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;asinhf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  661. <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>
  662. <dd>
  663. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L544" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  664. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L544" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  665. </dd>
  666. </div>
  667. <div id="arcsinh,float64">
  668. <dt><pre><span class="Keyword">func</span> <a href="#arcsinh%2Cfloat64"><span class="Identifier">arcsinh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;asinh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  669. <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>
  670. <dd>
  671. <p>Computes the inverse hyperbolic sine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  672. <p><strong>See also:</strong></p>
  673. <ul class="simple"><li><a class="reference external" href="#sinh,float64">sinh func</a></li>
  674. </ul>
  675. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L545" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  676. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L545" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  677. </dd>
  678. </div>
  679. </div>
  680. <div id="arctan-procs-all">
  681. <div id="arctan,float32">
  682. <dt><pre><span class="Keyword">func</span> <a href="#arctan%2Cfloat32"><span class="Identifier">arctan</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atanf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  683. <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>
  684. <dd>
  685. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L522" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  686. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L522" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  687. </dd>
  688. </div>
  689. <div id="arctan,float64">
  690. <dt><pre><span class="Keyword">func</span> <a href="#arctan%2Cfloat64"><span class="Identifier">arctan</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atan&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  691. <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>
  692. <dd>
  693. <p>Calculate the arc tangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  694. <p><strong>See also:</strong></p>
  695. <ul class="simple"><li><a class="reference external" href="#arctan2,float64,float64">arctan2 func</a></li>
  696. <li><a class="reference external" href="#tan,float64">tan func</a></li>
  697. </ul>
  698. <p><strong class="examples_text">Example:</strong></p>
  699. <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>
  700. <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>
  701. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L523" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  702. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L523" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  703. </dd>
  704. </div>
  705. </div>
  706. <div id="arctan2-procs-all">
  707. <div id="arctan2,float32,float32">
  708. <dt><pre><span class="Keyword">func</span> <a href="#arctan2%2Cfloat32%2Cfloat32"><span class="Identifier">arctan2</span></a><span class="Other">(</span><span class="Identifier">y</span><span class="Other">,</span> <span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atan2f&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  709. <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>
  710. <dd>
  711. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L532" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  712. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L532" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  713. </dd>
  714. </div>
  715. <div id="arctan2,float64,float64">
  716. <dt><pre><span class="Keyword">func</span> <a href="#arctan2%2Cfloat64%2Cfloat64"><span class="Identifier">arctan2</span></a><span class="Other">(</span><span class="Identifier">y</span><span class="Other">,</span> <span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atan2&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  717. <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>
  718. <dd>
  719. <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>
  720. <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>
  721. <p><strong>See also:</strong></p>
  722. <ul class="simple"><li><a class="reference external" href="#arctan,float64">arctan func</a></li>
  723. </ul>
  724. <p><strong class="examples_text">Example:</strong></p>
  725. <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>
  726. <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>
  727. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L533" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  728. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L533" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  729. </dd>
  730. </div>
  731. </div>
  732. <div id="arctanh-procs-all">
  733. <div id="arctanh,float32">
  734. <dt><pre><span class="Keyword">func</span> <a href="#arctanh%2Cfloat32"><span class="Identifier">arctanh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atanhf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  735. <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>
  736. <dd>
  737. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L556" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  738. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L556" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  739. </dd>
  740. </div>
  741. <div id="arctanh,float64">
  742. <dt><pre><span class="Keyword">func</span> <a href="#arctanh%2Cfloat64"><span class="Identifier">arctanh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atanh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  743. <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>
  744. <dd>
  745. <p>Computes the inverse hyperbolic tangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  746. <p><strong>See also:</strong></p>
  747. <ul class="simple"><li><a class="reference external" href="#tanh,float64">tanh func</a></li>
  748. </ul>
  749. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L557" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  750. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L557" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  751. </dd>
  752. </div>
  753. </div>
  754. <div id="binom-procs-all">
  755. <div id="binom,int,int">
  756. <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>
  757. <dd>
  758. Computes the <a class="reference external" href="https://en.wikipedia.org/wiki/Binomial_coefficient">binomial coefficient</a>.
  759. <p><strong class="examples_text">Example:</strong></p>
  760. <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>
  761. <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>
  762. <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>
  763. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L117" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  764. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L117" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  765. </dd>
  766. </div>
  767. </div>
  768. <div id="cbrt-procs-all">
  769. <div id="cbrt,float32">
  770. <dt><pre><span class="Keyword">func</span> <a href="#cbrt%2Cfloat32"><span class="Identifier">cbrt</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cbrtf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  771. <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>
  772. <dd>
  773. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L377" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  774. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L377" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  775. </dd>
  776. </div>
  777. <div id="cbrt,float64">
  778. <dt><pre><span class="Keyword">func</span> <a href="#cbrt%2Cfloat64"><span class="Identifier">cbrt</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cbrt&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  779. <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>
  780. <dd>
  781. <p>Computes the cube root of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  782. <p><strong>See also:</strong></p>
  783. <ul class="simple"><li><a class="reference external" href="#sqrt,float64">sqrt func</a> for the square root</li>
  784. </ul>
  785. <p><strong class="examples_text">Example:</strong></p>
  786. <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>
  787. <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>
  788. <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>
  789. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L378" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  790. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L378" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  791. </dd>
  792. </div>
  793. </div>
  794. <div id="ceil-procs-all">
  795. <div id="ceil,float32">
  796. <dt><pre><span class="Keyword">func</span> <a href="#ceil%2Cfloat32"><span class="Identifier">ceil</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;ceilf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  797. <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>
  798. <dd>
  799. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L688" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  800. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L688" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  801. </dd>
  802. </div>
  803. <div id="ceil,float64">
  804. <dt><pre><span class="Keyword">func</span> <a href="#ceil%2Cfloat64"><span class="Identifier">ceil</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;ceil&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  805. <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>
  806. <dd>
  807. <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>
  808. <p><strong>See also:</strong></p>
  809. <ul class="simple"><li><a class="reference external" href="#floor,float64">floor func</a></li>
  810. <li><a class="reference external" href="#round,float64">round func</a></li>
  811. <li><a class="reference external" href="#trunc,float64">trunc func</a></li>
  812. </ul>
  813. <p><strong class="examples_text">Example:</strong></p>
  814. <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>
  815. <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>
  816. <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>
  817. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L689" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  818. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L689" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  819. </dd>
  820. </div>
  821. </div>
  822. <div id="ceilDiv-procs-all">
  823. <div id="ceilDiv,T,T">
  824. <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>
  825. <dd>
  826. <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>
  827. <p>Assumes <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span> <span class="Operator">&gt;=</span> <span class="DecNumber">0</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">y</span> <span class="Operator">&gt;</span> <span class="DecNumber">0</span></span></tt> (and <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span> <span class="Operator">+</span> <span class="Identifier">y</span> <span class="Operator">-</span> <span class="DecNumber">1</span> <span class="Operator">&lt;=</span> <span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">T</span><span class="Punctuation">)</span></span></tt> if T is SomeUnsignedInt).</p>
  828. <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>
  829. <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>
  830. <p><strong>See also:</strong></p>
  831. <ul class="simple"><li><a class="reference external" href="system.html#div,int,int">system.div proc</a> for integer division</li>
  832. <li><a class="reference external" href="#floorDiv,T,T">floorDiv func</a> for integer division which rounds down.</li>
  833. </ul>
  834. <p><strong class="examples_text">Example:</strong></p>
  835. <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>
  836. <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>
  837. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L925" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  838. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L925" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  839. </dd>
  840. </div>
  841. </div>
  842. <div id="clamp-procs-all">
  843. <div id="clamp,T,Slice[T]">
  844. <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>
  845. <dd>
  846. 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.
  847. <p><strong class="examples_text">Example:</strong></p>
  848. <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>
  849. <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>
  850. <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>
  851. <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>
  852. <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>
  853. <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>
  854. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1364" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  855. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1364" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  856. </dd>
  857. </div>
  858. </div>
  859. <div id="classify-procs-all">
  860. <div id="classify,float">
  861. <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>
  862. <dd>
  863. <p>Classifies a floating point value.</p>
  864. <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>
  865. <p><strong class="examples_text">Example:</strong></p>
  866. <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>
  867. <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>
  868. <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>
  869. <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>
  870. <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>
  871. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L270" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  872. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L270" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  873. </dd>
  874. </div>
  875. </div>
  876. <div id="copySign-procs-all">
  877. <div id="copySign,T,T">
  878. <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>
  879. <dd>
  880. 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.
  881. <p><strong class="examples_text">Example:</strong></p>
  882. <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>
  883. <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>
  884. <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>
  885. <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>
  886. <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>
  887. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L245" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  888. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L245" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  889. </dd>
  890. </div>
  891. </div>
  892. <div id="cos-procs-all">
  893. <div id="cos,float32">
  894. <dt><pre><span class="Keyword">func</span> <a href="#cos%2Cfloat32"><span class="Identifier">cos</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cosf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  895. <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>
  896. <dd>
  897. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L459" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  898. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L459" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  899. </dd>
  900. </div>
  901. <div id="cos,float64">
  902. <dt><pre><span class="Keyword">func</span> <a href="#cos%2Cfloat64"><span class="Identifier">cos</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cos&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  903. <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>
  904. <dd>
  905. <p>Computes the cosine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  906. <p><strong>See also:</strong></p>
  907. <ul class="simple"><li><a class="reference external" href="#arccos,float64">arccos func</a></li>
  908. </ul>
  909. <p><strong class="examples_text">Example:</strong></p>
  910. <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>
  911. <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>
  912. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L460" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  913. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L460" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  914. </dd>
  915. </div>
  916. </div>
  917. <div id="cosh-procs-all">
  918. <div id="cosh,float32">
  919. <dt><pre><span class="Keyword">func</span> <a href="#cosh%2Cfloat32"><span class="Identifier">cosh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;coshf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  920. <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>
  921. <dd>
  922. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L486" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  923. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L486" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  924. </dd>
  925. </div>
  926. <div id="cosh,float64">
  927. <dt><pre><span class="Keyword">func</span> <a href="#cosh%2Cfloat64"><span class="Identifier">cosh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;cosh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  928. <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>
  929. <dd>
  930. <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>
  931. <p><strong>See also:</strong></p>
  932. <ul class="simple"><li><a class="reference external" href="#arccosh,float64">arccosh func</a></li>
  933. </ul>
  934. <p><strong class="examples_text">Example:</strong></p>
  935. <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>
  936. <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>
  937. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L487" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  938. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L487" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  939. </dd>
  940. </div>
  941. </div>
  942. <div id="cot-procs-all">
  943. <div id="cot,T">
  944. <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>
  945. <dd>
  946. 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>).
  947. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L590" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  948. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L590" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  949. </dd>
  950. </div>
  951. </div>
  952. <div id="coth-procs-all">
  953. <div id="coth,T">
  954. <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>
  955. <dd>
  956. 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>).
  957. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L597" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  958. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L597" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  959. </dd>
  960. </div>
  961. </div>
  962. <div id="csc-procs-all">
  963. <div id="csc,T">
  964. <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>
  965. <dd>
  966. 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>).
  967. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L594" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  968. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L594" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  969. </dd>
  970. </div>
  971. </div>
  972. <div id="csch-procs-all">
  973. <div id="csch,T">
  974. <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>
  975. <dd>
  976. 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>).
  977. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L601" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  978. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L601" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  979. </dd>
  980. </div>
  981. </div>
  982. <div id="cumprod-procs-all">
  983. <div id="cumprod,openArray[T]">
  984. <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>
  985. <dd>
  986. <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>
  987. <p>See also:</p>
  988. <ul class="simple"><li><a class="reference external" href="#sum,openArray[T]">prod proc</a></li>
  989. <li><a class="reference external" href="#cumproded,openArray[T]">cumproded proc</a> for a version which returns cumproded sequence</li>
  990. </ul>
  991. <p><strong class="examples_text">Example:</strong></p>
  992. <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>
  993. <span class="Identifier">cumprod</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">)</span>
  994. <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>
  995. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1148" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  996. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1148" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  997. </dd>
  998. </div>
  999. </div>
  1000. <div id="cumproded-procs-all">
  1001. <div id="cumproded,openArray[T]">
  1002. <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>
  1003. <dd>
  1004. <p>Return cumulative (aka prefix) product of <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
  1005. <p>See also:</p>
  1006. <ul class="simple"><li><a class="reference external" href="#prod,openArray[T]">prod proc</a></li>
  1007. <li><a class="reference external" href="#cumprod,openArray[T]">cumprod proc</a> for the in-place version</li>
  1008. </ul>
  1009. <p><strong class="examples_text">Example:</strong></p>
  1010. <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>
  1011. <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>
  1012. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1162" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1013. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1162" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1014. </dd>
  1015. </div>
  1016. </div>
  1017. <div id="cumsum-procs-all">
  1018. <div id="cumsum,openArray[T]">
  1019. <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>
  1020. <dd>
  1021. <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>
  1022. <p><strong>See also:</strong></p>
  1023. <ul class="simple"><li><a class="reference external" href="#sum,openArray[T]">sum func</a></li>
  1024. <li><a class="reference external" href="#cumsummed,openArray[T]">cumsummed func</a> for a version which returns a cumsummed sequence</li>
  1025. </ul>
  1026. <p><strong class="examples_text">Example:</strong></p>
  1027. <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>
  1028. <span class="Identifier">cumsum</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">)</span>
  1029. <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>
  1030. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1197" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1031. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1197" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1032. </dd>
  1033. </div>
  1034. </div>
  1035. <div id="cumsummed-procs-all">
  1036. <div id="cumsummed,openArray[T]">
  1037. <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>
  1038. <dd>
  1039. <p>Returns the cumulative (aka prefix) summation of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  1040. <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>
  1041. <p><strong>See also:</strong></p>
  1042. <ul class="simple"><li><a class="reference external" href="#sum,openArray[T]">sum func</a></li>
  1043. <li><a class="reference external" href="#cumsum,openArray[T]">cumsum func</a> for the in-place version</li>
  1044. </ul>
  1045. <p><strong class="examples_text">Example:</strong></p>
  1046. <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>
  1047. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1179" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1048. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1179" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1049. </dd>
  1050. </div>
  1051. </div>
  1052. <div id="degToRad-procs-all">
  1053. <div id="degToRad,T">
  1054. <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>
  1055. <dd>
  1056. <p>Converts from degrees to radians.</p>
  1057. <p><strong>See also:</strong></p>
  1058. <ul class="simple"><li><a class="reference external" href="#radToDeg,T">radToDeg func</a></li>
  1059. </ul>
  1060. <p><strong class="examples_text">Example:</strong></p>
  1061. <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>
  1062. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1081" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1063. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1081" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1064. </dd>
  1065. </div>
  1066. </div>
  1067. <div id="divmod-procs-all">
  1068. <div id="divmod,T,T">
  1069. <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>
  1070. <dd>
  1071. Specialized instructions for computing both division and modulus. Return structure is: (quotient, remainder)
  1072. <p><strong class="examples_text">Example:</strong></p>
  1073. <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>
  1074. <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>
  1075. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L98" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1076. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L98" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1077. </dd>
  1078. </div>
  1079. </div>
  1080. <div id="erf-procs-all">
  1081. <div id="erf,float32">
  1082. <dt><pre><span class="Keyword">func</span> <a href="#erf%2Cfloat32"><span class="Identifier">erf</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;erff&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1083. <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>
  1084. <dd>
  1085. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L644" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1086. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L644" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1087. </dd>
  1088. </div>
  1089. <div id="erf,float64">
  1090. <dt><pre><span class="Keyword">func</span> <a href="#erf%2Cfloat64"><span class="Identifier">erf</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;erf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1091. <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>
  1092. <dd>
  1093. <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>
  1094. <p><strong>Note:</strong> Not available for the JS backend.</p>
  1095. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L645" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1096. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L645" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1097. </dd>
  1098. </div>
  1099. </div>
  1100. <div id="erfc-procs-all">
  1101. <div id="erfc,float32">
  1102. <dt><pre><span class="Keyword">func</span> <a href="#erfc%2Cfloat32"><span class="Identifier">erfc</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;erfcf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1103. <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>
  1104. <dd>
  1105. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L649" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1106. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L649" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1107. </dd>
  1108. </div>
  1109. <div id="erfc,float64">
  1110. <dt><pre><span class="Keyword">func</span> <a href="#erfc%2Cfloat64"><span class="Identifier">erfc</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;erfc&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1111. <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>
  1112. <dd>
  1113. <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>
  1114. <p><strong>Note:</strong> Not available for the JS backend.</p>
  1115. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L650" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1116. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L650" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1117. </dd>
  1118. </div>
  1119. </div>
  1120. <div id="euclDiv-procs-all">
  1121. <div id="euclDiv,T,T">
  1122. <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>
  1123. <dd>
  1124. 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>.
  1125. <p><strong class="examples_text">Example:</strong></p>
  1126. <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>
  1127. <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>
  1128. <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>
  1129. <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>
  1130. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L897" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1131. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L897" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1132. </dd>
  1133. </div>
  1134. </div>
  1135. <div id="euclMod-procs-all">
  1136. <div id="euclMod,T,T">
  1137. <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>
  1138. <dd>
  1139. 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.
  1140. <p><strong class="examples_text">Example:</strong></p>
  1141. <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>
  1142. <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>
  1143. <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>
  1144. <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>
  1145. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L912" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1146. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L912" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1147. </dd>
  1148. </div>
  1149. </div>
  1150. <div id="exp-procs-all">
  1151. <div id="exp,float32">
  1152. <dt><pre><span class="Keyword">func</span> <a href="#exp%2Cfloat32"><span class="Identifier">exp</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;expf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1153. <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>
  1154. <dd>
  1155. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L440" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1156. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L440" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1157. </dd>
  1158. </div>
  1159. <div id="exp,float64">
  1160. <dt><pre><span class="Keyword">func</span> <a href="#exp%2Cfloat64"><span class="Identifier">exp</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;exp&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1161. <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>
  1162. <dd>
  1163. <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>
  1164. <p><strong>See also:</strong></p>
  1165. <ul class="simple"><li><a class="reference external" href="#ln,float64">ln func</a></li>
  1166. </ul>
  1167. <p><strong class="examples_text">Example:</strong></p>
  1168. <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>
  1169. <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>
  1170. <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>
  1171. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L441" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1172. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L441" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1173. </dd>
  1174. </div>
  1175. </div>
  1176. <div id="fac-procs-all">
  1177. <div id="fac,int">
  1178. <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>
  1179. <dd>
  1180. <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>
  1181. <p><strong>See also:</strong></p>
  1182. <ul class="simple"><li><a class="reference external" href="#prod,openArray[T]">prod func</a></li>
  1183. </ul>
  1184. <p><strong class="examples_text">Example:</strong></p>
  1185. <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>
  1186. <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>
  1187. <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>
  1188. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L135" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1189. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L135" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1190. </dd>
  1191. </div>
  1192. </div>
  1193. <div id="floor-procs-all">
  1194. <div id="floor,float32">
  1195. <dt><pre><span class="Keyword">func</span> <a href="#floor%2Cfloat32"><span class="Identifier">floor</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;floorf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1196. <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>
  1197. <dd>
  1198. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L675" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1199. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L675" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1200. </dd>
  1201. </div>
  1202. <div id="floor,float64">
  1203. <dt><pre><span class="Keyword">func</span> <a href="#floor%2Cfloat64"><span class="Identifier">floor</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;floor&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1204. <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>
  1205. <dd>
  1206. <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>
  1207. <p><strong>See also:</strong></p>
  1208. <ul class="simple"><li><a class="reference external" href="#ceil,float64">ceil func</a></li>
  1209. <li><a class="reference external" href="#round,float64">round func</a></li>
  1210. <li><a class="reference external" href="#trunc,float64">trunc func</a></li>
  1211. </ul>
  1212. <p><strong class="examples_text">Example:</strong></p>
  1213. <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>
  1214. <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>
  1215. <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>
  1216. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L676" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1217. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L676" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1218. </dd>
  1219. </div>
  1220. </div>
  1221. <div id="floorDiv-procs-all">
  1222. <div id="floorDiv,T,T">
  1223. <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>
  1224. <dd>
  1225. <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>
  1226. <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>
  1227. <p><strong>See also:</strong></p>
  1228. <ul class="simple"><li><a class="reference external" href="system.html#div,int,int">system.div proc</a> for integer division</li>
  1229. <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>
  1230. </ul>
  1231. <p><strong class="examples_text">Example:</strong></p>
  1232. <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>
  1233. <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>
  1234. <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>
  1235. <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>
  1236. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L860" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1237. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L860" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1238. </dd>
  1239. </div>
  1240. </div>
  1241. <div id="floorMod-procs-all">
  1242. <div id="floorMod,T,T">
  1243. <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>
  1244. <dd>
  1245. <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>
  1246. <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>
  1247. <p><strong>See also:</strong></p>
  1248. <ul class="simple"><li><a class="reference external" href="#mod,float64,float64">mod func</a></li>
  1249. <li><a class="reference external" href="#floorDiv,T,T">floorDiv func</a></li>
  1250. </ul>
  1251. <p><strong class="examples_text">Example:</strong></p>
  1252. <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>
  1253. <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>
  1254. <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>
  1255. <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>
  1256. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L880" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1257. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L880" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1258. </dd>
  1259. </div>
  1260. </div>
  1261. <div id="frexp-procs-all">
  1262. <div id="frexp,T">
  1263. <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>
  1264. <dd>
  1265. Splits <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> into a normalized fraction <tt class="docutils literal"><span class="pre"><span class="Identifier">frac</span></span></tt> and an integral power of 2 <tt class="docutils literal"><span class="pre"><span class="Identifier">exp</span></span></tt>, such that <tt class="docutils literal"><span class="pre"><span class="Identifier">abs</span><span class="Punctuation">(</span><span class="Identifier">frac</span><span class="Punctuation">)</span> <span class="Keyword">in</span> <span class="FloatNumber">0.5</span><span class="Operator">..&lt;</span><span class="DecNumber">1</span></span></tt> and <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span> <span class="Operator">==</span> <span class="Identifier">frac</span> <span class="Operator">*</span> <span class="DecNumber">2</span> <span class="Operator">^</span> <span class="Identifier">exp</span></span></tt>, except for special cases shown below.
  1266. <p><strong class="examples_text">Example:</strong></p>
  1267. <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>
  1268. <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>
  1269. <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>
  1270. <span class="Comment"># special cases:</span>
  1271. <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>
  1272. <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>
  1273. <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>
  1274. <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>
  1275. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L977" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1276. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L977" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1277. </dd>
  1278. </div>
  1279. <div id="frexp,T,int">
  1280. <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>
  1281. <dd>
  1282. 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>.
  1283. <p><strong class="examples_text">Example:</strong></p>
  1284. <pre class="listing"><span class="Keyword">var</span> <span class="Identifier">x</span><span class="Punctuation">:</span> <span class="Identifier">int</span>
  1285. <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>
  1286. <span class="Identifier">doAssert</span> <span class="Identifier">x</span> <span class="Operator">==</span> <span class="DecNumber">3</span></pre>
  1287. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1019" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1288. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1019" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1289. </dd>
  1290. </div>
  1291. </div>
  1292. <div id="gamma-procs-all">
  1293. <div id="gamma,float32">
  1294. <dt><pre><span class="Keyword">func</span> <a href="#gamma%2Cfloat32"><span class="Identifier">gamma</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tgammaf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1295. <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>
  1296. <dd>
  1297. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L654" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1298. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L654" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1299. </dd>
  1300. </div>
  1301. <div id="gamma,float64">
  1302. <dt><pre><span class="Keyword">func</span> <a href="#gamma%2Cfloat64"><span class="Identifier">gamma</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tgamma&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1303. <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>
  1304. <dd>
  1305. <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>
  1306. <p><strong>Note:</strong> Not available for the JS backend.</p>
  1307. <p><strong>See also:</strong></p>
  1308. <ul class="simple"><li><a class="reference external" href="#lgamma,float64">lgamma func</a> for the natural logarithm of the gamma function</li>
  1309. </ul>
  1310. <p><strong class="examples_text">Example:</strong></p>
  1311. <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>
  1312. <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>
  1313. <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>
  1314. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L655" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1315. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L655" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1316. </dd>
  1317. </div>
  1318. </div>
  1319. <div id="gcd-procs-all">
  1320. <div id="gcd,SomeInteger,SomeInteger">
  1321. <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>
  1322. <dd>
  1323. <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>
  1324. <p><strong>See also:</strong></p>
  1325. <ul class="simple"><li><a class="reference external" href="#gcd,T,T">gcd func</a> for a float version</li>
  1326. <li><a class="reference external" href="#lcm,T,T">lcm func</a></li>
  1327. </ul>
  1328. <p><strong class="examples_text">Example:</strong></p>
  1329. <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>
  1330. <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>
  1331. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1307" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1332. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1307" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1333. </dd>
  1334. </div>
  1335. <div id="gcd,T,T">
  1336. <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>
  1337. <dd>
  1338. <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>
  1339. <p>Note that for floats, the result cannot always be interpreted as &quot;greatest decimal <tt class="docutils literal"><span class="pre"><span class="Identifier">z</span></span></tt> such that <tt class="docutils literal"><span class="pre"><span class="Identifier">z</span><span class="Operator">*</span><span class="Identifier">N</span> <span class="Operator">==</span> <span class="Identifier">x</span> <span class="Keyword">and</span> <span class="Identifier">z</span><span class="Operator">*</span><span class="Identifier">M</span> <span class="Operator">==</span> <span class="Identifier">y</span></span></tt> where N and M are positive integers&quot;.</p>
  1340. <p><strong>See also:</strong></p>
  1341. <ul class="simple"><li><a class="reference external" href="#gcd,SomeInteger,SomeInteger">gcd func</a> for an integer version</li>
  1342. <li><a class="reference external" href="#lcm,T,T">lcm func</a></li>
  1343. </ul>
  1344. <p><strong class="examples_text">Example:</strong></p>
  1345. <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>
  1346. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1286" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1347. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1286" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1348. </dd>
  1349. </div>
  1350. <div id="gcd,openArray[T]">
  1351. <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>
  1352. <dd>
  1353. <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>
  1354. <p><strong>See also:</strong></p>
  1355. <ul class="simple"><li><a class="reference external" href="#gcd,T,T">gcd func</a> for a version with two arguments</li>
  1356. </ul>
  1357. <p><strong class="examples_text">Example:</strong></p>
  1358. <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>
  1359. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1341" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1360. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1341" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1361. </dd>
  1362. </div>
  1363. </div>
  1364. <div id="hypot-procs-all">
  1365. <div id="hypot,float32,float32">
  1366. <dt><pre><span class="Keyword">func</span> <a href="#hypot%2Cfloat32%2Cfloat32"><span class="Identifier">hypot</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;hypotf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1367. <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>
  1368. <dd>
  1369. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L621" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1370. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L621" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1371. </dd>
  1372. </div>
  1373. <div id="hypot,float64,float64">
  1374. <dt><pre><span class="Keyword">func</span> <a href="#hypot%2Cfloat64%2Cfloat64"><span class="Identifier">hypot</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;hypot&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1375. <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>
  1376. <dd>
  1377. 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>.
  1378. <p><strong class="examples_text">Example:</strong></p>
  1379. <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>
  1380. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L622" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1381. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L622" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1382. </dd>
  1383. </div>
  1384. </div>
  1385. <div id="isNaN-procs-all">
  1386. <div id="isNaN,SomeFloat">
  1387. <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>
  1388. <dd>
  1389. 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>.
  1390. <p><strong class="examples_text">Example:</strong></p>
  1391. <pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">NaN</span><span class="Operator">.</span><span class="Identifier">isNaN</span>
  1392. <span class="Identifier">doAssert</span> <span class="Keyword">not</span> <span class="Identifier">Inf</span><span class="Operator">.</span><span class="Identifier">isNaN</span>
  1393. <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>
  1394. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L193" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1395. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L193" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1396. </dd>
  1397. </div>
  1398. </div>
  1399. <div id="isPowerOfTwo-procs-all">
  1400. <div id="isPowerOfTwo,int">
  1401. <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>
  1402. <dd>
  1403. <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>
  1404. <p>Zero and negative numbers are not a power of two.</p>
  1405. <p><strong>See also:</strong></p>
  1406. <ul class="simple"><li><a class="reference external" href="#nextPowerOfTwo,int">nextPowerOfTwo func</a></li>
  1407. </ul>
  1408. <p><strong class="examples_text">Example:</strong></p>
  1409. <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>
  1410. <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>
  1411. <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>
  1412. <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>
  1413. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L324" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1414. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L324" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1415. </dd>
  1416. </div>
  1417. </div>
  1418. <div id="lcm-procs-all">
  1419. <div id="lcm,T,T">
  1420. <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>
  1421. <dd>
  1422. <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>
  1423. <p><strong>See also:</strong></p>
  1424. <ul class="simple"><li><a class="reference external" href="#gcd,T,T">gcd func</a></li>
  1425. </ul>
  1426. <p><strong class="examples_text">Example:</strong></p>
  1427. <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>
  1428. <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>
  1429. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1353" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1430. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1353" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1431. </dd>
  1432. </div>
  1433. <div id="lcm,openArray[T]">
  1434. <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>
  1435. <dd>
  1436. <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>
  1437. <p><strong>See also:</strong></p>
  1438. <ul class="simple"><li><a class="reference external" href="#lcm,T,T">lcm func</a> for a version with two arguments</li>
  1439. </ul>
  1440. <p><strong class="examples_text">Example:</strong></p>
  1441. <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>
  1442. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1376" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1443. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1376" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1444. </dd>
  1445. </div>
  1446. </div>
  1447. <div id="lgamma-procs-all">
  1448. <div id="lgamma,float32">
  1449. <dt><pre><span class="Keyword">func</span> <a href="#lgamma%2Cfloat32"><span class="Identifier">lgamma</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;lgammaf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1450. <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>
  1451. <dd>
  1452. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L666" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1453. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L666" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1454. </dd>
  1455. </div>
  1456. <div id="lgamma,float64">
  1457. <dt><pre><span class="Keyword">func</span> <a href="#lgamma%2Cfloat64"><span class="Identifier">lgamma</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;lgamma&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1458. <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>
  1459. <dd>
  1460. <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>
  1461. <p><strong>Note:</strong> Not available for the JS backend.</p>
  1462. <p><strong>See also:</strong></p>
  1463. <ul class="simple"><li><a class="reference external" href="#gamma,float64">gamma func</a> for gamma function</li>
  1464. </ul>
  1465. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L667" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1466. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L667" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1467. </dd>
  1468. </div>
  1469. </div>
  1470. <div id="ln-procs-all">
  1471. <div id="ln,float32">
  1472. <dt><pre><span class="Keyword">func</span> <a href="#ln%2Cfloat32"><span class="Identifier">ln</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;logf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1473. <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>
  1474. <dd>
  1475. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L387" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1476. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L387" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1477. </dd>
  1478. </div>
  1479. <div id="ln,float64">
  1480. <dt><pre><span class="Keyword">func</span> <a href="#ln%2Cfloat64"><span class="Identifier">ln</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1481. <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>
  1482. <dd>
  1483. <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>
  1484. <p><strong>See also:</strong></p>
  1485. <ul class="simple"><li><a class="reference external" href="#log,T,T">log func</a></li>
  1486. <li><a class="reference external" href="#log10,float64">log10 func</a></li>
  1487. <li><a class="reference external" href="#log2,float64">log2 func</a></li>
  1488. <li><a class="reference external" href="#exp,float64">exp func</a></li>
  1489. </ul>
  1490. <p><strong class="examples_text">Example:</strong></p>
  1491. <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>
  1492. <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>
  1493. <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>
  1494. <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>
  1495. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L388" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1496. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L388" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1497. </dd>
  1498. </div>
  1499. </div>
  1500. <div id="log-procs-all">
  1501. <div id="log,T,T">
  1502. <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>
  1503. <dd>
  1504. <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>
  1505. <p><strong>See also:</strong></p>
  1506. <ul class="simple"><li><a class="reference external" href="#ln,float64">ln func</a></li>
  1507. <li><a class="reference external" href="#log10,float64">log10 func</a></li>
  1508. <li><a class="reference external" href="#log2,float64">log2 func</a></li>
  1509. </ul>
  1510. <p><strong class="examples_text">Example:</strong></p>
  1511. <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>
  1512. <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>
  1513. <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>
  1514. <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>
  1515. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L412" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1516. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L412" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1517. </dd>
  1518. </div>
  1519. </div>
  1520. <div id="log2-procs-all">
  1521. <div id="log2,float32">
  1522. <dt><pre><span class="Keyword">func</span> <a href="#log2%2Cfloat32"><span class="Identifier">log2</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log2f&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1523. <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>
  1524. <dd>
  1525. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1047" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1526. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1047" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1527. </dd>
  1528. </div>
  1529. <div id="log2,float64">
  1530. <dt><pre><span class="Keyword">func</span> <a href="#log2%2Cfloat64"><span class="Identifier">log2</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log2&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1531. <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>
  1532. <dd>
  1533. <p>Computes the binary logarithm (base 2) of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  1534. <p><strong>See also:</strong></p>
  1535. <ul class="simple"><li><a class="reference external" href="#log,T,T">log func</a></li>
  1536. <li><a class="reference external" href="#log10,float64">log10 func</a></li>
  1537. <li><a class="reference external" href="#ln,float64">ln func</a></li>
  1538. </ul>
  1539. <p><strong class="examples_text">Example:</strong></p>
  1540. <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>
  1541. <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>
  1542. <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>
  1543. <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>
  1544. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1048" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1545. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1048" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1546. </dd>
  1547. </div>
  1548. </div>
  1549. <div id="log10-procs-all">
  1550. <div id="log10,float32">
  1551. <dt><pre><span class="Keyword">func</span> <a href="#log10%2Cfloat32"><span class="Identifier">log10</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log10f&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1552. <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>
  1553. <dd>
  1554. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L428" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1555. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L428" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1556. </dd>
  1557. </div>
  1558. <div id="log10,float64">
  1559. <dt><pre><span class="Keyword">func</span> <a href="#log10%2Cfloat64"><span class="Identifier">log10</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;log10&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1560. <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>
  1561. <dd>
  1562. <p>Computes the common logarithm (base 10) of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  1563. <p><strong>See also:</strong></p>
  1564. <ul class="simple"><li><a class="reference external" href="#ln,float64">ln func</a></li>
  1565. <li><a class="reference external" href="#log,T,T">log func</a></li>
  1566. <li><a class="reference external" href="#log2,float64">log2 func</a></li>
  1567. </ul>
  1568. <p><strong class="examples_text">Example:</strong></p>
  1569. <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>
  1570. <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>
  1571. <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>
  1572. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L429" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1573. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L429" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1574. </dd>
  1575. </div>
  1576. </div>
  1577. <div id="mod-procs-all">
  1578. <div id="mod,float32,float32">
  1579. <dt><pre><span class="Keyword">func</span> <a href="#mod%2Cfloat32%2Cfloat32"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;fmodf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1580. <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>
  1581. <dd>
  1582. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L788" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1583. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L788" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1584. </dd>
  1585. </div>
  1586. <div id="mod,float64,float64">
  1587. <dt><pre><span class="Keyword">func</span> <a href="#mod%2Cfloat64%2Cfloat64"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;fmod&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1588. <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>
  1589. <dd>
  1590. <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>
  1591. <p><strong>See also:</strong></p>
  1592. <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>
  1593. </ul>
  1594. <p><strong class="examples_text">Example:</strong></p>
  1595. <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>
  1596. <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>
  1597. <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>
  1598. <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>
  1599. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L789" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1600. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L789" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1601. </dd>
  1602. </div>
  1603. </div>
  1604. <div id="nextPowerOfTwo-procs-all">
  1605. <div id="nextPowerOfTwo,int">
  1606. <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>
  1607. <dd>
  1608. <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>
  1609. <p>Zero and negative numbers get rounded up to 1.</p>
  1610. <p><strong>See also:</strong></p>
  1611. <ul class="simple"><li><a class="reference external" href="#isPowerOfTwo,int">isPowerOfTwo func</a></li>
  1612. </ul>
  1613. <p><strong class="examples_text">Example:</strong></p>
  1614. <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>
  1615. <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>
  1616. <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>
  1617. <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>
  1618. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L339" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1619. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L339" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1620. </dd>
  1621. </div>
  1622. </div>
  1623. <div id="pow-procs-all">
  1624. <div id="pow,float32,float32">
  1625. <dt><pre><span class="Keyword">func</span> <a href="#pow%2Cfloat32%2Cfloat32"><span class="Identifier">pow</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;powf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1626. <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>
  1627. <dd>
  1628. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L627" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1629. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L627" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1630. </dd>
  1631. </div>
  1632. <div id="pow,float64,float64">
  1633. <dt><pre><span class="Keyword">func</span> <a href="#pow%2Cfloat64%2Cfloat64"><span class="Identifier">pow</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;pow&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1634. <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>
  1635. <dd>
  1636. <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>
  1637. <p>You may use the <a class="reference external" href="#^, T, U">^ func</a> instead.</p>
  1638. <p><strong>See also:</strong></p>
  1639. <ul class="simple"><li><a class="reference external" href="#^,T,Natural">^ (SomeNumber, Natural) func</a></li>
  1640. <li><a class="reference external" href="#^,T,U">^ (SomeNumber, SomeFloat) func</a></li>
  1641. <li><a class="reference external" href="#sqrt,float64">sqrt func</a></li>
  1642. <li><a class="reference external" href="#cbrt,float64">cbrt func</a></li>
  1643. </ul>
  1644. <p><strong class="examples_text">Example:</strong></p>
  1645. <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>
  1646. <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>
  1647. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L628" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1648. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L628" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1649. </dd>
  1650. </div>
  1651. </div>
  1652. <div id="prod-procs-all">
  1653. <div id="prod,openArray[T]">
  1654. <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>
  1655. <dd>
  1656. <p>Computes the product of the elements in <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  1657. <p>If <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is empty, 1 is returned.</p>
  1658. <p><strong>See also:</strong></p>
  1659. <ul class="simple"><li><a class="reference external" href="#sum,openArray[T]">sum func</a></li>
  1660. <li><a class="reference external" href="#fac,int">fac func</a></li>
  1661. </ul>
  1662. <p><strong class="examples_text">Example:</strong></p>
  1663. <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>
  1664. <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>
  1665. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1133" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1666. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1133" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1667. </dd>
  1668. </div>
  1669. </div>
  1670. <div id="radToDeg-procs-all">
  1671. <div id="radToDeg,T">
  1672. <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>
  1673. <dd>
  1674. <p>Converts from radians to degrees.</p>
  1675. <p><strong>See also:</strong></p>
  1676. <ul class="simple"><li><a class="reference external" href="#degToRad,T">degToRad func</a></li>
  1677. </ul>
  1678. <p><strong class="examples_text">Example:</strong></p>
  1679. <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>
  1680. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1091" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1681. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1091" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1682. </dd>
  1683. </div>
  1684. </div>
  1685. <div id="round-procs-all">
  1686. <div id="round,float32">
  1687. <dt><pre><span class="Keyword">func</span> <a href="#round%2Cfloat32"><span class="Identifier">round</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;roundf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1688. <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>
  1689. <dd>
  1690. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L758" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1691. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L758" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1692. </dd>
  1693. </div>
  1694. <div id="round,float64">
  1695. <dt><pre><span class="Keyword">func</span> <a href="#round%2Cfloat64"><span class="Identifier">round</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;round&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1696. <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>
  1697. <dd>
  1698. <p>Rounds a float to zero decimal places.</p>
  1699. <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>
  1700. <p><strong>See also:</strong></p>
  1701. <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>
  1702. <li><a class="reference external" href="#floor,float64">floor func</a></li>
  1703. <li><a class="reference external" href="#ceil,float64">ceil func</a></li>
  1704. <li><a class="reference external" href="#trunc,float64">trunc func</a></li>
  1705. </ul>
  1706. <p><strong class="examples_text">Example:</strong></p>
  1707. <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>
  1708. <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>
  1709. <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>
  1710. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L759" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1711. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L759" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1712. </dd>
  1713. </div>
  1714. <div id="round,T,int">
  1715. <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>
  1716. <dd>
  1717. <p>Decimal rounding on a binary floating point number.</p>
  1718. <p>This function is NOT reliable. Floating point numbers cannot hold non integer decimals precisely. If <tt class="docutils literal"><span class="pre"><span class="Identifier">places</span></span></tt> is 0 (or omitted), round to the nearest integral value following normal mathematical rounding rules (e.g. <tt class="docutils literal"><span class="pre"><span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">54.5</span><span class="Punctuation">)</span> <span class="Operator">-&gt;</span> <span class="FloatNumber">55.0</span></span></tt>). If <tt class="docutils literal"><span class="pre"><span class="Identifier">places</span></span></tt> is greater than 0, round to the given number of decimal places, e.g. <tt class="docutils literal"><span class="pre"><span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">54.346</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">-&gt;</span> <span class="FloatNumber">54.350000000000001421</span><span class="Identifier">…</span></span></tt>. If <tt class="docutils literal"><span class="pre"><span class="Identifier">places</span></span></tt> is negative, round to the left of the decimal place, e.g. <tt class="docutils literal"><span class="pre"><span class="Identifier">round</span><span class="Punctuation">(</span><span class="FloatNumber">537.345</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">-&gt;</span> <span class="FloatNumber">540.0</span></span></tt>.</p>
  1719. <p><strong class="examples_text">Example:</strong></p>
  1720. <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>
  1721. <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>
  1722. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L840" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1723. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L840" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1724. </dd>
  1725. </div>
  1726. </div>
  1727. <div id="sec-procs-all">
  1728. <div id="sec,T">
  1729. <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>
  1730. <dd>
  1731. 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>).
  1732. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L592" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1733. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L592" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1734. </dd>
  1735. </div>
  1736. </div>
  1737. <div id="sech-procs-all">
  1738. <div id="sech,T">
  1739. <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>
  1740. <dd>
  1741. 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>).
  1742. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L599" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1743. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L599" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1744. </dd>
  1745. </div>
  1746. </div>
  1747. <div id="sgn-procs-all">
  1748. <div id="sgn,T">
  1749. <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>
  1750. <dd>
  1751. <p>Sign function.</p>
  1752. <p>Returns:</p>
  1753. <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>
  1754. <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>
  1755. <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>
  1756. </ul>
  1757. <p><strong class="examples_text">Example:</strong></p>
  1758. <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>
  1759. <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>
  1760. <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>
  1761. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1101" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1762. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1101" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1763. </dd>
  1764. </div>
  1765. </div>
  1766. <div id="signbit-procs-all">
  1767. <div id="signbit,SomeFloat">
  1768. <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>
  1769. <dd>
  1770. Returns true if <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is negative, false otherwise.
  1771. <p><strong class="examples_text">Example:</strong></p>
  1772. <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>
  1773. <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>
  1774. <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>
  1775. <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>
  1776. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L231" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1777. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L231" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1778. </dd>
  1779. </div>
  1780. </div>
  1781. <div id="sin-procs-all">
  1782. <div id="sin,float32">
  1783. <dt><pre><span class="Keyword">func</span> <a href="#sin%2Cfloat32"><span class="Identifier">sin</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sinf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1784. <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>
  1785. <dd>
  1786. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L450" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1787. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L450" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1788. </dd>
  1789. </div>
  1790. <div id="sin,float64">
  1791. <dt><pre><span class="Keyword">func</span> <a href="#sin%2Cfloat64"><span class="Identifier">sin</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sin&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1792. <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>
  1793. <dd>
  1794. <p>Computes the sine of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  1795. <p><strong>See also:</strong></p>
  1796. <ul class="simple"><li><a class="reference external" href="#arcsin,float64">arcsin func</a></li>
  1797. </ul>
  1798. <p><strong class="examples_text">Example:</strong></p>
  1799. <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>
  1800. <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>
  1801. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L451" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1802. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L451" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1803. </dd>
  1804. </div>
  1805. </div>
  1806. <div id="sinh-procs-all">
  1807. <div id="sinh,float32">
  1808. <dt><pre><span class="Keyword">func</span> <a href="#sinh%2Cfloat32"><span class="Identifier">sinh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sinhf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1809. <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>
  1810. <dd>
  1811. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L477" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1812. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L477" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1813. </dd>
  1814. </div>
  1815. <div id="sinh,float64">
  1816. <dt><pre><span class="Keyword">func</span> <a href="#sinh%2Cfloat64"><span class="Identifier">sinh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sinh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1817. <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>
  1818. <dd>
  1819. <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>
  1820. <p><strong>See also:</strong></p>
  1821. <ul class="simple"><li><a class="reference external" href="#arcsinh,float64">arcsinh func</a></li>
  1822. </ul>
  1823. <p><strong class="examples_text">Example:</strong></p>
  1824. <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>
  1825. <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>
  1826. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L478" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1827. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L478" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1828. </dd>
  1829. </div>
  1830. </div>
  1831. <div id="splitDecimal-procs-all">
  1832. <div id="splitDecimal,T">
  1833. <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>
  1834. <dd>
  1835. <p>Breaks <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> into an integer and a fractional part.</p>
  1836. <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>
  1837. <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>
  1838. <p><strong class="examples_text">Example:</strong></p>
  1839. <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>
  1840. <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>
  1841. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1061" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1842. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1061" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1843. </dd>
  1844. </div>
  1845. </div>
  1846. <div id="sqrt-procs-all">
  1847. <div id="sqrt,float32">
  1848. <dt><pre><span class="Keyword">func</span> <a href="#sqrt%2Cfloat32"><span class="Identifier">sqrt</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sqrtf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1849. <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>
  1850. <dd>
  1851. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L368" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1852. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L368" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1853. </dd>
  1854. </div>
  1855. <div id="sqrt,float64">
  1856. <dt><pre><span class="Keyword">func</span> <a href="#sqrt%2Cfloat64"><span class="Identifier">sqrt</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;sqrt&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1857. <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>
  1858. <dd>
  1859. <p>Computes the square root of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  1860. <p><strong>See also:</strong></p>
  1861. <ul class="simple"><li><a class="reference external" href="#cbrt,float64">cbrt func</a> for the cube root</li>
  1862. </ul>
  1863. <p><strong class="examples_text">Example:</strong></p>
  1864. <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>
  1865. <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>
  1866. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L369" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1867. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L369" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1868. </dd>
  1869. </div>
  1870. </div>
  1871. <div id="sum-procs-all">
  1872. <div id="sum,openArray[T]">
  1873. <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>
  1874. <dd>
  1875. <p>Computes the sum of the elements in <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  1876. <p>If <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> is empty, 0 is returned.</p>
  1877. <p><strong>See also:</strong></p>
  1878. <ul class="simple"><li><a class="reference external" href="#prod,openArray[T]">prod func</a></li>
  1879. <li><a class="reference external" href="#cumsum,openArray[T]">cumsum func</a></li>
  1880. <li><a class="reference external" href="#cumsummed,openArray[T]">cumsummed func</a></li>
  1881. </ul>
  1882. <p><strong class="examples_text">Example:</strong></p>
  1883. <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>
  1884. <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>
  1885. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L1118" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1886. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L1118" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1887. </dd>
  1888. </div>
  1889. </div>
  1890. <div id="tan-procs-all">
  1891. <div id="tan,float32">
  1892. <dt><pre><span class="Keyword">func</span> <a href="#tan%2Cfloat32"><span class="Identifier">tan</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tanf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1893. <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>
  1894. <dd>
  1895. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L468" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1896. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L468" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1897. </dd>
  1898. </div>
  1899. <div id="tan,float64">
  1900. <dt><pre><span class="Keyword">func</span> <a href="#tan%2Cfloat64"><span class="Identifier">tan</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tan&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
  1901. <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>
  1902. <dd>
  1903. <p>Computes the tangent of <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt>.</p>
  1904. <p><strong>See also:</strong></p>
  1905. <ul class="simple"><li><a class="reference external" href="#arctan,float64">arctan func</a></li>
  1906. </ul>
  1907. <p><strong class="examples_text">Example:</strong></p>
  1908. <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>
  1909. <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>
  1910. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L469" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1911. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L469" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1912. </dd>
  1913. </div>
  1914. </div>
  1915. <div id="tanh-procs-all">
  1916. <div id="tanh,float32">
  1917. <dt><pre><span class="Keyword">func</span> <a href="#tanh%2Cfloat32"><span class="Identifier">tanh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tanhf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1918. <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>
  1919. <dd>
  1920. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L495" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1921. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L495" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1922. </dd>
  1923. </div>
  1924. <div id="tanh,float64">
  1925. <dt><pre><span class="Keyword">func</span> <a href="#tanh%2Cfloat64"><span class="Identifier">tanh</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;tanh&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1926. <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>
  1927. <dd>
  1928. <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>
  1929. <p><strong>See also:</strong></p>
  1930. <ul class="simple"><li><a class="reference external" href="#arctanh,float64">arctanh func</a></li>
  1931. </ul>
  1932. <p><strong class="examples_text">Example:</strong></p>
  1933. <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>
  1934. <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>
  1935. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L496" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1936. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L496" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1937. </dd>
  1938. </div>
  1939. </div>
  1940. <div id="trunc-procs-all">
  1941. <div id="trunc,float32">
  1942. <dt><pre><span class="Keyword">func</span> <a href="#trunc%2Cfloat32"><span class="Identifier">trunc</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;truncf&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1943. <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>
  1944. <dd>
  1945. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L776" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1946. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L776" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1947. </dd>
  1948. </div>
  1949. <div id="trunc,float64">
  1950. <dt><pre><span class="Keyword">func</span> <a href="#trunc%2Cfloat64"><span class="Identifier">trunc</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> {.<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;trunc&quot;</span><span class="Other">,</span> <span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;math.h&gt;&quot;</span><span class="Other">,</span>
  1951. <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>
  1952. <dd>
  1953. <p>Truncates <tt class="docutils literal"><span class="pre"><span class="Identifier">x</span></span></tt> to the decimal point.</p>
  1954. <p><strong>See also:</strong></p>
  1955. <ul class="simple"><li><a class="reference external" href="#floor,float64">floor func</a></li>
  1956. <li><a class="reference external" href="#ceil,float64">ceil func</a></li>
  1957. <li><a class="reference external" href="#round,float64">round func</a></li>
  1958. </ul>
  1959. <p><strong class="examples_text">Example:</strong></p>
  1960. <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>
  1961. <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>
  1962. <a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/math.nim#L777" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
  1963. <a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/math.nim#L777" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
  1964. </dd>
  1965. </div>
  1966. </div>
  1967. </dl>
  1968. </div>
  1969. </div>
  1970. </div>
  1971. <div class="twelve-columns footer">
  1972. <span class="nim-sprite"></span>
  1973. <br>
  1974. <small style="color: var(--hint);">Made with Nim. Generated: 2025-02-06 22:27:50 UTC</small>
  1975. </div>
  1976. </div>
  1977. </div>
  1978. <script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
  1979. </body>
  1980. </html>