rbs 3.4.0 → 3.4.1

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.
data/core/complex.rbs CHANGED
@@ -36,6 +36,10 @@
36
36
  # *argument* parts; see [Complex polar
37
37
  # plane](https://en.wikipedia.org/wiki/Complex_number#Polar_complex_plane).
38
38
  #
39
+ # In this class, the argument part in expressed
40
+ # [radians](https://en.wikipedia.org/wiki/Radian) (not
41
+ # [degrees](https://en.wikipedia.org/wiki/Degree_(angle))).
42
+ #
39
43
  # You can create a Complex object from polar coordinates with:
40
44
  #
41
45
  # * Method Complex.polar.
@@ -62,7 +66,7 @@ class Complex < Numeric
62
66
  # -->
63
67
  # Returns a new Complex object formed from the arguments, each of which must be
64
68
  # an instance of Numeric, or an instance of one of its subclasses: Complex,
65
- # Float, Integer, Rational; see [Polar
69
+ # Float, Integer, Rational. Argument `arg` is given in radians; see [Polar
66
70
  # Coordinates](rdoc-ref:Complex@Polar+Coordinates):
67
71
  #
68
72
  # Complex.polar(3) # => (3+0i)
@@ -109,40 +113,40 @@ class Complex < Numeric
109
113
 
110
114
  # <!--
111
115
  # rdoc-file=complex.c
112
- # - cmp * numeric -> complex
116
+ # - complex * numeric -> new_complex
113
117
  # -->
114
- # Performs multiplication.
118
+ # Returns the product of `self` and `numeric`:
115
119
  #
116
- # Complex(2, 3) * Complex(2, 3) #=> (-5+12i)
117
- # Complex(900) * Complex(1) #=> (900+0i)
118
- # Complex(-2, 9) * Complex(-9, 2) #=> (0-85i)
119
- # Complex(9, 8) * 4 #=> (36+32i)
120
- # Complex(20, 9) * 9.8 #=> (196.0+88.2i)
120
+ # Complex(2, 3) * Complex(2, 3) # => (-5+12i)
121
+ # Complex(900) * Complex(1) # => (900+0i)
122
+ # Complex(-2, 9) * Complex(-9, 2) # => (0-85i)
123
+ # Complex(9, 8) * 4 # => (36+32i)
124
+ # Complex(20, 9) * 9.8 # => (196.0+88.2i)
121
125
  #
122
126
  def *: (Numeric) -> Complex
123
127
 
124
128
  # <!--
125
129
  # rdoc-file=complex.c
126
- # - cmp ** numeric -> complex
130
+ # - complex ** numeric -> new_complex
127
131
  # -->
128
- # Performs exponentiation.
132
+ # Returns `self` raised to power `numeric`:
129
133
  #
130
- # Complex('i') ** 2 #=> (-1+0i)
131
- # Complex(-8) ** Rational(1, 3) #=> (1.0000000000000002+1.7320508075688772i)
134
+ # Complex('i') ** 2 # => (-1+0i)
135
+ # Complex(-8) ** Rational(1, 3) # => (1.0000000000000002+1.7320508075688772i)
132
136
  #
133
137
  def **: (Numeric) -> Complex
134
138
 
135
139
  # <!--
136
140
  # rdoc-file=complex.c
137
- # - cmp + numeric -> complex
141
+ # - complex + numeric -> new_complex
138
142
  # -->
139
- # Performs addition.
143
+ # Returns the sum of `self` and `numeric`:
140
144
  #
141
- # Complex(2, 3) + Complex(2, 3) #=> (4+6i)
142
- # Complex(900) + Complex(1) #=> (901+0i)
143
- # Complex(-2, 9) + Complex(-9, 2) #=> (-11+11i)
144
- # Complex(9, 8) + 4 #=> (13+8i)
145
- # Complex(20, 9) + 9.8 #=> (29.8+9i)
145
+ # Complex(2, 3) + Complex(2, 3) # => (4+6i)
146
+ # Complex(900) + Complex(1) # => (901+0i)
147
+ # Complex(-2, 9) + Complex(-9, 2) # => (-11+11i)
148
+ # Complex(9, 8) + 4 # => (13+8i)
149
+ # Complex(20, 9) + 9.8 # => (29.8+9i)
146
150
  #
147
151
  def +: (Numeric) -> Complex
148
152
 
@@ -150,40 +154,40 @@ class Complex < Numeric
150
154
 
151
155
  # <!--
