# Complex Numbers A complex number is a number in the form `z = a + b * i` where `a` and `b` are real and `i` satisfies `i^2 = -1`. `a` is called the real part and `b` is called the imaginary part of `z`. The conjugate of the number `a + b * i` is the number `a - b * i`. The absolute value of a complex number `z = a + b * i` is a real number `|z| = sqrt(a^2 + b^2)`. The square of the absolute value `|z|^2` is the result of multiplication of `z` by its complex conjugate. The sum / difference of two complex numbers involves adding / subtracting their real and imaginary parts separately: `(a + i * b) + (c + i * d) = (a + c) + (b + d) * i`, `(a + i * b) - (c + i * d) = (a - c) + (b - d) * i`. Multiplication result is by definition `(a + i * b) * (c + i * d) = (a * c - b * d) + (b * c + a * d) * i`. The reciprocal of a non-zero complex number is `1 / (a + i * b) = a/(a^2 + b^2) - b/(a^2 + b^2) * i`. Dividing a complex number `a + i * b` by another `c + i * d` gives: `(a + i * b) / (c + i * d) = (a * c + b * d)/(c^2 + d^2) + (b * c - a * d)/(c^2 + d^2) * i`. Exponent of a complex number can be expressed as `exp(a + i * b) = exp(a) * exp(i * b)`, and the last term is given by Euler's formula `exp(i * b) = cos(b) + i * sin(b)`. Implement the following operations: - addition, subtraction, multiplication and division of two complex numbers, - conjugate, absolute value, exponent of a given complex number. Assume the programming language you are using does not have an implementation of complex numbers. * * * * For installation and learning resources, refer to the [exercism help page](http://exercism.io/languages/ruby). For running the tests provided, you will need the Minitest gem. Open a terminal window and run the following command to install minitest: gem install minitest If you would like color output, you can `require 'minitest/pride'` in the test file, or note the alternative instruction, below, for running the test file. In order to run the test, you can run the test file from the exercise directory. For example, if the test suite is called `hello_world_test.rb`, you can run the following command: ruby hello_world_test.rb To include color from the command line: ruby -r minitest/pride hello_world_test.rb ## Source Wikipedia [https://en.wikipedia.org/wiki/Complex_number](https://en.wikipedia.org/wiki/Complex_number) ## Submitting Incomplete Solutions It's possible to submit an incomplete solution so you can see how others have completed the exercise.