package jmathlib.toolbox.trigonometric;
import jmathlib.core.functions.ExternalElementWiseFunction;
import jmathlib.toolbox.jmathlib.matrix.log;
import jmathlib.toolbox.jmathlib.matrix.sqrt;
public class acosh extends ExternalElementWiseFunction
{
public acosh()
{
name = "acosh";
}
/**Calculates the inverse hyperbolic cosine of a complex number
@param arg = the angle as an array of double
@return the result as an array of double*/
public double[] evaluateValue(double[] arg)
{
double result[] = new double[2];
// acosh(z) = log(z + Sqrt(z*z - 1))
double re = arg[REAL];
double im = arg[IMAG];
// _1: z.Times(z).Minus(one) ...
result[REAL] = ( (re*re) - (im*im) ) - 1.0;
result[IMAG] = ( (re*im) + (im*re) ) - 0.0;
// result: _1.Sqrt() ...
sqrt sqrtF = new sqrt();
result = sqrtF.evaluateValue(result);
// result: z.Plus(result) ...
result[REAL] = re + result[REAL]; // !
result[IMAG] = im + result[IMAG]; // !
// _1: result.log() ...
log logF = new log();
result = logF.evaluateValue(result);
// result: _1 ...
return result;
}
}
/*
@@GROUP
trigonometric
@SYNTAX
angle = ACOS(value)
@DOC
Returns the arc cosine of value.
@EXAMPLES
ACOS(1) = 0
ACOS(0) = 1.5707963267948966
@SEE
cos, acosh
*/