152
156
  # rdoc-file=complex.c
153
- # - cmp - numeric -> complex
157
+ # - complex - numeric -> new_complex
154
158
  # -->
155
- # Performs subtraction.
159
+ # Returns the difference of `self` and `numeric`:
156
160
  #
157
- # Complex(2, 3) - Complex(2, 3) #=> (0+0i)
158
- # Complex(900) - Complex(1) #=> (899+0i)
159
- # Complex(-2, 9) - Complex(-9, 2) #=> (7+7i)
160
- # Complex(9, 8) - 4 #=> (5+8i)
161
- # Complex(20, 9) - 9.8 #=> (10.2+9i)
161
+ # Complex(2, 3) - Complex(2, 3) # => (0+0i)
162
+ # Complex(900) - Complex(1) # => (899+0i)
163
+ # Complex(-2, 9) - Complex(-9, 2) # => (7+7i)
164
+ # Complex(9, 8) - 4 # => (5+8i)
165
+ # Complex(20, 9) - 9.8 # => (10.2+9i)
162
166
  #
163
167
  def -: (Numeric) -> Complex
164
168
 
165
169
  # <!--
166
170
  # rdoc-file=complex.c
167
- # - -cmp -> complex
171
+ # - -complex -> new_complex
168
172
  # -->
169
- # Returns negation of the value.
173
+ # Returns the negation of `self`, which is the negation of each of its parts:
170
174
  #
171
- # -Complex(1, 2) #=> (-1-2i)
175
+ # -Complex(1, 2) # => (-1-2i)
176
+ # -Complex(-1, -2) # => (1+2i)
172
177
  #
173
178
  def -@: () -> Complex
174
179
 
175
180
  # <!--
176
181
  # rdoc-file=complex.c
177
- # - cmp / numeric -> complex
178
- # - cmp.quo(numeric) -> complex
182
+ # - complex / numeric -> new_complex
179
183
  # -->
180
- # Performs division.
184
+ # Returns the quotient of `self` and `numeric`:
181
185
  #
182
- # Complex(2, 3) / Complex(2, 3) #=> ((1/1)+(0/1)*i)
183
- # Complex(900) / Complex(1) #=> ((900/1)+(0/1)*i)
184
- # Complex(-2, 9) / Complex(-9, 2) #=> ((36/85)-(77/85)*i)
185
- # Complex(9, 8) / 4 #=> ((9/4)+(2/1)*i)
186
- # Complex(20, 9) / 9.8 #=> (2.0408163265306123+0.9183673469387754i)
186
+ # Complex(2, 3) / Complex(2, 3) # => ((1/1)+(0/1)*i)
187
+ # Complex(900) / Complex(1) # => ((900/1)+(0/1)*i)
188
+ # Complex(-2, 9) / Complex(-9, 2) # => ((36/85)-(77/85)*i)
189
+ # Complex(9, 8) / 4 # => ((9/4)+(2/1)*i)
190
+ # Complex(20, 9) / 9.8 # => (2.0408163265306123+0.9183673469387754i)
187
191
  #
188
192
  def /: (Numeric) -> Complex
189
193
 
@@ -193,31 +197,38 @@ class Complex < Numeric
193
197
 
194
198
  # <!--
195
199
  # rdoc-file=complex.c
196
- # - cmp <=> object -> 0, 1, -1, or nil
200
+ # - complex <=> object -> -1, 0, 1, or nil
197
201
  # -->
198
- # If `cmp`'s imaginary part is zero, and `object` is also a real number (or a
199
- # Complex number where the imaginary part is zero), compare the real part of
200
- # `cmp` to object. Otherwise, return nil.
202
+ # Returns:
203
+ #
204
+ # * `self.real <=> object.real` if both of the following are true:
205
+ #
206
+ # * `self.imag == 0`.
207
+ # * `object.imag == 0`. # Always true if object is numeric but not
208
+ # complex.
209
+ #
210
+ #
211
+ # * `nil` otherwise.
212
+ #
201
213
  #
202
- # Complex(2, 3) <=> Complex(2, 3) #=> nil
203
- # Complex(2, 3) <=> 1 #=> nil
204
- # Complex(2) <=> 1 #=> 1
205
- # Complex(2) <=> 2 #=> 0
206
- # Complex(2) <=> 3 #=> -1
214
+ # Examples:
215
+ #
216
+ # Complex(2) <=> 3 # => -1
217
+ # Complex(2) <=> 2 # => 0
218
+ # Complex(2) <=> 1 # => 1
219
+ # Complex(2, 1) <=> 1 # => nil # self.imag not zero.
220
+ # Complex(1) <=> Complex(1, 1) # => nil # object.imag not zero.
221
+ # Complex(1) <=> 'Foo' # => nil # object.imag not defined.
207
222
  #
