NUMBERS-13: asinh() 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/ade98aa1 Tree: http://git-wip-us.apache.org/repos/asf/commons-numbers/tree/ade98aa1 Diff: http://git-wip-us.apache.org/repos/asf/commons-numbers/diff/ade98aa1 Branch: refs/heads/master Commit: ade98aa183a88502c0dccd1350d47dc6c8d1f37a Parents: a6c5455 Author: Eric Barnhill <ericbarnh...@apache.org> Authored: Mon Jul 10 12:23:10 2017 +0200 Committer: Eric Barnhill <ericbarnh...@apache.org> Committed: Mon Jul 10 12:24:44 2017 +0200 ---------------------------------------------------------------------- .../org/apache/commons/numbers/complex/Complex.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/ade98aa1/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 8fc1077..d3d8aa8 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 @@ -701,6 +701,19 @@ in the * @since 1.2 */ public Complex asinh(){ + if (!Double.isNaN(real) && !Double.isInfinite(real) && imaginary == Double.POSITIVE_INFINITY) { + return new Complex(Double.POSITIVE_INFINITY, Math.PI * 0.5); + } else if (real == Double.POSITIVE_INFINITY && !Double.isInfinite(imaginary) && !Double.isNaN(imaginary)) { + return new Complex(Double.POSITIVE_INFINITY, 0); + } else if (real == Double.POSITIVE_INFINITY && imaginary == Double.POSITIVE_INFINITY) { + return new Complex(Double.POSITIVE_INFINITY, Math.PI * 0.25); + } 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); + } else if (Double.isNaN(real) && imaginary == Double.POSITIVE_INFINITY) { + return new Complex(Double.POSITIVE_INFINITY, Double.NaN); + } return square().add(Complex.ONE).sqrt().add(this).log(); }