Fixed #141. make f77blas.h compatible with compilers which lack C99 complex number.
Apply the patch from Tony @tonyhill. Thank you.
This commit is contained in:
		
							parent
							
								
									08c177ca36
								
							
						
					
					
						commit
						b1a54a0107
					
				
							
								
								
									
										2
									
								
								common.h
								
								
								
								
							
							
						
						
									
										2
									
								
								common.h
								
								
								
								
							| 
						 | 
					@ -389,10 +389,12 @@ typedef int blasint;
 | 
				
			||||||
  #define OPENBLAS_COMPLEX_C99
 | 
					  #define OPENBLAS_COMPLEX_C99
 | 
				
			||||||
  typedef float _Complex openblas_complex_float;
 | 
					  typedef float _Complex openblas_complex_float;
 | 
				
			||||||
  typedef double _Complex openblas_complex_double;
 | 
					  typedef double _Complex openblas_complex_double;
 | 
				
			||||||
 | 
					  typedef xdouble _Complex openblas_complex_xdouble;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
  #define OPENBLAS_COMPLEX_STRUCT
 | 
					  #define OPENBLAS_COMPLEX_STRUCT
 | 
				
			||||||
  typedef struct { float real, imag; } openblas_complex_float;
 | 
					  typedef struct { float real, imag; } openblas_complex_float;
 | 
				
			||||||
  typedef struct { double real, imag; } openblas_complex_double;
 | 
					  typedef struct { double real, imag; } openblas_complex_double;
 | 
				
			||||||
 | 
					  typedef struct { xdouble real, imag; } openblas_complex_xdouble;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