208
223
  def <=>: (untyped) -> Integer?
209
224
 
210
225
  # <!--
211
226
  # rdoc-file=complex.c
212
- # - cmp == object -> true or false
227
+ # - complex == object -> true or false
213
228
  # -->
214
- # Returns true if cmp equals object numerically.
229
+ # Returns `true` if `self.real == object.real` and `self.imag == object.imag`:
215
230
  #
216
- # Complex(2, 3) == Complex(2, 3) #=> true
217
- # Complex(5) == 5 #=> true
218
- # Complex(0) == 0.0 #=> true
219
- # Complex('1/3') == 0.33 #=> false
220
- # Complex('1/2') == '1/2' #=> false
231
+ # Complex(2, 3) == Complex(2.0, 3.0) # => true
221
232
  #
222
233
  def ==: (untyped) -> bool
223
234
 
@@ -227,43 +238,66 @@ class Complex < Numeric
227
238
 
228
239
  # <!--
229
240
  # rdoc-file=complex.c
230
- # - cmp.abs -> real
231
- # - cmp.magnitude -> real
241
+ # - abs -> float
232
242
  # -->
233
- # Returns the absolute part of its polar form.
243
+ # Returns the absolute value (magnitude) for `self`; see [polar
244
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates):
245
+ #
246
+ # Complex.polar(-1, 0).abs # => 1.0
247
+ #
248
+ # If `self` was created with [rectangular
249
+ # coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
250
+ # computed, and may be inexact:
234
251
  #
235
- # Complex(-1).abs #=> 1
236
- # Complex(3.0, -4.0).abs #=> 5.0
252
+ # Complex.rectangular(1, 1).abs # => 1.4142135623730951 # The square root of 2.
237
253
  #
238
254
  def abs: () -> Numeric
239
255
 
240
256
  # <!--
241
257
  # rdoc-file=complex.c
242
- # - cmp.abs2 -> real
258
+ # - abs2 -> float
243
259
  # -->
244
- # Returns square of the absolute value.
260
+ # Returns square of the absolute value (magnitude) for `self`; see [polar
261
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates):
245
262
  #
246
- # Complex(-1).abs2 #=> 1
247
- # Complex(3.0, -4.0).abs2 #=> 25.0
263
+ # Complex.polar(2, 2).abs2 # => 4.0
264
+ #
265
+ # If `self` was created with [rectangular
266
+ # coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
267
+ # computed, and may be inexact:
268
+ #
269
+ # Complex.rectangular(1.0/3, 1.0/3).abs2 # => 0.2222222222222222
248
270
  #
249
271
  def abs2: () -> Numeric
250
272
 
251
273
  # <!-- rdoc-file=complex.c -->
252
- # Returns the angle part of its polar form.
274
+ # Returns the argument (angle) for `self` in radians; see [polar
275
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates):
276
+ #
277
+ # Complex.polar(3, Math::PI/2).arg # => 1.57079632679489660
253
278
  #
254
- # Complex.polar(3, Math::PI/2).arg #=> 1.5707963267948966
279
+ # If `self` was created with [rectangular
280
+ # coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
281
+ # computed, and may be inexact:
282
+ #
283
+ # Complex.polar(1, 1.0/3).arg # => 0.33333333333333326
255
284
  #
256
285
  def angle: () -> Float
257
286
 
258
287
  # <!--
259
288
  # rdoc-file=complex.c
260
- # - cmp.arg -> float
261
- # - cmp.angle -> float
262
- # - cmp.phase -> float
289
+ # - arg -> float
263
290
  # -->
264
- # Returns the angle part of its polar form.
291
+ # Returns the argument (angle) for `self` in radians; see [polar
292
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates):
293
+ #
294
+ # Complex.polar(3, Math::PI/2).arg # => 1.57079632679489660
295
+ #
296
+ # If `self` was created with [rectangular
297
+ # coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
298
+ # computed, and may be inexact:
265
299
  #
266
- # Complex.polar(3, Math::PI/2).arg #=> 1.5707963267948966
300
+ # Complex.polar(1, 1.0/3).arg # => 0.33333333333333326
267
301
  #
