<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
<title>Complex (Apache Commons Math 3.3 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="Complex (Apache Commons Math 3.3 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Complex.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../../../org/apache/commons/math3/complex/ComplexField.html" title="class in org.apache.commons.math3.complex"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/complex/Complex.html" target="_top">Frames</a></li>
<li><a href="Complex.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.complex</div>
<h2 title="Class Complex" class="title">Class Complex</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.complex.Complex</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>, <a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">Complex</span>
extends <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;, <a href="http://docs.oracle.com/javase/6/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a></pre>
<div class="block">Representation of a Complex number, i.e. a number which has both a
 real and imaginary part.
 <br/>
 Implementations of arithmetic operations handle <code>NaN</code> and
 infinite values according to the rules for <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang"><code>Double</code></a>, i.e.
 <a href="../../../../../org/apache/commons/math3/complex/Complex.html#equals(java.lang.Object)"><code>equals(java.lang.Object)</code></a> is an equivalence relation for all instances that have
 a <code>NaN</code> in either real or imaginary part, e.g. the following are
 considered equal:
 <ul>
  <li><code>1 + NaNi</code></li>
  <li><code>NaN + i</code></li>
  <li><code>NaN + NaNi</code></li>
 </ul>
 Note that this is in contradiction with the IEEE-754 standard for floating
 point numbers (according to which the test <code>x == x</code> must fail if
 <code>x</code> is <code>NaN</code>). The method
 <a href="../../../../../org/apache/commons/math3/util/Precision.html#equals(double, double, int)"><code>equals for primitive double</code></a> in <a href="../../../../../org/apache/commons/math3/util/Precision.html" title="class in org.apache.commons.math3.util"><code>Precision</code></a>
 conforms with IEEE-754 while this class conforms with the standard behavior
 for Java object types.
 <br/>
 Implements Serializable since 2.0</div>
<dl><dt><span class="strong">Version:</span></dt>
  <dd>$Id: Complex.java 1591835 2014-05-02 09:04:01Z tn $</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../serialized-form.html#org.apache.commons.math3.complex.Complex">Serialized Form</a></dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!--   -->
</a>
<h3>Field Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#I">I</a></strong></code>
<div class="block">The square root of -1.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#INF">INF</a></strong></code>
<div class="block">A complex number representing "+INF + INFi"</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN">NaN</a></strong></code>
<div class="block">A complex number representing "NaN + NaNi"</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#ONE">ONE</a></strong></code>
<div class="block">A complex number representing "1.0 + 0.0i"</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#ZERO">ZERO</a></strong></code>
<div class="block">A complex number representing "0.0 + 0.0i"</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#Complex(double)">Complex</a></strong>(double&nbsp;real)</code>
<div class="block">Create a complex number given only the real part.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#Complex(double, double)">Complex</a></strong>(double&nbsp;real,
       double&nbsp;imaginary)</code>
<div class="block">Create a complex number given the real and imaginary parts.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#abs()">abs</a></strong>()</code>
<div class="block">Return the absolute value of this complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#acos()">acos</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/InverseCosine.html" TARGET="_top">
 inverse cosine</a> of this complex number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#add(org.apache.commons.math3.complex.Complex)">add</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;addend)</code>
<div class="block">Returns a <code>Complex</code> whose value is
 <code>(this + addend)</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#add(double)">add</a></strong>(double&nbsp;addend)</code>
<div class="block">Returns a <code>Complex</code> whose value is <code>(this + addend)</code>,
 with <code>addend</code> interpreted as a real number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#asin()">asin</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/InverseSine.html" TARGET="_top">
 inverse sine</a> of this complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#atan()">atan</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/InverseTangent.html" TARGET="_top">
 inverse tangent</a> of this complex number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#conjugate()">conjugate</a></strong>()</code>
<div class="block">Return the conjugate of this complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#cos()">cos</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/Cosine.html" TARGET="_top">
 cosine</a>
 of this complex number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#cosh()">cosh</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/HyperbolicCosine.html" TARGET="_top">
 hyperbolic cosine</a> of this complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#createComplex(double, double)">createComplex</a></strong>(double&nbsp;realPart,
             double&nbsp;imaginaryPart)</code>
<div class="block">Create a complex number given the real and imaginary parts.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#divide(org.apache.commons.math3.complex.Complex)">divide</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;divisor)</code>
<div class="block">Returns a <code>Complex</code> whose value is
 <code>(this / divisor)</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#divide(double)">divide</a></strong>(double&nbsp;divisor)</code>
<div class="block">Returns a <code>Complex</code> whose value is <code>(this / divisor)</code>,
 with <code>divisor</code> interpreted as a real number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#equals(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex)">equals</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x,
      <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;y)</code>
<div class="block">Returns <code>true</code> iff the values are equal as defined by
 <a href="../../../../../org/apache/commons/math3/complex/Complex.html#equals(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex, int)"><code>equals(x, y, 1)</code></a>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#equals(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex, double)">equals</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x,
      <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;y,
      double&nbsp;eps)</code>
<div class="block">Returns <code>true</code> if, both for the real part and for the imaginary
 part, there is no double value strictly between the arguments or the
 difference between them is within the range of allowed error
 (inclusive).</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#equals(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex, int)">equals</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x,
      <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;y,
      int&nbsp;maxUlps)</code>
<div class="block">Test for the floating-point equality between Complex objects.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#equals(java.lang.Object)">equals</a></strong>(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;other)</code>
<div class="block">Test for equality with another object.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#equalsWithRelativeTolerance(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex, double)">equalsWithRelativeTolerance</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x,
                           <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;y,
                           double&nbsp;eps)</code>
