holdingarea/llvm/llvm-gcc4.2-2.7-x86-mingw32/include/complex.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
equal deleted inserted replaced
19:da7c1a80df0d 20:d2d6724aef32
       
     1 /*
       
     2  * complex.h
       
     3  *
       
     4  * This file is part of the Mingw32 package.
       
     5  *
       
     6  * Contributors:
       
     7  *  Created by Danny Smith <dannysmith@users.sourceforge.net>
       
     8  *
       
     9  *  THIS SOFTWARE IS NOT COPYRIGHTED
       
    10  *
       
    11  *  This source code is offered for use in the public domain. You may
       
    12  *  use, modify or distribute it freely.
       
    13  *
       
    14  *  This code is distributed in the hope that it will be useful but
       
    15  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
       
    16  *  DISCLAIMED. This includes but is not limited to warranties of
       
    17  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
       
    18  *
       
    19  */
       
    20 
       
    21 #ifndef _COMPLEX_H_
       
    22 #define _COMPLEX_H_
       
    23 
       
    24 /* All the headers include this file. */
       
    25 #include <_mingw.h>
       
    26 
       
    27 #if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
       
    28      || !defined __STRICT_ANSI__ 
       
    29 
       
    30 /* These macros are specified by C99 standard */
       
    31 
       
    32 #ifndef __cplusplus
       
    33 #define complex _Complex
       
    34 #endif
       
    35 
       
    36 #define _Complex_I  (0.0F +  1.0iF)
       
    37 
       
    38 /* GCC doesn't support _Imaginary type yet, so we don't
       
    39    define _Imaginary_I */
       
    40 
       
    41 #define I _Complex_I
       
    42 
       
    43 #ifdef __cplusplus
       
    44 extern "C" {
       
    45 #endif 
       
    46 
       
    47 #ifndef RC_INVOKED
       
    48 
       
    49 double __MINGW_ATTRIB_CONST creal (double _Complex);
       
    50 double __MINGW_ATTRIB_CONST cimag (double _Complex);
       
    51 double __MINGW_ATTRIB_CONST carg (double _Complex);
       
    52 double __MINGW_ATTRIB_CONST cabs (double _Complex);
       
    53 double _Complex __MINGW_ATTRIB_CONST conj (double _Complex);
       
    54 double _Complex  cacos (double _Complex);
       
    55 double _Complex  casin (double _Complex);
       
    56 double _Complex  catan (double _Complex);
       
    57 double _Complex  ccos (double _Complex);
       
    58 double _Complex  csin (double _Complex);
       
    59 double _Complex  ctan (double _Complex);
       
    60 double _Complex  cacosh (double _Complex);
       
    61 double _Complex  casinh (double _Complex);
       
    62 double _Complex  catanh (double _Complex);
       
    63 double _Complex  ccosh (double _Complex);
       
    64 double _Complex  csinh (double _Complex);
       
    65 double _Complex  ctanh (double _Complex);
       
    66 double _Complex  cexp (double _Complex);
       
    67 double _Complex  clog (double _Complex);
       
    68 double _Complex  cpow (double _Complex, double _Complex);
       
    69 double _Complex  csqrt (double _Complex);
       
    70 double _Complex __MINGW_ATTRIB_CONST cproj (double _Complex);
       
    71 
       
    72 float __MINGW_ATTRIB_CONST crealf (float _Complex);
       
    73 float __MINGW_ATTRIB_CONST cimagf (float _Complex);
       
    74 float __MINGW_ATTRIB_CONST cargf (float _Complex);
       
    75 float __MINGW_ATTRIB_CONST cabsf (float _Complex);
       
    76 float _Complex __MINGW_ATTRIB_CONST conjf (float _Complex);
       
    77 float _Complex  cacosf (float _Complex);
       
    78 float _Complex  casinf (float _Complex);
       
    79 float _Complex  catanf (float _Complex);
       
    80 float _Complex  ccosf (float _Complex);
       
    81 float _Complex  csinf (float _Complex);
       
    82 float _Complex  ctanf (float _Complex);
       
    83 float _Complex  cacoshf (float _Complex);
       
    84 float _Complex  casinhf (float _Complex);
       
    85 float _Complex  catanhf (float _Complex);
       
    86 float _Complex  ccoshf (float _Complex);
       
    87 float _Complex  csinhf (float _Complex);
       
    88 float _Complex  ctanhf (float _Complex);
       
    89 float _Complex  cexpf (float _Complex);
       
    90 float _Complex  clogf (float _Complex);
       
    91 float _Complex  cpowf (float _Complex, float _Complex);
       
    92 float _Complex  csqrtf (float _Complex);
       
    93 float _Complex __MINGW_ATTRIB_CONST cprojf (float _Complex);
       
    94 
       
    95 long double __MINGW_ATTRIB_CONST creall (long double _Complex);
       
    96 long double __MINGW_ATTRIB_CONST cimagl (long double _Complex);
       
    97 long double __MINGW_ATTRIB_CONST cargl (long double _Complex);
       
    98 long double __MINGW_ATTRIB_CONST cabsl (long double _Complex);
       
    99 long double _Complex __MINGW_ATTRIB_CONST conjl (long double _Complex);
       
   100 long double _Complex  cacosl (long double _Complex);
       
   101 long double _Complex  casinl (long double _Complex);
       
   102 long double _Complex  catanl (long double _Complex);
       
   103 long double _Complex  ccosl (long double _Complex);
       
   104 long double _Complex  csinl (long double _Complex);
       
   105 long double _Complex  ctanl (long double _Complex);
       
   106 long double _Complex  cacoshl (long double _Complex);
       
   107 long double _Complex  casinhl (long double _Complex);
       
   108 long double _Complex  catanhl (long double _Complex);
       
   109 long double _Complex  ccoshl (long double _Complex);
       
   110 long double _Complex  csinhl (long double _Complex);
       
   111 long double _Complex  ctanhl (long double _Complex);
       
   112 long double _Complex  cexpl (long double _Complex);
       
   113 long double _Complex  clogl (long double _Complex);
       
   114 long double _Complex  cpowl (long double _Complex, long double _Complex);
       
   115 long double _Complex  csqrtl (long double _Complex);
       
   116 long double _Complex __MINGW_ATTRIB_CONST cprojl (long double _Complex);
       
   117 
       
   118 #ifdef __GNUC__
       
   119 
       
   120 /* double */
       
   121 __CRT_INLINE double __MINGW_ATTRIB_CONST creal (double _Complex _Z)
       
   122 {
       
   123   return __real__ _Z;
       
   124 }
       
   125 
       
   126 __CRT_INLINE double __MINGW_ATTRIB_CONST cimag (double _Complex _Z)
       
   127 {
       
   128   return __imag__ _Z;
       
   129 }
       
   130 
       
   131 __CRT_INLINE double _Complex __MINGW_ATTRIB_CONST conj (double _Complex _Z)
       
   132 {
       
   133   return __extension__ ~_Z;
       
   134 }
       
   135 
       
   136 __CRT_INLINE  double __MINGW_ATTRIB_CONST carg (double _Complex _Z)
       
   137 {
       
   138   double res;
       
   139   __asm__  ("fpatan;"
       
   140 	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
       
   141   return res;
       
   142 }
       
   143 
       
   144 
       
   145 /* float */
       
   146 __CRT_INLINE float __MINGW_ATTRIB_CONST crealf (float _Complex _Z)
       
   147 {
       
   148   return __real__ _Z;
       
   149 }
       
   150 
       
   151 __CRT_INLINE float __MINGW_ATTRIB_CONST cimagf (float _Complex _Z)
       
   152 {
       
   153   return __imag__ _Z;
       
   154 }
       
   155 
       
   156 __CRT_INLINE float _Complex __MINGW_ATTRIB_CONST conjf (float _Complex _Z)
       
   157 {
       
   158   return __extension__ ~_Z;
       
   159 }
       
   160 
       
   161 __CRT_INLINE  float __MINGW_ATTRIB_CONST cargf (float _Complex _Z)
       
   162 {
       
   163   float res;
       
   164   __asm__  ("fpatan;"
       
   165 	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
       
   166   return res;
       
   167 }
       
   168 
       
   169 /* long double */
       
   170 __CRT_INLINE long double __MINGW_ATTRIB_CONST creall (long double _Complex _Z)
       
   171 {
       
   172   return __real__ _Z;
       
   173 }
       
   174 
       
   175 __CRT_INLINE long double __MINGW_ATTRIB_CONST cimagl (long double _Complex _Z)
       
   176 {
       
   177   return __imag__ _Z;
       
   178 }
       
   179 
       
   180 __CRT_INLINE long double _Complex __MINGW_ATTRIB_CONST conjl (long double _Complex _Z)
       
   181 {
       
   182   return __extension__ ~_Z;
       
   183 }
       
   184 
       
   185 __CRT_INLINE  long double __MINGW_ATTRIB_CONST cargl (long double _Complex _Z)
       
   186 {
       
   187   long double res;
       
   188   __asm__  ("fpatan;"
       
   189 	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
       
   190   return res;
       
   191 }
       
   192 
       
   193 #endif /* __GNUC__ */
       
   194 
       
   195 
       
   196 #endif /* RC_INVOKED */
       
   197 
       
   198 #ifdef __cplusplus
       
   199 }
       
   200 #endif 
       
   201 
       
   202 #endif /* __STDC_VERSION__ >= 199901L */
       
   203 
       
   204 
       
   205 #endif /* _COMPLEX_H */