public Complex acos() { Complex result; double tempRe, tempIm; // acos(z) = -i * log( z + i * sqrt(1 - z*z) ) tempRe = 1.0 - ((re * re) - (im * im)); tempIm = 0.0 - ((re * im) + (im * re)); result = new Complex(tempRe, tempIm); result = result.sqrt(); tempRe = -result.im; tempIm = result.re; result.re = re + tempRe; result.im = im + tempIm; tempRe = Math.log(result.abs()); tempIm = result.arg(); result.re = tempIm; result.im = -tempRe; return result; }
public void testSqrtInf() { TestUtils.assertSame(infNaN, oneInf.sqrt()); TestUtils.assertSame(infNaN, oneNegInf.sqrt()); TestUtils.assertSame(infZero, infOne.sqrt()); TestUtils.assertSame(zeroInf, negInfOne.sqrt()); TestUtils.assertSame(infNaN, infInf.sqrt()); TestUtils.assertSame(infNaN, infNegInf.sqrt()); TestUtils.assertSame(nanInf, negInfInf.sqrt()); TestUtils.assertSame(nanNegInf, negInfNegInf.sqrt()); }
public void testSqrtPolar() { double r = 1; for (int i = 0; i < 5; i++) { r += i; double theta = 0; for (int j = 0; j < 11; j++) { theta += pi / 12; Complex z = ComplexUtils.polar2Complex(r, theta); Complex sqrtz = ComplexUtils.polar2Complex(Math.sqrt(r), theta / 2); TestUtils.assertEquals(sqrtz, z.sqrt(), 10e-12); } } }
public Complex asinh() { Complex result; // asinh(z) = log(z + sqrt(z*z + 1)) result = new Complex(((re * re) - (im * im)) + 1, (re * im) + (im * re)); result = result.sqrt(); result.re += re; result.im += im; double temp = result.arg(); result.re = Math.log(result.abs()); result.im = temp; return result; }
public Complex asin() { Complex result; double tempRe, tempIm; // asin(z) = -i * log(i*z + sqrt(1 - z*z)) tempRe = 1.0 - ((re * re) - (im * im)); tempIm = 0.0 - ((re * im) + (im * re)); result = new Complex(tempRe, tempIm); result = result.sqrt(); result.re += -im; result.im += re; tempRe = Math.log(result.abs()); tempIm = result.arg(); result.re = tempIm; result.im = -tempRe; return result; }
public void testSqrtImaginaryNegative() { Complex z = new Complex(-3.0, -4.0); Complex expected = new Complex(1.0, -2.0); TestUtils.assertEquals(expected, z.sqrt(), 1.0e-5); }
public void testSqrtImaginaryZero() { Complex z = new Complex(-3.0, 0.0); Complex expected = new Complex(0.0, 1.73205); TestUtils.assertEquals(expected, z.sqrt(), 1.0e-5); }
public void testSqrtRealNegative() { Complex z = new Complex(-3.0, 4); Complex expected = new Complex(1, 2); TestUtils.assertEquals(expected, z.sqrt(), 1.0e-5); }
public void testSqrtRealZero() { Complex z = new Complex(0.0, 4); Complex expected = new Complex(1.41421, 1.41421); TestUtils.assertEquals(expected, z.sqrt(), 1.0e-5); }
public void testSqrtRealPositive() { Complex z = new Complex(3, 4); Complex expected = new Complex(2, 1); TestUtils.assertEquals(expected, z.sqrt(), 1.0e-5); }