<div class="block">Returns <code>true</code> if, both for the real part and for the imaginary
 part, there is no double value strictly between the arguments or the
 relative difference between them is smaller or equal to the given
 tolerance.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#exp()">exp</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/ExponentialFunction.html" TARGET="_top">
 exponential function</a> of this complex number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#getArgument()">getArgument</a></strong>()</code>
<div class="block">Compute the argument of this complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/ComplexField.html" title="class in org.apache.commons.math3.complex">ComplexField</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#getField()">getField</a></strong>()</code>
<div class="block">Get the <a href="../../../../../org/apache/commons/math3/Field.html" title="interface in org.apache.commons.math3"><code>Field</code></a> to which the instance belongs.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#getImaginary()">getImaginary</a></strong>()</code>
<div class="block">Access the imaginary part.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#getReal()">getReal</a></strong>()</code>
<div class="block">Access the real part.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#hashCode()">hashCode</a></strong>()</code>
<div class="block">Get a hashCode for the complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#isInfinite()">isInfinite</a></strong>()</code>
<div class="block">Checks whether either the real or imaginary part of this complex number
 takes an infinite value (either <code>Double.POSITIVE_INFINITY</code> or
 <code>Double.NEGATIVE_INFINITY</code>) and neither part
 is <code>NaN</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#isNaN()">isNaN</a></strong>()</code>
<div class="block">Checks whether either or both parts of this complex number is
 <code>NaN</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#log()">log</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/NaturalLogarithm.html" TARGET="_top">
 natural logarithm</a> of this complex number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#multiply(org.apache.commons.math3.complex.Complex)">multiply</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;factor)</code>
<div class="block">Returns a <code>Complex</code> whose value is <code>this * factor</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#multiply(double)">multiply</a></strong>(double&nbsp;factor)</code>
<div class="block">Returns a <code>Complex</code> whose value is <code>this * factor</code>, with <code>factor</code>
 interpreted as a real number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#multiply(int)">multiply</a></strong>(int&nbsp;factor)</code>
<div class="block">Returns a <code>Complex</code> whose value is <code>this * factor</code>, with <code>factor</code>
 interpreted as a integer number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#negate()">negate</a></strong>()</code>
<div class="block">Returns a <code>Complex</code> whose value is <code>(-this)</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#nthRoot(int)">nthRoot</a></strong>(int&nbsp;n)</code>
<div class="block">Computes the n-th roots of this complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#pow(org.apache.commons.math3.complex.Complex)">pow</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x)</code>
<div class="block">Returns of value of this complex number raised to the power of <code>x</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#pow(double)">pow</a></strong>(double&nbsp;x)</code>
<div class="block">Returns of value of this complex number raised to the power of <code>x</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#readResolve()">readResolve</a></strong>()</code>
<div class="block">Resolve the transient fields in a deserialized Complex Object.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#reciprocal()">reciprocal</a></strong>()</code>
<div class="block">Returns the multiplicative inverse of <code>this</code> element.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#sin()">sin</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/Sine.html" TARGET="_top">
 sine</a>
 of this complex number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#sinh()">sinh</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/HyperbolicSine.html" TARGET="_top">
 hyperbolic sine</a> of this complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#sqrt()">sqrt</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/SquareRoot.html" TARGET="_top">
 square root</a> of this complex number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#sqrt1z()">sqrt1z</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/SquareRoot.html" TARGET="_top">
 square root</a> of <code>1 - this<sup>2</sup></code> for this complex
 number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#subtract(org.apache.commons.math3.complex.Complex)">subtract</a></strong>(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;subtrahend)</code>
<div class="block">Returns a <code>Complex</code> whose value is
 <code>(this - subtrahend)</code>.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#subtract(double)">subtract</a></strong>(double&nbsp;subtrahend)</code>
<div class="block">Returns a <code>Complex</code> whose value is
 <code>(this - subtrahend)</code>.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#tan()">tan</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/Tangent.html" TARGET="_top">
 tangent</a> of this complex number.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#tanh()">tanh</a></strong>()</code>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/HyperbolicTangent.html" TARGET="_top">
 hyperbolic tangent</a> of this complex number.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#toString()">toString</a></strong>()</code></td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#valueOf(double)">valueOf</a></strong>(double&nbsp;realPart)</code>
<div class="block">Create a complex number given only the real part.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/complex/Complex.html#valueOf(double, double)">valueOf</a></strong>(double&nbsp;realPart,
       double&nbsp;imaginaryPart)</code>
<div class="block">Create a complex number given the real and imaginary parts.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_detail">
<!--   -->
</a>
<h3>Field Detail</h3>
<a name="I">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>I</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a> I</pre>
<div class="block">The square root of -1. A number representing "0.0 + 1.0i"</div>
</li>
</ul>
<a name="NaN">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>NaN</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a> NaN</pre>
<div class="block">A complex number representing "NaN + NaNi"</div>
</li>
</ul>
<a name="INF">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>INF</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a> INF</pre>
<div class="block">A complex number representing "+INF + INFi"</div>
</li>
</ul>
<a name="ONE">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ONE</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a> ONE</pre>
<div class="block">A complex number representing "1.0 + 0.0i"</div>
</li>
</ul>
<a name="ZERO">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ZERO</h4>
<pre>public static final&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a> ZERO</pre>
<div class="block">A complex number representing "0.0 + 0.0i"</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="Complex(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>Complex</h4>
<pre>public&nbsp;Complex(double&nbsp;real)</pre>
<div class="block">Create a complex number given only the real part.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>real</code> - Real part.</dd></dl>
</li>
</ul>
<a name="Complex(double, double)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Complex</h4>
<pre>public&nbsp;Complex(double&nbsp;real,
       double&nbsp;imaginary)</pre>
<div class="block">Create a complex number given the real and imaginary parts.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>real</code> - Real part.</dd><dd><code>imaginary</code> - Imaginary part.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="abs()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>abs</h4>
<pre>public&nbsp;double&nbsp;abs()</pre>
<div class="block">Return the absolute value of this complex number.
 Returns <code>NaN</code> if either real or imaginary part is <code>NaN</code>
 and <code>Double.POSITIVE_INFINITY</code> if neither part is <code>NaN</code>,
 but at least one part is infinite.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the absolute value.</dd></dl>
</li>
</ul>
<a name="add(org.apache.commons.math3.complex.Complex)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>add</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;add(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;addend)
            throws <a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></pre>
<div class="block">Returns a <code>Complex</code> whose value is
 <code>(this + addend)</code>.
 Uses the definitional formula
 <pre>
  <code>
   (a + bi) + (c + di) = (a+c) + (b+d)i
  </code>
 </pre>
 <br/>
 If either <code>this</code> or <code>addend</code> has a <code>NaN</code> value in
 either part, <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> is returned; otherwise <code>Infinite</code>
 and <code>NaN</code> values are returned in the parts of the result
 according to the rules for <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang"><code>Double</code></a> arithmetic.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/FieldElement.html#add(T)">add</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>addend</code> - Value to be added to this <code>Complex</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this + addend</code>.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></code> - if <code>addend</code> is <code>null</code>.</dd></dl>
</li>
</ul>
<a name="add(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>add</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;add(double&nbsp;addend)</pre>
<div class="block">Returns a <code>Complex</code> whose value is <code>(this + addend)</code>,
 with <code>addend</code> interpreted as a real number.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>addend</code> - Value to be added to this <code>Complex</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this + addend</code>.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/complex/Complex.html#add(org.apache.commons.math3.complex.Complex)"><code>add(Complex)</code></a></dd></dl>
</li>
</ul>
<a name="conjugate()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>conjugate</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;conjugate()</pre>
<div class="block">Return the conjugate of this complex number.
 The conjugate of <code>a + bi</code> is <code>a - bi</code>.
 <br/>
 <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> is returned if either the real or imaginary
 part of this Complex number equals <code>Double.NaN</code>.
 <br/>
 If the imaginary part is infinite, and the real part is not
 <code>NaN</code>, the returned value has infinite imaginary part
 of the opposite sign, e.g. the conjugate of
 <code>1 + POSITIVE_INFINITY i</code> is <code>1 - NEGATIVE_INFINITY i</code>.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the conjugate of this Complex object.</dd></dl>
</li>
</ul>
<a name="divide(org.apache.commons.math3.complex.Complex)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>divide</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;divide(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;divisor)
               throws <a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></pre>
<div class="block">Returns a <code>Complex</code> whose value is
 <code>(this / divisor)</code>.
 Implements the definitional formula
 <pre>
  <code>
    a + bi          ac + bd + (bc - ad)i
    ----------- = -------------------------
    c + di         c<sup>2</sup> + d<sup>2</sup>
  </code>
 </pre>
 but uses
 <a href="http://doi.acm.org/10.1145/1039813.1039814">
 prescaling of operands</a> to limit the effects of overflows and
 underflows in the computation.
 <br/>
 <code>Infinite</code> and <code>NaN</code> values are handled according to the
 following rules, applied in the order presented:
 <ul>
  <li>If either <code>this</code> or <code>divisor</code> has a <code>NaN</code> value
   in either part, <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> is returned.
  </li>
  <li>If <code>divisor</code> equals <a href="../../../../../org/apache/commons/math3/complex/Complex.html#ZERO"><code>ZERO</code></a>, <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> is returned.
  </li>
  <li>If <code>this</code> and <code>divisor</code> are both infinite,
   <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> is returned.
  </li>
  <li>If <code>this</code> is finite (i.e., has no <code>Infinite</code> or
   <code>NaN</code> parts) and <code>divisor</code> is infinite (one or both parts
   infinite), <a href="../../../../../org/apache/commons/math3/complex/Complex.html#ZERO"><code>ZERO</code></a> is returned.
  </li>
  <li>If <code>this</code> is infinite and <code>divisor</code> is finite,
   <code>NaN</code> values are returned in the parts of the result if the
   <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang"><code>Double</code></a> rules applied to the definitional formula
   force <code>NaN</code> results.
  </li>
 </ul></div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/FieldElement.html#divide(T)">divide</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>divisor</code> - Value by which this <code>Complex</code> is to be divided.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this / divisor</code>.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></code> - if <code>divisor</code> is <code>null</code>.</dd></dl>
</li>
</ul>
<a name="divide(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>divide</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;divide(double&nbsp;divisor)</pre>
<div class="block">Returns a <code>Complex</code> whose value is <code>(this / divisor)</code>,
 with <code>divisor</code> interpreted as a real number.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>divisor</code> - Value by which this <code>Complex</code> is to be divided.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this / divisor</code>.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/complex/Complex.html#divide(org.apache.commons.math3.complex.Complex)"><code>divide(Complex)</code></a></dd></dl>
</li>
</ul>
<a name="reciprocal()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reciprocal</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;reciprocal()</pre>
<div class="block">Returns the multiplicative inverse of <code>this</code> element.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/FieldElement.html#reciprocal()">reciprocal</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></dd>
<dt><span class="strong">Returns:</span></dt><dd>the inverse of <code>this</code>.</dd></dl>
</li>
</ul>
<a name="equals(java.lang.Object)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public&nbsp;boolean&nbsp;equals(<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;other)</pre>
<div class="block">Test for equality with another object.
 If both the real and imaginary parts of two complex numbers
 are exactly the same, and neither is <code>Double.NaN</code>, the two
 Complex objects are considered to be equal.
 The behavior is the same as for JDK's <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang"><code>Double</code></a>:
 <ul>
  <li>All <code>NaN</code> values are considered to be equal,
   i.e, if either (or both) real and imaginary parts of the complex
   number are equal to <code>Double.NaN</code>, the complex number is equal
   to <code>NaN</code>.
  </li>
  <li>
   Instances constructed with different representations of zero (i.e.
   either "0" or "-0") are <em>not</em> considered to be equal.
  </li>
 </ul></div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>other</code> - Object to test for equality with this instance.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>true</code> if the objects are equal, <code>false</code> if object
 is <code>null</code>, not an instance of <code>Complex</code>, or not equal to
 this instance.</dd></dl>
</li>
</ul>
<a name="equals(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex, int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public static&nbsp;boolean&nbsp;equals(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x,
             <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;y,
             int&nbsp;maxUlps)</pre>
<div class="block">Test for the floating-point equality between Complex objects.
 It returns <code>true</code> if both arguments are equal or within the
 range of allowed error (inclusive).</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>x</code> - First value (cannot be <code>null</code>).</dd><dd><code>y</code> - Second value (cannot be <code>null</code>).</dd><dd><code>maxUlps</code> - <code>(maxUlps - 1)</code> is the number of floating point
 values between the real (resp. imaginary) parts of <code>x</code> and
 <code>y</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>true</code> if there are fewer than <code>maxUlps</code> floating
 point values between the real (resp. imaginary) parts of <code>x</code>
 and <code>y</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>3.3</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/util/Precision.html#equals(double, double, int)"><code>Precision.equals(double,double,int)</code></a></dd></dl>
</li>
</ul>
<a name="equals(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public static&nbsp;boolean&nbsp;equals(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x,
             <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;y)</pre>
<div class="block">Returns <code>true</code> iff the values are equal as defined by
 <a href="../../../../../org/apache/commons/math3/complex/Complex.html#equals(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex, int)"><code>equals(x, y, 1)</code></a>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>x</code> - First value (cannot be <code>null</code>).</dd><dd><code>y</code> - Second value (cannot be <code>null</code>).</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>true</code> if the values are equal.</dd><dt><span class="strong">Since:</span></dt>
  <dd>3.3</dd></dl>
</li>
</ul>
<a name="equals(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equals</h4>
<pre>public static&nbsp;boolean&nbsp;equals(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x,
             <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;y,
             double&nbsp;eps)</pre>
<div class="block">Returns <code>true</code> if, both for the real part and for the imaginary
 part, there is no double value strictly between the arguments or the
 difference between them is within the range of allowed error
 (inclusive).</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>x</code> - First value (cannot be <code>null</code>).</dd><dd><code>y</code> - Second value (cannot be <code>null</code>).</dd><dd><code>eps</code> - Amount of allowed absolute error.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>true</code> if the values are two adjacent floating point
 numbers or they are within range of each other.</dd><dt><span class="strong">Since:</span></dt>
  <dd>3.3</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/util/Precision.html#equals(double, double, double)"><code>Precision.equals(double,double,double)</code></a></dd></dl>
</li>
</ul>
<a name="equalsWithRelativeTolerance(org.apache.commons.math3.complex.Complex, org.apache.commons.math3.complex.Complex, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>equalsWithRelativeTolerance</h4>
<pre>public static&nbsp;boolean&nbsp;equalsWithRelativeTolerance(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x,
                                  <a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;y,
                                  double&nbsp;eps)</pre>
<div class="block">Returns <code>true</code> if, both for the real part and for the imaginary
 part, there is no double value strictly between the arguments or the
 relative difference between them is smaller or equal to the given
 tolerance.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>x</code> - First value (cannot be <code>null</code>).</dd><dd><code>y</code> - Second value (cannot be <code>null</code>).</dd><dd><code>eps</code> - Amount of allowed relative error.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>true</code> if the values are two adjacent floating point
 numbers or they are within range of each other.</dd><dt><span class="strong">Since:</span></dt>
  <dd>3.3</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/util/Precision.html#equalsWithRelativeTolerance(double, double, double)"><code>Precision.equalsWithRelativeTolerance(double,double,double)</code></a></dd></dl>
</li>
</ul>
<a name="hashCode()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hashCode</h4>
<pre>public&nbsp;int&nbsp;hashCode()</pre>
<div class="block">Get a hashCode for the complex number.
 Any <code>Double.NaN</code> value in real or imaginary part produces
 the same hash code <code>7</code>.</div>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>a hash code value for this object.</dd></dl>
</li>
</ul>
<a name="getImaginary()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getImaginary</h4>
<pre>public&nbsp;double&nbsp;getImaginary()</pre>
<div class="block">Access the imaginary part.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the imaginary part.</dd></dl>
</li>
</ul>
<a name="getReal()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getReal</h4>
<pre>public&nbsp;double&nbsp;getReal()</pre>
<div class="block">Access the real part.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the real part.</dd></dl>
</li>
</ul>
<a name="isNaN()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isNaN</h4>
<pre>public&nbsp;boolean&nbsp;isNaN()</pre>
<div class="block">Checks whether either or both parts of this complex number is
 <code>NaN</code>.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if either or both parts of this complex number is
 <code>NaN</code>; false otherwise.</dd></dl>
</li>
</ul>
<a name="isInfinite()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isInfinite</h4>
<pre>public&nbsp;boolean&nbsp;isInfinite()</pre>
<div class="block">Checks whether either the real or imaginary part of this complex number
 takes an infinite value (either <code>Double.POSITIVE_INFINITY</code> or
 <code>Double.NEGATIVE_INFINITY</code>) and neither part
 is <code>NaN</code>.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>true if one or both parts of this complex number are infinite
 and neither part is <code>NaN</code>.</dd></dl>
