From 740eea9b62f08a63fdacf13e05337b4d75226ad1 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Mon, 4 Apr 2022 08:45:30 +0200 Subject: [PATCH] Update cgbcon.c --- lapack-netlib/SRC/cgbcon.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lapack-netlib/SRC/cgbcon.c b/lapack-netlib/SRC/cgbcon.c index 2a5d251a4..0d12c160c 100644 --- a/lapack-netlib/SRC/cgbcon.c +++ b/lapack-netlib/SRC/cgbcon.c @@ -15,9 +15,11 @@ #ifdef complex #undef complex #endif +#ifndef _MSC_VER #ifdef I #undef I #endif +#endif #if defined(_WIN64) typedef long long BLASLONG; @@ -52,7 +54,7 @@ typedef struct { doublereal r, i; } doublecomplex; 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;} +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;} @@ -295,6 +297,20 @@ static double dpow_ui(double x, integer n) { } return pow; } +#ifdef _MSC_VER +static _Fcomplex cpow_ui(complex x, integer n) { + complex pow={1.0,0.0}; unsigned long int u; + if(n != 0) { + if(n < 0) n = -n, x->r = 1/x->r; + for(u = n; ; ) { + if(u & 01) pow *= x; + if(u >>= 1) x *= x; + else break; + } + } + return _Fcomplex(pow->r,pow->i); +} +#else static _Complex float cpow_ui(_Complex float x, integer n) { _Complex float pow=1.0; unsigned long int u; if(n != 0) { @@ -307,6 +323,7 @@ static _Complex float cpow_ui(_Complex float x, integer n) { } return pow; } +#endif #ifdef _MSC_VER static _Dcomplex zpow_ui(_Dcomplex x, integer n) { _Dcomplex pow=1.0, unsigned long int u;