#endif  // ASSEMBLER
 | 
					#endif  // ASSEMBLER
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,19 +76,19 @@ myxcomplex_t    BLASFUNC(xdotu)  (blasint *, xdouble  *, blasint *, xdouble  *,
 | 
				
			||||||
myxcomplex_t    BLASFUNC(xdotc)  (blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
					myxcomplex_t    BLASFUNC(xdotc)  (blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#elif defined RETURN_BY_STACK
 | 
					#elif defined RETURN_BY_STACK
 | 
				
			||||||
void  BLASFUNC(cdotu)  (float   _Complex *,  blasint *, float  * , blasint *, float  *,  blasint *);
 | 
					void  BLASFUNC(cdotu)  (openblas_complex_float   *,  blasint *, float  * , blasint *, float  *,  blasint *);
 | 
				
			||||||
void  BLASFUNC(cdotc)  (float   _Complex *,  blasint *, float  *,  blasint *, float  *,  blasint *);
 | 
					void  BLASFUNC(cdotc)  (openblas_complex_float   *,  blasint *, float  *,  blasint *, float  *,  blasint *);
 | 
				
			||||||
void  BLASFUNC(zdotu)  (double  _Complex *, blasint *, double  *, blasint *, double  *, blasint *);
 | 
					void  BLASFUNC(zdotu)  (openblas_complex_double  *, blasint *, double  *, blasint *, double  *, blasint *);
 | 
				
			||||||
void  BLASFUNC(zdotc)  (double  _Complex *, blasint *, double  *, blasint *, double  *, blasint *);
 | 
					void  BLASFUNC(zdotc)  (openblas_complex_double  *, blasint *, double  *, blasint *, double  *, blasint *);
 | 
				
			||||||
void  BLASFUNC(xdotu)  (xdouble _Complex *, blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
					void  BLASFUNC(xdotu)  (openblas_complex_xdouble *, blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
				
			||||||
void  BLASFUNC(xdotc)  (xdouble _Complex *, blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
					void  BLASFUNC(xdotc)  (openblas_complex_xdouble *, blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
float   _Complex BLASFUNC(cdotu)  (blasint *, float  *, blasint *, float  *, blasint *);
 | 
					openblas_complex_float   BLASFUNC(cdotu)  (blasint *, float  *, blasint *, float  *, blasint *);
 | 
				
			||||||
float   _Complex BLASFUNC(cdotc)  (blasint *, float  *, blasint *, float  *, blasint *);
 | 
					openblas_complex_float   BLASFUNC(cdotc)  (blasint *, float  *, blasint *, float  *, blasint *);
 | 
				
			||||||
double  _Complex BLASFUNC(zdotu)  (blasint *, double  *, blasint *, double  *, blasint *);
 | 
					openblas_complex_double  BLASFUNC(zdotu)  (blasint *, double  *, blasint *, double  *, blasint *);
 | 
				
			||||||
double  _Complex BLASFUNC(zdotc)  (blasint *, double  *, blasint *, double  *, blasint *);
 | 
					openblas_complex_double  BLASFUNC(zdotc)  (blasint *, double  *, blasint *, double  *, blasint *);
 | 
				
			||||||
xdouble _Complex BLASFUNC(xdotu)  (blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
					openblas_complex_xdouble BLASFUNC(xdotu)  (blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
				
			||||||
xdouble _Complex BLASFUNC(xdotc)  (blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
					openblas_complex_xdouble BLASFUNC(xdotc)  (blasint *, xdouble  *, blasint *, xdouble  *, blasint *);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void    BLASFUNC(saxpy) (blasint *, float  *, float  *, blasint *, float  *, blasint *);
 | 
					void    BLASFUNC(saxpy) (blasint *, float  *, float  *, blasint *, float  *, blasint *);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,20 +53,28 @@ typedef int blasint;
 | 
				
			||||||
  #include <complex.h>
 | 
					  #include <complex.h>
 | 
				
			||||||
  typedef float _Complex openblas_complex_float;
 | 
					  typedef float _Complex openblas_complex_float;
 | 
				
			||||||
  typedef double _Complex openblas_complex_double;
 | 
					  typedef double _Complex openblas_complex_double;
 | 
				
			||||||
 | 
					  typedef xdouble _Complex openblas_complex_xdouble;
 | 
				
			||||||
  #define openblas_make_complex_float(real, imag)    ((real) + ((imag) * _Complex_I))
 | 
					  #define openblas_make_complex_float(real, imag)    ((real) + ((imag) * _Complex_I))
 | 
				
			||||||
  #define openblas_make_complex_double(real, imag)   ((real) + ((imag) * _Complex_I))
 | 
					  #define openblas_make_complex_double(real, imag)   ((real) + ((imag) * _Complex_I))
 | 
				
			||||||
 | 
					  #define openblas_make_complex_xdouble(real, imag)  ((real) + ((imag) * _Complex_I))
 | 
				
			||||||
  #define openblas_complex_float_real(z)             (creal(z))
 | 
					  #define openblas_complex_float_real(z)             (creal(z))
 | 
				
			||||||
  #define openblas_complex_float_imag(z)             (cimag(z))
 | 
					  #define openblas_complex_float_imag(z)             (cimag(z))
 | 
				
			||||||
  #define openblas_complex_double_real(z)            (creal(z))
 | 
					  #define openblas_complex_double_real(z)            (creal(z))
 | 
				
			||||||
  #define openblas_complex_double_imag(z)            (cimag(z))
 | 
					  #define openblas_complex_double_imag(z)            (cimag(z))
 | 
				
			||||||
 | 
					  #define openblas_complex_xdouble_real(z)           (creal(z))
 | 
				
			||||||
 | 
					  #define openblas_complex_xdouble_imag(z)           (cimag(z))
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
  #define OPENBLAS_COMPLEX_STRUCT
 | 
					  #define OPENBLAS_COMPLEX_STRUCT
 | 
				
			||||||
  typedef struct { float real, imag; } openblas_complex_float;
 | 
					  typedef struct { float real, imag; } openblas_complex_float;
 | 
				
			||||||
  typedef struct { double real, imag; } openblas_complex_double;
 | 
					  typedef struct { double real, imag; } openblas_complex_double;
 | 
				
			||||||
 | 
					  typedef struct { xdouble real, imag; } openblas_complex_xdouble;
 | 
				
			||||||
  #define openblas_make_complex_float(real, imag)    {(real), (imag)}
 | 
					  #define openblas_make_complex_float(real, imag)    {(real), (imag)}
 | 
				
			||||||
  #define openblas_make_complex_double(real, imag)   {(real), (imag)}
 | 
					  #define openblas_make_complex_double(real, imag)   {(real), (imag)}
 | 
				
			||||||
 | 
					  #define openblas_make_complex_xdouble(real, imag)  {(real), (imag)}
 | 
				
			||||||
  #define openblas_complex_float_real(z)             ((z).real)
 | 
					  #define openblas_complex_float_real(z)             ((z).real)
 | 
				
			||||||
  #define openblas_complex_float_imag(z)             ((z).imag)
 | 
					  #define openblas_complex_float_imag(z)             ((z).imag)
 | 
				
			||||||
  #define openblas_complex_double_real(z)            ((z).real)
 | 
					  #define openblas_complex_double_real(z)            ((z).real)
 | 
				
			||||||
  #define openblas_complex_double_imag(z)            ((z).imag)
 | 
					  #define openblas_complex_double_imag(z)            ((z).imag)
 | 
				
			||||||
 | 
					  #define openblas_complex_xdouble_real(z)           ((z).real)
 | 
				
			||||||
 | 
					  #define openblas_complex_xdouble_imag(z)           ((z).imag)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue