You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2017/07/19 14:03:04 UTC
commons-numbers git commit: NUMBERS-13: exp() passes all tests
Repository: commons-numbers
Updated Branches:
refs/heads/complex-dev c8db04d0a -> 6bf4d8b74
NUMBERS-13: exp() passes all tests
Project: http://git-wip-us.apache.org/repos/asf/commons-numbers/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-numbers/commit/6bf4d8b7
Tree: http://git-wip-us.apache.org/repos/asf/commons-numbers/tree/6bf4d8b7
Diff: http://git-wip-us.apache.org/repos/asf/commons-numbers/diff/6bf4d8b7
Branch: refs/heads/complex-dev
Commit: 6bf4d8b74d2b56d506bc5049dbd64a44cad40c31
Parents: c8db04d
Author: Eric Barnhill <er...@apache.org>
Authored: Wed Jul 19 16:05:02 2017 +0200
Committer: Eric Barnhill <er...@apache.org>
Committed: Wed Jul 19 16:05:02 2017 +0200
----------------------------------------------------------------------
.../apache/commons/numbers/complex/Complex.java | 77 ++++++++++++--------
1 file changed, 45 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/6bf4d8b7/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java
----------------------------------------------------------------------
diff --git a/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java b/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java
index 4eae524..2a1795c 100644
--- a/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java
+++ b/commons-numbers-complex/src/main/java/org/apache/commons/numbers/complex/Complex.java
@@ -224,7 +224,7 @@ in the
*/
public Complex add(Complex addend) {
checkNotNull(addend);
- return createComplex(real + addend.getReal(),
+ return new Complex(real + addend.getReal(),
imaginary + addend.getImaginary());
}
@@ -237,7 +237,7 @@ in the
* @see #add(Complex)
*/
public Complex add(double addend) {
- return createComplex(real + addend, imaginary);
+ return new Complex(real + addend, imaginary);
}
/**
@@ -247,7 +247,7 @@ in the
* @return the conjugate of this complex object.
*/
public Complex conjugate() {
- return createComplex(real, -imaginary);
+ return new Complex(real, -imaginary);
}
/**
@@ -316,12 +316,12 @@ in the
if (Math.abs(c) < Math.abs(d)) {
double q = c / d;
double denominator = c * q + d;
- return createComplex((real * q + imaginary) / denominator,
+ return new Complex((real * q + imaginary) / denominator,
(imaginary * q - real) / denominator);
} else {
double q = d / c;
double denominator = d * q + c;
- return createComplex((imaginary * q + real) / denominator,
+ return new Complex((imaginary * q + real) / denominator,
(imaginary - real * q) / denominator);
}
}
@@ -341,7 +341,7 @@ in the
if (Double.isInfinite(divisor)) {
return !(Double.isInfinite(real) || Double.isInfinite(imaginary)) ? ZERO : NaN;
}
- return createComplex(real / divisor,
+ return new Complex(real / divisor,
imaginary / divisor);
}
@@ -363,11 +363,11 @@ in the
if (Math.abs(real) < Math.abs(imaginary)) {
double q = real / imaginary;
double scale = 1. / (real * q + imaginary);
- return createComplex(scale * q, -scale);
+ return new Complex(scale * q, -scale);
} else {
double q = imaginary / real;
double scale = 1. / (imaginary * q + real);
- return createComplex(scale, -scale * q);
+ return new Complex(scale, -scale * q);
}
}
@@ -561,7 +561,7 @@ in the
*/
public Complex multiply(Complex factor) {
checkNotNull(factor);
- return createComplex(real * factor.real - imaginary * factor.imaginary,
+ return new Complex(real * factor.real - imaginary * factor.imaginary,
real * factor.imaginary + imaginary * factor.real);
}
@@ -574,7 +574,7 @@ in the
* @see #multiply(Complex)
*/
public Complex multiply(final int factor) {
- return createComplex(real * factor, imaginary * factor);
+ return new Complex(real * factor, imaginary * factor);
}
/**
@@ -586,7 +586,7 @@ in the
* @see #multiply(Complex)
*/
public Complex multiply(double factor) {
- return createComplex(real * factor, imaginary * factor);
+ return new Complex(real * factor, imaginary * factor);
}
/**
@@ -597,7 +597,7 @@ in the
* @return {@code -this}.
*/
public Complex negate() {
- return createComplex(-real, -imaginary);
+ return new Complex(-real, -imaginary);
}
/**
@@ -613,7 +613,7 @@ in the
*/
public Complex subtract(Complex subtrahend) {
checkNotNull(subtrahend);
- return createComplex(real - subtrahend.getReal(),
+ return new Complex(real - subtrahend.getReal(),
imaginary - subtrahend.getImaginary());
}
@@ -626,7 +626,7 @@ in the
* @see #subtract(Complex)
*/
public Complex subtract(double subtrahend) {
- return createComplex(real - subtrahend, imaginary);
+ return new Complex(real - subtrahend, imaginary);
}
/**
@@ -786,7 +786,7 @@ in the
* @return the cosine of this complex number.
*/
public Complex cos() {
- return createComplex(Math.cos(real) * Math.cosh(imaginary),
+ return new Complex(Math.cos(real) * Math.cosh(imaginary),
-Math.sin(real) * Math.sinh(imaginary));
}
@@ -822,7 +822,7 @@ in the
return new Complex(Double.NaN, 0);
}
- return createComplex(Math.cosh(real) * Math.cos(imaginary),
+ return new Complex(Math.cosh(real) * Math.cos(imaginary),
Math.sinh(real) * Math.sin(imaginary));
}
@@ -843,8 +843,21 @@ in the
* @return <code><i>e</i><sup>this</sup></code>.
*/
public Complex exp() {
+ if (real == Double.POSITIVE_INFINITY && imaginary == 0) {
+ return new Complex(Double.POSITIVE_INFINITY, 0);
+ } else if (real == Double.NEGATIVE_INFINITY && imaginary == Double.POSITIVE_INFINITY) {
+ return Complex.ZERO;
+ } else if (real == Double.POSITIVE_INFINITY && imaginary == Double.POSITIVE_INFINITY) {
+ return new Complex(Double.POSITIVE_INFINITY, Double.NaN);
+ } else if (real == Double.NEGATIVE_INFINITY && Double.isNaN(imaginary)) {
+ return Complex.ZERO;
+ } else if (real == Double.POSITIVE_INFINITY && Double.isNaN(imaginary)) {
+ return new Complex(Double.POSITIVE_INFINITY, Double.NaN);
+ } else if (Double.isNaN(real) && imaginary == 0) {
+ return new Complex(Double.NaN, 0);
+ }
double expReal = Math.exp(real);
- return createComplex(expReal * Math.cos(imaginary),
+ return new Complex(expReal * Math.cos(imaginary),
expReal * Math.sin(imaginary));
}
@@ -866,7 +879,7 @@ in the
* of {@code this}.
*/
public Complex log() {
- return createComplex(Math.log(abs()),
+ return new Complex(Math.log(abs()),
Math.atan2(imaginary, real));
}
@@ -878,7 +891,7 @@ in the
* @return the base 10 logarithm of <code>this</code>.
*/
public Complex log10() {
- return createComplex(Math.log(abs())/Math.log(10),
+ return new Complex(Math.log(abs())/Math.log(10),
Math.atan2(imaginary, real));
}
@@ -948,7 +961,7 @@ in the
* @return the sine of this complex number.
*/
public Complex sin() {
- return createComplex(Math.sin(real) * Math.cosh(imaginary),
+ return new Complex(Math.sin(real) * Math.cosh(imaginary),
Math.cos(real) * Math.sinh(imaginary));
}
@@ -969,7 +982,7 @@ in the
* @return the hyperbolic sine of {@code this}.
*/
public Complex sinh() {
- return createComplex(Math.sinh(real) * Math.cos(imaginary),
+ return new Complex(Math.sinh(real) * Math.cos(imaginary),
Math.cosh(real) * Math.sin(imaginary));
}
@@ -992,14 +1005,14 @@ in the
*/
public Complex sqrt() {
if (real == 0.0 && imaginary == 0.0) {
- return createComplex(0.0, 0.0);
+ return new Complex(0.0, 0.0);
}
double t = Math.sqrt((Math.abs(real) + abs()) / 2.0);
if (real >= 0.0) {
- return createComplex(t, imaginary / (2.0 * t));
+ return new Complex(t, imaginary / (2.0 * t));
} else {
- return createComplex(Math.abs(imaginary) / (2.0 * t),
+ return new Complex(Math.abs(imaginary) / (2.0 * t),
Math.copySign(1d, imaginary) * t);
}
}
@@ -1015,7 +1028,7 @@ in the
* @return the square root of <code>1 - this<sup>2</sup></code>.
*/
public Complex sqrt1z() {
- return createComplex(1.0, 0.0).subtract(this.multiply(this)).sqrt();
+ return new Complex(1.0, 0.0).subtract(this.multiply(this)).sqrt();
}
/**
@@ -1036,17 +1049,17 @@ in the
*/
public Complex tan() {
if (imaginary > 20.0) {
- return createComplex(0.0, 1.0);
+ return new Complex(0.0, 1.0);
}
if (imaginary < -20.0) {
- return createComplex(0.0, -1.0);
+ return new Complex(0.0, -1.0);
}
double real2 = 2.0 * real;
double imaginary2 = 2.0 * imaginary;
double d = Math.cos(real2) + Math.cosh(imaginary2);
- return createComplex(Math.sin(real2) / d,
+ return new Complex(Math.sin(real2) / d,
Math.sinh(imaginary2) / d);
}
@@ -1068,16 +1081,16 @@ in the
*/
public Complex tanh() {
if (real > 20.0) {
- return createComplex(1.0, 0.0);
+ return new Complex(1.0, 0.0);
}
if (real < -20.0) {
- return createComplex(-1.0, 0.0);
+ return new Complex(-1.0, 0.0);
}
double real2 = 2.0 * real;
double imaginary2 = 2.0 * imaginary;
double d = Math.cosh(real2) + Math.cos(imaginary2);
- return createComplex(Math.sinh(real2) / d,
+ return new Complex(Math.sinh(real2) / d,
Math.sin(imaginary2) / d);
}
@@ -1201,7 +1214,7 @@ in the
* @return A Complex instance with all fields resolved.
*/
protected final Object readResolve() {
- return createComplex(real, imaginary);
+ return new Complex(real, imaginary);
}
/** {@inheritDoc} */