JSPM

  • Created
  • Published
  • Downloads 1016572
  • Score
    100M100P100Q182564F
  • License MIT OR GPL-2.0

A complex number library

Package Exports

  • complex.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (complex.js) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Complex.js - ℂ in JavaSript

NPM Package Build Status MIT license

Complex.js is a well tested JavaScript library to work with complex number arithmetic in JavaScript. It implements every elementary complex number manipulation function and the API is intentionally similar to Fraction.js. Furthermore, it's the basis of Polynomial.js.

Example

var Complex = require('complex.js');

var c = new Complex("99.3+8i");
c.mul({re: 3, im: 9}).div(4.9).sub(3, 2);

Parser

Any function (see below) as well as the constructor of the Complex class parses its input like this.

You can pass either Objects, Doubles or Strings.

Objects

new Complex({re: real, im: imaginary});
new Complex({arg: angle, abs: radius});
new Complex({phi: angle, r: radius});

Doubles

new Complex(55.4);

Strings

new Complex("123.45");
new Complex("15+3i");
new Complex("i");

Two arguments

new Complex(3, 2); // 3+2i

Functions

Complex add(n)

Adds another complex number

Complex sub(n)

Subtracts another complex number

Complex mul(n)

Multiplies the number with another complex number

Complex div(n)

Divides the number by another complex number

Complex pow(exp)

Returns the number raised to the complex exponent

Complex sqrt()

Returns the complex square root of the number

Complex exp(n)

Returns e^n with complex exponential.

Complex log()

Returns the natural logarithm (base E) of the actual complex number

double abs()

Calculates the magnitude of the complex number

double arg()

Calculates the angle of the complex number

Complex sin()

Calculates the sine of the complex number

Complex cos()

Calculates the cosine of the complex number

Complex tan()

Calculates the tangent of the complex number

Complex sinh()

Calculates the hyperbolic sine of the complex number

Complex cosh()

Calculates the hyperbolic cosine of the complex number

Complex tanh()

Calculates the hyperbolic tangent of the complex number

Complex asin()

Calculates the arcus sine of the complex number

Complex acos()

Calculates the arcus cosine of the complex number

Complex atan()

Calculates the arcus tangent of the complex number

Complex inverse()

Calculates the multiplicative inverse of the complex number (1 / z)

Complex conjugate()

Calculates the conjugate of the complex number (multiplies the imaginary part with -1)

Complex sign()

Calculates the sign of the complex number

Complex neg()

Negates the number (multiplies both the real and imaginary part with -1) in order to get the additive inverse

Complex floor([places=0])

Floors the complex number parts towards zero

Complex ceil([places=0])

Ceils the complex number parts off zero

Complex round([places=0])

Rounds the complex number parts

boolean equals(n)

Checks if both numbers are exactly the same

Complex clone()

Returns a new Complex instance with the same real and imaginary properties

Array toVector()

Returns a Vector of the actual complex number with two components

String toString()

Returns a string representation of the actual number. As of v1.9.0 the output is a bit more human readable

new Complex(1, 2).toString(); // 1 + 2i
new Complex(0, 1).toString(); // i
new Complex(9, 0).toString(); // 9
new Complex(1, 1).toString(); // 1 + i

double valueOf()

Returns the real part of the number if imaginary part is zero. Otherwise null

Constants

Complex.ZERO

A complex zero instance

Complex.ONE

A complex one instance

Complex.I

An imaginary number i instance

Complex.PI

A complex PI instance

Complex.E

A complex euler number instance

Installation

Installing complex.js is as easy as cloning this repo or use one of the following commands:

bower install complex.js

or

npm install complex.js

Using Complex.js with the browser

<script src="complex.js"></script>
<script>
    console.log(Complex("4+3i"));
</script>

Using Complex.js with require.js

<script src="require.js"></script>
<script>
requirejs(['complex.js'],
function(Complex) {
    console.log(Complex("4+3i"));
});
</script>

Coding Style

As every library I publish, complex.js is also built to be as small as possible after compressing it with Google Closure Compiler in advanced mode. Thus the coding style orientates a little on maxing-out the compression rate. Please make sure you keep this style if you plan to extend the library.

Testing

If you plan to enhance the library, make sure you add test cases and all the previous tests are passing. You can test the library with

npm test

Copyright and licensing

Copyright (c) 2015, Robert Eisele (robert@xarg.org) Dual licensed under the MIT or GPL Version 2 licenses.