package jmathlib.toolbox.trigonometric; import jmathlib.core.functions.ExternalElementWiseFunction; import jmathlib.toolbox.jmathlib.matrix.log; import jmathlib.toolbox.jmathlib.matrix.sqrt; public class acos extends ExternalElementWiseFunction { public acos() { name = "acos"; } /**Calculates the arccosine of a complex number * @param arg = the value as an array of double * @return the result as an array of double */ public double[] evaluateValue(double[] arg) { double result[] = new double[2]; double _re1, _im1; double re = arg[REAL]; double im = arg[IMAG]; // _1: one - z^2 ... result[REAL] = 1.0 - ( (re*re) - (im*im) ); result[IMAG] = 0.0 - ( (re*im) + (im*re) ); // result: _1.Sqrt() ... sqrt sqrtFunc = new sqrt(); result = sqrtFunc.evaluateValue(result); // _1: i * result ... _re1 = - result[IMAG]; _im1 = + result[REAL]; // result: z +_1 ... result[REAL] = re + _re1; result[IMAG] = im + _im1; // _1: result.log() log logFunc = new log(); result = logFunc.evaluateValue(result); // result: -i * _1 ... double temp = result[IMAG]; result[IMAG] = -result[REAL]; result[REAL] = temp; return result; } } /* @GROUP trigonometric @SYNTAX angle = acos(value) @DOC Returns the arc cosine of value. @EXAMPLES <programlisting> acos(1) = 0 acos(0) = 1.5707963267948966 </programlisting> @SEE cos, acosh, sin, asin, asinh */