</li>
</ul>
<a name="multiply(org.apache.commons.math3.complex.Complex)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>multiply</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;multiply(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;factor)
                 throws <a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></pre>
<div class="block">Returns a <code>Complex</code> whose value is <code>this * factor</code>.
 Implements preliminary checks for <code>NaN</code> and infinity followed by
 the definitional formula:
 <pre>
  <code>
   (a + bi)(c + di) = (ac - bd) + (ad + bc)i
  </code>
 </pre>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either <code>this</code> or <code>factor</code> has one or
 more <code>NaN</code> parts.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#INF"><code>INF</code></a> if neither <code>this</code> nor <code>factor</code> has one
 or more <code>NaN</code> parts and if either <code>this</code> or <code>factor</code>
 has one or more infinite parts (same result is returned regardless of
 the sign of the components).
 <br/>
 Returns finite values in components of the result per the definitional
 formula in all remaining cases.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/FieldElement.html#multiply(T)">multiply</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>factor</code> - value to be multiplied by this <code>Complex</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this * factor</code>.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></code> - if <code>factor</code> is <code>null</code>.</dd></dl>
</li>
</ul>
<a name="multiply(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>multiply</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;multiply(int&nbsp;factor)</pre>
<div class="block">Returns a <code>Complex</code> whose value is <code>this * factor</code>, with <code>factor</code>
 interpreted as a integer number.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/FieldElement.html#multiply(int)">multiply</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>factor</code> - value to be multiplied by this <code>Complex</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this * factor</code>.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/complex/Complex.html#multiply(org.apache.commons.math3.complex.Complex)"><code>multiply(Complex)</code></a></dd></dl>
</li>
</ul>
<a name="multiply(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>multiply</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;multiply(double&nbsp;factor)</pre>
<div class="block">Returns a <code>Complex</code> whose value is <code>this * factor</code>, with <code>factor</code>
 interpreted as a real number.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>factor</code> - value to be multiplied by this <code>Complex</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this * factor</code>.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/complex/Complex.html#multiply(org.apache.commons.math3.complex.Complex)"><code>multiply(Complex)</code></a></dd></dl>
</li>
</ul>
<a name="negate()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>negate</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;negate()</pre>
<div class="block">Returns a <code>Complex</code> whose value is <code>(-this)</code>.
 Returns <code>NaN</code> if either real or imaginary
 part of this Complex number equals <code>Double.NaN</code>.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/FieldElement.html#negate()">negate</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></dd>
<dt><span class="strong">Returns:</span></dt><dd><code>-this</code>.</dd></dl>
</li>
</ul>
<a name="subtract(org.apache.commons.math3.complex.Complex)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subtract</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;subtract(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;subtrahend)
                 throws <a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></pre>
<div class="block">Returns a <code>Complex</code> whose value is
 <code>(this - subtrahend)</code>.
 Uses the definitional formula
 <pre>
  <code>
   (a + bi) - (c + di) = (a-c) + (b-d)i
  </code>
 </pre>
 If either <code>this</code> or <code>subtrahend</code> has a <code>NaN]</code> value in either part,
 <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> is returned; otherwise infinite and <code>NaN</code> values are
 returned in the parts of the result according to the rules for
 <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html?is-external=true" title="class or interface in java.lang"><code>Double</code></a> arithmetic.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/FieldElement.html#subtract(T)">subtract</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>subtrahend</code> - value to be subtracted from this <code>Complex</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this - subtrahend</code>.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></code> - if <code>subtrahend</code> is <code>null</code>.</dd></dl>
</li>
</ul>
<a name="subtract(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>subtract</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;subtract(double&nbsp;subtrahend)</pre>
<div class="block">Returns a <code>Complex</code> whose value is
 <code>(this - subtrahend)</code>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>subtrahend</code> - value to be subtracted from this <code>Complex</code>.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this - subtrahend</code>.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/complex/Complex.html#subtract(org.apache.commons.math3.complex.Complex)"><code>subtract(Complex)</code></a></dd></dl>
