rbs 4.0.0.dev.4 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +14 -14
- data/.github/workflows/bundle-update.yml +60 -0
- data/.github/workflows/c-check.yml +18 -11
- data/.github/workflows/comments.yml +5 -3
- data/.github/workflows/dependabot.yml +2 -2
- data/.github/workflows/ruby.yml +27 -34
- data/.github/workflows/rust.yml +95 -0
- data/.github/workflows/typecheck.yml +2 -2
- data/.github/workflows/windows.yml +2 -2
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +323 -0
- data/README.md +1 -1
- data/Rakefile +43 -33
- data/Steepfile +1 -0
- data/config.yml +426 -24
- data/core/array.rbs +307 -227
- data/core/basic_object.rbs +9 -8
- data/core/binding.rbs +0 -2
- data/core/builtin.rbs +2 -2
- data/core/class.rbs +6 -5
- data/core/comparable.rbs +55 -34
- data/core/complex.rbs +104 -78
- data/core/dir.rbs +61 -49
- data/core/encoding.rbs +12 -15
- data/core/enumerable.rbs +179 -87
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator.rbs +65 -2
- data/core/errno.rbs +11 -2
- data/core/errors.rbs +58 -29
- data/core/exception.rbs +13 -13
- data/core/fiber.rbs +74 -54
- data/core/file.rbs +280 -177
- data/core/file_test.rbs +3 -3
- data/core/float.rbs +257 -92
- data/core/gc.rbs +425 -281
- data/core/hash.rbs +1045 -739
- data/core/integer.rbs +135 -137
- data/core/io/buffer.rbs +53 -42
- data/core/io/wait.rbs +13 -35
- data/core/io.rbs +192 -144
- data/core/kernel.rbs +216 -155
- data/core/marshal.rbs +4 -4
- data/core/match_data.rbs +15 -13
- data/core/math.rbs +107 -66
- data/core/method.rbs +69 -33
- data/core/module.rbs +244 -106
- data/core/nil_class.rbs +7 -6
- data/core/numeric.rbs +74 -63
- data/core/object.rbs +9 -11
- data/core/object_space.rbs +30 -23
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +95 -58
- data/core/process.rbs +222 -202
- data/core/ractor.rbs +371 -515
- data/core/random.rbs +21 -3
- data/core/range.rbs +159 -57
- data/core/rational.rbs +60 -89
- data/core/rbs/unnamed/argf.rbs +60 -53
- data/core/rbs/unnamed/env_class.rbs +19 -14
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +11 -118
- data/core/regexp.rbs +258 -214
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +38 -34
- data/core/rubygems/config_file.rbs +5 -5
- data/core/rubygems/errors.rbs +4 -71
- data/core/rubygems/requirement.rbs +5 -5
- data/core/rubygems/rubygems.rbs +16 -82
- data/core/rubygems/version.rbs +2 -3
- data/core/set.rbs +490 -360
- data/core/signal.rbs +26 -16
- data/core/string.rbs +3234 -1285
- data/core/struct.rbs +27 -26
- data/core/symbol.rbs +41 -34
- data/core/thread.rbs +135 -67
- data/core/time.rbs +81 -50
- data/core/trace_point.rbs +41 -35
- data/core/true_class.rbs +2 -2
- data/core/unbound_method.rbs +24 -16
- data/core/warning.rbs +7 -7
- data/docs/aliases.md +79 -0
- data/docs/collection.md +3 -3
- data/docs/config.md +171 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +0 -1
- data/docs/inline.md +576 -0
- data/docs/sigs.md +3 -3
- data/docs/syntax.md +46 -16
- data/docs/type_fingerprint.md +21 -0
- data/exe/rbs +1 -1
- data/ext/rbs_extension/ast_translation.c +544 -116
- data/ext/rbs_extension/ast_translation.h +3 -0
- data/ext/rbs_extension/class_constants.c +16 -2
- data/ext/rbs_extension/class_constants.h +8 -0
- data/ext/rbs_extension/extconf.rb +5 -1
- data/ext/rbs_extension/legacy_location.c +33 -56
- data/ext/rbs_extension/legacy_location.h +37 -0
- data/ext/rbs_extension/main.c +44 -35
- data/include/rbs/ast.h +448 -173
- data/include/rbs/defines.h +27 -0
- data/include/rbs/lexer.h +30 -11
- data/include/rbs/location.h +25 -44
- data/include/rbs/parser.h +6 -6
- data/include/rbs/string.h +0 -2
- data/include/rbs/util/rbs_allocator.h +34 -13
- data/include/rbs/util/rbs_assert.h +12 -1
- data/include/rbs/util/rbs_constant_pool.h +0 -3
- data/include/rbs/util/rbs_encoding.h +2 -0
- data/include/rbs/util/rbs_unescape.h +2 -1
- data/include/rbs.h +8 -0
- data/lib/rbs/ast/annotation.rb +1 -1
- data/lib/rbs/ast/comment.rb +1 -1
- data/lib/rbs/ast/declarations.rb +10 -10
- data/lib/rbs/ast/members.rb +14 -14
- data/lib/rbs/ast/ruby/annotations.rb +293 -3
- data/lib/rbs/ast/ruby/comment_block.rb +24 -0
- data/lib/rbs/ast/ruby/declarations.rb +198 -3
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +4 -0
- data/lib/rbs/ast/ruby/members.rb +532 -22
- data/lib/rbs/ast/type_param.rb +24 -4
- data/lib/rbs/buffer.rb +20 -15
- data/lib/rbs/cli/diff.rb +16 -15
- data/lib/rbs/cli/validate.rb +38 -106
- data/lib/rbs/cli.rb +52 -19
- data/lib/rbs/collection/config/lockfile_generator.rb +14 -2
- data/lib/rbs/collection/sources/git.rb +1 -0
- data/lib/rbs/definition.rb +1 -1
- data/lib/rbs/definition_builder/ancestor_builder.rb +62 -9
- data/lib/rbs/definition_builder/method_builder.rb +20 -0
- data/lib/rbs/definition_builder.rb +147 -25
- data/lib/rbs/diff.rb +7 -1
- data/lib/rbs/environment.rb +227 -74
- data/lib/rbs/environment_loader.rb +0 -6
- data/lib/rbs/errors.rb +27 -18
- data/lib/rbs/inline_parser.rb +342 -6
- data/lib/rbs/location_aux.rb +1 -1
- data/lib/rbs/locator.rb +5 -1
- data/lib/rbs/method_type.rb +5 -3
- data/lib/rbs/parser_aux.rb +20 -7
- data/lib/rbs/prototype/helpers.rb +57 -0
- data/lib/rbs/prototype/rb.rb +3 -28
- data/lib/rbs/prototype/rbi.rb +3 -20
- data/lib/rbs/prototype/runtime.rb +8 -0
- data/lib/rbs/resolver/constant_resolver.rb +2 -2
- data/lib/rbs/resolver/type_name_resolver.rb +116 -38
- data/lib/rbs/subtractor.rb +3 -1
- data/lib/rbs/test/type_check.rb +19 -2
- data/lib/rbs/type_name.rb +1 -1
- data/lib/rbs/types.rb +88 -78
- data/lib/rbs/unit_test/type_assertions.rb +35 -8
- data/lib/rbs/validator.rb +2 -2
- data/lib/rbs/version.rb +1 -1
- data/lib/rbs.rb +1 -2
- data/lib/rdoc/discover.rb +1 -1
- data/lib/rdoc_plugin/parser.rb +1 -1
- data/rbs.gemspec +4 -3
- data/rust/.gitignore +1 -0
- data/rust/Cargo.lock +378 -0
- data/rust/Cargo.toml +7 -0
- data/rust/ruby-rbs/Cargo.toml +22 -0
- data/rust/ruby-rbs/build.rs +764 -0
- data/rust/ruby-rbs/examples/locations.rs +60 -0
- data/rust/ruby-rbs/src/lib.rs +1 -0
- data/rust/ruby-rbs/src/node/mod.rs +742 -0
- data/rust/ruby-rbs/tests/sanity.rs +47 -0
- data/rust/ruby-rbs/vendor/rbs/config.yml +1 -0
- data/rust/ruby-rbs-sys/Cargo.toml +23 -0
- data/rust/ruby-rbs-sys/build.rs +204 -0
- data/rust/ruby-rbs-sys/src/lib.rs +50 -0
- data/rust/ruby-rbs-sys/vendor/rbs/include +1 -0
- data/rust/ruby-rbs-sys/vendor/rbs/src +1 -0
- data/rust/ruby-rbs-sys/wrapper.h +1 -0
- data/schema/typeParam.json +17 -1
- data/sig/ast/ruby/annotations.rbs +315 -4
- data/sig/ast/ruby/comment_block.rbs +8 -0
- data/sig/ast/ruby/declarations.rbs +102 -4
- data/sig/ast/ruby/members.rbs +108 -2
- data/sig/cli/diff.rbs +5 -11
- data/sig/cli/validate.rbs +12 -8
- data/sig/cli.rbs +18 -18
- data/sig/definition.rbs +6 -1
- data/sig/definition_builder.rbs +2 -0
- data/sig/environment.rbs +70 -12
- data/sig/errors.rbs +13 -14
- data/sig/inline_parser.rbs +39 -2
- data/sig/locator.rbs +0 -2
- data/sig/manifest.yaml +0 -1
- data/sig/method_builder.rbs +3 -1
- data/sig/parser.rbs +31 -13
- data/sig/prototype/helpers.rbs +2 -0
- data/sig/resolver/type_name_resolver.rbs +35 -7
- data/sig/source.rbs +3 -3
- data/sig/type_param.rbs +13 -8
- data/sig/types.rbs +6 -7
- data/sig/unit_test/spy.rbs +0 -8
- data/sig/unit_test/type_assertions.rbs +11 -0
- data/src/ast.c +410 -153
- data/src/lexer.c +1392 -1313
- data/src/lexer.re +3 -0
- data/src/lexstate.c +58 -37
- data/src/location.c +8 -48
- data/src/parser.c +977 -516
- data/src/string.c +0 -48
- data/src/util/rbs_allocator.c +89 -71
- data/src/util/rbs_assert.c +1 -1
- data/src/util/rbs_buffer.c +2 -2
- data/src/util/rbs_constant_pool.c +10 -14
- data/src/util/rbs_encoding.c +4 -8
- data/src/util/rbs_unescape.c +56 -20
- data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
- data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
- data/stdlib/cgi/0/core.rbs +9 -393
- data/stdlib/cgi/0/manifest.yaml +1 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +7 -4
- data/stdlib/date/0/date.rbs +92 -79
- data/stdlib/date/0/date_time.rbs +25 -24
- data/stdlib/delegate/0/delegator.rbs +10 -7
- data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
- data/stdlib/digest/0/digest.rbs +110 -0
- data/stdlib/erb/0/erb.rbs +748 -347
- data/stdlib/etc/0/etc.rbs +55 -50
- data/stdlib/fileutils/0/fileutils.rbs +158 -139
- data/stdlib/forwardable/0/forwardable.rbs +13 -10
- data/stdlib/io-console/0/io-console.rbs +2 -2
- data/stdlib/json/0/json.rbs +217 -136
- data/stdlib/monitor/0/monitor.rbs +3 -3
- data/stdlib/net-http/0/net-http.rbs +162 -134
- data/stdlib/objspace/0/objspace.rbs +17 -34
- data/stdlib/open-uri/0/open-uri.rbs +48 -8
- data/stdlib/open3/0/open3.rbs +469 -10
- data/stdlib/openssl/0/openssl.rbs +475 -357
- data/stdlib/optparse/0/optparse.rbs +26 -17
- data/stdlib/pathname/0/pathname.rbs +11 -1381
- data/stdlib/pp/0/pp.rbs +9 -8
- data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
- data/stdlib/pstore/0/pstore.rbs +35 -30
- data/stdlib/psych/0/psych.rbs +65 -12
- data/stdlib/psych/0/store.rbs +2 -4
- data/stdlib/pty/0/pty.rbs +9 -6
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +2 -1
- data/stdlib/rdoc/0/parser.rbs +1 -1
- data/stdlib/rdoc/0/rdoc.rbs +1 -1
- data/stdlib/rdoc/0/store.rbs +1 -1
- data/stdlib/resolv/0/resolv.rbs +25 -68
- data/stdlib/ripper/0/ripper.rbs +22 -19
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +7 -20
- data/stdlib/shellwords/0/shellwords.rbs +2 -2
- data/stdlib/singleton/0/singleton.rbs +3 -0
- data/stdlib/socket/0/addrinfo.rbs +7 -7
- data/stdlib/socket/0/basic_socket.rbs +3 -3
- data/stdlib/socket/0/ip_socket.rbs +10 -8
- data/stdlib/socket/0/socket.rbs +23 -10
- data/stdlib/socket/0/tcp_server.rbs +1 -1
- data/stdlib/socket/0/tcp_socket.rbs +11 -3
- data/stdlib/socket/0/udp_socket.rbs +1 -1
- data/stdlib/socket/0/unix_server.rbs +1 -1
- data/stdlib/stringio/0/stringio.rbs +1177 -85
- data/stdlib/strscan/0/string_scanner.rbs +27 -25
- data/stdlib/tempfile/0/tempfile.rbs +25 -21
- data/stdlib/time/0/time.rbs +8 -6
- data/stdlib/timeout/0/timeout.rbs +63 -7
- data/stdlib/tsort/0/cyclic.rbs +3 -0
- data/stdlib/tsort/0/tsort.rbs +7 -6
- data/stdlib/uri/0/common.rbs +42 -20
- data/stdlib/uri/0/file.rbs +3 -3
- data/stdlib/uri/0/generic.rbs +26 -18
- data/stdlib/uri/0/http.rbs +2 -2
- data/stdlib/uri/0/ldap.rbs +2 -2
- data/stdlib/uri/0/mailto.rbs +3 -3
- data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
- data/stdlib/zlib/0/deflate.rbs +4 -3
- data/stdlib/zlib/0/gzip_reader.rbs +6 -6
- data/stdlib/zlib/0/gzip_writer.rbs +14 -12
- data/stdlib/zlib/0/inflate.rbs +1 -1
- data/stdlib/zlib/0/need_dict.rbs +1 -1
- data/stdlib/zlib/0/zstream.rbs +1 -0
- metadata +50 -6
data/core/complex.rbs
CHANGED
|
@@ -79,17 +79,19 @@
|
|
|
79
79
|
# * #arg (and its aliases #angle and #phase): Returns the argument (angle) for
|
|
80
80
|
# `self` in radians.
|
|
81
81
|
# * #denominator: Returns the denominator of `self`.
|
|
82
|
-
# * #finite?: Returns whether both
|
|
82
|
+
# * #finite?: Returns whether both <code>self.real</code> and
|
|
83
|
+
# <code>self.image</code> are finite.
|
|
83
84
|
# * #hash: Returns the integer hash value for `self`.
|
|
84
85
|
# * #imag (and its alias #imaginary): Returns the imaginary value for `self`.
|
|
85
|
-
# * #infinite?: Returns whether
|
|
86
|
+
# * #infinite?: Returns whether <code>self.real</code> or
|
|
87
|
+
# <code>self.image</code> is infinite.
|
|
86
88
|
# * #numerator: Returns the numerator of `self`.
|
|
87
|
-
# * #polar: Returns the array
|
|
89
|
+
# * #polar: Returns the array <code>[self.abs, self.arg]</code>.
|
|
88
90
|
# * #inspect: Returns a string representation of `self`.
|
|
89
91
|
# * #real: Returns the real value for `self`.
|
|
90
92
|
# * #real?: Returns `false`; for compatibility with Numeric#real?.
|
|
91
|
-
# * #rect (and its alias #rectangular): Returns the array
|
|
92
|
-
# self.imag]
|
|
93
|
+
# * #rect (and its alias #rectangular): Returns the array <code>[self.real,
|
|
94
|
+
# self.imag]</code>.
|
|
93
95
|
#
|
|
94
96
|
# ### Comparing
|
|
95
97
|
#
|
|
@@ -100,12 +102,15 @@
|
|
|
100
102
|
# ### Converting
|
|
101
103
|
#
|
|
102
104
|
# * #rationalize: Returns a Rational object whose value is exactly or
|
|
103
|
-
# approximately equivalent to that of
|
|
105
|
+
# approximately equivalent to that of <code>self.real</code>.
|
|
104
106
|
# * #to_c: Returns `self`.
|
|
105
107
|
# * #to_d: Returns the value as a BigDecimal object.
|
|
106
|
-
# * #to_f: Returns the value of
|
|
107
|
-
#
|
|
108
|
-
# * #
|
|
108
|
+
# * #to_f: Returns the value of <code>self.real</code> as a Float, if
|
|
109
|
+
# possible.
|
|
110
|
+
# * #to_i: Returns the value of <code>self.real</code> as an Integer, if
|
|
111
|
+
# possible.
|
|
112
|
+
# * #to_r: Returns the value of <code>self.real</code> as a Rational, if
|
|
113
|
+
# possible.
|
|
109
114
|
# * #to_s: Returns a string representation of `self`.
|
|
110
115
|
#
|
|
111
116
|
# ### Performing Complex Arithmetic
|
|
@@ -118,7 +123,8 @@
|
|
|
118
123
|
# * #/: Returns the quotient of `self` and the given numeric.
|
|
119
124
|
# * #abs2: Returns square of the absolute value (magnitude) for `self`.
|
|
120
125
|
# * #conj (and its alias #conjugate): Returns the conjugate of `self`.
|
|
121
|
-
# * #fdiv: Returns
|
|
126
|
+
# * #fdiv: Returns <code>Complex.rect(self.real/numeric,
|
|
127
|
+
# self.imag/numeric)</code>.
|
|
122
128
|
#
|
|
123
129
|
# ### Working with JSON
|
|
124
130
|
#
|
|
@@ -184,23 +190,24 @@ class Complex < Numeric
|
|
|
184
190
|
|
|
185
191
|
# <!--
|
|
186
192
|
# rdoc-file=complex.c
|
|
187
|
-
# -
|
|
193
|
+
# - self * other -> numeric
|
|
188
194
|
# -->
|
|
189
|
-
# Returns the product of `self` and `
|
|
195
|
+
# Returns the numeric product of `self` and `other`:
|
|
190
196
|
#
|
|
197
|
+
# Complex.rect(9, 8) * 4 # => (36+32i)
|
|
198
|
+
# Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
|
|
191
199
|
# Complex.rect(2, 3) * Complex.rect(2, 3) # => (-5+12i)
|
|
192
200
|
# Complex.rect(900) * Complex.rect(1) # => (900+0i)
|
|
193
201
|
# Complex.rect(-2, 9) * Complex.rect(-9, 2) # => (0-85i)
|
|
194
|
-
# Complex.rect(9, 8) *
|
|
195
|
-
# Complex.rect(20, 9) * 9.8 # => (196.0+88.2i)
|
|
202
|
+
# Complex.rect(9, 8) * Rational(2, 3) # => ((6/1)+(16/3)*i)
|
|
196
203
|
#
|
|
197
204
|
def *: (Numeric) -> Complex
|
|
198
205
|
|
|
199
206
|
# <!--
|
|
200
207
|
# rdoc-file=complex.c
|
|
201
|
-
# -
|
|
208
|
+
# - self ** exponent -> complex
|
|
202
209
|
# -->
|
|
203
|
-
# Returns `self` raised to power `
|
|
210
|
+
# Returns `self` raised to the power `exponent`:
|
|
204
211
|
#
|
|
205
212
|
# Complex.rect(0, 1) ** 2 # => (-1+0i)
|
|
206
213
|
# Complex.rect(-8) ** Rational(1, 3) # => (1.0000000000000002+1.7320508075688772i)
|
|
@@ -209,25 +216,33 @@ class Complex < Numeric
|
|
|
209
216
|
|
|
210
217
|
# <!--
|
|
211
218
|
# rdoc-file=complex.c
|
|
212
|
-
# -
|
|
219
|
+
# - self + other -> numeric
|
|
213
220
|
# -->
|
|
214
|
-
# Returns the sum of `self` and `
|
|
221
|
+
# Returns the sum of `self` and `other`:
|
|
222
|
+
#
|
|
223
|
+
# Complex(1, 2) + 0 # => (1+2i)
|
|
224
|
+
# Complex(1, 2) + 1 # => (2+2i)
|
|
225
|
+
# Complex(1, 2) + -1 # => (0+2i)
|
|
226
|
+
#
|
|
227
|
+
# Complex(1, 2) + 1.0 # => (2.0+2i)
|
|
215
228
|
#
|
|
216
|
-
# Complex
|
|
217
|
-
# Complex
|
|
218
|
-
#
|
|
219
|
-
# Complex
|
|
220
|
-
# Complex
|
|
229
|
+
# Complex(1, 2) + Complex(2, 1) # => (3+3i)
|
|
230
|
+
# Complex(1, 2) + Complex(2.0, 1.0) # => (3.0+3.0i)
|
|
231
|
+
#
|
|
232
|
+
# Complex(1, 2) + Rational(1, 1) # => ((2/1)+2i)
|
|
233
|
+
# Complex(1, 2) + Rational(1, 2) # => ((3/2)+2i)
|
|
234
|
+
#
|
|
235
|
+
# For a computation involving Floats, the result may be inexact (see Float#+):
|
|
236
|
+
#
|
|
237
|
+
# Complex(1, 2) + 3.14 # => (4.140000000000001+2i)
|
|
221
238
|
#
|
|
222
239
|
def +: (Numeric) -> Complex
|
|
223
240
|
|
|
224
|
-
def +@: () -> Complex
|
|
225
|
-
|
|
226
241
|
# <!--
|
|
227
242
|
# rdoc-file=complex.c
|
|
228
|
-
# -
|
|
243
|
+
# - self - other -> complex
|
|
229
244
|
# -->
|
|
230
|
-
# Returns the difference of `self` and `
|
|
245
|
+
# Returns the difference of `self` and `other`:
|
|
231
246
|
#
|
|
232
247
|
# Complex.rect(2, 3) - Complex.rect(2, 3) # => (0+0i)
|
|
233
248
|
# Complex.rect(900) - Complex.rect(1) # => (899+0i)
|
|
@@ -239,9 +254,9 @@ class Complex < Numeric
|
|
|
239
254
|
|
|
240
255
|
# <!--
|
|
241
256
|
# rdoc-file=complex.c
|
|
242
|
-
# - -
|
|
257
|
+
# - -self -> complex
|
|
243
258
|
# -->
|
|
244
|
-
# Returns
|
|
259
|
+
# Returns `self`, negated, which is the negation of each of its parts:
|
|
245
260
|
#
|
|
246
261
|
# -Complex.rect(1, 2) # => (-1-2i)
|
|
247
262
|
# -Complex.rect(-1, -2) # => (1+2i)
|
|
@@ -250,9 +265,9 @@ class Complex < Numeric
|
|
|
250
265
|
|
|
251
266
|
# <!--
|
|
252
267
|
# rdoc-file=complex.c
|
|
253
|
-
# -
|
|
268
|
+
# - self / other -> complex
|
|
254
269
|
# -->
|
|
255
|
-
# Returns the quotient of `self` and `
|
|
270
|
+
# Returns the quotient of `self` and `other`:
|
|
256
271
|
#
|
|
257
272
|
# Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
|
|
258
273
|
# Complex.rect(900) / Complex.rect(1) # => (900+0i)
|
|
@@ -268,15 +283,17 @@ class Complex < Numeric
|
|
|
268
283
|
|
|
269
284
|
# <!--
|
|
270
285
|
# rdoc-file=complex.c
|
|
271
|
-
# -
|
|
286
|
+
# - self <=> other -> -1, 0, 1, or nil
|
|
272
287
|
# -->
|
|
288
|
+
# Compares `self` and `other`.
|
|
289
|
+
#
|
|
273
290
|
# Returns:
|
|
274
291
|
#
|
|
275
|
-
# *
|
|
292
|
+
# * <code>self.real <=> other.real</code> if both of the following are true:
|
|
276
293
|
#
|
|
277
|
-
# *
|
|
278
|
-
# *
|
|
279
|
-
# complex.
|
|
294
|
+
# * <code>self.imag == 0</code>.
|
|
295
|
+
# * <code>other.imag == 0</code> (always true if `other` is numeric but
|
|
296
|
+
# not complex).
|
|
280
297
|
#
|
|
281
298
|
# * `nil` otherwise.
|
|
282
299
|
#
|
|
@@ -289,13 +306,17 @@ class Complex < Numeric
|
|
|
289
306
|
# Complex.rect(1) <=> Complex.rect(1, 1) # => nil # object.imag not zero.
|
|
290
307
|
# Complex.rect(1) <=> 'Foo' # => nil # object.imag not defined.
|
|
291
308
|
#
|
|
309
|
+
# Class Complex includes module Comparable, each of whose methods uses
|
|
310
|
+
# Complex#<=> for comparison.
|
|
311
|
+
#
|
|
292
312
|
def <=>: (untyped) -> Integer?
|
|
293
313
|
|
|
294
314
|
# <!--
|
|
295
315
|
# rdoc-file=complex.c
|
|
296
316
|
# - complex == object -> true or false
|
|
297
317
|
# -->
|
|
298
|
-
# Returns `true` if
|
|
318
|
+
# Returns `true` if <code>self.real == object.real</code> and <code>self.imag ==
|
|
319
|
+
# object.imag</code>:
|
|
299
320
|
#
|
|
300
321
|
# Complex.rect(2, 3) == Complex.rect(2.0, 3.0) # => true
|
|
301
322
|
#
|
|
@@ -375,21 +396,23 @@ class Complex < Numeric
|
|
|
375
396
|
def coerce: (Numeric) -> [ Complex, Complex ]
|
|
376
397
|
|
|
377
398
|
# <!-- rdoc-file=complex.c -->
|
|
378
|
-
# Returns the conjugate of `self`,
|
|
399
|
+
# Returns the conjugate of `self`, <code>Complex.rect(self.imag,
|
|
400
|
+
# self.real)</code>:
|
|
379
401
|
#
|
|
380
402
|
# Complex.rect(1, 2).conj # => (1-2i)
|
|
381
403
|
#
|
|
382
|
-
def conj: () ->
|
|
404
|
+
def conj: () -> self
|
|
383
405
|
|
|
384
406
|
# <!--
|
|
385
407
|
# rdoc-file=complex.c
|
|
386
408
|
# - conj -> complex
|
|
387
409
|
# -->
|
|
388
|
-
# Returns the conjugate of `self`,
|
|
410
|
+
# Returns the conjugate of `self`, <code>Complex.rect(self.imag,
|
|
411
|
+
# self.real)</code>:
|
|
389
412
|
#
|
|
390
413
|
# Complex.rect(1, 2).conj # => (1-2i)
|
|
391
414
|
#
|
|
392
|
-
def conjugate: () ->
|
|
415
|
+
def conjugate: () -> self
|
|
393
416
|
|
|
394
417
|
# <!--
|
|
395
418
|
# rdoc-file=complex.c
|
|
@@ -397,11 +420,11 @@ class Complex < Numeric
|
|
|
397
420
|
# -->
|
|
398
421
|
# Returns the denominator of `self`, which is the [least common
|
|
399
422
|
# multiple](https://en.wikipedia.org/wiki/Least_common_multiple) of
|
|
400
|
-
#
|
|
423
|
+
# <code>self.real.denominator</code> and <code>self.imag.denominator</code>:
|
|
401
424
|
#
|
|
402
425
|
# Complex.rect(Rational(1, 2), Rational(2, 3)).denominator # => 6
|
|
403
426
|
#
|
|
404
|
-
# Note that
|
|
427
|
+
# Note that <code>n.denominator</code> of a non-rational numeric is `1`.
|
|
405
428
|
#
|
|
406
429
|
# Related: Complex#numerator.
|
|
407
430
|
#
|
|
@@ -411,15 +434,11 @@ class Complex < Numeric
|
|
|
411
434
|
|
|
412
435
|
def divmod: (Numeric) -> bot
|
|
413
436
|
|
|
414
|
-
def dup: () -> self
|
|
415
|
-
|
|
416
|
-
def eql?: (untyped) -> bool
|
|
417
|
-
|
|
418
437
|
# <!--
|
|
419
438
|
# rdoc-file=complex.c
|
|
420
439
|
# - fdiv(numeric) -> new_complex
|
|
421
440
|
# -->
|
|
422
|
-
# Returns
|
|
441
|
+
# Returns <code>Complex.rect(self.real/numeric, self.imag/numeric)</code>:
|
|
423
442
|
#
|
|
424
443
|
# Complex.rect(11, 22).fdiv(3) # => (3.6666666666666665+7.333333333333333i)
|
|
425
444
|
#
|
|
@@ -429,8 +448,8 @@ class Complex < Numeric
|
|
|
429
448
|
# rdoc-file=complex.c
|
|
430
449
|
# - finite? -> true or false
|
|
431
450
|
# -->
|
|
432
|
-
# Returns `true` if both
|
|
433
|
-
# `false` otherwise:
|
|
451
|
+
# Returns `true` if both <code>self.real.finite?</code> and
|
|
452
|
+
# <code>self.imag.finite?</code> are true, `false` otherwise:
|
|
434
453
|
#
|
|
435
454
|
# Complex.rect(1, 1).finite? # => true
|
|
436
455
|
# Complex.rect(Float::INFINITY, 0).finite? # => false
|
|
@@ -454,6 +473,19 @@ class Complex < Numeric
|
|
|
454
473
|
#
|
|
455
474
|
def hash: () -> Integer
|
|
456
475
|
|
|
476
|
+
# <!--
|
|
477
|
+
# rdoc-file=numeric.c
|
|
478
|
+
# - i -> complex
|
|
479
|
+
# -->
|
|
480
|
+
# Returns <code>Complex(0, self)</code>:
|
|
481
|
+
#
|
|
482
|
+
# 2.i # => (0+2i)
|
|
483
|
+
# -2.i # => (0-2i)
|
|
484
|
+
# 2.0.i # => (0+2.0i)
|
|
485
|
+
# Rational(1, 2).i # => (0+(1/2)*i)
|
|
486
|
+
# Complex(3, 4).i # Raises NoMethodError.
|
|
487
|
+
#
|
|
488
|
+
%a{annotate:rdoc:copy:Numeric#i}
|
|
457
489
|
def i: () -> bot
|
|
458
490
|
|
|
459
491
|
# <!-- rdoc-file=complex.c -->
|
|
@@ -491,8 +523,8 @@ class Complex < Numeric
|
|
|
491
523
|
# rdoc-file=complex.c
|
|
492
524
|
# - infinite? -> 1 or nil
|
|
493
525
|
# -->
|
|
494
|
-
# Returns `1` if either
|
|
495
|
-
# `nil` otherwise:
|
|
526
|
+
# Returns `1` if either <code>self.real.infinite?</code> or
|
|
527
|
+
# <code>self.imag.infinite?</code> is true, `nil` otherwise:
|
|
496
528
|
#
|
|
497
529
|
# Complex.rect(Float::INFINITY, 0).infinite? # => 1
|
|
498
530
|
# Complex.rect(1, 1).infinite? # => nil
|
|
@@ -515,8 +547,6 @@ class Complex < Numeric
|
|
|
515
547
|
#
|
|
516
548
|
def inspect: () -> String
|
|
517
549
|
|
|
518
|
-
def integer?: () -> bool
|
|
519
|
-
|
|
520
550
|
# <!-- rdoc-file=complex.c -->
|
|
521
551
|
# Returns the absolute value (magnitude) for `self`; see [polar
|
|
522
552
|
# coordinates](rdoc-ref:Complex@Polar+Coordinates):
|
|
@@ -535,8 +565,6 @@ class Complex < Numeric
|
|
|
535
565
|
|
|
536
566
|
def negative?: () -> bot
|
|
537
567
|
|
|
538
|
-
def nonzero?: () -> self?
|
|
539
|
-
|
|
540
568
|
# <!--
|
|
541
569
|
# rdoc-file=complex.c
|
|
542
570
|
# - numerator -> new_complex
|
|
@@ -552,7 +580,7 @@ class Complex < Numeric
|
|
|
552
580
|
# In this example, the lowest common denominator of the two parts is 12; the two
|
|
553
581
|
# converted parts may be thought of as Rational(8, 12) and Rational(9, 12),
|
|
554
582
|
# whose numerators, respectively, are 8 and 9; so the returned value of
|
|
555
|
-
#
|
|
583
|
+
# <code>c.numerator</code> is <code>Complex.rect(8, 9)</code>.
|
|
556
584
|
#
|
|
557
585
|
# Related: Complex#denominator.
|
|
558
586
|
#
|
|
@@ -576,7 +604,7 @@ class Complex < Numeric
|
|
|
576
604
|
# rdoc-file=complex.c
|
|
577
605
|
# - polar -> array
|
|
578
606
|
# -->
|
|
579
|
-
# Returns the array
|
|
607
|
+
# Returns the array <code>[self.abs, self.arg]</code>:
|
|
580
608
|
#
|
|
581
609
|
# Complex.polar(1, 2).polar # => [1.0, 2.0]
|
|
582
610
|
#
|
|
@@ -594,9 +622,9 @@ class Complex < Numeric
|
|
|
594
622
|
|
|
595
623
|
# <!--
|
|
596
624
|
# rdoc-file=complex.c
|
|
597
|
-
# -
|
|
625
|
+
# - self / other -> complex
|
|
598
626
|
# -->
|
|
599
|
-
# Returns the quotient of `self` and `
|
|
627
|
+
# Returns the quotient of `self` and `other`:
|
|
600
628
|
#
|
|
601
629
|
# Complex.rect(2, 3) / Complex.rect(2, 3) # => (1+0i)
|
|
602
630
|
# Complex.rect(900) / Complex.rect(1) # => (900+0i)
|
|
@@ -611,17 +639,18 @@ class Complex < Numeric
|
|
|
611
639
|
# - rationalize(epsilon = nil) -> rational
|
|
612
640
|
# -->
|
|
613
641
|
# Returns a Rational object whose value is exactly or approximately equivalent
|
|
614
|
-
# to that of
|
|
642
|
+
# to that of <code>self.real</code>.
|
|
615
643
|
#
|
|
616
644
|
# With no argument `epsilon` given, returns a Rational object whose value is
|
|
617
|
-
# exactly equal to that of
|
|
645
|
+
# exactly equal to that of <code>self.real.rationalize</code>:
|
|
618
646
|
#
|
|
619
647
|
# Complex.rect(1, 0).rationalize # => (1/1)
|
|
620
648
|
# Complex.rect(1, Rational(0, 1)).rationalize # => (1/1)
|
|
621
649
|
# Complex.rect(3.14159, 0).rationalize # => (314159/100000)
|
|
622
650
|
#
|
|
623
651
|
# With argument `epsilon` given, returns a Rational object whose value is
|
|
624
|
-
# exactly or approximately equal to that of
|
|
652
|
+
# exactly or approximately equal to that of <code>self.real</code> to the given
|
|
653
|
+
# precision:
|
|
625
654
|
#
|
|
626
655
|
# Complex.rect(3.14159, 0).rationalize(0.1) # => (16/5)
|
|
627
656
|
# Complex.rect(3.14159, 0).rationalize(0.01) # => (22/7)
|
|
@@ -682,7 +711,7 @@ class Complex < Numeric
|
|
|
682
711
|
# rdoc-file=complex.c
|
|
683
712
|
# - rect -> array
|
|
684
713
|
# -->
|
|
685
|
-
# Returns the array
|
|
714
|
+
# Returns the array <code>[self.real, self.imag]</code>:
|
|
686
715
|
#
|
|
687
716
|
# Complex.rect(1, 2).rect # => [1, 2]
|
|
688
717
|
#
|
|
@@ -716,13 +745,13 @@ class Complex < Numeric
|
|
|
716
745
|
# rdoc-file=complex.c
|
|
717
746
|
# - to_f -> float
|
|
718
747
|
# -->
|
|
719
|
-
# Returns the value of
|
|
748
|
+
# Returns the value of <code>self.real</code> as a Float, if possible:
|
|
720
749
|
#
|
|
721
750
|
# Complex.rect(1, 0).to_f # => 1.0
|
|
722
751
|
# Complex.rect(1, Rational(0, 1)).to_f # => 1.0
|
|
723
752
|
#
|
|
724
|
-
# Raises RangeError if
|
|
725
|
-
#
|
|
753
|
+
# Raises RangeError if <code>self.imag</code> is not exactly zero (either
|
|
754
|
+
# <code>Integer(0)</code> or <code>Rational(0, _n_)</code>).
|
|
726
755
|
#
|
|
727
756
|
def to_f: () -> Float
|
|
728
757
|
|
|
@@ -730,30 +759,29 @@ class Complex < Numeric
|
|
|
730
759
|
# rdoc-file=complex.c
|
|
731
760
|
# - to_i -> integer
|
|
732
761
|
# -->
|
|
733
|
-
# Returns the value of
|
|
762
|
+
# Returns the value of <code>self.real</code> as an Integer, if possible:
|
|
734
763
|
#
|
|
735
764
|
# Complex.rect(1, 0).to_i # => 1
|
|
736
765
|
# Complex.rect(1, Rational(0, 1)).to_i # => 1
|
|
737
766
|
#
|
|
738
|
-
# Raises RangeError if
|
|
739
|
-
#
|
|
767
|
+
# Raises RangeError if <code>self.imag</code> is not exactly zero (either
|
|
768
|
+
# <code>Integer(0)</code> or <code>Rational(0, _n_)</code>).
|
|
740
769
|
#
|
|
741
770
|
def to_i: () -> Integer
|
|
742
771
|
|
|
743
|
-
alias to_int to_i
|
|
744
|
-
|
|
745
772
|
# <!--
|
|
746
773
|
# rdoc-file=complex.c
|
|
747
774
|
# - to_r -> rational
|
|
748
775
|
# -->
|
|
749
|
-
# Returns the value of
|
|
776
|
+
# Returns the value of <code>self.real</code> as a Rational, if possible:
|
|
750
777
|
#
|
|
751
778
|
# Complex.rect(1, 0).to_r # => (1/1)
|
|
752
779
|
# Complex.rect(1, Rational(0, 1)).to_r # => (1/1)
|
|
753
780
|
# Complex.rect(1, 0.0).to_r # => (1/1)
|
|
754
781
|
#
|
|
755
|
-
# Raises RangeError if
|
|
756
|
-
#
|
|
782
|
+
# Raises RangeError if <code>self.imag</code> is not exactly zero (either
|
|
783
|
+
# <code>Integer(0)</code> or <code>Rational(0, _n_)</code>) and
|
|
784
|
+
# <code>self.imag.to_r</code> is not exactly zero.
|
|
757
785
|
#
|
|
758
786
|
# Related: Complex#rationalize.
|
|
759
787
|
#
|
|
@@ -774,12 +802,10 @@ class Complex < Numeric
|
|
|
774
802
|
def to_s: () -> String
|
|
775
803
|
|
|
776
804
|
def truncate: (?Integer) -> bot
|
|
777
|
-
|
|
778
|
-
def zero?: () -> bool
|
|
779
805
|
end
|
|
780
806
|
|
|
781
807
|
# <!-- rdoc-file=complex.c -->
|
|
782
|
-
# Equivalent to
|
|
808
|
+
# Equivalent to <code>Complex.rect(0, 1)</code>:
|
|
783
809
|
#
|
|
784
810
|
# Complex::I # => (0+1i)
|
|
785
811
|
#
|