Takashi Kokubun
344c16eba4
Avoid using a weird syntax for documentation
...
Following up 465bd972ec
.
If the actual implementation still resides in C, it should be
documented in C just like all other places.
2023-01-30 13:18:19 -08:00
Nobuyoshi Nakada
71ce7e1825
[Bug #19335 ] `Integer#remainder` should respect `#coerce` ( #7120 )
...
Also `Numeric#remainder` should.
2023-01-15 13:03:27 +09:00
Kenta Murata
9f2378959e
numeric.c: Fix round_half_even for specific values ( #7023 )
...
Handle the integert and the float parts separately in round_half_even
to prevent error occursions in floating point calculation.
2022-12-26 21:02:47 +09:00
S-H-GAMELINKS
1f4f6c9832
Using UNDEF_P macro
2022-11-16 18:58:33 +09:00
Nobuyoshi Nakada
5ccb625fbb
Use `roomof` macro for rounding up divisions
2022-10-14 19:23:25 +09:00
Kouhei Yanagita
803a072630
Improve performance of Integer#ceildiv
...
This patch is suggested by nobu.
Benchmark result:
```
require 'benchmark'
n = 10 ** 7
Benchmark.bm do |x|
x.report("Fixnum/Fixnum") { a, b = 5, 2; n.times { a.ceildiv(b) } }
x.report("Bignum/Bignum") { a, b = 10**100, 10**99 - 1; n.times { a.ceildiv(b) } }
x.report("Bignum/Fixnum") { a, b = 10**100, 3; n.times { a.ceildiv(b) } }
end
```
Original:
```
user system total real
Fixnum/Fixnum 3.340009 0.043029 3.383038 ( 3.384022)
Bignum/Bignum 8.229500 0.118543 8.348043 ( 8.349574)
Bignum/Fixnum 8.328971 0.097842 8.426813 ( 8.426952)
```
Improved:
```
user system total real
Fixnum/Fixnum 0.699140 0.000961 0.700101 ( 0.700199)
Bignum/Bignum 5.076165 0.083160 5.159325 ( 5.159360)
Bignum/Fixnum 5.548684 0.115372 5.664056 ( 5.666735)
```
2022-08-12 15:57:52 +09:00
Kouhei Yanagita
24e33b84b5
Remove Numeric#ceildiv
2022-08-12 15:57:52 +09:00
Kouhei Yanagita
4165fd0e76
Add Numeric#ceildiv and Integer#ceildiv
2022-08-12 15:57:52 +09:00
Takashi Kokubun
5b21e94beb
Expand tabs [ci skip]
...
[Misc #18891 ]
2022-07-21 09:42:04 -07:00
Kouhei Yanagita
a4721ec6cd
[DOC] Fix documentation of Numeric#div: Complex does not have #div
2022-06-03 14:35:47 +09:00
Kouhei Yanagita
8b4d2a5014
[DIC] Fix typo in documentation
2022-05-27 20:18:54 +09:00
Grant Hutchins
59c81274aa
Use correct capitalization of "NaN" in docs
2022-04-13 15:44:36 -04:00
Nobuyoshi Nakada
300f4677c9
[DOC] Use simple references to operator methods
...
Method references is not only able to be marked up as code, also
reflects `--show-hash` option.
The bug that prevented the old rdoc from correctly parsing these
methods was fixed last month.
2022-03-26 21:13:16 +09:00
Burdette Lamar
7f93b7dc88
[DOC] Fix formatting for What's Here in IO ( #5719 )
...
* Fix formatting for What's Here in IO
* Repair formatting in What's Heres in numeric.c
* Fix formatting for What's Here in IO
2022-03-25 15:43:46 -05:00
Koichi ITO
045ab1d056
[DOC] Fix a typo in `Integer#chr` example
...
The current example raises the following error.
```ruby
0..chr # => undefined local variable or method `chr' for main:Object (NameError)
```
This PR updates the example to produce the expected behavior.
```ruby
0.chr # => "\x00"
```
2022-02-13 15:48:01 +09:00
Nobuyoshi Nakada
50c972a1ae
[DOC] Simplify operator method references
2022-02-12 12:38:36 +09:00
Nobuyoshi Nakada
16fdc1ff46
[DOC] Fix broken links to literals.rdoc
2022-02-08 01:27:52 +09:00
Nobuyoshi Nakada
bc5662d9d8
[DOC] Simplify links to global methods
2022-02-08 01:18:56 +09:00
Peter Zhu
a32e5e1b97
[DOC] Use RDoc link style for links in the same class/module
...
I used this regex:
(?<=\[)#(?:class|module)-([A-Za-z]+)-label-([A-Za-z0-9\-\+]+)
And performed a global find & replace for this:
rdoc-ref:$1@$2
2022-02-07 09:52:06 -05:00
Peter Zhu
f9a2802bc5
[DOC] Use RDoc link style for links to other classes/modules
...
I used this regex:
([A-Za-z]+)\.html#(?:class|module)-[A-Za-z]+-label-([A-Za-z0-9\-\+]+)
And performed a global find & replace for this:
rdoc-ref:$1@$2
2022-02-07 09:52:06 -05:00
Nobuyoshi Nakada
6a6227e016
Shifting zero always results in zero [Bug #18517 ]
2022-01-27 14:00:33 +09:00
Nobuyoshi Nakada
069cca6f74
Negative RBOOL usage
2022-01-01 17:02:04 +09:00
Nobuyoshi Nakada
77ee47188e
Make the internal predict `int_zero_p` return a bool
2022-01-01 17:01:40 +09:00
Nobuyoshi Nakada
40e7aefeba
Remove obsolete Fixnum and Bignum
2021-12-28 18:35:03 +09:00
Nobuyoshi Nakada
454b4da763
[DOC] Integer.try_convert [ci skip]
2021-12-08 17:59:16 +09:00
Burdette Lamar
28fb6d6b9e
Adding links to literals and Kernel ( #5192 )
...
* Adding links to literals and Kernel
2021-12-03 07:12:28 -06:00
Jeremy Evans
fe1725236c
Don't call + and < in Integer.times for !FIXNUM
...
The methods aren't called for FIXNUM, and it's best to have
consistent behavior.
Fixes [Bug #18377 ]
2021-12-01 16:21:50 -08:00
Burdette Lamar
eac7c63538
Enhanced RDoc for numeric.c ( #5184 )
...
Adds remarks about literals and Kernel methods to Float and Integer.
2021-11-27 13:07:37 -06:00
Burdette Lamar
e469ebd7d3
Correct indentation error in numeric.c ( #5178 )
2021-11-25 13:14:10 -06:00
Burdette Lamar
635efa594a
Whats here for float ( #5170 )
...
* What's Here for Float
2021-11-24 17:44:27 -06:00
Burdette Lamar
9faa599196
Enhanced RDoc for Float#floor ( #5167 )
...
* Enhanced RDoc for Float#floor
* Enhanced RDoc for Float
* Enhanced RDoc for Float
2021-11-24 15:15:12 -06:00
Burdette Lamar
7c3041047e
Enhanced RDoc for Float#prev_float ( #5162 )
...
* Enhanced RDoc for Float#prev_float
2021-11-24 08:34:30 -06:00
Burdette Lamar
df8f858115
Enhanced RDoc for Float#next_float ( #5160 )
...
* Enhanced RDoc for Float#next_float
2021-11-23 15:38:28 -06:00
Burdette Lamar
da832d6c2a
What's Here section for Integer ( #5155 )
...
* What's Here section for Integer
2021-11-22 19:04:25 -06:00
Burdette Lamar
e42f994f6b
Enhanced RDoc for Float ( #5153 )
...
Treats:
#>
#>=
#<
#<=
#eql?
#nan?
#infinite?
#finite?
2021-11-22 14:57:17 -06:00
Burdette Lamar
86ad878e6a
Enhanced RDoc for Float ( #5150 )
...
Treated (or previously treated):
#quo
#%
#divmod
#**`
#eql?
#<=>
#==
#hash
2021-11-20 17:21:30 -06:00
Burdette Lamar
e0c38742a2
Enhanced RDoc for Float ( #5144 )
...
Treats:
#to_s
#coerce
#+
#-
#*
#/
2021-11-19 12:16:16 -06:00
Jeremy Evans
b08dacfea3
Optimize dynamic string interpolation for symbol/true/false/nil/0-9
...
This provides a significant speedup for symbol, true, false,
nil, and 0-9, class/module, and a small speedup in most other cases.
Speedups (using included benchmarks):
:symbol :: 60%
0-9 :: 50%
Class/Module :: 50%
nil/true/false :: 20%
integer :: 10%
[] :: 10%
"" :: 3%
One reason this approach is faster is it reduces the number of
VM instructions for each interpolated value.
Initial idea, approach, and benchmarks from Eric Wong. I applied
the same approach against the master branch, updating it to handle
the significant internal changes since this was first proposed 4
years ago (such as CALL_INFO/CALL_CACHE -> CALL_DATA). I also
expanded it to optimize true/false/nil/0-9/class/module, and added
handling of missing methods, refined methods, and RUBY_DEBUG.
This renames the tostring insn to anytostring, and adds an
objtostring insn that implements the optimization. This requires
making a few functions non-static, and adding some non-static
functions.
This disables 4 YJIT tests. Those tests should be reenabled after
YJIT optimizes the new objtostring insn.
Implements [Feature #13715 ]
Co-authored-by: Eric Wong <e@80x24.org>
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
Co-authored-by: Koichi Sasada <ko1@atdot.net>
2021-11-18 15:10:20 -08:00
Burdette Lamar
f3dcb4bbf7
Enhanced RDoc for Integer ( #5139 )
...
Treats:
#<<
#>>
#to_s
2021-11-18 08:28:04 -06:00
Burdette Lamar
cb69c19e8a
Enhanced RDoc for Integer ( #5138 )
...
Treats:
#times
#round
#floor
#ceil
#truncate
::sqrt
2021-11-17 16:00:50 -06:00
Burdette Lamar
4acac918f4
Enhanced RDoc for Integer ( #5134 )
...
Treated:
#==
#<=>
#<
#<=
#>
#>=
#&
#|
#^
2021-11-17 12:51:32 -06:00
Burdette Lamar
d8d5488631
Enhanced RDoc for Integer ( #5120 )
...
Treated:
#+
#-
#*
#fdiv
#/
#div
#**
#[]
#digits
#upto
#downto
2021-11-16 13:42:05 -06:00
Burdette Lamar
f31b7f0522
Enhanced RDoc for Integer ( #5118 )
...
Treats:
#allbits?
#anybits?
#nobits?
#succ
#pred
#chr`
#to_s
#+
#-
2021-11-15 13:52:23 -06:00
Yusuke Endoh
15bc1ae41e
Revert "Enhanced RDoc for Integer ( #5099 )"
...
This reverts commit fc456adc6a
.
It broke the CI check.
https://github.com/ruby/ruby/runs/4207922247?check_suite_focus=true#step:3:4
```
numeric.c:3518: * 255.chr(Encoding::UTF_8) # => "ÿ"
Error: Process completed with exit code 1.
```
2021-11-15 14:50:03 +09:00
Burdette Lamar
fc456adc6a
Enhanced RDoc for Integer ( #5099 )
...
Treats:
#allbits?
#anybits?
#nobits?
#succ
#pred
#chr`
#to_s
#+
#-
2021-11-13 14:48:57 -06:00
Nobuyoshi Nakada
7cc4e147fc
Get rid of implicit expansion to `long double` on ix86
2021-11-08 18:35:22 +09:00
Burdette Lamar
f8bbd608c9
Enhanced RDoc for Numeric ( #4994 )
...
Treats:
#eql?
#<+>
#floor
#ceil
#round
#truncate
#step
2021-10-28 15:11:11 -05:00
Nobuyoshi Nakada
26353c75a9
Embed bare `double` if `sizeof(double) == sizeof(VALUE)`
2021-10-27 02:05:06 +09:00
Nobuyoshi Nakada
e3a783b141
Align `RFloat` at VALUE boundary
2021-10-27 02:05:06 +09:00
Nobuyoshi Nakada
afdca0e780
Fix unaligned access to `double` in RFloat
2021-10-26 20:17:00 +09:00