Граф коммитов

851 Коммитов

Автор SHA1 Сообщение Дата
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
Burdette Lamar 3e96b94eba
Enhanced RDoc for Numeric (#4991)
Treated:

    #@-
    #fdiv
    #div
    #abs
    #zero?
    #nonzero?
    #to_int
    #positive?
    #negative?
2021-10-19 12:00:22 -05:00
Burdette Lamar 012cafa5c7
Enhanced RDoc for numerics (#4982)
Treats:

    Numeric#coerce
    Numeric#clone
    Numeric#dup
    Numeric#@+ (unary plus)
    Numeric#i
    Float#coerce
2021-10-18 18:35:06 -05:00
Burdette Lamar 5d975684da
Enhanced RDoc for remainder (#4975)
Treats Numeric#remainder and Integer#remainder.
2021-10-15 16:20:52 -05:00
Burdette Lamar 37ea909f42
Enhanced RDoc for divmod (#4973)
Treats:

    Integer#divmod
    Float#divmod
    Numeric#divmod
2021-10-15 12:51:37 -05:00
Burdette Lamar 2043c2e7e4
Enhanced RDoc for numeric.c (#4964)
Treats Integer#% and Float#%.
2021-10-15 11:57:49 -05:00