1 /*********************************************************************/ 2 /* Copyright 2009, 2010 The University of Texas at Austin. */ 3 /* All rights reserved. */ 4 /* */ 5 /* Redistribution and use in source and binary forms, with or */ 6 /* without modification, are permitted provided that the following */ 7 /* conditions are met: */ 8 /* */ 9 /* 1. Redistributions of source code must retain the above */ 10 /* copyright notice, this list of conditions and the following */ 11 /* disclaimer. */ 12 /* */ 13 /* 2. Redistributions in binary form must reproduce the above */ 14 /* copyright notice, this list of conditions and the following */ 15 /* disclaimer in the documentation and/or other materials */ 16 /* provided with the distribution. */ 17 /* */ 18 /* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */ 19 /* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */ 20 /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */ 21 /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ 22 /* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */ 23 /* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */ 24 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */ 25 /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */ 26 /* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */ 27 /* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */ 28 /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ 29 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */ 30 /* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ 31 /* POSSIBILITY OF SUCH DAMAGE. */ 32 /* */ 33 /* The views and conclusions contained in the software and */ 34 /* documentation are those of the authors and should not be */ 35 /* interpreted as representing official policies, either expressed */ 36 /* or implied, of The University of Texas at Austin. */ 37 /*********************************************************************/ 38 39 #include "common.h" 40 41 double fabs(double); 42 double sqrt(double); 43 44 #ifdef NEED_F2CCONV 45 double 46 #else 47 FLOAT 48 #endif CNAME(FLOAT * z)49 CNAME(FLOAT *z){ 50 51 FLOAT real = z[0]; 52 FLOAT imag = z[1]; 53 double temp; 54 55 real = fabs(real); 56 imag = fabs(imag); 57 58 if(imag > real){ 59 temp = real; 60 real = imag; 61 imag = temp; 62 } 63 64 if (imag == 0.) return real; 65 66 temp = imag/real; 67 temp = real * sqrt(1.0 + temp*temp); 68 69 return temp; 70 71 } 72