summaryrefslogtreecommitdiff
path: root/complex.c
Commit message (Collapse)AuthorAgeFilesLines
* Using UNDEF_P macroS-H-GAMELINKS2022-11-161-4/+4
|
* Improve performance some `Integer` and `Float` methods [Feature #19085] (#6638)S.H2022-10-271-43/+0
| | | | | | | * Improve some Integer and Float methods * Using alias and Remove unnecessary code * Remove commentout code
* Reduce type check of arguments at Complex creationNobuyoshi Nakada2022-10-231-17/+24
|
* [Bug #19004] `Complex.polar` handles complex singular `abs` argumentStephen Ierodiaconou2022-10-231-7/+6
| | | | | | | | | | | | | | | | `Complex.polar` accepts Complex values as arguments for the polar form as long as the value of the complex has no imaginary part (ie it is 'real'). In `f_complex_polar` this is handled by extracting the real part of the arguments. However in the case `polar` is called with only a single argument, the absolute value (abs), then the Complex is created without applying a check on the type of abs, meaning it is possible to create a Complex where the real part is itself an instance of a Complex. This change removes the short circuit for the single argument case meaning the real part extraction is performed correctly (by f_complex_polar). Also adds an example to `spec/ruby/core/complex/polar_spec.rb` to check that the real part of a complex argument is correctly extracted and used in the resulting Complex real and imaginary parts.
* [DOC] Add the polar form in String#to_cNobuyoshi Nakada2022-10-171-0/+6
|
* Consider Complex from Complex casesNobuyoshi Nakada2022-09-021-11/+13
| | | | | The assertions that "an argument of a Complex constructor must not be a Complex" may not hold for some Numeric objects.
* [Bug #18937] Coerce non-real non-Numeric into Complex at comparisonsNobuyoshi Nakada2022-09-021-4/+12
|
* Turn `f_zero_p` to `bool`Nobuyoshi Nakada2022-09-021-8/+8
|
* [Bug #18937] Coerce non-Numeric into Complex at comparisonsNobuyoshi Nakada2022-08-221-1/+4
|
* Remove Numeric#ceildivKouhei Yanagita2022-08-121-1/+0
|
* Add Numeric#ceildiv and Integer#ceildivKouhei Yanagita2022-08-121-0/+1
|
* Expand tabs [ci skip]Takashi Kokubun2022-07-211-325/+325
| | | | [Misc #18891]
* [DOC] Fix broken links to literals.rdocNobuyoshi Nakada2022-02-081-1/+1
|
* [DOC] Simplify links to global methodsNobuyoshi Nakada2022-02-081-1/+1
|
* Adding links to literals and Kernel (#5192)Burdette Lamar2021-12-031-0/+8
| | | | * Adding links to literals and Kernel
* Remove declarations unused since a95262356ef5Nobuyoshi Nakada2021-10-181-2/+0
|
* Refactor and Using RBOOL macroS.H2021-09-151-4/+1
|
* Using RB_BIGNUM_TYPE_P macroS-H-GAMELINKS2021-09-111-1/+1
|
* include/ruby/internal/intern/complex.h: add doxygen卜部昌平2021-09-101-7/+0
| | | | Must not be a bad idea to improve documents. [ci skip]
* Remove unneeded commentS-H-GAMELINKS2021-09-031-8/+0
|
* Extract always_finite_type_p and handle flonum casesNobuyoshi Nakada2021-09-021-4/+12
|
* Make internal predicate functions to return simple booleanNobuyoshi Nakada2021-09-021-9/+6
|
* Refactor f_infinite_p functionS-H-GAMELINKS2021-09-021-4/+1
|
* Use C99-defined signbit macroNobuyoshi Nakada2021-08-271-4/+0
|
* Replace f_boolcast with RBOOL macroS.H2021-08-181-6/+4
| | | | | | | * Move f_boolcast definination * Remove f_boolcast macro defination * to
* Rename nucomp_false s nucomp_real_p_mNobuyoshi Nakada2021-05-201-2/+2
|
* cdhash_cmp: can also take complex卜部昌平2021-05-121-3/+9
| | | | There are complex literals `123i`, which can also be a case condition.
* Remove duplicated float_arg definationS-H-GAMELINKS2021-03-191-2/+0
|
* Follow the NDEBUG given to the wholeNobuyoshi Nakada2021-01-071-2/+0
|
* Removed canonicalization for mathnNobuyoshi Nakada2020-11-101-21/+0
|
* Don't redefine #rb_intern over and over againStefan Stüben2020-10-211-14/+11
|
* Fix assertion failed in Complex.polar without NDEBUG (#3551)Kenta Murata2020-09-161-0/+8
| | | Fixes [Bug #17172].
* RARRAY_AREF: convert into an inline function卜部昌平2020-08-151-0/+1
| | | | | | RARRAY_AREF has been a macro for reasons. We might not be able to change that for public APIs, but why not relax the situation internally to make it an inline function.
* Ensure origins for all included, prepended, and refined modulesJeremy Evans2020-06-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes various issues when a module is included in or prepended to a module or class, and then refined, or refined and then included or prepended to a module or class. Implement by renaming ensure_origin to rb_ensure_origin, making it non-static, and calling it when refining a module. Fix Module#initialize_copy to handle origins correctly. Previously, Module#initialize_copy did not handle origins correctly. For example, this code: ```ruby module B; end class A def b; 2 end prepend B end a = A.dup.new class A def b; 1 end end p a.b ``` Printed 1 instead of 2. This is because the super chain for a.singleton_class was: ``` a.singleton_class A.dup B(iclass) B(iclass origin) A(origin) # not A.dup(origin) ``` The B iclasses would not be modified, so the includer entry would be still be set to A and not A.dup. This modifies things so that if the class/module has an origin, all iclasses between the class/module and the origin are duplicated and have the correct includer entry set, and the correct origin is created. This requires other changes to make sure all tests still pass: * rb_undef_methods_from doesn't automatically handle classes with origins, so pass it the origin for Comparable when undefing methods in Complex. This fixed a failure in the Complex tests. * When adding a method, the method cache was not cleared correctly if klass has an origin. Clear the method cache for the klass before switching to the origin of klass. This fixed failures in the autoload tests related to overridding require, without breaking the optimization tests. Also clear the method cache for both the module and origin when removing a method. * Module#include? is fixed to skip origin iclasses. * Refinements are fixed to use the origin class of the module that has an origin. * RCLASS_REFINED_BY_ANY is removed as it was only used in a single place and is no longer needed. * Marshal#dump is fixed to skip iclass origins. * rb_method_entry_make is fixed to handled overridden optimized methods for modules that have origins. Fixes [Bug #16852]
* sed -i 's|ruby/impl|ruby/internal|'卜部昌平2020-05-111-1/+1
| | | | To fix build failures.
* sed -i s|ruby/3|ruby/impl|g卜部昌平2020-05-111-1/+1
| | | | This shall fix compile errors.
* Optimize sin/cosNobuyoshi Nakada2020-05-031-4/+15
| | | | | | | | | GCC/Clang can optimize to calculate `sin(x)` and `cos(x)` at once, when the both are closely called on the same argument. Similar optimization is possible for `__sinpi(x)` and `__cospi(x)` if available, which calculate arguments in radian, i.e. `sin(x*M_PI)` and `cos(x*M_PI)` respectively.
* reroute redefinition of NDEBUG卜部昌平2020-04-211-0/+1
| | | | | NDEBUG can be defined via a command-line argument. Should take care of such situations.
* Merge pull request #2991 from shyouhei/ruby.h卜部昌平2020-04-081-3/+2
| | | Split ruby.h
* decouple internal.h headers卜部昌平2019-12-261-4/+12
| | | | | | | | | | | | | | | | | | Saves comitters' daily life by avoid #include-ing everything from internal.h to make each file do so instead. This would significantly speed up incremental builds. We take the following inclusion order in this changeset: 1. "ruby/config.h", where _GNU_SOURCE is defined (must be the very first thing among everything). 2. RUBY_EXTCONF_H if any. 3. Standard C headers, sorted alphabetically. 4. Other system headers, maybe guarded by #ifdef 5. Everything else, sorted alphabetically. Exceptions are those win32-related headers, which tend not be self- containing (headers have inclusion order dependencies).
* Improve consistency of bool/true/falseKazuhiro NISHIYAMA2019-11-251-6/+6
|
* Make Kernel#{Pathname,BigDecimal,Complex} return argument if given correct typeJeremy Evans2019-09-211-0/+3
| | | | | | | | | | | | This is how Kernel#{Array,String,Float,Integer,Hash,Rational} work. BigDecimal and Complex instances are always frozen, so this should not cause backwards compatibility issues for those. Pathname instances are not frozen, so potentially this could cause backwards compatibility issues by not returning a new object. Based on a patch from Joshua Ballanco, some minor changes by me. Fixes [Bug #7522]
* Expanded f_quoNobuyoshi Nakada2019-08-101-1/+13
|
* Expanded f_real_pNobuyoshi Nakada2019-08-101-2/+22
|
* Predefine some IDsNobuyoshi Nakada2019-08-031-3/+3
|
* Expanded f_numeratorNobuyoshi Nakada2019-07-161-1/+12
|
* Expanded f_denominatorNobuyoshi Nakada2019-07-161-2/+12
|
* Expand f_arg to use particular functions directlyNobuyoshi Nakada2019-07-141-1/+21
|
* Expand f_abs to use particular functions directlyNobuyoshi Nakada2019-07-141-1/+18
|
* Removed binop macro which has not been usedNobuyoshi Nakada2019-07-141-7/+0
|