X-Git-Url: http://nsz.repo.hu/git/?p=libm;a=blobdiff_plain;f=src%2Fcmath%2Fcacos.c;h=3aca0519bac47f6dd3880d642050f1c984b589be;hp=b8a2d719217eda07dc9d92efdcace5a38f82a868;hb=HEAD;hpb=1eb8d023d8b5c286908af676cb405a2ba598d286 diff --git a/src/cmath/cacos.c b/src/cmath/cacos.c index b8a2d71..3aca051 100644 --- a/src/cmath/cacos.c +++ b/src/cmath/cacos.c @@ -1,52 +1,11 @@ -/* origin: OpenBSD /usr/src/lib/libm/src/s_cacos.c */ -/* - * Copyright (c) 2008 Stephen L. Moshier - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ -/* - * Complex circular arc cosine - * - * - * SYNOPSIS: - * - * double complex cacos(); - * double complex z, w; - * - * w = cacos (z); - * - * - * DESCRIPTION: - * - * - * w = arccos z = PI/2 - arcsin z. - * - * - * ACCURACY: - * - * Relative error: - * arithmetic domain # trials peak rms - * DEC -10,+10 5200 1.6e-15 2.8e-16 - * IEEE -10,+10 30000 1.8e-14 2.2e-15 - */ - #include "libm.h" +// FIXME: Hull et al. "Implementing the complex arcsine and arccosine functions using exception handling" 1997 + +/* acos(z) = pi/2 - asin(z) */ + double complex cacos(double complex z) { - double complex w; - - w = casin(z); - w = (M_PI_2 - creal(w)) - cimag(w) * I; - return w; + z = casin(z); + return cpack(M_PI_2 - creal(z), -cimag(z)); }