LALComplex.h

Go to the documentation of this file.
00001 /*
00002 *  Copyright (C) 2007 Bernd Machenschalk, Jolien Creighton
00003 *
00004 *  This program is free software; you can redistribute it and/or modify
00005 *  it under the terms of the GNU General Public License as published by
00006 *  the Free Software Foundation; either version 2 of the License, or
00007 *  (at your option) any later version.
00008 *
00009 *  This program is distributed in the hope that it will be useful,
00010 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 *  GNU General Public License for more details.
00013 *
00014 *  You should have received a copy of the GNU General Public License
00015 *  along with with program; see the file COPYING. If not, write to the
00016 *  Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
00017 *  MA  02111-1307  USA
00018 */
00019 
00020 #ifndef _LALCOMPLEX_H
00021 #define _LALCOMPLEX_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 #include <lal/LALAtomicDatatypes.h>
00028 
00029 NRCSID (LALCOMPLEXH,"$Id: LALComplex.h,v 1.3 2007/06/08 14:41:52 bema Exp $");
00030 
00031 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00032 #if defined __COMPLEX__ || defined _COMPLEX_H
00033 #error "don't use both <complex.h> and LAL_USE_SHORT_MACROS"
00034 #endif
00035 #endif
00036 
00037 #ifdef LAL_NO_COMPLEX_MACROS
00038 #undef LAL_USE_COMPLEX_MACROS
00039 #undef LAL_USE_COMPLEX_SHORT_MACROS
00040 #else
00041 #ifndef LAL_USE_COMPLEX_MACROS
00042 #define LAL_USE_COMPLEX_MACROS /* default is to have these macros */
00043 #endif
00044 #endif
00045 
00046 
00047 #define LAL_REAL(z) ((z).re)
00048 #define LAL_IMAG(z) ((z).im)
00049 #define LAL_COMPLEX_EQ(z1,z2) (((z1).re == (z2).re) && ((z1).im == (z2).im))
00050 
00051 #define LAL_SET_COMPLEX(zp,x,y) do {(zp)->re=(x); (zp)->im=(y);} while(0)
00052 #define LAL_SET_REAL(zp,x) do {(zp)->re=(x);} while(0)
00053 #define LAL_SET_IMAG(zp,y) do {(zp)->im=(y);} while(0)
00054 
00055 #define LAL_COMPLEX16_ONE (XLALCOMPLEX16Rect(1.0,0.0))
00056 #define LAL_COMPLEX16_ZERO (XLALCOMPLEX16Rect(0.0,0.0))
00057 #define LAL_COMPLEX16_NEGONE (XLALCOMPLEX16Rect(-1.0,0.0))
00058 #define LAL_COMPLEX16_I (XLALCOMPLEX16Rect(0.0,1.0))
00059 
00060 #ifdef LAL_USE_COMPLEX_MACROS
00061 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00062 #define creal(z) ((z).re)
00063 #define cimag(z) ((z).im)
00064 #define crect(x,y) (XLALCOMPLEX16Rect((x),(y)))
00065 #define csetr(x) (XLALCOMPLEX16Rect((x),0.0))
00066 #define cseti(y) (XLALCOMPLEX16Rect(0.0,(y)))
00067 #define cpolar(x,y) (XLALCOMPLEX16Polar((x),(y)))
00068 #define cisequal(z1,z2) (((z1).re == (z2).re) && ((z1).im == (z2).im))
00069 
00070 #define cunit (XLALCOMPLEX16Rect(1.0,0.0))
00071 #define czero (XLALCOMPLEX16Rect(0.0,0.0))
00072 #define cnegone (XLALCOMPLEX16Rect(-1.0,0.0))
00073 #define I (XLALCOMPLEX16Rect(0.0,1.0))
00074 #endif
00075 #endif
00076 
00077 COMPLEX16 XLALCOMPLEX16Rect (REAL8 x, REAL8 y);
00078 COMPLEX16 XLALCOMPLEX16Polar (REAL8 x, REAL8 y);
00079 
00080 REAL8 XLALCOMPLEX16Arg (COMPLEX16 z);
00081 REAL8 XLALCOMPLEX16Abs (COMPLEX16 z);
00082 REAL8 XLALCOMPLEX16Abs2 (COMPLEX16 z);
00083 REAL8 XLALCOMPLEX16LogAbs (COMPLEX16 z);
00084 #ifdef LAL_USE_COMPLEX_MACROS
00085 #define LAL_CARG(z) (XLALCOMPLEX16Arg(z))
00086 #define LAL_CABS(z) (XLALCOMPLEX16Abs(z))
00087 #define LAL_CABS2(z) (XLALCOMPLEX16Abs2(z))
00088 #define LAL_CLOGABS(z) (XLALCOMPLEX16LogAbs(z))
00089 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00090 #define carg(z) (XLALCOMPLEX16Arg(z))
00091 #define cabs(z) (XLALCOMPLEX16Abs(z))
00092 #define cabs2(z) (XLALCOMPLEX16Abs2(z))
00093 #define clogabs(z) (XLALCOMPLEX16LogAbs(z))
00094 #endif
00095 #endif
00096 
00097 
00098 COMPLEX16 XLALCOMPLEX16Add (COMPLEX16 a, COMPLEX16 b);
00099 COMPLEX16 XLALCOMPLEX16Sub (COMPLEX16 a, COMPLEX16 b);
00100 COMPLEX16 XLALCOMPLEX16Mul (COMPLEX16 a, COMPLEX16 b);
00101 COMPLEX16 XLALCOMPLEX16Div (COMPLEX16 a, COMPLEX16 b);
00102 
00103 COMPLEX16 XLALCOMPLEX16AddReal (COMPLEX16 a, REAL8 x);
00104 COMPLEX16 XLALCOMPLEX16SubReal (COMPLEX16 a, REAL8 x);
00105 COMPLEX16 XLALCOMPLEX16MulReal (COMPLEX16 a, REAL8 x);
00106 COMPLEX16 XLALCOMPLEX16DivReal (COMPLEX16 a, REAL8 x);
00107 
00108 COMPLEX16 XLALCOMPLEX16AddImag (COMPLEX16 a, REAL8 y);
00109 COMPLEX16 XLALCOMPLEX16SubImag (COMPLEX16 a, REAL8 y);
00110 COMPLEX16 XLALCOMPLEX16MulImag (COMPLEX16 a, REAL8 y);
00111 COMPLEX16 XLALCOMPLEX16DivImag (COMPLEX16 a, REAL8 y);
00112 
00113 COMPLEX16 XLALCOMPLEX16Conjugate (COMPLEX16 z);
00114 COMPLEX16 XLALCOMPLEX16Inverse (COMPLEX16 a);
00115 COMPLEX16 XLALCOMPLEX16Negative (COMPLEX16 a);
00116 #ifdef LAL_USE_COMPLEX_MACROS
00117 #define LAL_CADD(a,b) (XLALCOMPLEX16Add((a),(b)))
00118 #define LAL_CSUB(a,b) (XLALCOMPLEX16Sub((a),(b)))
00119 #define LAL_CMUL(a,b) (XLALCOMPLEX16Mul((a),(b)))
00120 #define LAL_CDIV(a,b) (XLALCOMPLEX16Div((a),(b)))
00121 
00122 #define LAL_CADD_REAL(a,x) (XLALCOMPLEX16AddReal((a),(x)))
00123 #define LAL_CSUB_REAL(a,x) (XLALCOMPLEX16SubReal((a),(x)))
00124 #define LAL_CMUL_REAL(a,x) (XLALCOMPLEX16MulReal((a),(x)))
00125 #define LAL_CDIV_REAL(a,x) (XLALCOMPLEX16DivReal((a),(x)))
00126 
00127 #define LAL_CADD_IMAG(a,y) (XLALCOMPLEX16AddImag((a),(y)))
00128 #define LAL_CSUB_IMAG(a,y) (XLALCOMPLEX16SubImag((a),(y)))
00129 #define LAL_CMUL_IMAG(a,y) (XLALCOMPLEX16MulImag((a),(y)))
00130 #define LAL_CDIV_IMAG(a,y) (XLALCOMPLEX16DivImag((a),(y)))
00131 
00132 #define LAL_CONJ(z) (XLALCOMPLEX16Conjugate(z))
00133 #define LAL_CINV(a) (XLALCOMPLEX16Inverse(a))
00134 #define LAL_CNEG(a) (XLALCOMPLEX16Negative(a))
00135 
00136 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00137 #define cadd(a,b) (XLALCOMPLEX16Add((a),(b)))
00138 #define csub(a,b) (XLALCOMPLEX16Sub((a),(b)))
00139 #define cmul(a,b) (XLALCOMPLEX16Mul((a),(b)))
00140 #define cdiv(a,b) (XLALCOMPLEX16Div((a),(b)))
00141 
00142 #define caddr(a,x) (XLALCOMPLEX16AddReal((a),(x)))
00143 #define csubr(a,x) (XLALCOMPLEX16SubReal((a),(x)))
00144 #define cmulr(a,x) (XLALCOMPLEX16MulReal((a),(x)))
00145 #define cdivr(a,x) (XLALCOMPLEX16DivReal((a),(x)))
00146 
00147 #define caddi(a,y) (XLALCOMPLEX16AddImag((a),(y)))
00148 #define csubi(a,y) (XLALCOMPLEX16SubImag((a),(y)))
00149 #define cmuli(a,y) (XLALCOMPLEX16MulImag((a),(y)))
00150 #define cdivi(a,y) (XLALCOMPLEX16DivImag((a),(y)))
00151 
00152 #define conj(z) (XLALCOMPLEX16Conjugate(z))
00153 #define cinv(a) (XLALCOMPLEX16Inverse(a))
00154 #define cneg(a) (XLALCOMPLEX16Negative(a))
00155 #endif
00156 #endif
00157 
00158 
00159 COMPLEX16 XLALCOMPLEX16Sqrt (COMPLEX16 z);
00160 COMPLEX16 XLALCOMPLEX16SqrtReal (REAL8 x);
00161 
00162 COMPLEX16 XLALCOMPLEX16Pow (COMPLEX16 a, COMPLEX16 b);
00163 COMPLEX16 XLALCOMPLEX16PowReal (COMPLEX16 a, REAL8 x);
00164 
00165 COMPLEX16 XLALCOMPLEX16Exp (COMPLEX16 a);
00166 COMPLEX16 XLALCOMPLEX16Log (COMPLEX16 a);
00167 COMPLEX16 XLALCOMPLEX16Log10 (COMPLEX16 a);
00168 COMPLEX16 XLALCOMPLEX16LogB (COMPLEX16 a, COMPLEX16 b);
00169 #ifdef LAL_USE_COMPLEX_MACROS
00170 #define LAL_CSQRT(z) (XLALCOMPLEX16Sqrt(z))
00171 #define LAL_CSQRT_REAL(x) (XLALCOMPLEX16SqrtReal(x))
00172 
00173 #define LAL_CPOW(a,b) (XLALCOMPLEX16Pow((a),(b)))
00174 #define LAL_CPOW_REAL(a,x) (XLALCOMPLEX16PowReal((a),(x)))
00175 
00176 #define LAL_CEXP(a) (XLALCOMPLEX16Exp(a))
00177 #define LAL_CLOG(a) (XLALCOMPLEX16Log(a))
00178 #define LAL_CLOG10(a) (XLALCOMPLEX16Log10(a))
00179 #define LAL_CLOGB(a,b) (XLALCOMPLEX16LogB((a),(b)))
00180 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00181 #define csqrt(z) (XLALCOMPLEX16Sqrt(z))
00182 #define csqrtr(x) (XLALCOMPLEX16SqrtReal(x))
00183 
00184 #define cpow(a,b) (XLALCOMPLEX16Pow((a),(b)))
00185 #define cpowr(a,x) (XLALCOMPLEX16PowReal((a),(x)))
00186 
00187 #define cexp(a) (XLALCOMPLEX16Exp(a))
00188 #define clog(a) (XLALCOMPLEX16Log(a))
00189 #define clog10(a) (XLALCOMPLEX16Log10(a))
00190 #define clogb(a,b) (XLALCOMPLEX16LogB((a),(b)))
00191 #endif
00192 #endif
00193 
00194 
00195 COMPLEX16 XLALCOMPLEX16Sin (COMPLEX16 a);
00196 COMPLEX16 XLALCOMPLEX16Cos (COMPLEX16 a);
00197 COMPLEX16 XLALCOMPLEX16Sec (COMPLEX16 a);
00198 COMPLEX16 XLALCOMPLEX16Csc (COMPLEX16 a);
00199 COMPLEX16 XLALCOMPLEX16Tan (COMPLEX16 a);
00200 COMPLEX16 XLALCOMPLEX16Cot (COMPLEX16 a);
00201 #ifdef LAL_USE_COMPLEX_MACROS
00202 #define LAL_CSIN(a) (XLALCOMPLEX16Sin(a))
00203 #define LAL_CCOS(a) (XLALCOMPLEX16Cos(a))
00204 #define LAL_CSEC(a) (XLALCOMPLEX16Sec(a))
00205 #define LAL_CCSC(a) (XLALCOMPLEX16Csc(a))
00206 #define LAL_CTAN(a) (XLALCOMPLEX16Tan(a))
00207 #define LAL_CCOT(a) (XLALCOMPLEX16Cot(a))
00208 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00209 #define csin(a) (XLALCOMPLEX16Sin(a))
00210 #define ccos(a) (XLALCOMPLEX16Cos(a))
00211 #define csec(a) (XLALCOMPLEX16Sec(a))
00212 #define ccsc(a) (XLALCOMPLEX16Csc(a))
00213 #define ctan(a) (XLALCOMPLEX16Tan(a))
00214 #define ccot(a) (XLALCOMPLEX16Cot(a))
00215 #endif
00216 #endif
00217 
00218 
00219 
00220 COMPLEX16 XLALCOMPLEX16Arcsin (COMPLEX16 a);
00221 COMPLEX16 XLALCOMPLEX16ArcsinReal (REAL8 x);
00222 COMPLEX16 XLALCOMPLEX16Arccos (COMPLEX16 a);
00223 COMPLEX16 XLALCOMPLEX16ArccosReal (REAL8 x);
00224 COMPLEX16 XLALCOMPLEX16Arcsec (COMPLEX16 a);
00225 COMPLEX16 XLALCOMPLEX16ArcsecReal (REAL8 x);
00226 COMPLEX16 XLALCOMPLEX16Arccsc (COMPLEX16 a);
00227 COMPLEX16 XLALCOMPLEX16ArccscReal (REAL8 x);
00228 COMPLEX16 XLALCOMPLEX16Arctan (COMPLEX16 a);
00229 COMPLEX16 XLALCOMPLEX16Arccot (COMPLEX16 a);
00230 #ifdef LAL_USE_COMPLEX_MACROS
00231 #define LAL_CASIN(a) (XLALCOMPLEX16Arcsin(a))
00232 #define LAL_CASIN_REAL(x) (XLALCOMPLEX16ArcsinReal(x))
00233 #define LAL_CACOS(a) (XLALCOMPLEX16Arccos(a))
00234 #define LAL_CACOS_REAL(x) (XLALCOMPLEX16ArccosReal(x))
00235 #define LAL_CASEC(a) (XLALCOMPLEX16Arcsec(a))
00236 #define LAL_CASEC_REAL(x) (XLALCOMPLEX16ArcsecReal(x))
00237 #define LAL_CACSC(a) (XLALCOMPLEX16Arccsc(a))
00238 #define LAL_CACSC_REAL(x) (XLALCOMPLEX16ArccscReal(x))
00239 #define LAL_CATAN(a) (XLALCOMPLEX16Arctan(a))
00240 #define LAL_CACOT(a) (XLALCOMPLEX16Arccot(a))
00241 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00242 #define casin(a) (XLALCOMPLEX16Arcsin(a))
00243 #define casinr(x) (XLALCOMPLEX16ArcsinReal(x))
00244 #define cacos(a) (XLALCOMPLEX16Arccos(a))
00245 #define cacosr(x) (XLALCOMPLEX16ArccosReal(x))
00246 #define casec(a) (XLALCOMPLEX16Arcsec(a))
00247 #define casecr(x) (XLALCOMPLEX16ArcsecReal(x))
00248 #define cacsc(a) (XLALCOMPLEX16Arccsc(a))
00249 #define cacscr(x) (XLALCOMPLEX16ArccscReal(x))
00250 #define catan(a) (XLALCOMPLEX16Arctan(a))
00251 #define cacot(a) (XLALCOMPLEX16Arccot(a))
00252 #endif
00253 #endif
00254 
00255 
00256 
00257 COMPLEX16 XLALCOMPLEX16Sinh (COMPLEX16 a);
00258 COMPLEX16 XLALCOMPLEX16Cosh (COMPLEX16 a);
00259 COMPLEX16 XLALCOMPLEX16Sech (COMPLEX16 a);
00260 COMPLEX16 XLALCOMPLEX16Csch (COMPLEX16 a);
00261 COMPLEX16 XLALCOMPLEX16Tanh (COMPLEX16 a);
00262 COMPLEX16 XLALCOMPLEX16Coth (COMPLEX16 a);
00263 #ifdef LAL_USE_COMPLEX_MACROS
00264 #define LAL_CSINH(a) (XLALCOMPLEX16Sinh(a))
00265 #define LAL_CCOSH(a) (XLALCOMPLEX16Cosh(a))
00266 #define LAL_CSECH(a) (XLALCOMPLEX16Sech(a))
00267 #define LAL_CCSCH(a) (XLALCOMPLEX16Csch(a))
00268 #define LAL_CTANH(a) (XLALCOMPLEX16Tanh(a))
00269 #define LAL_CCOTH(a) (XLALCOMPLEX16Coth(a))
00270 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00271 #define csinh(a) (XLALCOMPLEX16Sinh(a))
00272 #define ccosh(a) (XLALCOMPLEX16Cosh(a))
00273 #define csech(a) (XLALCOMPLEX16Sech(a))
00274 #define ccsch(a) (XLALCOMPLEX16Csch(a))
00275 #define ctanh(a) (XLALCOMPLEX16Tanh(a))
00276 #define ccoth(a) (XLALCOMPLEX16Coth(a))
00277 #endif
00278 #endif
00279 
00280 
00281 
00282 COMPLEX16 XLALCOMPLEX16Arcsinh (COMPLEX16 a);
00283 COMPLEX16 XLALCOMPLEX16Arccosh (COMPLEX16 a);
00284 COMPLEX16 XLALCOMPLEX16ArccoshReal (REAL8 x);
00285 COMPLEX16 XLALCOMPLEX16Arcsech (COMPLEX16 a);
00286 COMPLEX16 XLALCOMPLEX16Arccsch (COMPLEX16 a);
00287 COMPLEX16 XLALCOMPLEX16Arctanh (COMPLEX16 a);
00288 COMPLEX16 XLALCOMPLEX16ArctanhReal (REAL8 x);
00289 COMPLEX16 XLALCOMPLEX16Arccoth (COMPLEX16 a);
00290 #ifdef LAL_USE_COMPLEX_MACROS
00291 #define LAL_CASINH(a) (XLALCOMPLEX16Arcsinh(a))
00292 #define LAL_CACOSH(a) (XLALCOMPLEX16Arccosh(a))
00293 #define LAL_CACOSH_REAL(x) (XLALCOMPLEX16ArccoshReal(x))
00294 #define LAL_CASECH(a) (XLALCOMPLEX16Arcsech(a))
00295 #define LAL_CACSCH(a) (XLALCOMPLEX16Arccsch(a))
00296 #define LAL_CATANH(a) (XLALCOMPLEX16Arctanh(a))
00297 #define LAL_CATANH_REAL(x) (XLALCOMPLEX16ArctanhReal(x))
00298 #define LAL_CACOTH(a) (XLALCOMPLEX16Arccoth(a))
00299 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00300 #define casinh(a) (XLALCOMPLEX16Arcsinh(a))
00301 #define cacosh(a) (XLALCOMPLEX16Arccosh(a))
00302 #define cacoshr(x) (XLALCOMPLEX16ArccoshReal(x))
00303 #define casech(a) (XLALCOMPLEX16Arcsech(a))
00304 #define cacsch(a) (XLALCOMPLEX16Arccsch(a))
00305 #define catanh(a) (XLALCOMPLEX16Arctanh(a))
00306 #define catanhr(x) (XLALCOMPLEX16ArctanhReal(x))
00307 #define cacoth(a) (XLALCOMPLEX16Arccoth(a))
00308 #endif
00309 #endif
00310 
00311 
00312 
00313 
00314 #define LAL_COMPLEX8_ONE (XLALCOMPLEX8Rect(1.0,0.0))
00315 #define LAL_COMPLEX8_ZERO (XLALCOMPLEX8Rect(0.0,0.0))
00316 #define LAL_COMPLEX8_NEGONE (XLALCOMPLEX8Rect(-1.0,0.0))
00317 #define LAL_COMPLEX8_I (XLALCOMPLEX8Rect(0.0,1.0))
00318 
00319 #ifdef LAL_USE_COMPLEX_MACROS
00320 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00321 #define crectf(x,y) (XLALCOMPLEX8Rect((x),(y)))
00322 #define csetrf(x) (XLALCOMPLEX8Rect((x),0.0))
00323 #define csetif(y) (XLALCOMPLEX8Rect(0.0,(y)))
00324 #define cpolarf(x,y) (XLALCOMPLEX8Polar((x),(y)))
00325 
00326 #define cunitf (XLALCOMPLEX8Rect(1.0,0.0))
00327 #define czerof (XLALCOMPLEX8Rect(0.0,0.0))
00328 #define cnegonef (XLALCOMPLEX8Rect(-1.0,0.0))
00329 #define If (XLALCOMPLEX8Rect(0.0,1.0))
00330 #endif
00331 #endif
00332 
00333 COMPLEX8 XLALCOMPLEX8Rect (REAL4 x, REAL4 y);
00334 COMPLEX8 XLALCOMPLEX8Polar (REAL4 x, REAL4 y);
00335 
00336 REAL4 XLALCOMPLEX8Arg (COMPLEX8 z);
00337 REAL4 XLALCOMPLEX8Abs (COMPLEX8 z);
00338 REAL4 XLALCOMPLEX8Abs2 (COMPLEX8 z);
00339 REAL4 XLALCOMPLEX8LogAbs (COMPLEX8 z);
00340 #ifdef LAL_USE_COMPLEX_MACROS
00341 #define LAL_CARGF(z) (XLALCOMPLEX8Arg(z))
00342 #define LAL_CABSF(z) (XLALCOMPLEX8Abs(z))
00343 #define LAL_CABS2F(z) (XLALCOMPLEX8Abs2(z))
00344 #define LAL_CLOGABSF(z) (XLALCOMPLEX8LogAbs(z))
00345 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00346 #define cargf(z) (XLALCOMPLEX8Arg(z))
00347 #define cabsf(z) (XLALCOMPLEX8Abs(z))
00348 #define cabs2f(z) (XLALCOMPLEX8Abs2(z))
00349 #define clogabsf(z) (XLALCOMPLEX8LogAbs(z))
00350 #endif
00351 #endif
00352 
00353 
00354 COMPLEX8 XLALCOMPLEX8Add (COMPLEX8 a, COMPLEX8 b);
00355 COMPLEX8 XLALCOMPLEX8Sub (COMPLEX8 a, COMPLEX8 b);
00356 COMPLEX8 XLALCOMPLEX8Mul (COMPLEX8 a, COMPLEX8 b);
00357 COMPLEX8 XLALCOMPLEX8Div (COMPLEX8 a, COMPLEX8 b);
00358 
00359 COMPLEX8 XLALCOMPLEX8AddReal (COMPLEX8 a, REAL4 x);
00360 COMPLEX8 XLALCOMPLEX8SubReal (COMPLEX8 a, REAL4 x);
00361 COMPLEX8 XLALCOMPLEX8MulReal (COMPLEX8 a, REAL4 x);
00362 COMPLEX8 XLALCOMPLEX8DivReal (COMPLEX8 a, REAL4 x);
00363 
00364 COMPLEX8 XLALCOMPLEX8AddImag (COMPLEX8 a, REAL4 y);
00365 COMPLEX8 XLALCOMPLEX8SubImag (COMPLEX8 a, REAL4 y);
00366 COMPLEX8 XLALCOMPLEX8MulImag (COMPLEX8 a, REAL4 y);
00367 COMPLEX8 XLALCOMPLEX8DivImag (COMPLEX8 a, REAL4 y);
00368 
00369 COMPLEX8 XLALCOMPLEX8Conjugate (COMPLEX8 z);
00370 COMPLEX8 XLALCOMPLEX8Inverse (COMPLEX8 a);
00371 COMPLEX8 XLALCOMPLEX8Negative (COMPLEX8 a);
00372 #ifdef LAL_USE_COMPLEX_MACROS
00373 #define LAL_CADDF(a,b) (XLALCOMPLEX8Add((a),(b)))
00374 #define LAL_CSUBF(a,b) (XLALCOMPLEX8Sub((a),(b)))
00375 #define LAL_CMULF(a,b) (XLALCOMPLEX8Mul((a),(b)))
00376 #define LAL_CDIVF(a,b) (XLALCOMPLEX8Div((a),(b)))
00377 
00378 #define LAL_CADD_REALF(a,x) (XLALCOMPLEX8AddReal((a),(x)))
00379 #define LAL_CSUB_REALF(a,x) (XLALCOMPLEX8SubReal((a),(x)))
00380 #define LAL_CMUL_REALF(a,x) (XLALCOMPLEX8MulReal((a),(x)))
00381 #define LAL_CDIV_REALF(a,x) (XLALCOMPLEX8DivReal((a),(x)))
00382 
00383 #define LAL_CADD_IMAGF(a,y) (XLALCOMPLEX8AddImag((a),(y)))
00384 #define LAL_CSUB_IMAGF(a,y) (XLALCOMPLEX8SubImag((a),(y)))
00385 #define LAL_CMUL_IMAGF(a,y) (XLALCOMPLEX8MulImag((a),(y)))
00386 #define LAL_CDIV_IMAGF(a,y) (XLALCOMPLEX8DivImag((a),(y)))
00387 
00388 #define LAL_CONJF(z) (XLALCOMPLEX8Conjugate(z))
00389 #define LAL_CINVF(a) (XLALCOMPLEX8Inverse(a))
00390 #define LAL_CNEGF(a) (XLALCOMPLEX8Negative(a))
00391 
00392 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00393 #define caddf(a,b) (XLALCOMPLEX8Add((a),(b)))
00394 #define csubf(a,b) (XLALCOMPLEX8Sub((a),(b)))
00395 #define cmulf(a,b) (XLALCOMPLEX8Mul((a),(b)))
00396 #define cdivf(a,b) (XLALCOMPLEX8Div((a),(b)))
00397 
00398 #define caddrf(a,x) (XLALCOMPLEX8AddReal((a),(x)))
00399 #define csubrf(a,x) (XLALCOMPLEX8SubReal((a),(x)))
00400 #define cmulrf(a,x) (XLALCOMPLEX8MulReal((a),(x)))
00401 #define cdivrf(a,x) (XLALCOMPLEX8DivReal((a),(x)))
00402 
00403 #define caddif(a,y) (XLALCOMPLEX8AddImag((a),(y)))
00404 #define csubif(a,y) (XLALCOMPLEX8SubImag((a),(y)))
00405 #define cmulif(a,y) (XLALCOMPLEX8MulImag((a),(y)))
00406 #define cdivif(a,y) (XLALCOMPLEX8DivImag((a),(y)))
00407 
00408 #define conjf(z) (XLALCOMPLEX8Conjugate(z))
00409 #define cinvf(a) (XLALCOMPLEX8Inverse(a))
00410 #define cnegf(a) (XLALCOMPLEX8Negative(a))
00411 #endif
00412 #endif
00413 
00414 
00415 COMPLEX8 XLALCOMPLEX8Sqrt (COMPLEX8 z);
00416 COMPLEX8 XLALCOMPLEX8SqrtReal (REAL4 x);
00417 
00418 COMPLEX8 XLALCOMPLEX8Pow (COMPLEX8 a, COMPLEX8 b);
00419 COMPLEX8 XLALCOMPLEX8PowReal (COMPLEX8 a, REAL4 x);
00420 
00421 COMPLEX8 XLALCOMPLEX8Exp (COMPLEX8 a);
00422 COMPLEX8 XLALCOMPLEX8Log (COMPLEX8 a);
00423 COMPLEX8 XLALCOMPLEX8Log10 (COMPLEX8 a);
00424 COMPLEX8 XLALCOMPLEX8LogB (COMPLEX8 a, COMPLEX8 b);
00425 #ifdef LAL_USE_COMPLEX_MACROS
00426 #define LAL_CSQRTF(z) (XLALCOMPLEX8Sqrt(z))
00427 #define LAL_CSQRT_REALF(x) (XLALCOMPLEX8SqrtReal(x))
00428 
00429 #define LAL_CPOWF(a,b) (XLALCOMPLEX8Pow((a),(b)))
00430 #define LAL_CPOW_REALF(a,x) (XLALCOMPLEX8PowReal((a),(x)))
00431 
00432 #define LAL_CEXPF(a) (XLALCOMPLEX8Exp(a))
00433 #define LAL_CLOGF(a) (XLALCOMPLEX8Log(a))
00434 #define LAL_CLOG10F(a) (XLALCOMPLEX8Log10(a))
00435 #define LAL_CLOGBF(a,b) (XLALCOMPLEX8LogB((a),(b)))
00436 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00437 #define csqrtf(z) (XLALCOMPLEX8Sqrt(z))
00438 #define csqrtrf(x) (XLALCOMPLEX8SqrtReal(x))
00439 
00440 #define cpowf(a,b) (XLALCOMPLEX8Pow((a),(b)))
00441 #define cpowrf(a,x) (XLALCOMPLEX8PowReal((a),(x)))
00442 
00443 #define cexpf(a) (XLALCOMPLEX8Exp(a))
00444 #define clogf(a) (XLALCOMPLEX8Log(a))
00445 #define clog10f(a) (XLALCOMPLEX8Log10(a))
00446 #define clogbf(a,b) (XLALCOMPLEX8LogB((a),(b)))
00447 #endif
00448 #endif
00449 
00450 
00451 COMPLEX8 XLALCOMPLEX8Sin (COMPLEX8 a);
00452 COMPLEX8 XLALCOMPLEX8Cos (COMPLEX8 a);
00453 COMPLEX8 XLALCOMPLEX8Sec (COMPLEX8 a);
00454 COMPLEX8 XLALCOMPLEX8Csc (COMPLEX8 a);
00455 COMPLEX8 XLALCOMPLEX8Tan (COMPLEX8 a);
00456 COMPLEX8 XLALCOMPLEX8Cot (COMPLEX8 a);
00457 #ifdef LAL_USE_COMPLEX_MACROS
00458 #define LAL_CSINF(a) (XLALCOMPLEX8Sin(a))
00459 #define LAL_CCOSF(a) (XLALCOMPLEX8Cos(a))
00460 #define LAL_CSECF(a) (XLALCOMPLEX8Sec(a))
00461 #define LAL_CCSCF(a) (XLALCOMPLEX8Csc(a))
00462 #define LAL_CTANF(a) (XLALCOMPLEX8Tan(a))
00463 #define LAL_CCOTF(a) (XLALCOMPLEX8Cot(a))
00464 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00465 #define csinf(a) (XLALCOMPLEX8Sin(a))
00466 #define ccosf(a) (XLALCOMPLEX8Cos(a))
00467 #define csecf(a) (XLALCOMPLEX8Sec(a))
00468 #define ccscf(a) (XLALCOMPLEX8Csc(a))
00469 #define ctanf(a) (XLALCOMPLEX8Tan(a))
00470 #define ccotf(a) (XLALCOMPLEX8Cot(a))
00471 #endif
00472 #endif
00473 
00474 
00475 
00476 COMPLEX8 XLALCOMPLEX8Arcsin (COMPLEX8 a);
00477 COMPLEX8 XLALCOMPLEX8ArcsinReal (REAL4 x);
00478 COMPLEX8 XLALCOMPLEX8Arccos (COMPLEX8 a);
00479 COMPLEX8 XLALCOMPLEX8ArccosReal (REAL4 x);
00480 COMPLEX8 XLALCOMPLEX8Arcsec (COMPLEX8 a);
00481 COMPLEX8 XLALCOMPLEX8ArcsecReal (REAL4 x);
00482 COMPLEX8 XLALCOMPLEX8Arccsc (COMPLEX8 a);
00483 COMPLEX8 XLALCOMPLEX8ArccscReal (REAL4 x);
00484 COMPLEX8 XLALCOMPLEX8Arctan (COMPLEX8 a);
00485 COMPLEX8 XLALCOMPLEX8Arccot (COMPLEX8 a);
00486 #ifdef LAL_USE_COMPLEX_MACROS
00487 #define LAL_CASINF(a) (XLALCOMPLEX8Arcsin(a))
00488 #define LAL_CASIN_REALF(x) (XLALCOMPLEX8ArcsinReal(x))
00489 #define LAL_CACOSF(a) (XLALCOMPLEX8Arccos(a))
00490 #define LAL_CACOS_REALF(x) (XLALCOMPLEX8ArccosReal(x))
00491 #define LAL_CASECF(a) (XLALCOMPLEX8Arcsec(a))
00492 #define LAL_CASEC_REALF(x) (XLALCOMPLEX8ArcsecReal(x))
00493 #define LAL_CACSCF(a) (XLALCOMPLEX8Arccsc(a))
00494 #define LAL_CACSC_REALF(x) (XLALCOMPLEX8ArccscReal(x))
00495 #define LAL_CATANF(a) (XLALCOMPLEX8Arctan(a))
00496 #define LAL_CACOTF(a) (XLALCOMPLEX8Arccot(a))
00497 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00498 #define casinf(a) (XLALCOMPLEX8Arcsin(a))
00499 #define casinrf(x) (XLALCOMPLEX8ArcsinReal(x))
00500 #define cacosf(a) (XLALCOMPLEX8Arccos(a))
00501 #define cacosrf(x) (XLALCOMPLEX8ArccosReal(x))
00502 #define casecf(a) (XLALCOMPLEX8Arcsec(a))
00503 #define casecrf(x) (XLALCOMPLEX8ArcsecReal(x))
00504 #define cacscf(a) (XLALCOMPLEX8Arccsc(a))
00505 #define cacscrf(x) (XLALCOMPLEX8ArccscReal(x))
00506 #define catanf(a) (XLALCOMPLEX8Arctan(a))
00507 #define cacotf(a) (XLALCOMPLEX8Arccot(a))
00508 #endif
00509 #endif
00510 
00511 
00512 
00513 COMPLEX8 XLALCOMPLEX8Sinh (COMPLEX8 a);
00514 COMPLEX8 XLALCOMPLEX8Cosh (COMPLEX8 a);
00515 COMPLEX8 XLALCOMPLEX8Sech (COMPLEX8 a);
00516 COMPLEX8 XLALCOMPLEX8Csch (COMPLEX8 a);
00517 COMPLEX8 XLALCOMPLEX8Tanh (COMPLEX8 a);
00518 COMPLEX8 XLALCOMPLEX8Coth (COMPLEX8 a);
00519 #ifdef LAL_USE_COMPLEX_MACROS
00520 #define LAL_CSINHF(a) (XLALCOMPLEX8Sinh(a))
00521 #define LAL_CCOSHF(a) (XLALCOMPLEX8Cosh(a))
00522 #define LAL_CSECHF(a) (XLALCOMPLEX8Sech(a))
00523 #define LAL_CCSCHF(a) (XLALCOMPLEX8Csch(a))
00524 #define LAL_CTANHF(a) (XLALCOMPLEX8Tanh(a))
00525 #define LAL_CCOTHF(a) (XLALCOMPLEX8Coth(a))
00526 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00527 #define csinhf(a) (XLALCOMPLEX8Sinh(a))
00528 #define ccoshf(a) (XLALCOMPLEX8Cosh(a))
00529 #define csechf(a) (XLALCOMPLEX8Sech(a))
00530 #define ccschf(a) (XLALCOMPLEX8Csch(a))
00531 #define ctanhf(a) (XLALCOMPLEX8Tanh(a))
00532 #define ccothf(a) (XLALCOMPLEX8Coth(a))
00533 #endif
00534 #endif
00535 
00536 
00537 
00538 COMPLEX8 XLALCOMPLEX8Arcsinh (COMPLEX8 a);
00539 COMPLEX8 XLALCOMPLEX8Arccosh (COMPLEX8 a);
00540 COMPLEX8 XLALCOMPLEX8ArccoshReal (REAL4 x);
00541 COMPLEX8 XLALCOMPLEX8Arcsech (COMPLEX8 a);
00542 COMPLEX8 XLALCOMPLEX8Arccsch (COMPLEX8 a);
00543 COMPLEX8 XLALCOMPLEX8Arctanh (COMPLEX8 a);
00544 COMPLEX8 XLALCOMPLEX8ArctanhReal (REAL4 x);
00545 COMPLEX8 XLALCOMPLEX8Arccoth (COMPLEX8 a);
00546 #ifdef LAL_USE_COMPLEX_MACROS
00547 #define LAL_CASINHF(a) (XLALCOMPLEX8Arcsinh(a))
00548 #define LAL_CACOSHF(a) (XLALCOMPLEX8Arccosh(a))
00549 #define LAL_CACOSH_REALF(x) (XLALCOMPLEX8ArccoshReal(x))
00550 #define LAL_CASECHF(a) (XLALCOMPLEX8Arcsech(a))
00551 #define LAL_CACSCHF(a) (XLALCOMPLEX8Arccsch(a))
00552 #define LAL_CATANHF(a) (XLALCOMPLEX8Arctanh(a))
00553 #define LAL_CATANH_REALF(x) (XLALCOMPLEX8ArctanhReal(x))
00554 #define LAL_CACOTHF(a) (XLALCOMPLEX8Arccoth(a))
00555 #ifdef LAL_USE_COMPLEX_SHORT_MACROS
00556 #define casinhf(a) (XLALCOMPLEX8Arcsinh(a))
00557 #define cacoshf(a) (XLALCOMPLEX8Arccosh(a))
00558 #define cacoshrf(x) (XLALCOMPLEX8ArccoshReal(x))
00559 #define casechf(a) (XLALCOMPLEX8Arcsech(a))
00560 #define cacschf(a) (XLALCOMPLEX8Arccsch(a))
00561 #define catanhf(a) (XLALCOMPLEX8Arctanh(a))
00562 #define catanhrf(x) (XLALCOMPLEX8ArctanhReal(x))
00563 #define cacothf(a) (XLALCOMPLEX8Arccoth(a))
00564 #endif
00565 #endif
00566 
00567 #ifdef __cplusplus
00568 }
00569 #endif
00570 
00571 #endif /* _LALCOMPLEX8_H */

Generated on Mon Oct 13 02:31:47 2008 for LAL by  doxygen 1.5.2