To test without openblas , you can renable netlib blas $ mv /usr/bin/cygblas-0.dll /usr/bin/cygblas-0.dll_bk
Yep, works fine with netlib blas. Pure C repro case is attached, gcc -g 5728.c -o 5728 -llapack && gdb ./5728 I can submit upstream, unless you'd like to. -Tony
#include <stdint.h> #include <stdlib.h> #include <stdio.h> #define BLASINT int32_t void dgeev_(char*, char*, BLASINT*, double*, BLASINT*, double*, double*, double*, BLASINT*, double*, BLASINT*, double*, BLASINT*, BLASINT*); int main() { char jobvl = 'N'; char jobvr = 'N'; BLASINT n = 1000; double *A = malloc(n*n*sizeof(double)); BLASINT lda = n; double *WR = malloc(n*sizeof(double)); double *WI = malloc(n*sizeof(double)); double *VL; BLASINT ldvl = n; double *VR; BLASINT ldvr = n; double *work = malloc(1*sizeof(double)); BLASINT lwork = -1; BLASINT info[1]; BLASINT i, j; for (i=0; i<n; i++) { for (j=0; j<n; j++) { A[n*i+j] = n*(((double)rand()/(double)RAND_MAX) - 0.5); } } dgeev_(&jobvl, &jobvr, &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, work, &lwork, info); printf("info[0] is %d\n", info[0]); printf("lwork is %d\n", lwork); printf("work[0] is %g\n", work[0]); lwork = work[0]; free(work); work = malloc(lwork*sizeof(double)); dgeev_(&jobvl, &jobvr, &n, A, &lda, WR, WI, VL, &ldvl, VR, &ldvr, work, &lwork, info); printf("info[0] is %d\n", info[0]); printf("lwork is %d\n", lwork); printf("work[0] is %g\n", work[0]); }
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple