/* * The Spar Library - modular math parser * Copyright (C) 2000,2001 Davide Angelocola * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * */ #include #include sl_complex sl_complex_asin (sl_complex z) { sl_complex u; SL_COMPLEX_RE (u) = 1.; SL_COMPLEX_IM (u) = 0.; u = sl_complex_sqrt (sl_complex_sub (u, sl_complex_mul (z, z))); SL_COMPLEX_RE (u) -= SL_COMPLEX_IM (z); SL_COMPLEX_IM (u) += SL_COMPLEX_RE (z); z = sl_complex_log (u); SL_COMPLEX_RE (u) = SL_COMPLEX_IM (z); SL_COMPLEX_IM (u) = -SL_COMPLEX_RE (z); return u; } sl_complex sl_complex_acos (sl_complex z) { sl_complex u; SL_COMPLEX_RE (u) = 1.; SL_COMPLEX_IM (u) = 0.; u = sl_complex_sqrt (sl_complex_sub (u, sl_complex_mul (z, z))); SL_COMPLEX_RE (z) -= SL_COMPLEX_IM (u); SL_COMPLEX_IM (z) += SL_COMPLEX_RE (u); z = sl_complex_log (z); SL_COMPLEX_RE (u) = SL_COMPLEX_IM (z); SL_COMPLEX_IM (u) = -SL_COMPLEX_RE (z); return u; } sl_complex sl_complex_atan (sl_complex z) { sl_complex u; SL_COMPLEX_RE (u) = -SL_COMPLEX_IM (z); SL_COMPLEX_IM (u) = SL_COMPLEX_RE (z); SL_COMPLEX_RE (z) = 1.; SL_COMPLEX_IM (z) = 0.; u = sl_complex_div (sl_complex_add (z, u), sl_complex_sub (z, u)); u = sl_complex_mul_imag (sl_complex_log (u), -.5); return u; }