</li>
</ul>
<a name="acos()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>acos</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;acos()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/InverseCosine.html" TARGET="_top">
 inverse cosine</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   acos(z) = -i (log(z + i (sqrt(1 - z<sup>2</sup>))))
  </code>
 </pre>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code> or infinite.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the inverse cosine of this complex number.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="asin()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>asin</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;asin()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/InverseSine.html" TARGET="_top">
 inverse sine</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   asin(z) = -i (log(sqrt(1 - z<sup>2</sup>) + iz))
  </code>
 </pre>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code> or infinite.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the inverse sine of this complex number.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="atan()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>atan</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;atan()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/InverseTangent.html" TARGET="_top">
 inverse tangent</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   atan(z) = (i/2) log((i + z)/(i - z))
  </code>
 </pre>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code> or infinite.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the inverse tangent of this complex number</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="cos()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cos</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;cos()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/Cosine.html" TARGET="_top">
 cosine</a>
 of this complex number.
 Implements the formula:
 <pre>
  <code>
   cos(a + bi) = cos(a)cosh(b) - sin(a)sinh(b)i
  </code>
 </pre>
 where the (real) functions on the right-hand side are
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sin(double)"><code>FastMath.sin(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cos(double)"><code>FastMath.cos(double)</code></a>,
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cosh(double)"><code>FastMath.cosh(double)</code></a> and <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sinh(double)"><code>FastMath.sinh(double)</code></a>.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite values in real or imaginary parts of the input may result in
 infinite or NaN values returned in parts of the result.
 <pre>
  Examples:
  <code>
   cos(1 &plusmn; INFINITY i) = 1 &#x2213; INFINITY i
   cos(&plusmn;INFINITY + i) = NaN + NaN i
   cos(&plusmn;INFINITY &plusmn; INFINITY i) = NaN + NaN i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the cosine of this complex number.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="cosh()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cosh</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;cosh()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/HyperbolicCosine.html" TARGET="_top">
 hyperbolic cosine</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   cosh(a + bi) = cosh(a)cos(b) + sinh(a)sin(b)i}
  </code>
 </pre>
 where the (real) functions on the right-hand side are
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sin(double)"><code>FastMath.sin(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cos(double)"><code>FastMath.cos(double)</code></a>,
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cosh(double)"><code>FastMath.cosh(double)</code></a> and <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sinh(double)"><code>FastMath.sinh(double)</code></a>.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite values in real or imaginary parts of the input may result in
 infinite or NaN values returned in parts of the result.
 <pre>
  Examples:
  <code>
   cosh(1 &plusmn; INFINITY i) = NaN + NaN i
   cosh(&plusmn;INFINITY + i) = INFINITY &plusmn; INFINITY i
   cosh(&plusmn;INFINITY &plusmn; INFINITY i) = NaN + NaN i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the hyperbolic cosine of this complex number.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="exp()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>exp</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;exp()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/ExponentialFunction.html" TARGET="_top">
 exponential function</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   exp(a + bi) = exp(a)cos(b) + exp(a)sin(b)i
  </code>
 </pre>
 where the (real) functions on the right-hand side are
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#exp(double)"><code>FastMath.exp(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cos(double)"><code>FastMath.cos(double)</code></a>, and
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sin(double)"><code>FastMath.sin(double)</code></a>.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite values in real or imaginary parts of the input may result in
 infinite or NaN values returned in parts of the result.
 <pre>
  Examples:
  <code>
   exp(1 &plusmn; INFINITY i) = NaN + NaN i
   exp(INFINITY + i) = INFINITY + INFINITY i
   exp(-INFINITY + i) = 0 + 0i
   exp(&plusmn;INFINITY &plusmn; INFINITY i) = NaN + NaN i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd><code><i>e</i><sup>this</sup></code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="log()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>log</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;log()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/NaturalLogarithm.html" TARGET="_top">
 natural logarithm</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   log(a + bi) = ln(|a + bi|) + arg(a + bi)i
  </code>
 </pre>
 where ln on the right hand side is <a href="../../../../../org/apache/commons/math3/util/FastMath.html#log(double)"><code>FastMath.log(double)</code></a>,
 <code>|a + bi|</code> is the modulus, <a href="../../../../../org/apache/commons/math3/complex/Complex.html#abs()"><code>abs()</code></a>,  and
 <code>arg(a + bi) = </code><a href="../../../../../org/apache/commons/math3/util/FastMath.html#atan2(double, double)"><code>FastMath.atan2(double, double)</code></a>(b, a).
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite (or critical) values in real or imaginary parts of the input may
 result in infinite or NaN values returned in parts of the result.
 <pre>
  Examples:
  <code>
   log(1 &plusmn; INFINITY i) = INFINITY &plusmn; (&pi;/2)i
   log(INFINITY + i) = INFINITY + 0i
   log(-INFINITY + i) = INFINITY + &pi;i
   log(INFINITY &plusmn; INFINITY i) = INFINITY &plusmn; (&pi;/4)i
   log(-INFINITY &plusmn; INFINITY i) = INFINITY &plusmn; (3&pi;/4)i
   log(0 + 0i) = -INFINITY + 0i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the value <code>ln &nbsp; this</code>, the natural logarithm
 of <code>this</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="pow(org.apache.commons.math3.complex.Complex)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pow</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;pow(<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;x)
            throws <a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></pre>
