From a5b9dfcbaf3d050d95639c0dc70fb0e5878be11a Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 4 Apr 2022 00:29:22 +0200 Subject: [PATCH] Rewrite _Complex for MSVC --- lapack-netlib/SRC/cgbcon.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lapack-netlib/SRC/cgbcon.c b/lapack-netlib/SRC/cgbcon.c index 41b12981b..ab928fae9 100644 --- a/lapack-netlib/SRC/cgbcon.c +++ b/lapack-netlib/SRC/cgbcon.c @@ -48,10 +48,17 @@ typedef float real; typedef double doublereal; typedef struct { real r, i; } complex; typedef struct { doublereal r, i; } doublecomplex; +#ifdef MSVC +static inline _Fcomplex Cf(complex *z) {return z->r + z->i*I;} +static inline _Dcomplex Cd(doublecomplex *z) {return z->r + z->i*I;} +static inline _Fcomplex * _pCf(complex *z) {return (_Fcomplex*)z;} +static inline _Dcomplex * _pCd(doublecomplex *z) {return (_DComplex*)z;} +#else static inline _Complex float Cf(complex *z) {return z->r + z->i*_Complex_I;} static inline _Complex double Cd(doublecomplex *z) {return z->r + z->i*_Complex_I;} static inline _Complex float * _pCf(complex *z) {return (_Complex float*)z;} static inline _Complex double * _pCd(doublecomplex *z) {return (_Complex double*)z;} +#endif #define pCf(z) (*_pCf(z)) #define pCd(z) (*_pCd(z)) typedef int logical; @@ -345,7 +352,11 @@ static integer smaxloc_(float *w, integer s, integer e, integer *n) } static inline void cdotc_(complex *z, integer *n_, complex *x, integer *incx_, complex *y, integer *incy_) { integer n = *n_, incx = *incx_, incy = *incy_, i; +#ifdef MSVC + _Fcomplex zdotc = 0.0; +#else _Complex float zdotc = 0.0; +#endif if (incx == 1 && incy == 1) { for (i=0;i