package jmathlib.toolbox.trigonometric; import jmathlib.core.functions.ExternalElementWiseFunction; import jmathlib.toolbox.jmathlib.matrix.log; import jmathlib.toolbox.jmathlib.matrix.sqrt; public class asin extends ExternalElementWiseFunction { public asin() { name = "asin"; } /**Calculates the arcsine 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]; // asin(z) = -i * log(i*z + Sqrt(1 - z*z)) double re = arg[REAL]; double im = arg[IMAG]; // _1: one.Minus(z.Times(z)) ... result[REAL] = 1.0 - ( (re*re) - (im*im) ); result[IMAG] = 0.0 - ( (re*im) + (im*re) ); // result: _1.Sqrt() ... sqrt s= new sqrt(); result = s.evaluateValue(result); // _1: z.Times(i) ... // result: _1.Plus(result) ... result[REAL] = result[REAL] - im; result[IMAG] = result[IMAG] + re; // _1: result.log() ... log logFunc = new log(); result = logFunc.evaluateValue(result); double temp = result[IMAG]; result[IMAG] = -result[REAL]; result[REAL] = temp; return result; } } /* @GROUP trigonometric @SYNTAX angle=asin(value) @DOC Returns the arc sine of the first operand. @EXAMPLES <programlisting> asin(1) = 1.5707963267948966 asin(0) = 0 </programlisting> @SEE sin, asinh, cos, acos, acosh */