268
302
  alias arg angle
269
303
 
@@ -272,30 +306,35 @@ class Complex < Numeric
272
306
  def coerce: (Numeric) -> [ Complex, Complex ]
273
307
 
274
308
  # <!-- rdoc-file=complex.c -->
275
- # Returns the complex conjugate.
309
+ # Returns the conjugate of `self`, `Complex.rect(self.imag, self.real)`:
276
310
  #
277
- # Complex(1, 2).conjugate #=> (1-2i)
311
+ # Complex.rect(1, 2).conj # => (1-2i)
278
312
  #
279
313
  def conj: () -> Complex
280
314
 
281
315
  # <!--
282
316
  # rdoc-file=complex.c
283
- # - cmp.conj -> complex
284
- # - cmp.conjugate -> complex
317
+ # - conj -> complex
285
318
  # -->
286
- # Returns the complex conjugate.
319
+ # Returns the conjugate of `self`, `Complex.rect(self.imag, self.real)`:
287
320
  #
288
- # Complex(1, 2).conjugate #=> (1-2i)
321
+ # Complex.rect(1, 2).conj # => (1-2i)
289
322
  #
290
323
  def conjugate: () -> Complex
291
324
 
292
325
  # <!--
293
326
  # rdoc-file=complex.c
294
- # - cmp.denominator -> integer
327
+ # - denominator -> integer
295
328
  # -->
296
- # Returns the denominator (lcm of both denominator - real and imag).
329
+ # Returns the denominator of `self`, which is the [least common
330
+ # multiple](https://en.wikipedia.org/wiki/Least_common_multiple) of
331
+ # `self.real.denominator` and `self.imag.denominator`:
297
332
  #
298
- # See numerator.
333
+ # Complex.rect(Rational(1, 2), Rational(2, 3)).denominator # => 6
334
+ #
335
+ # Note that `n.denominator` of a non-rational numeric is `1`.
336
+ #
337
+ # Related: Complex#numerator.
299
338
  #
300
339
  def denominator: () -> Integer
301
340
 
@@ -309,20 +348,25 @@ class Complex < Numeric
309
348
 
310
349
  # <!--
311
350
  # rdoc-file=complex.c
312
- # - cmp.fdiv(numeric) -> complex
351
+ # - fdiv(numeric) -> new_complex
313
352
  # -->
314
- # Performs division as each part is a float, never returns a float.
353
+ # Returns `Complex(self.real/numeric, self.imag/numeric)`:
315
354
  #
316
- # Complex(11, 22).fdiv(3) #=> (3.6666666666666665+7.333333333333333i)
355
+ # Complex(11, 22).fdiv(3) # => (3.6666666666666665+7.333333333333333i)
317
356
  #
318
357
  def fdiv: (Numeric) -> Complex
319
358
 
320
359
  # <!--
321
360
  # rdoc-file=complex.c
322
- # - cmp.finite? -> true or false
361
+ # - finite? -> true or false
323
362
  # -->
324
- # Returns `true` if `cmp`'s real and imaginary parts are both finite numbers,
325
- # otherwise returns `false`.
363
+ # Returns `true` if both `self.real.finite?` and `self.imag.finite?` are true,
364
+ # `false` otherwise:
365
+ #
366
+ # Complex(1, 1).finite? # => true
367
+ # Complex(Float::INFINITY, 0).finite? # => false
368
+ #
369
+ # Related: Numeric#finite?, Float#finite?.
326
370
  #
327
371
  def finite?: () -> bool
328
372
 
@@ -330,68 +374,91 @@ class Complex < Numeric
330
374
 
331
375
  # <!--
332
376
  # rdoc-file=complex.c
333
- # - hash()
377
+ # - hash -> integer
334
378
  # -->
379
+ # Returns the integer hash value for `self`.
380
+ #
381
+ # Two Complex objects created from the same values will have the same hash value
382
+ # (and will compare using #eql?):
383
+ #
384
+ # Complex(1, 2).hash == Complex(1, 2).hash # => true
335
385
  #
336
386
  def hash: () -> Integer
337
387
 
338
388
  def i: () -> bot
339
389
 
340
390
  # <!-- rdoc-file=complex.c -->
341
- # Returns the imaginary part.
391
+ # Returns the imaginary value for `self`:
342
392
  #
343
393
  # Complex(7).imaginary #=> 0
344
394
  # Complex(9, -4).imaginary #=> -4
345
395
  #
