rbs 3.4.0 → 3.4.1

Sign up to get free protection for your applications and to get access to all the features.
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