15b2ba9d3SPiotr Jasiukajtis /* 25b2ba9d3SPiotr Jasiukajtis * CDDL HEADER START 35b2ba9d3SPiotr Jasiukajtis * 45b2ba9d3SPiotr Jasiukajtis * The contents of this file are subject to the terms of the 55b2ba9d3SPiotr Jasiukajtis * Common Development and Distribution License (the "License"). 65b2ba9d3SPiotr Jasiukajtis * You may not use this file except in compliance with the License. 75b2ba9d3SPiotr Jasiukajtis * 85b2ba9d3SPiotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 95b2ba9d3SPiotr Jasiukajtis * or http://www.opensolaris.org/os/licensing. 105b2ba9d3SPiotr Jasiukajtis * See the License for the specific language governing permissions 115b2ba9d3SPiotr Jasiukajtis * and limitations under the License. 125b2ba9d3SPiotr Jasiukajtis * 135b2ba9d3SPiotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each 145b2ba9d3SPiotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 155b2ba9d3SPiotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the 165b2ba9d3SPiotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying 175b2ba9d3SPiotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner] 185b2ba9d3SPiotr Jasiukajtis * 195b2ba9d3SPiotr Jasiukajtis * CDDL HEADER END 205b2ba9d3SPiotr Jasiukajtis */ 215b2ba9d3SPiotr Jasiukajtis 225b2ba9d3SPiotr Jasiukajtis /* 235b2ba9d3SPiotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc. All rights reserved. 245b2ba9d3SPiotr Jasiukajtis */ 255b2ba9d3SPiotr Jasiukajtis /* 265b2ba9d3SPiotr Jasiukajtis * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 275b2ba9d3SPiotr Jasiukajtis * Use is subject to license terms. 285b2ba9d3SPiotr Jasiukajtis */ 295b2ba9d3SPiotr Jasiukajtis 30*a9d3dcd5SRichard Lowe #pragma weak __catanh = catanh 315b2ba9d3SPiotr Jasiukajtis 325b2ba9d3SPiotr Jasiukajtis /* INDENT OFF */ 335b2ba9d3SPiotr Jasiukajtis /* 345b2ba9d3SPiotr Jasiukajtis * z := x + iy 355b2ba9d3SPiotr Jasiukajtis * catanh(z) = -i catan(iz) 365b2ba9d3SPiotr Jasiukajtis * = -i catan(-y+ix) 375b2ba9d3SPiotr Jasiukajtis * = (Im(catan(-y+ix)), -Re(catan(-y+ix))) 385b2ba9d3SPiotr Jasiukajtis */ 395b2ba9d3SPiotr Jasiukajtis /* INDENT ON */ 405b2ba9d3SPiotr Jasiukajtis 415b2ba9d3SPiotr Jasiukajtis #include "libm.h" 425b2ba9d3SPiotr Jasiukajtis #include "complex_wrapper.h" 435b2ba9d3SPiotr Jasiukajtis 445b2ba9d3SPiotr Jasiukajtis dcomplex catanh(dcomplex z)455b2ba9d3SPiotr Jasiukajtiscatanh(dcomplex z) { 465b2ba9d3SPiotr Jasiukajtis double x, y; 475b2ba9d3SPiotr Jasiukajtis dcomplex ans, ct; 485b2ba9d3SPiotr Jasiukajtis 495b2ba9d3SPiotr Jasiukajtis x = D_RE(z); 505b2ba9d3SPiotr Jasiukajtis y = D_IM(z); 515b2ba9d3SPiotr Jasiukajtis D_RE(z) = -y; 525b2ba9d3SPiotr Jasiukajtis D_IM(z) = x; 535b2ba9d3SPiotr Jasiukajtis ct = catan(z); 545b2ba9d3SPiotr Jasiukajtis D_RE(ans) = D_IM(ct); 555b2ba9d3SPiotr Jasiukajtis D_IM(ans) = -D_RE(ct); 565b2ba9d3SPiotr Jasiukajtis return (ans); 575b2ba9d3SPiotr Jasiukajtis } 58