summary refs log tree commit diff stats
path: root/lib/pure/math.nim
Commit message (Collapse)AuthorAgeFilesLines
* fixes JS semicolon omissions (#23896)ringabout2024-07-261-1/+1
|
* conditional compilation of gcd(SomeInteger,SomeInteger) in std/math (#23773)quimt2024-07-091-34/+37
| | | | | | | | | | | The most specific version of `gcd(int,int)` in `std/math` uses bitwise comparisons from C compilers, which can't be borrowed on the js platform in the web browser. Conditional compilation here should fix the issue for this and downstream libraries such as `std/rationals` when compiling to browser js as the backend. --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* fixes #22798; Duplicate libraries linker warning (i.e., '-lm') on macOS (#23292)ringabout2024-06-021-1/+1
| | | | | | | | | | | | | | | fixes #22798 Per https://stackoverflow.com/questions/33675638/gcc-link-the-math-library-by-default-in-c-on-mac-os-x and https://stackoverflow.com/questions/30694042/c-std-library-dont-appear-to-be-linked-in-object-file > There's no separate math library on OSX. While a lot of systems ship functions in the standard C math.h header in a separate math library, OSX does not do that, it's part of the libSystem library, which is always linked in. required by https://github.com/nim-lang/Nim/pull/23290
* Make std/math classify work without `--passc:-fast-math`. (#23211)Angel Ezquerra2024-01-181-3/+2
| | | | By using the existing isNaN function we can make std/math's classify function work even if `--passc:-fast-math` is used.
* Deprecate asm stmt for js target (#23149)ASVIEST2024-01-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | why ? - We already have an emit that does the same thing - The name asm itself is a bit confusing, you might think it's an alias for asm.js or something else. - The asm keyword is used differently on different compiler targets (it makes it inexpressive). - Does anyone (other than some compiler libraries) use asm instead of emit ? If yes, it's a bit strange to use asm somewhere and emit somewhere. By making the asm keyword for js target deprecated, there would be even less use of the asm keyword for js target, reducing the amount of confusion. - New users might accidentally use a non-universal approach via the asm keyword instead of emit, and then when they learn about asm, try to figure out what the differences are. see https://forum.nim-lang.org/t/10821 --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* complete std prefixes for stdlib (#22887)ringabout2023-10-301-1/+1
| | | | follow up https://github.com/nim-lang/Nim/pull/22851 follow up https://github.com/nim-lang/Nim/pull/22873
* Amend divmod (#22131)Ryan McConnell2023-06-201-1/+6
| | | | | | | * Add Overflow checks & test adjust * Avoiding nimvm differences in tests * distinguish DivByZeroDefect
* Add divmod (#22102)Ryan McConnell2023-06-171-0/+38
| | | | | | | | | | | | | | | | | | | | | | | * Adding divmod * Adding support to VM * Wrapped C structs and funcs * Fix javascript impl * Fixing struct compat * Segregate tests, better compiletime defs * Using `inline` and switch back to `func` * Apply suggestions from code review * Explicit structures --------- Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* fixes #21792; enable checks for sum, prod, cumsummed and cumsum (#21793)ringabout2023-05-051-60/+63
| | | | | | | * enable checks for sum, prod, cumsummed and cumsum * fixes #21792 * add test cases
* stdlib organization & documentation improvements (#20971)metagn2022-12-061-1/+0
| | | | | | | | | | | | | | | | | * stdlib organization & documentation improvements * fix CI * Update doc/lib.md Co-authored-by: Juan Carlos <juancarlospaco@gmail.com> * fix ci, remove jshttpcore, export in jsfetch instead * fix alphabetical order violations * add cmdline, db_odbc Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>
* move assertions out of system (#19599)flywind2022-03-231-0/+4
|
* Remove deprecated math.c_frexp (#19518)Juan Carlos2022-02-141-5/+0
| | | | | | | * Remove Deprecated math proc * Remove Deprecated math proc * Remove Deprecated math proc
* Add ceilDiv to math (#18596)Tomohiro2021-08-191-0/+52
| | | | | | * Use assert in runnableExamples and improve boundary check * Add more tests for ceilDiv * Fix comment in ceilDiv * Calling ceilDiv with int type T such like sizeof(T) > 8 is error
* fix for #18284 int32 should be int (#18285)Adrian Veith2021-06-171-1/+1
| | | the var exp was typed as int32 - it should be int since frep expects an int
* CIs: attempt to use csources_v1 (#16282)Andreas Rumpf2021-04-211-1/+1
| | | | | | | | * CIs: attempt to use csources_v1 * also updated the BSDs * also updated azure pipelines * std modules should not itself use the 'std/' import dir... * compiler has to be careful with std/ for v1 booting
* don't run one example on 32-bit machines (#17655)Miran2021-04-061-3/+4
| | | | | This example seems to break our 32-bit nightlies builds. This is just a temporary solution (TM) until we figure out a better one.
* Fix #17017 (math edge cases) (#17588)konsumlamm2021-04-011-5/+13
| | | | | | | * Fix #17017 Add more test cases * USe signbit in example
* use lowercase --define switches (#17283)flywind2021-03-071-1/+1
|
* Added assertion to clamp (#17248)Jason Beetham2021-03-041-0/+2
| | | Co-authored-by: flywind <xzsflywind@gmail.com>
* Added math.clamp for slice clamping (#17246)Jason Beetham2021-03-031-0/+10
| | | | | | | * Added math.clamp for slice clamping * Added inline to math.clamp * Cleaned up math.clamp + test
* make copySign for js consistent with other backends (#16609)Timothee Cour2021-02-221-15/+30
| | | | | | * make copySign work more robustly in js * improve tests * improve tests/vm/tcastint.nim
* fix math.frexp function signature (#16725)flywind2021-02-171-36/+52
|
* Improve math module (#17019)konsumlamm2021-02-121-496/+425
| | | | | | | | | | | | | | | | | | | | | | | | | * Improve documentation for math Support empty input for cumsummed Use runnableExamples Move some examples to tests Add more tests * Update tests/stdlib/tmath.nim Move some tests to trandom.nim Move tests into main template where possible Add test for #17017 * Add more tests for gamma & lgamma Remove gamma(-1.0) example Small fixes/changes * Move more tests into template main() * Fix typos * Add edge case examples for copySign
* perpare for more compact bit operations in JS (#16728)flywind2021-01-191-7/+8
|
* minor improvement on math.nim (#16733)flywind2021-01-161-2/+2
|
* add math.signbit (#16592)flywind2021-01-071-1/+26
|
* fix #9125 (#16582)flywind2021-01-051-1/+11
| | | | | | | | | | | | * fix #9125 * Update tests/stdlib/tmath.nim Co-authored-by: Timothee Cour <timothee.cour2@gmail.com> * back Co-authored-by: Andreas Rumpf <rumpf_a@web.de> Co-authored-by: Timothee Cour <timothee.cour2@gmail.com>
* Add math.copySign (#16406)flywind2020-12-301-0/+38
| | | | | * add math.copySign * fix + tests
* add `euclDiv` and `euclMod` to `math` (#16414)flywind2020-12-231-0/+26
| | | | | | | | * add `euclDiv` and `euclMod` to `math` * use abs * Update lib/pure/math.nim Co-authored-by: Clyybber <darkmine956@gmail.com>
* [backport => 1.0] fix #16428 vmops now works for generic procs (#16429)Timothee Cour2020-12-221-0/+2
| | | | | * fix #16428 vmops now works for generic procs * remove duplication
* docs minor for math (#16407)flywind2020-12-201-2/+2
|
* add math.isNaN (#16179)Timothee Cour2020-12-111-0/+21
| | | | | | | * add math.isNaN * isNaN now works with --passc:-ffast-math; tests * Update lib/pure/math.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* math.nim: Use `func` everywhere (#16285)ee72020-12-071-270/+268
| | | | | | | | | | | * math.nim: procs with {.noSideEffect} -> funcs * math.nim: procs without {.noSideEffect.} -> funcs * math.nim: proc -> func in links * math.nim: proc -> func in doc comments * test: add `math` to strictFuncs test
* fixed article duplication typos (#16216)ihlec2020-12-021-1/+1
|
* fix for comparing infinities (#16122)Antonis Geralis2020-11-251-0/+11
|
* move tests to testament (#16101)flywind2020-11-241-125/+0
| | | | | | | | | * move tests to testament * minor * fix random * disable test random
* change some code-blocks to runnableExamples and correct some errors in docs ↵flywind2020-11-121-15/+15
| | | | | | | | | (#15900) * original docs are wrong * fix pathnorm * Update lib/pure/pathnorm.nim Co-authored-by: Juan Carlos <juancarlospaco@gmail.com>
* add approxequal (#15766)Antonis Geralis2020-10-301-1/+24
| | | | | | | | | | | | * add approxequal * Address review comments, tests that pass * more wikipedia links [ci skip] * forgot since Co-authored-by: b3liever <b3liever@yandex.com> Co-authored-by: Andreas Rumpf <rumpf_a@web.de>
* remove deprecation from `math.round` (#15224)Miran2020-08-251-2/+1
|
* fix #15033 (#15034)Hugo Granström2020-07-221-1/+1
|
* Remove deprecated stuff from stdlib (#14699)Miran2020-06-171-39/+0
| | | | | | | * update to the latest Jester * remove deprecated procs from some stdlib modules * 'criterion' is not maintained anymore and relies on obsolete stuff
* move since from inclrtl to std/private/since (#14188)hlaaftana2020-05-021-1/+1
| | | | * move since from inclrtl to std/private/since * move since import in system below for HCR
* Error -> Defect for defects (#13908)Jacek Sieka2020-04-281-1/+1
| | | | | | | | | | | | | | * Error -> Defect for defects The distinction between Error and Defect is subjective, context-dependent and somewhat arbitrary, so when looking at an exception, it's hard to guess what it is - this happens often when looking at a `raises` list _without_ opening the corresponding definition and digging through layers of inheritance. With the help of a little consistency in naming, it's at least possible to start disentangling the two error types and the standard lib can set a good example here.
* style fix: change 'JS' to 'js' to make it consistent (#13168)Miran2020-01-161-5/+5
|
* fixes #13032Araq2020-01-041-2/+2
|
* Fixes classify function to detect subnormal floating points (#12836)KeepCoolWithCoolidge2019-12-081-16/+20
| | | | | | | | * Fix classify to test for subnormality. * Minor fix. * Modified to maintain existing API. * Minor change. * Removed 32-bit case since float is always 64-bit.
* Fix for 16 bit platforms (#12760) [backend]PMunch2019-11-281-1/+3
| | | | | This fixes some tiny issues with using Nim on 16-bit platforms. Not entirely sure why the AVR chip I was compiling for with "cpu = avr" was detected as 16-bit, but that's probably another issue..
* added support for openArray's for `gcd` and `lcm` (#12621)Yanis Zafirópulos2019-11-071-1/+25
|
* fix several typos in documentation and comments (#12553)Nindaleth2019-10-301-1/+1
|
* Fix many broken links and prefer relative links within docs (#12463)Miran2019-10-241-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix many broken links Note that contrary to what docgen.rst currently says, the ids have to match exactly or else most web browsers will not jump to the intended symbol. * Prefer relative links for Nim documentation This is more friendly to those browsing the documentation without a network connection. The nim-doc package in Debian allows this, for example. Also, the domain name being used was not consistent. It could have been either nim-lang.org or nim-lang.github.io, and those reading the stable docs could have found themselves suddenly reading the devel docs instead. * koch.rst: remove link to nonexistent section * manual.rst: remove unintended link cast[T](0) is interpreted as a link to id 0 with text T, so escape the opening parentheses to display the intended output. * asyncstreams: replace unintended link with emphasis * Fix word wrapping