396
+ # If `self` was created with [polar
397
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
398
+ # computed, and may be inexact:
399
+ #
400
+ # Complex.polar(1, Math::PI/4).imag # => 0.7071067811865476 # Square root of 2.
401
+ #
346
402
  def imag: () -> Numeric
347
403
 
348
404
  # <!--
349
405
  # rdoc-file=complex.c
350
- # - cmp.imag -> real
351
- # - cmp.imaginary -> real
406
+ # - imag -> numeric
352
407
  # -->
353
- # Returns the imaginary part.
408
+ # Returns the imaginary value for `self`:
354
409
  #
355
410
  # Complex(7).imaginary #=> 0
356
411
  # Complex(9, -4).imaginary #=> -4
357
412
  #
413
+ # If `self` was created with [polar
414
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
415
+ # computed, and may be inexact:
416
+ #
417
+ # Complex.polar(1, Math::PI/4).imag # => 0.7071067811865476 # Square root of 2.
418
+ #
358
419
  def imaginary: () -> Numeric
359
420
 
360
421
  # <!--
361
422
  # rdoc-file=complex.c
362
- # - cmp.infinite? -> nil or 1
423
+ # - infinite? -> 1 or nil
363
424
  # -->
364
- # Returns `1` if `cmp`'s real or imaginary part is an infinite number, otherwise
365
- # returns `nil`.
425
+ # Returns `1` if either `self.real.infinite?` or `self.imag.infinite?` is true,
426
+ # `nil` otherwise:
366
427
  #
367
- # For example:
428
+ # Complex(Float::INFINITY, 0).infinite? # => 1
429
+ # Complex(1, 1).infinite? # => nil
368
430
  #
369
- # (1+1i).infinite? #=> nil
370
- # (Float::INFINITY + 1i).infinite? #=> 1
431
+ # Related: Numeric#infinite?, Float#infinite?.
371
432
  #
372
433
  def infinite?: () -> Integer?
373
434
 
374
435
  # <!--
375
436
  # rdoc-file=complex.c
376
- # - cmp.inspect -> string
437
+ # - inspect -> string
377
438
  # -->
378
- # Returns the value as a string for inspection.
439
+ # Returns a string representation of `self`:
379
440
  #
380
- # Complex(2).inspect #=> "(2+0i)"
381
- # Complex('-8/6').inspect #=> "((-4/3)+0i)"
382
- # Complex('1/2i').inspect #=> "(0+(1/2)*i)"
383
- # Complex(0, Float::INFINITY).inspect #=> "(0+Infinity*i)"
384
- # Complex(Float::NAN, Float::NAN).inspect #=> "(NaN+NaN*i)"
441
+ # Complex(2).inspect # => "(2+0i)"
442
+ # Complex('-8/6').inspect # => "((-4/3)+0i)"
443
+ # Complex('1/2i').inspect # => "(0+(1/2)*i)"
444
+ # Complex(0, Float::INFINITY).inspect # => "(0+Infinity*i)"
445
+ # Complex(Float::NAN, Float::NAN).inspect # => "(NaN+NaN*i)"
385
446
  #
386
447
  def inspect: () -> String
387
448
 
388
449
  def integer?: () -> bool
389
450
 
390
451
  # <!-- rdoc-file=complex.c -->
391
- # Returns the absolute part of its polar form.
452
+ # Returns the absolute value (magnitude) for `self`; see [polar
453
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates):
454
+ #
455
+ # Complex.polar(-1, 0).abs # => 1.0
392
456
  #
393
- # Complex(-1).abs #=> 1
394
- # Complex(3.0, -4.0).abs #=> 5.0
457
+ # If `self` was created with [rectangular
458
+ # coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
459
+ # computed, and may be inexact:
460
+ #
461
+ # Complex.rectangular(1, 1).abs # => 1.4142135623730951 # The square root of 2.
395
462
  #
396
463
  alias magnitude abs
397
464
 
@@ -403,39 +470,54 @@ class Complex < Numeric
403
470
 
404
471
  # <!--
405
472
  # rdoc-file=complex.c
406
- # - cmp.numerator -> numeric
473
+ # - numerator -> new_complex
407
474
  # -->
408
- # Returns the numerator.
475
+ # Returns the Complex object created from the numerators of the real and
476
+ # imaginary parts of `self`, after converting each part to the [lowest common
477
+ # denominator](https://en.wikipedia.org/wiki/Lowest_common_denominator) of the
478
+ # two:
409
479
  #
