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 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 atanh() { // atanh(z) = 1/2 * log( (1+z)/(1-z) ) double tempRe, tempIm; Complex result = new Complex(1.0 + re, im); tempRe = 1.0 - re; tempIm = -im; result = result.div(new Complex(tempRe, tempIm)); tempRe = Math.log(result.abs()); tempIm = result.arg(); result.re = 0.5 * tempRe; result.im = 0.5 * tempIm; return result; }
public Complex atan() { // atan(z) = -i/2 * log((i-z)/(i+z)) double tempRe, tempIm; Complex result = new Complex(-re, 1.0 - im); tempRe = re; tempIm = 1.0 + im; result = result.div(new Complex(tempRe, tempIm)); tempRe = Math.log(result.abs()); tempIm = result.arg(); result.re = 0.5 * tempIm; result.im = -0.5 * tempRe; 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; }