<div class="block">Returns of value of this complex number raised to the power of <code>x</code>.
 Implements the formula:
 <pre>
  <code>
   y<sup>x</sup> = exp(x&middot;log(y))
  </code>
 </pre>
 where <code>exp</code> and <code>log</code> are <a href="../../../../../org/apache/commons/math3/complex/Complex.html#exp()"><code>exp()</code></a> and
 <a href="../../../../../org/apache/commons/math3/complex/Complex.html#log()"><code>log()</code></a>, respectively.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code> or infinite, or if <code>y</code>
 equals <a href="../../../../../org/apache/commons/math3/complex/Complex.html#ZERO"><code>ZERO</code></a>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>x</code> - exponent to which this <code>Complex</code> is to be raised.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code> this<sup><code>x</code></sup></code>.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NullArgumentException.html" title="class in org.apache.commons.math3.exception">NullArgumentException</a></code> - if x is <code>null</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="pow(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>pow</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;pow(double&nbsp;x)</pre>
<div class="block">Returns of value of this complex number raised to the power of <code>x</code>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>x</code> - exponent to which this <code>Complex</code> is to be raised.</dd>
<dt><span class="strong">Returns:</span></dt><dd><code>this<sup>x</sup></code>.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/complex/Complex.html#pow(org.apache.commons.math3.complex.Complex)"><code>pow(Complex)</code></a></dd></dl>
</li>
</ul>
<a name="sin()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sin</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;sin()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/Sine.html" TARGET="_top">
 sine</a>
 of this complex number.
 Implements the formula:
 <pre>
  <code>
   sin(a + bi) = sin(a)cosh(b) - cos(a)sinh(b)i
  </code>
 </pre>
 where the (real) functions on the right-hand side are
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sin(double)"><code>FastMath.sin(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cos(double)"><code>FastMath.cos(double)</code></a>,
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cosh(double)"><code>FastMath.cosh(double)</code></a> and <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sinh(double)"><code>FastMath.sinh(double)</code></a>.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite values in real or imaginary parts of the input may result in
 infinite or <code>NaN</code> values returned in parts of the result.
 <pre>
  Examples:
  <code>
   sin(1 &plusmn; INFINITY i) = 1 &plusmn; INFINITY i
   sin(&plusmn;INFINITY + i) = NaN + NaN i
   sin(&plusmn;INFINITY &plusmn; INFINITY i) = NaN + NaN i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the sine of this complex number.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="sinh()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sinh</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;sinh()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/HyperbolicSine.html" TARGET="_top">
 hyperbolic sine</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   sinh(a + bi) = sinh(a)cos(b)) + cosh(a)sin(b)i
  </code>
 </pre>
 where the (real) functions on the right-hand side are
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sin(double)"><code>FastMath.sin(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cos(double)"><code>FastMath.cos(double)</code></a>,
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cosh(double)"><code>FastMath.cosh(double)</code></a> and <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sinh(double)"><code>FastMath.sinh(double)</code></a>.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite values in real or imaginary parts of the input may result in
 infinite or NaN values returned in parts of the result.
 <pre>
  Examples:
  <code>
   sinh(1 &plusmn; INFINITY i) = NaN + NaN i
   sinh(&plusmn;INFINITY + i) = &plusmn; INFINITY + INFINITY i
   sinh(&plusmn;INFINITY &plusmn; INFINITY i) = NaN + NaN i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the hyperbolic sine of <code>this</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="sqrt()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sqrt</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;sqrt()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/SquareRoot.html" TARGET="_top">
 square root</a> of this complex number.
 Implements the following algorithm to compute <code>sqrt(a + bi)</code>:
 <ol><li>Let <code>t = sqrt((|a| + |a + bi|) / 2)</code></li>
 <li><pre>if <code>a &amp;#8805; 0</code> return <code>t + (b/2t)i</code>
  else return <code>|b|/2t + sign(b)t i </code></pre></li>
 </ol>
 where <ul>
 <li><code>|a| = </code><a href="../../../../../org/apache/commons/math3/util/FastMath.html#abs(int)"><code>FastMath.abs(int)</code></a>(a)</li>
 <li><code>|a + bi| = </code><a href="../../../../../org/apache/commons/math3/complex/Complex.html#abs()"><code>abs()</code></a>(a + bi)</li>
 <li><code>sign(b) =  </code><a href="../../../../../org/apache/commons/math3/util/FastMath.html#copySign(double, double)"><code>copySign(1d, b)</code></a>
 </ul>
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite values in real or imaginary parts of the input may result in
 infinite or NaN values returned in parts of the result.
 <pre>
  Examples:
  <code>
   sqrt(1 &plusmn; INFINITY i) = INFINITY + NaN i
   sqrt(INFINITY + i) = INFINITY + 0i
   sqrt(-INFINITY + i) = 0 + INFINITY i
   sqrt(INFINITY &plusmn; INFINITY i) = INFINITY + NaN i
   sqrt(-INFINITY &plusmn; INFINITY i) = NaN &plusmn; INFINITY i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the square root of <code>this</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="sqrt1z()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sqrt1z</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;sqrt1z()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/SquareRoot.html" TARGET="_top">
 square root</a> of <code>1 - this<sup>2</sup></code> for this complex
 number.
 Computes the result directly as
 <code>sqrt(ONE.subtract(z.multiply(z)))</code>.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite values in real or imaginary parts of the input may result in
 infinite or NaN values returned in parts of the result.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the square root of <code>1 - this<sup>2</sup></code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="tan()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tan</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;tan()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/Tangent.html" TARGET="_top">
 tangent</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   tan(a + bi) = sin(2a)/(cos(2a)+cosh(2b)) + [sinh(2b)/(cos(2a)+cosh(2b))]i
  </code>
 </pre>
 where the (real) functions on the right-hand side are
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sin(double)"><code>FastMath.sin(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cos(double)"><code>FastMath.cos(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cosh(double)"><code>FastMath.cosh(double)</code></a> and
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sinh(double)"><code>FastMath.sinh(double)</code></a>.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite (or critical) values in real or imaginary parts of the input may
 result in infinite or NaN values returned in parts of the result.
 <pre>
  Examples:
  <code>
   tan(a &plusmn; INFINITY i) = 0 &plusmn; i
   tan(&plusmn;INFINITY + bi) = NaN + NaN i
   tan(&plusmn;INFINITY &plusmn; INFINITY i) = NaN + NaN i
   tan(&plusmn;&pi;/2 + 0 i) = &plusmn;INFINITY + NaN i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the tangent of <code>this</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="tanh()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>tanh</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;tanh()</pre>
<div class="block">Compute the
 <a href="http://mathworld.wolfram.com/HyperbolicTangent.html" TARGET="_top">
 hyperbolic tangent</a> of this complex number.
 Implements the formula:
 <pre>
  <code>
   tan(a + bi) = sinh(2a)/(cosh(2a)+cos(2b)) + [sin(2b)/(cosh(2a)+cos(2b))]i
  </code>
 </pre>
 where the (real) functions on the right-hand side are
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sin(double)"><code>FastMath.sin(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cos(double)"><code>FastMath.cos(double)</code></a>, <a href="../../../../../org/apache/commons/math3/util/FastMath.html#cosh(double)"><code>FastMath.cosh(double)</code></a> and
 <a href="../../../../../org/apache/commons/math3/util/FastMath.html#sinh(double)"><code>FastMath.sinh(double)</code></a>.
 <br/>
 Returns <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> if either real or imaginary part of the
 input argument is <code>NaN</code>.
 <br/>
 Infinite values in real or imaginary parts of the input may result in
 infinite or NaN values returned in parts of the result.
 <pre>
  Examples:
  <code>
   tanh(a &plusmn; INFINITY i) = NaN + NaN i
   tanh(&plusmn;INFINITY + bi) = &plusmn;1 + 0 i
   tanh(&plusmn;INFINITY &plusmn; INFINITY i) = NaN + NaN i
   tanh(0 + (&pi;/2)i) = NaN + INFINITY i
  </code>
 </pre></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the hyperbolic tangent of <code>this</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
<a name="getArgument()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getArgument</h4>
<pre>public&nbsp;double&nbsp;getArgument()</pre>
<div class="block">Compute the argument of this complex number.
 The argument is the angle phi between the positive real axis and
 the point representing this number in the complex plane.
 The value returned is between -PI (not inclusive)
 and PI (inclusive), with negative values returned for numbers with
 negative imaginary parts.
 <br/>
 If either real or imaginary part (or both) is NaN, NaN is returned.
 Infinite parts are handled as <code>Math.atan2</code> handles them,
 essentially treating finite parts as zero in the presence of an
 infinite coordinate and returning a multiple of pi/4 depending on
 the signs of the infinite parts.
 See the javadoc for <code>Math.atan2</code> for full details.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>the argument of <code>this</code>.</dd></dl>
</li>
</ul>
<a name="nthRoot(int)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>nthRoot</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;&nbsp;nthRoot(int&nbsp;n)
                      throws <a href="../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></pre>
<div class="block">Computes the n-th roots of this complex number.
 The nth roots are defined by the formula:
 <pre>
  <code>
   z<sub>k</sub> = abs<sup>1/n</sup> (cos(phi + 2&pi;k/n) + i (sin(phi + 2&pi;k/n))
  </code>
 </pre>
 for <i><code>k=0, 1, ..., n-1</code></i>, where <code>abs</code> and <code>phi</code>
 are respectively the <a href="../../../../../org/apache/commons/math3/complex/Complex.html#abs()"><code>modulus</code></a> and
 <a href="../../../../../org/apache/commons/math3/complex/Complex.html#getArgument()"><code>argument</code></a> of this complex number.
 <br/>
 If one or both parts of this complex number is NaN, a list with just
 one element, <a href="../../../../../org/apache/commons/math3/complex/Complex.html#NaN"><code>NaN</code></a> is returned.
 if neither part is NaN, but at least one part is infinite, the result
 is a one-element list containing <a href="../../../../../org/apache/commons/math3/complex/Complex.html#INF"><code>INF</code></a>.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>n</code> - Degree of root.</dd>
<dt><span class="strong">Returns:</span></dt><dd>a List<Complex> of all <code>n</code>-th roots of <code>this</code>.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/NotPositiveException.html" title="class in org.apache.commons.math3.exception">NotPositiveException</a></code> - if <code>n &lt;= 0</code>.</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.0</dd></dl>
</li>
</ul>
<a name="createComplex(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createComplex</h4>
<pre>protected&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;createComplex(double&nbsp;realPart,
                    double&nbsp;imaginaryPart)</pre>
<div class="block">Create a complex number given the real and imaginary parts.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>realPart</code> - Real part.</dd><dd><code>imaginaryPart</code> - Imaginary part.</dd>
<dt><span class="strong">Returns:</span></dt><dd>a new complex number instance.</dd><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd>
<dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/complex/Complex.html#valueOf(double, double)"><code>valueOf(double, double)</code></a></dd></dl>
</li>
</ul>
<a name="valueOf(double, double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>valueOf</h4>
<pre>public static&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;valueOf(double&nbsp;realPart,
              double&nbsp;imaginaryPart)</pre>
<div class="block">Create a complex number given the real and imaginary parts.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>realPart</code> - Real part.</dd><dd><code>imaginaryPart</code> - Imaginary part.</dd>
<dt><span class="strong">Returns:</span></dt><dd>a Complex instance.</dd></dl>
</li>
</ul>
<a name="valueOf(double)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>valueOf</h4>
<pre>public static&nbsp;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&nbsp;valueOf(double&nbsp;realPart)</pre>
<div class="block">Create a complex number given only the real part.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>realPart</code> - Real part.</dd>
<dt><span class="strong">Returns:</span></dt><dd>a Complex instance.</dd></dl>
</li>
</ul>
<a name="readResolve()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readResolve</h4>
<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;readResolve()</pre>
<div class="block">Resolve the transient fields in a deserialized Complex Object.
 Subclasses will need to override <a href="../../../../../org/apache/commons/math3/complex/Complex.html#createComplex(double, double)"><code>createComplex(double, double)</code></a> to
 deserialize properly.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>A Complex instance with all fields resolved.</dd><dt><span class="strong">Since:</span></dt>
  <dd>2.0</dd></dl>
</li>
</ul>
<a name="getField()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getField</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/complex/ComplexField.html" title="class in org.apache.commons.math3.complex">ComplexField</a>&nbsp;getField()</pre>
<div class="block">Get the <a href="../../../../../org/apache/commons/math3/Field.html" title="interface in org.apache.commons.math3"><code>Field</code></a> to which the instance belongs.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/FieldElement.html#getField()">getField</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/FieldElement.html" title="interface in org.apache.commons.math3">FieldElement</a>&lt;<a href="../../../../../org/apache/commons/math3/complex/Complex.html" title="class in org.apache.commons.math3.complex">Complex</a>&gt;</code></dd>
<dt><span class="strong">Returns:</span></dt><dd><a href="../../../../../org/apache/commons/math3/Field.html" title="interface in org.apache.commons.math3"><code>Field</code></a> to which the instance belongs</dd></dl>
</li>
</ul>
<a name="toString()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><strong>Overrides:</strong></dt>
<dd><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Complex.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev Class</li>
<li><a href="../../../../../org/apache/commons/math3/complex/ComplexField.html" title="class in org.apache.commons.math3.complex"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/complex/Complex.html" target="_top">Frames</a></li>
<li><a href="Complex.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2014 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