410
- # 1 2 3+4i <- numerator
411
- # - + -i -> ----
412
- # 2 3 6 <- denominator
480
+ # c = Complex(Rational(2, 3), Rational(3, 4)) # => ((2/3)+(3/4)*i)
481
+ # c.numerator # => (8+9i)
413
482
  #
414
- # c = Complex('1/2+2/3i') #=> ((1/2)+(2/3)*i)
415
- # n = c.numerator #=> (3+4i)
416
- # d = c.denominator #=> 6
417
- # n / d #=> ((1/2)+(2/3)*i)
418
- # Complex(Rational(n.real, d), Rational(n.imag, d))
419
- # #=> ((1/2)+(2/3)*i)
483
+ # In this example, the lowest common denominator of the two parts is 12; the two
484
+ # converted parts may be thought of as Rational(8, 12) and Rational(9, 12),
485
+ # whose numerators, respectively, are 8 and 9; so the returned value of
486
+ # `c.numerator` is `Complex(8, 9)`.
420
487
  #
421
- # See denominator.
488
+ # Related: Complex#denominator.
422
489
  #
423
490
  def numerator: () -> Complex
424
491
 
425
492
  # <!-- rdoc-file=complex.c -->
426
- # Returns the angle part of its polar form.
493
+ # Returns the argument (angle) for `self` in radians; see [polar
494
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates):
495
+ #
496
+ # Complex.polar(3, Math::PI/2).arg # => 1.57079632679489660
497
+ #
498
+ # If `self` was created with [rectangular
499
+ # coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
500
+ # computed, and may be inexact:
427
501
  #
428
- # Complex.polar(3, Math::PI/2).arg #=> 1.5707963267948966
502
+ # Complex.polar(1, 1.0/3).arg # => 0.33333333333333326
429
503
  #
430
504
  alias phase angle
431
505
 
432
506
  # <!--
433
507
  # rdoc-file=complex.c
434
- # - cmp.polar -> array
508
+ # - polar -> array
435
509
  # -->
436
- # Returns an array; [cmp.abs, cmp.arg].
510
+ # Returns the array `[self.abs, self.arg]`:
437
511
  #
438
- # Complex(1, 2).polar #=> [2.23606797749979, 1.1071487177940904]
512
+ # Complex.polar(1, 2).polar # => [1.0, 2.0]
513
+ #
514
+ # See [Polar Coordinates](rdoc-ref:Complex@Polar+Coordinates).
515
+ #
516
+ # If `self` was created with [rectangular
517
+ # coordinates](rdoc-ref:Complex@Rectangular+Coordinates), the returned value is
518
+ # computed, and may be inexact:
519
+ #
520
+ # Complex.rect(1, 1).polar # => [1.4142135623730951, 0.7853981633974483]
439
521
  #
440
522
  def polar: () -> [ Numeric, Float ]
441
523
 
@@ -443,51 +525,73 @@ class Complex < Numeric
443
525
 
444
526
  # <!--
445
527
  # rdoc-file=complex.c
446
- # - cmp / numeric -> complex
447
- # - cmp.quo(numeric) -> complex
528
+ # - complex / numeric -> new_complex
448
529
  # -->
449
- # Performs division.
530
+ # Returns the quotient of `self` and `numeric`:
450
531
  #
451
- # Complex(2, 3) / Complex(2, 3) #=> ((1/1)+(0/1)*i)
452
- # Complex(900) / Complex(1) #=> ((900/1)+(0/1)*i)
453
- # Complex(-2, 9) / Complex(-9, 2) #=> ((36/85)-(77/85)*i)
454
- # Complex(9, 8) / 4 #=> ((9/4)+(2/1)*i)
455
- # Complex(20, 9) / 9.8 #=> (2.0408163265306123+0.9183673469387754i)
532
+ # Complex(2, 3) / Complex(2, 3) # => ((1/1)+(0/1)*i)
533
+ # Complex(900) / Complex(1) # => ((900/1)+(0/1)*i)
534
+ # Complex(-2, 9) / Complex(-9, 2) # => ((36/85)-(77/85)*i)
535
+ # Complex(9, 8) / 4 # => ((9/4)+(2/1)*i)
536
+ # Complex(20, 9) / 9.8 # => (2.0408163265306123+0.9183673469387754i)
456
537
  #
457
538
  def quo: (Numeric) -> Complex
458
539
 
459
540
  # <!--
