From ef1cdbc0c7e3ff4ef6a61bb292ca29a7d5f44471 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 17 Jun 2025 16:19:44 +0900 Subject: [PATCH] mruby-complex: add README.md The document is written by Google Jules. --- mrbgems/mruby-complex/README.md | 55 +++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 mrbgems/mruby-complex/README.md diff --git a/mrbgems/mruby-complex/README.md b/mrbgems/mruby-complex/README.md new file mode 100644 index 000000000..da29ce66e --- /dev/null +++ b/mrbgems/mruby-complex/README.md @@ -0,0 +1,55 @@ +# mruby-complex + +mruby-complex is an mrbgem that provides a `Complex` class for mruby, allowing for the representation and manipulation of complex numbers. It is designed to be compatible with the Complex class in standard Ruby. + +## Functionality + +The `Complex` class provided by this mrbgem supports: + +- Creation of complex numbers from real and imaginary parts, or using the `i` suffix for numbers. +- Basic arithmetic operations: addition (`+`), subtraction (`-`), multiplication (`*`), division (`/`). +- Methods to access the real and imaginary parts (`real`, `imaginary` or `imag`). +- Calculation of absolute value (`abs`, `magnitude`), argument/angle (`arg`, `angle`, `phase`), and square of the absolute value (`abs2`). +- Complex conjugate (`conjugate`, `conj`). +- Conversion to polar coordinates (`polar`). +- Conversion to other numeric types where appropriate (`to_f`, `to_i`, `to_r`, `to_c`). +- Inspection and string representation (`inspect`, `to_s`). + +## Usage Examples + +Here are some basic examples of how to use the `Complex` class: + +```ruby +# Creating complex numbers +c1 = Complex(1, 2) # => (1+2i) +c2 = 3 + 4i # => (3+4i) +c3 = Complex.polar(5, Math::PI/2) # => (0.0+5.0i) (approximately) + +# Arithmetic operations +puts c1 + c2 # => (4+6i) +puts c1 - c2 # => (-2-2i) +puts c1 * c2 # => (-5+10i) +puts c1 / c2 # => (0.44+0.08i) + +# Accessing parts +puts c1.real # => 1 +puts c1.imaginary # => 2 + +# Other methods +puts c2.abs # => 5.0 +puts c2.arg # => 0.9272952180016122 (radians) +puts c2.conjugate # => (3-4i) +puts c1.polar # => [2.23606797749979, 1.1071487177940904] + +# Numerics can be converted to Complex +puts 5.to_c # => (5+0i) +puts 2.3.to_c # => (2.3+0i) + +# The `i` method on numerics creates a complex number with zero real part +puts 5i # => (0+5i) +puts 2.3i # => (0+2.3i) +``` + +## Note + +This mrbgem aims to provide functionality similar to the `Complex` class found in the standard Ruby library. Refer to the Ruby documentation for `Complex` for more detailed information on the behavior of various methods.