# CHANGES ## 4.1.3 * Faster gamma and lgamma calculation using Lagrange interpolation [GH-524] **@tompng** * Bit-burst algorithm version of BigMath.erf and BigMath.erfc [GH-458] **@tompng** * Fix Newton-Raphson division bugs: precision loss, out-of-bounds write, and missing GC guard for the divisor [GH-548] [GH-552] [GH-553] **@OskarEichler** **@tompng** * Fix GC safety issues around RB_GC_GUARD and string arguments [GH-536] [GH-556] **@tompng** * Honor `exception: false` for Complex and strings with null bytes [GH-549] [GH-550] **@OskarEichler** * Make String#to_d accept embedded NUL bytes and reject ASCII-incompatible strings [GH-557] **@tompng** * Correct nullable BigDecimal conversion RBS signature [GH-551] **@OskarEichler** * Declare TypedData with RUBY_TYPED_THREAD_SAFE_FREE [GH-541] **@byroot** * Fix unused-but-set-global warnings in clang-23 [GH-540] **@nobu** ## 4.1.2 * Fix dtoa Ractor-safety bug. Update dtoa to version from Ruby 4.0 [GH-528] **@jhawthorn** * Optimize BigDecimal#to_s [GH-519] **@byroot** ## 4.1.1 * Make BigDecimal object embedded [GH-507] **@byroot** * Multiplication with 16-decdig batch [GH-501] [GH-511] **@tompng** ## 4.1.0 * Drop Ruby 2.5 support [GH-505] **@tompng** * Performance improvements: NTT multiplication, Newton-Raphson division, bit-burst algorithm for exp/sin, Gauss-Legendre for PI, improved log, and faster add/sub for large exponent differences [GH-407] [GH-433] [GH-434] [GH-478] [GH-484] **@tompng** * Remove ENABLE_NUMERIC_STRING flag [GH-479] **@tompng** * Add RBS signature and testing [GH-488] [GH-492] **@ksss** * Fix erfc(x,prec) precision when x is huge [GH-502] **@tompng** * Fix error compiling with ruby.wasm [GH-504] **@tompng** ## 4.0.1 * Fix warning [GH-475] **@tompng** ## 4.0.0 * `BigDecimal#divmod` return value changed to `[Integer, BigDecimal]` [GH-312] **@mrzasa** * Remove `BigDecimal#precs` [GH-470] **@tompng** * BigMath now supports all functions defined in Math module [GH-336] [GH-357] [GH-451] [GH-448] **@tompng** * Fix incorrect exception when exponent is fractional for Infinity base [GH-453] **@troy-dunamu** * Deprecate `bigdecimal/jacobian`, `bigdecimal/ludcmp` and `bigdecimal/newton` [GH-471] **@tompng** ## 3.3.1 * All BigMath methods converts non integer precision with to_int **@tompng** ## 3.3.0 * Allow calling to_d without arguments [GH-421] **@fsateler** * Calculate BigMath.sin and cos in relative precision [GH-422] **@tompng** * Add support for tangent function [GH-231] **@rhannequin** * BigMath methods accepts numeric as an argument [GH-415] **@tompng** * Round result of sqrt and BigMath methods [GH-427] **@tompng** ## 3.2.3 * Allow BigDecimal accept Float without precision [GH-314] **@mrzasa** * Ruby implementation pow, log, exp and sqrt [GH-347] [GH-381] **@tompng** * Update document [GH-348] [GH-360] [GH-365] **@timcraft** **@dduugg** **@mame** * Lots of bug fixes and refactoring ## 3.2.2 * Make precision calculation in bigdecimal.div(value, 0) gc-compaction safe. [GH-340] **@tompng** ## 3.2.1 * Fix division precision limit. [GH-335] **@tompng** ## 3.2.0 * Fix division rounding. [GH-330] [GH-328] **@tompng** * Fix exponential precision growth in division. [GH-329] [GH-220] [GH-222] [GH-272] **@tompng** ## 3.1.9 * Accept no digits in the fractional part (#302) **@kou** ## 3.1.8 * Add missing documents [GH-277] **@nobu** * Fix memory leak in VpAlloc [GH-294] [GH-290] Reported by **@MaxLap** ## 3.1.7 * Only consists of CI settings and test changes. This release is needed for developing Ruby to run `make test-bundled-gems` with the released version of bigdecimal. ## 3.1.6 * Add LICENSE file to gem files [GH-282] **@oleksii-leonov** ## 3.1.5 * Add .to_s('F') digit grouping for integer part [GH-264] **@cryptogopher** ## 3.1.4 * Handle correctly #reminder with infinity. Fixes [GH-187] [GH-243] **@mrzasa** ## 3.1.3 * Adjust a local variable type to exponent. [GH-223] * Remove checks for `struct RRational` and `struct RComplex` . [GH-233] * Suppress macro redefinition warnings. [GH-239] ## 3.1.2 * Fix the maximum precision of the quotient. [GH-220] Reported by @grk ## 3.1.1 * Fix the result precision of `BigDecimal#divmod`. [GH-219] **Kenta Murata** ## 3.1.0 * Improve documentation [GH-209] **Burdette Lamar** * Let BigDecimal#quo accept precision. [GH-214] [Bug #8826] Reported by Földes László * Allow passing both float and precision in BigDecimal#div. [GH-212] [Bug #8826] Reported by Földes László * Add `BigDecimal#scale` and `BigDecimal#precision_scale` **Kenta Murata** * Fix a bug of `BigDecimal#precision` for the case that a BigDecimal has single internal digit [GH-205] **Kenta Murata** * Fix segmentation fault due to a bug of `VpReallocReal` **Kenta Murata** * Use larger precision in divide for irrational or recurring results. [GH-94] [Bug #13754] Reported by Lionel PERRIN * Fix negative Bignum conversion [GH-196] **Jean byroot Boussier** * Fix grammar in error messages. [GH-196] **Olle Jonsson** * Improve the conversion speed of `Kernel#BigDecimal` and `to_d` methods. **Kenta Murata** * Fix trailing zeros handling in `rb_uint64_convert_to_BigDecimal`. [GH-192] Reported by @kamipo * Permit 0 digits in `BigDecimal(float)` and `Float#to_d`. It means auto-detection of the smallest number of digits to represent the given Float number without error. [GH-180] **Kenta Murata** * Fix precision issue of Float. [GH-70] [Bug #13331] Reported by @casperisfine ## 3.0.2 *This version is totally same as 3.0.0. This was released for reverting 3.0.1.* * Revert the changes in 3.0.1 due to remaining bugs. ## 3.0.1 *This version is yanked due to the remaining bugs.* ## 3.0.0 * Deprecate `BigDecimal#precs`. **Kenta Murata** * Add `BigDecimal#n_significant_digits`. **Kenta Murata** * Add `BigDecimal#precision`. **Kenta Murata** * Ractor support. **Kenta Murata** * Fix a bug of the way to undefine `allocate` method. **Kenta Murata** * Fix the default precision of `Float#to_d`. [Bug #13331] **Kenta Murata** ## 2.0.2 * Deprecate taint/trust and related methods, and make the methods no-ops **Jeremy Evans** * Make BigDecimal#round with argument < 1 return Integer **Jeremy Evans** * Use higher default precision for BigDecimal#power and #** **Jeremy Evans** **Kenta Murata** ## 2.0.1 * Let BigDecimal#to_s return US-ASCII string **Kenta Murata** ## 2.0.0 * Remove `BigDecimal.new` **Kenta Murata** * Drop fat-gem support **Akira Matsuda** * Do not mutate frozen BigDecimal argument in BigMath.exp **Jeremy Evans** * Make Kernel#BigDecimal return argument if given correct type [Bug #7522] **Jeremy Evans** * Undef BigDecimal#initialize_copy **Jeremy Evans** * Support conversion from Complex without the imaginary part **Kenta Murata** * Remove taint checking **Jeremy Evans** * Code maintenance **Nobuyoshi Nakada** ## 1.4.4 * Fix String#to_d against the string with trailing "e" like "1e" **Ibrahim Awwal** * Add BigDecimal.interpret_loosely, use it in String#to_d, and remove bigdecimal/util.so and rmpd_util_str_to_d **Kenta Murata** ## 1.4.3 * Restore subclassing support **Kenta Murata** ## 1.4.2 * Fix gem installation issue on mingw32. **Kenta Murata** ## 1.4.1 * Fix wrong packaging. **Ben Ford** ## 1.4.0 * Update documentation of `exception:` keyword. **Victor Shepelev** * Fix VpAlloc so that '1.2.3'.to_d is 1.2 **Nobuyoshi Nakada** * Restore `BigDecimal.new` just for version 1.4 for very old version of Rails **Kenta Murata** * Support `exception:` keyword in `BigDecimal()` **Kenta Murata** * Remove `BigDecimal#initialize` **Kenta Murata** * Fix the string parsing logic in `BigDecimal()` to follow `Float()` **Kenta Murata** * Fix `String#to_d` to follow `String#to_f` **Kenta Murata** * Update `BigDecimal#inspect` documentation **Dana Sherson** * Remove `BigDecimal.ver`, `BigDecimal.allocate`, and `BigDecimal.new` **Kenta Murata** * No more support Ruby < 2.3 **Kenta Murata** * Make BigDecimal objects frozen **Kenta Murata** * Remove division by zero from the internal implementation **Urabe, Shyouhei** ## 1.3.5 * Add NilClass#to_d **Jose Ramon Camacho** ## 1.3.4 * Stop deprecation warning in dup and clone, and just return self **Kenta Murata** * Improve warning message in BigDecimal.new **Masataka Pocke Kuwabara** ## 1.3.3 * Introduce BigDecimal::VERSION, deprecate BigDecimal.ver, and follow this version string to gem's version. **Kenta Murata** * Deprecate BigDecimal.new **Kenta Murata** * Deprecate BigDecimal#clone and #dup **Kenta Murata** * Relax the dependent version of rake-compiler **yui-knk** * Works for better windows cross-compilation support **SHIBATA Hiroshi** * Use Bundler::GemHelper.install_tasks instead of bundler/gem_tasks **SHIBATA Hiroshi** * Remove the old gemspec file **yui-knk** * Fix for mathn removal in Ruby 2.5 **SHIBATA Hiroshi** * Update ruby versions in .travis.yml **Jun Aruga** * Add tests for BigDecimal#truncate **yui-knk** * Add tests for BigDecimal#round **yui-knk** * Fix error message for precision argument **Marcus Stollsteimer** ## 1.3.2 and older Omitted.