460
541
  # rdoc-file=complex.c
461
- # - cmp.rationalize([eps]) -> rational
542
+ # - rationalize(epsilon = nil) -> rational
462
543
  # -->
463
- # Returns the value as a rational if possible (the imaginary part should be
464
- # exactly zero).
544
+ # Returns a Rational object whose value is exactly or approximately equivalent
545
+ # to that of `self.real`.
546
+ #
547
+ # With no argument `epsilon` given, returns a Rational object whose value is
548
+ # exactly equal to that of `self.real.rationalize`:
549
+ #
550
+ # Complex(1, 0).rationalize # => (1/1)
551
+ # Complex(1, Rational(0, 1)).rationalize # => (1/1)
552
+ # Complex(3.14159, 0).rationalize # => (314159/100000)
465
553
  #
466
- # Complex(1.0/3, 0).rationalize #=> (1/3)
467
- # Complex(1, 0.0).rationalize # RangeError
468
- # Complex(1, 2).rationalize # RangeError
554
+ # With argument `epsilon` given, returns a Rational object whose value is
555
+ # exactly or approximately equal to that of `self.real` to the given precision:
469
556
  #
470
- # See to_r.
557
+ # Complex(3.14159, 0).rationalize(0.1) # => (16/5)
558
+ # Complex(3.14159, 0).rationalize(0.01) # => (22/7)
559
+ # Complex(3.14159, 0).rationalize(0.001) # => (201/64)
560
+ # Complex(3.14159, 0).rationalize(0.0001) # => (333/106)
561
+ # Complex(3.14159, 0).rationalize(0.00001) # => (355/113)
562
+ # Complex(3.14159, 0).rationalize(0.000001) # => (7433/2366)
563
+ # Complex(3.14159, 0).rationalize(0.0000001) # => (9208/2931)
564
+ # Complex(3.14159, 0).rationalize(0.00000001) # => (47460/15107)
565
+ # Complex(3.14159, 0).rationalize(0.000000001) # => (76149/24239)
566
+ # Complex(3.14159, 0).rationalize(0.0000000001) # => (314159/100000)
567
+ # Complex(3.14159, 0).rationalize(0.0) # => (3537115888337719/1125899906842624)
568
+ #
569
+ # Related: Complex#to_r.
471
570
  #
472
571
  def rationalize: (?Numeric eps) -> Rational
473
572
 
474
573
  # <!--
475
574
  # rdoc-file=complex.c
476
- # - cmp.real -> real
575
+ # - real -> numeric
477
576
  # -->
478
- # Returns the real part.
577
+ # Returns the real value for `self`:
479
578
  #
480
579
  # Complex(7).real #=> 7
481
580
  # Complex(9, -4).real #=> 9
482
581
  #
582
+ # If `self` was created with [polar
583
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
584
+ # computed, and may be inexact:
585
+ #
586
+ # Complex.polar(1, Math::PI/4).real # => 0.7071067811865476 # Square root of 2.
587
+ #
483
588
  def real: () -> Numeric
484
589
 
485
590
  # <!--
486
591
  # rdoc-file=complex.c
487
- # - Complex(1).real? -> false
488
- # - Complex(1, 2).real? -> false
592
+ # - real? -> false
489
593
  # -->
490
- # Returns false, even if the complex number has no imaginary part.
594
+ # Returns `false`; for compatibility with Numeric#real?.
491
595
  #
492
596
  def real?: () -> false
493
597
 
@@ -507,12 +611,21 @@ class Complex < Numeric
507
611
 
508
612
  # <!--
509
613
  # rdoc-file=complex.c
510
- # - cmp.rect -> array
511
- # - cmp.rectangular -> array
614
+ # - rect -> array
512
615
  # -->
513
- # Returns an array; [cmp.real, cmp.imag].
616
+ # Returns the array `[self.real, self.imag]`:
617
+ #
618
+ # Complex.rect(1, 2).rect # => [1, 2]
619
+ #
620
+ # See [Rectangular Coordinates](rdoc-ref:Complex@Rectangular+Coordinates).
621
+ #
622
+ # If `self` was created with [polar
623
+ # coordinates](rdoc-ref:Complex@Polar+Coordinates), the returned value is
624
+ # computed, and may be inexact:
514
625
  #
515
- # Complex(1, 2).rectangular #=> [1, 2]
626
+ # Complex.polar(1.0, 1.0).rect # => [0.5403023058681398, 0.8414709848078965]
627
+ #
628
+ # Complex#rectangular is an alias for Complex#rect.
516
629
  #
