|
1 | 1 | # <!-- rdoc-file=complex.c --> |
2 | | -# A complex number can be represented as a paired real number with imaginary |
3 | | -# unit; a+bi. Where a is real part, b is imaginary part and i is imaginary |
4 | | -# unit. Real a equals complex a+0i mathematically. |
| 2 | +# A Complex object houses a pair of values, given when the object is created as |
| 3 | +# either *rectangular coordinates* or *polar coordinates*. |
5 | 4 | # |
6 | | -# You can create a Complex object explicitly with: |
| 5 | +# ## Rectangular Coordinates |
7 | 6 | # |
8 | | -# * A [complex literal](rdoc-ref:syntax/literals.rdoc@Complex+Literals). |
| 7 | +# The rectangular coordinates of a complex number are called the *real* and |
| 8 | +# *imaginary* parts; see [Complex number |
| 9 | +# definition](https://en.wikipedia.org/wiki/Complex_number#Definition). |
9 | 10 | # |
| 11 | +# You can create a Complex object from rectangular coordinates with: |
10 | 12 | # |
11 | | -# You can convert certain objects to Complex objects with: |
| 13 | +# * A [complex literal](rdoc-ref:doc/syntax/literals.rdoc@Complex+Literals). |
| 14 | +# * Method Complex.rect. |
| 15 | +# * Method Kernel#Complex, either with numeric arguments or with certain |
| 16 | +# string arguments. |
| 17 | +# * Method String#to_c, for certain strings. |
12 | 18 | # |
13 | | -# * Method #Complex. |
14 | 19 | # |
| 20 | +# Note that each of the stored parts may be a an instance one of the classes |
| 21 | +# Complex, Float, Integer, or Rational; they may be retrieved: |
15 | 22 | # |
16 | | -# Complex object can be created as literal, and also by using Kernel#Complex, |
17 | | -# Complex::rect, Complex::polar or to_c method. |
| 23 | +# * Separately, with methods Complex#real and Complex#imaginary. |
| 24 | +# * Together, with method Complex#rect. |
18 | 25 | # |
19 | | -# 2+1i #=> (2+1i) |
20 | | -# Complex(1) #=> (1+0i) |
21 | | -# Complex(2, 3) #=> (2+3i) |
22 | | -# Complex.polar(2, 3) #=> (-1.9799849932008908+0.2822400161197344i) |
23 | | -# 3.to_c #=> (3+0i) |
24 | 26 | # |
25 | | -# You can also create complex object from floating-point numbers or strings. |
| 27 | +# The corresponding (computed) polar values may be retrieved: |
26 | 28 | # |
27 | | -# Complex(0.3) #=> (0.3+0i) |
28 | | -# Complex('0.3-0.5i') #=> (0.3-0.5i) |
29 | | -# Complex('2/3+3/4i') #=> ((2/3)+(3/4)*i) |
30 | | -# Complex('1@2') #=> (-0.4161468365471424+0.9092974268256817i) |
| 29 | +# * Separately, with methods Complex#abs and Complex#arg. |
| 30 | +# * Together, with method Complex#polar. |
31 | 31 | # |
32 | | -# 0.3.to_c #=> (0.3+0i) |
33 | | -# '0.3-0.5i'.to_c #=> (0.3-0.5i) |
34 | | -# '2/3+3/4i'.to_c #=> ((2/3)+(3/4)*i) |
35 | | -# '1@2'.to_c #=> (-0.4161468365471424+0.9092974268256817i) |
36 | 32 | # |
37 | | -# A complex object is either an exact or an inexact number. |
| 33 | +# ## Polar Coordinates |
38 | 34 | # |
39 | | -# Complex(1, 1) / 2 #=> ((1/2)+(1/2)*i) |
40 | | -# Complex(1, 1) / 2.0 #=> (0.5+0.5i) |
| 35 | +# The polar coordinates of a complex number are called the *absolute* and |
| 36 | +# *argument* parts; see [Complex polar |
| 37 | +# plane](https://en.wikipedia.org/wiki/Complex_number#Polar_complex_plane). |
| 38 | +# |
| 39 | +# You can create a Complex object from polar coordinates with: |
| 40 | +# |
| 41 | +# * Method Complex.polar. |
| 42 | +# * Method Kernel#Complex, with certain string arguments. |
| 43 | +# * Method String#to_c, for certain strings. |
| 44 | +# |
| 45 | +# |
| 46 | +# Note that each of the stored parts may be a an instance one of the classes |
| 47 | +# Complex, Float, Integer, or Rational; they may be retrieved: |
| 48 | +# |
| 49 | +# * Separately, with methods Complex#abs and Complex#arg. |
| 50 | +# * Together, with method Complex#polar. |
| 51 | +# |
| 52 | +# |
| 53 | +# The corresponding (computed) rectangular values may be retrieved: |
| 54 | +# |
| 55 | +# * Separately, with methods Complex#real and Complex#imag. |
| 56 | +# * Together, with method Complex#rect. |
41 | 57 | # |
42 | 58 | class Complex < Numeric |
43 | 59 | # <!-- |
44 | 60 | # rdoc-file=complex.c |
45 | | - # - Complex.polar(abs[, arg]) -> complex |
| 61 | + # - Complex.polar(abs, arg = 0) -> complex |
46 | 62 | # --> |
47 | | - # Returns a complex object which denotes the given polar form. |
| 63 | + # Returns a new Complex object formed from the arguments, each of which must be |
| 64 | + # an instance of Numeric, or an instance of one of its subclasses: Complex, |
| 65 | + # Float, Integer, Rational; see [Polar |
| 66 | + # Coordinates](rdoc-ref:Complex@Polar+Coordinates): |
48 | 67 | # |
49 | | - # Complex.polar(3, 0) #=> (3.0+0.0i) |
50 | | - # Complex.polar(3, Math::PI/2) #=> (1.836909530733566e-16+3.0i) |
51 | | - # Complex.polar(3, Math::PI) #=> (-3.0+3.673819061467132e-16i) |
52 | | - # Complex.polar(3, -Math::PI/2) #=> (1.836909530733566e-16-3.0i) |
| 68 | + # Complex.polar(3) # => (3+0i) |
| 69 | + # Complex.polar(3, 2.0) # => (-1.2484405096414273+2.727892280477045i) |
| 70 | + # Complex.polar(-3, -2.0) # => (1.2484405096414273+2.727892280477045i) |
53 | 71 | # |
54 | 72 | def self.polar: (Numeric, ?Numeric) -> Complex |
55 | 73 |
|
56 | 74 | # <!-- |
57 | 75 | # rdoc-file=complex.c |
58 | | - # - Complex.rect(real[, imag]) -> complex |
59 | | - # - Complex.rectangular(real[, imag]) -> complex |
| 76 | + # - Complex.rect(real, imag = 0) -> complex |
60 | 77 | # --> |
61 | | - # Returns a complex object which denotes the given rectangular form. |
| 78 | + # Returns a new Complex object formed from the arguments, each of which must be |
| 79 | + # an instance of Numeric, or an instance of one of its subclasses: Complex, |
| 80 | + # Float, Integer, Rational; see [Rectangular |
| 81 | + # Coordinates](rdoc-ref:Complex@Rectangular+Coordinates): |
| 82 | + # |
| 83 | + # Complex.rect(3) # => (3+0i) |
| 84 | + # Complex.rect(3, Math::PI) # => (3+3.141592653589793i) |
| 85 | + # Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i) |
62 | 86 | # |
63 | | - # Complex.rectangular(1, 2) #=> (1+2i) |
| 87 | + # Complex.rectangular is an alias for Complex.rect. |
64 | 88 | # |
65 | 89 | def self.rect: (Numeric, ?Numeric) -> Complex |
66 | 90 |
|
67 | 91 | # <!-- |
68 | 92 | # rdoc-file=complex.c |
69 | | - # - Complex.rect(real[, imag]) -> complex |
70 | | - # - Complex.rectangular(real[, imag]) -> complex |
| 93 | + # - Complex.rect(real, imag = 0) -> complex |
71 | 94 | # --> |
72 | | - # Returns a complex object which denotes the given rectangular form. |
| 95 | + # Returns a new Complex object formed from the arguments, each of which must be |
| 96 | + # an instance of Numeric, or an instance of one of its subclasses: Complex, |
| 97 | + # Float, Integer, Rational; see [Rectangular |
| 98 | + # Coordinates](rdoc-ref:Complex@Rectangular+Coordinates): |
73 | 99 | # |
74 | | - # Complex.rectangular(1, 2) #=> (1+2i) |
| 100 | + # Complex.rect(3) # => (3+0i) |
| 101 | + # Complex.rect(3, Math::PI) # => (3+3.141592653589793i) |
| 102 | + # Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i) |
| 103 | + # |
| 104 | + # Complex.rectangular is an alias for Complex.rect. |
75 | 105 | # |
76 | 106 | alias self.rectangular self.rect |
77 | 107 |
|
@@ -462,9 +492,16 @@ class Complex < Numeric |
462 | 492 | def real?: () -> false |
463 | 493 |
|
464 | 494 | # <!-- rdoc-file=complex.c --> |
465 | | - # Returns a complex object which denotes the given rectangular form. |
| 495 | + # Returns a new Complex object formed from the arguments, each of which must be |
| 496 | + # an instance of Numeric, or an instance of one of its subclasses: Complex, |
| 497 | + # Float, Integer, Rational; see [Rectangular |
| 498 | + # Coordinates](rdoc-ref:Complex@Rectangular+Coordinates): |
| 499 | + # |
| 500 | + # Complex.rect(3) # => (3+0i) |
| 501 | + # Complex.rect(3, Math::PI) # => (3+3.141592653589793i) |
| 502 | + # Complex.rect(-3, -Math::PI) # => (-3-3.141592653589793i) |
466 | 503 | # |
467 | | - # Complex.rectangular(1, 2) #=> (1+2i) |
| 504 | + # Complex.rectangular is an alias for Complex.rect. |
468 | 505 | # |
469 | 506 | def rect: () -> [ Numeric, Numeric ] |
470 | 507 |
|
@@ -559,6 +596,8 @@ class Complex < Numeric |
559 | 596 | end |
560 | 597 |
|
561 | 598 | # <!-- rdoc-file=complex.c --> |
562 | | -# The imaginary unit. |
| 599 | +# Equivalent to `Complex(0, 1)`: |
| 600 | +# |
| 601 | +# Complex::I # => (0+1i) |
563 | 602 | # |
564 | 603 | Complex::I: Complex |
0 commit comments