summaryrefslogtreecommitdiff
path: root/ext/bigdecimal/bigdecimal.c
AgeCommit message (Collapse)Author
2021-01-22[ruby/bigdecimal] [Doc] Fix the comment of BigDecimal_div2 [ci skip]Kenta Murata
https://github.com/ruby/bigdecimal/commit/a109d0984f
2021-01-22[ruby/bigdecimal] Stop using GetVpValue in rb_big_convert_to_BigDecimalKenta Murata
https://github.com/ruby/bigdecimal/commit/034fd2b25e
2021-01-16[ruby/bigdecimal] Fix for the coerce cases in divide and DoDivmodKenta Murata
https://github.com/ruby/bigdecimal/commit/1cb92487f7
2021-01-16[ruby/bigdecimal] Use pre-allocated special values in BigDecimal_DoDivmodKenta Murata
https://github.com/ruby/bigdecimal/commit/d2746121cf
2021-01-16[ruby/bigdecimal] Use new conversion functions in BigDecimal_DoDivmodKenta Murata
https://github.com/ruby/bigdecimal/commit/68c20200d5
2021-01-15[ruby/bigdecimal] Use new conversion functions in BigDecimal_divideKenta Murata
https://github.com/ruby/bigdecimal/commit/3b55ad1c42
2021-01-15[ruby/bigdecimal] Reorder the arguments of BigDecimal_divideKenta Murata
https://github.com/ruby/bigdecimal/commit/1e03da7076
2021-01-14[ruby/bigdecimal] Explicitly cast size_t to intKenta Murata
https://github.com/ruby/bigdecimal/commit/b1f1ed26c9
2021-01-14[ruby/bigdecimal] Explicitly cast uint64_t to doubleKenta Murata
https://github.com/ruby/bigdecimal/commit/f0d94e6843
2021-01-13[ruby/bigdecimal] Allow digits=0 in BigDecimal(flt) and Float#to_dKenta Murata
Using dtoa of mode=0, we can determine the number of digits in decimal that is necessary to represent the given Float number without errors. This change permits digits=0 in BigDecimal(flt) and Float#to_d, and these methods use dtoa of mode=0 when the given digits is 0. Internal implicit conversion from Float also uses digits=0. [Fix GH-70] https://github.com/ruby/bigdecimal/commit/2dbe170e35
2021-01-13[ruby/bigdecimal] Optimize rb_float_convert_to_BigDecimal by using dtoaKenta Murata
This improve the conversion speed several times faster than before. ``` RUBYLIB= BUNDLER_ORIG_RUBYLIB= /home/mrkn/.rbenv/versions/3.0.0/bin/ruby -v -S benchmark-driver /home/mrkn/src/github.com/ruby/bigdecimal/benchmark/from_float.yml ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux] Calculating ------------------------------------- bigdecimal 3.0.0 master flt_e0 156.400k 783.356k i/s - 100.000k times in 0.639388s 0.127656s flt_ep10 158.640k 777.978k i/s - 100.000k times in 0.630359s 0.128538s flt_ep100 101.676k 504.259k i/s - 100.000k times in 0.983512s 0.198311s flt_em10 103.439k 726.339k i/s - 100.000k times in 0.966751s 0.137677s flt_em100 79.675k 651.446k i/s - 100.000k times in 1.255095s 0.153505s Comparison: flt_e0 master: 783355.6 i/s bigdecimal 3.0.0: 156399.5 i/s - 5.01x slower flt_ep10 master: 777977.6 i/s bigdecimal 3.0.0: 158639.7 i/s - 4.90x slower flt_ep100 master: 504259.4 i/s bigdecimal 3.0.0: 101676.5 i/s - 4.96x slower flt_em10 master: 726338.6 i/s bigdecimal 3.0.0: 103439.2 i/s - 7.02x slower flt_em100 master: 651446.3 i/s bigdecimal 3.0.0: 79675.3 i/s - 8.18x slower ``` https://github.com/ruby/bigdecimal/commit/5bdaedd530 https://github.com/ruby/bigdecimal/commit/9bfff57f90 https://github.com/ruby/bigdecimal/commit/d071a0abbb
2021-01-13[ruby/bigdecimal] Use pre-allocated objects for special valuesKenta Murata
https://github.com/ruby/bigdecimal/commit/95c201f2d3
2021-01-13[ruby/bigdecimal] Fix exception message raised in Kernel.BigDecimalKenta Murata
https://github.com/ruby/bigdecimal/commit/d163f170a4 https://github.com/ruby/bigdecimal/commit/ff8eeeb064
2021-01-12[ruby/bigdecimal] Fix length calculation in rb_uint64_convert_to_BigDecimalKenta Murata
https://github.com/ruby/bigdecimal/commit/14e53ed7f6
2021-01-12[ruby/bigdecimal] Use rb_cstr_convert_to_BigDecimal in GetVpValueWithPrecKenta Murata
https://github.com/ruby/bigdecimal/commit/381ddf5ff6
2021-01-12[ruby/bigdecimal] Add rb_cstr_convert_to_BigDecimalKenta Murata
https://github.com/ruby/bigdecimal/commit/ac230a996e
2021-01-10[ruby/bigdecimal] Fix type nameKenta Murata
https://github.com/ruby/bigdecimal/commit/2dad4d17b2
2021-01-10[ruby/bigdecimal] Avoid casting negative value to size_tKenta Murata
https://github.com/ruby/bigdecimal/f047b2786f
2021-01-10[ruby/bigdecimal] Use smallest local variable scope in GetVpValueWithPrecKenta Murata
https://github.com/ruby/bigdecimal/commit/44f26b9aa0
2021-01-09[ruby/bigdecimal] Stop using GetVpValueWithPrec in ↵Kenta Murata
rb_rational_convert_to_BigDecimal https://github.com/ruby/bigdecimal/commit/b4f470da61 https://github.com/ruby/bigdecimal/commit/44a78df866
2021-01-09[ruby/bigdecimal] Add assertions for checking the argument typesKenta Murata
https://github.com/ruby/bigdecimal/commit/96c9ebd886
2021-01-09[ruby/bigdecimal] Stop using GetVpValueWithPrec in ↵Kenta Murata
rb_float_convert_to_BigDecimal https://github.com/ruby/bigdecimal/commit/33e7c50263 https://github.com/ruby/bigdecimal/commit/d3c1b0b921
2021-01-07[ruby/bigdecimal] Fix trailing zero handling in rb_uint64_convert_to_BigDecimalKenta Murata
https://github.com/ruby/bigdecimal/commit/2056604d56
2021-01-06[ruby/bigdecimal] Rename BDIGIT to DECDIGKenta Murata
https://github.com/ruby/bigdecimal/commit/686487d942
2021-01-06Need to convert the return value of rb_big_cmpKenta Murata
2021-01-06[ruby/bigdecimal] Optimize the conversion from small BignumKenta Murata
https://github.com/ruby/bigdecimal/commit/4792a917d8
2021-01-04[ruby/bigdecimal] Move some definitions to missing.hKenta Murata
https://github.com/ruby/bigdecimal/commit/c2b22cc8b3 https://github.com/ruby/bigdecimal/commit/8cbca8481d https://github.com/ruby/bigdecimal/commit/f05aecf673
2021-01-02[ruby/bigdecimal] Implement special conversions for 64-bit integersKenta Murata
This change improves the conversion speed from small integers. ``` Comparison: big_n9 master: 4003688.9 i/s bigdecimal 3.0.0: 1270551.0 i/s - 3.15x slower big_n19 master: 5410096.4 i/s bigdecimal 3.0.0: 1000250.3 i/s - 5.41x slower ``` https://github.com/ruby/bigdecimal/commit/3429bd7e6f
2020-12-31[ruby/bigdecimal] Refactor object allocationKenta Murata
https://github.com/ruby/bigdecimal/commit/271cebe567
2020-12-31[ruby/bigdecimal] Remove ToValueKenta Murata
https://github.com/ruby/bigdecimal/commit/97e9feeebd
2020-12-30[ruby/bigdecimal] Remove VP_EXCEPTION_MEMORYKenta Murata
It is no longer used due to the previous commit. https://github.com/ruby/bigdecimal/commit/7d463f802b
2020-12-30[ruby/bigdecimal] Remove needless pointer checksKenta Murata
xmalloc and xrealloc return non-NULL pointers or raise memory error. https://github.com/ruby/bigdecimal/commit/507f0a6a64
2020-12-29[ruby/bigdecimal] Alloc wrapper object before VpAllocKenta Murata
Calling TypedData_Wrap_Struct after VpAlloc may cause memory leak. This commit reverts d11b78f9c420f39ee800b9feed4839cd28f4ff5c. https://github.com/ruby/bigdecimal/commit/2c5a288caf
2020-12-29[ruby/bigdecimal] Refactor to extract VpCheckExceptionKenta Murata
https://github.com/ruby/bigdecimal/commit/6fd171308b
2020-12-29[ruby/bigdecimal] Refactor to decompose VpNewVarArg into small functionsKenta Murata
https://github.com/ruby/bigdecimal/commit/7504871c48
2020-12-29[ruby/bigdecimal] Reduce needless object allocation in f_BigDecimalKenta Murata
https://github.com/ruby/bigdecimal/commit/5c808eeabb
2020-12-28[ruby/bigdecimal] [Doc] Fix the document of BigDecimal()Kenta Murata
[ci-skip] https://github.com/ruby/bigdecimal/commit/905d0345ec
2020-12-28[ruby/bigdecimal] Reduce conditional branch count in VpNewVarArgKenta Murata
https://github.com/ruby/bigdecimal/commit/741fb3e00f
2020-12-20bigdecimal: initialize conditionally assigned variableNobuyoshi Nakada
2020-12-19[bigdecimal] Add BigDecimal#n_significant_digitsKenta Murata
https://github.com/ruby/bigdecimal/commit/981dc48f95 https://github.com/ruby/bigdecimal/commit/9ecf880ec04
2020-12-19[bigdecimal] Make BigDecimal#precs deprecatedKenta Murata
https://github.com/ruby/bigdecimal/commit/7e80e6e145 https://github.com/ruby/bigdecimal/commit/0ed7846e8c
2020-12-19[bigdecimal] Add BigDecimal#precisionKenta Murata
https://github.com/ruby/bigdecimal/commit/458eb66c49
2020-12-19[bigdecimal] Make bigdecimal Ractor safeKenta Murata
https://github.com/ruby/bigdecimal/commit/93fc392640 https://github.com/ruby/bigdecimal/commit/a90d13c4d0
2020-12-19[bigdecimal] Use DBLE_FIGKenta Murata
https://github.com/ruby/bigdecimal/commit/12296dcb90
2020-12-19[bigdecimal] Fix the default precision of Float#to_dKenta Murata
Fix https://github.com/ruby/bigdecimal/issues/70 [Bug #13331] https://github.com/ruby/bigdecimal/commit/aa536cd4b5
2020-12-19[bigdecimal] Use rb_undef_alloc_func to undefine allocateKenta Murata
2020-12-15Import bigdecimal 2.0.2 (#3905)Kenta Murata
* remove duplicated include * Make BigDecimal#round with argument < 1 return Integer Fixes [Bug #12780] * Use a higher default precision for BigDecimal#power and #** When a fractional power is given, increase the precision if the precision isn't specified via power's second argument: Float: increase by 15 (rough number of decimal precision in float) BigDecimal: increase by adding similar precision modifier as done to calculate the base precision. Rational: double the precision, since a BigDecimal is created, but the created BigDecimal uses the same precision. Increasing the precision for these power calculations has the obvious tradeoff of making the calculations slower. Fixes Ruby Bug #17264 * Use DBLE_FIG for a Float value * Version 2.0.1 Co-authored-by: pavel <pavel.rosicky@easy.cz> Co-authored-by: Jeremy Evans <code@jeremyevans.net> Notes: Merged-By: mrkn <mrkn@ruby-lang.org>
2020-10-10Fixed typo in commentIkko Ashimine
alway -> always Notes: Merged: https://github.com/ruby/ruby/pull/3646
2020-07-06[ruby/bigdecimal] Return US-ASCII string from BigDecimal#to_sKenta Murata
Fixes #159 https://github.com/ruby/bigdecimal/commit/57ee92e700 Notes: Merged: https://github.com/ruby/ruby/pull/3295
2020-07-06[ruby/bigdecimal] Support Ruby < 2.6Kenta Murata
https://github.com/ruby/bigdecimal/commit/61ec452599 Notes: Merged: https://github.com/ruby/ruby/pull/3295