517
630
  alias rectangular rect
518
631
 
@@ -524,38 +637,37 @@ class Complex < Numeric
524
637
 
525
638
  # <!--
526
639
  # rdoc-file=complex.c
527
- # - complex.to_c -> self
640
+ # - to_c -> self
528
641
  # -->
529
- # Returns self.
530
- #
531
- # Complex(2).to_c #=> (2+0i)
532
- # Complex(-8, 6).to_c #=> (-8+6i)
642
+ # Returns `self`.
533
643
  #
534
644
  def to_c: () -> Complex
535
645
 
536
646
  # <!--
537
647
  # rdoc-file=complex.c
538
- # - cmp.to_f -> float
648
+ # - to_f -> float
539
649
  # -->
540
- # Returns the value as a float if possible (the imaginary part should be exactly
541
- # zero).
650
+ # Returns the value of `self.real` as a Float, if possible:
651
+ #
652
+ # Complex(1, 0).to_f # => 1.0
653
+ # Complex(1, Rational(0, 1)).to_f # => 1.0
542
654
  #
543
- # Complex(1, 0).to_f #=> 1.0
544
- # Complex(1, 0.0).to_f # RangeError
545
- # Complex(1, 2).to_f # RangeError
655
+ # Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
656
+ # `Rational(0, *n*)`).
546
657
  #
547
658
  def to_f: () -> Float
548
659
 
549
660
  # <!--
550
661
  # rdoc-file=complex.c
551
- # - cmp.to_i -> integer
662
+ # - to_i -> integer
552
663
  # -->
553
- # Returns the value as an integer if possible (the imaginary part should be
554
- # exactly zero).
664
+ # Returns the value of `self.real` as an Integer, if possible:
555
665
  #
556
- # Complex(1, 0).to_i #=> 1
557
- # Complex(1, 0.0).to_i # RangeError
558
- # Complex(1, 2).to_i # RangeError
666
+ # Complex(1, 0).to_i # => 1
667
+ # Complex(1, Rational(0, 1)).to_i # => 1
668
+ #
669
+ # Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
670
+ # `Rational(0, *n*)`).
559
671
  #
560
672
  def to_i: () -> Integer
561
673
 
@@ -563,30 +675,31 @@ class Complex < Numeric
563
675
 
564
676
  # <!--
565
677
  # rdoc-file=complex.c
566
- # - cmp.to_r -> rational
678
+ # - to_r -> rational
567
679
  # -->
568
- # Returns the value as a rational if possible (the imaginary part should be
569
- # exactly zero).
680
+ # Returns the value of `self.real` as a Rational, if possible:
681
+ #
682
+ # Complex(1, 0).to_r # => (1/1)
683
+ # Complex(1, Rational(0, 1)).to_r # => (1/1)
570
684
  #
571
- # Complex(1, 0).to_r #=> (1/1)
572
- # Complex(1, 0.0).to_r # RangeError
573
- # Complex(1, 2).to_r # RangeError
685
+ # Raises RangeError if `self.imag` is not exactly zero (either `Integer(0)` or
686
+ # `Rational(0, *n*)`).
574
687
  #
575
- # See rationalize.
688
+ # Related: Complex#rationalize.
576
689
  #
577
690
  def to_r: () -> Rational
578
691
 
579
692
  # <!--
580
693
  # rdoc-file=complex.c
581
- # - cmp.to_s -> string
694
+ # - to_s -> string
582
695
  # -->
583
- # Returns the value as a string.
696
+ # Returns a string representation of `self`:
584
697
  #
585
- # Complex(2).to_s #=> "2+0i"
586
- # Complex('-8/6').to_s #=> "-4/3+0i"
587
- # Complex('1/2i').to_s #=> "0+1/2i"
588
- # Complex(0, Float::INFINITY).to_s #=> "0+Infinity*i"
589
- # Complex(Float::NAN, Float::NAN).to_s #=> "NaN+NaN*i"
698
+ # Complex(2).to_s # => "2+0i"
699
+ # Complex('-8/6').to_s # => "-4/3+0i"
700
+ # Complex('1/2i').to_s # => "0+1/2i"
701
+ # Complex(0, Float::INFINITY).to_s # => "0+Infinity*i"
702
+ # Complex(Float::NAN, Float::NAN).to_s # => "NaN+NaN*i"
590
703
  #
591
704
  def to_s: () -> String
592
705