diff options
| -rw-r--r-- | numpy/linalg/setup.py | 2 | ||||
| -rw-r--r-- | numpy/linalg/umath_linalg.cpp.src (renamed from numpy/linalg/umath_linalg.c.src) | 322 |
2 files changed, 164 insertions, 160 deletions
diff --git a/numpy/linalg/setup.py b/numpy/linalg/setup.py index 94536bb2c..fec2fc074 100644 --- a/numpy/linalg/setup.py +++ b/numpy/linalg/setup.py @@ -69,7 +69,7 @@ def configuration(parent_package='', top_path=None): # umath_linalg module config.add_extension( '_umath_linalg', - sources=['umath_linalg.c.src', get_lapack_lite_sources], + sources=['umath_linalg.cpp.src', get_lapack_lite_sources], depends=['lapack_lite/f2c.h'], extra_info=lapack_info, libraries=['npymath'], diff --git a/numpy/linalg/umath_linalg.c.src b/numpy/linalg/umath_linalg.cpp.src index f8a154445..44e1bef88 100644 --- a/numpy/linalg/umath_linalg.c.src +++ b/numpy/linalg/umath_linalg.cpp.src @@ -78,28 +78,28 @@ typedef double fortran_doublereal; typedef f2c_complex fortran_complex; typedef f2c_doublecomplex fortran_doublecomplex; -extern fortran_int +extern "C" fortran_int FNAME(sgeev)(char *jobvl, char *jobvr, fortran_int *n, float a[], fortran_int *lda, float wr[], float wi[], float vl[], fortran_int *ldvl, float vr[], fortran_int *ldvr, float work[], fortran_int lwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dgeev)(char *jobvl, char *jobvr, fortran_int *n, double a[], fortran_int *lda, double wr[], double wi[], double vl[], fortran_int *ldvl, double vr[], fortran_int *ldvr, double work[], fortran_int lwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cgeev)(char *jobvl, char *jobvr, fortran_int *n, - f2c_doublecomplex a[], fortran_int *lda, - f2c_doublecomplex w[], - f2c_doublecomplex vl[], fortran_int *ldvl, - f2c_doublecomplex vr[], fortran_int *ldvr, - f2c_doublecomplex work[], fortran_int *lwork, - double rwork[], + f2c_complex a[], fortran_int *lda, + f2c_complex w[], + f2c_complex vl[], fortran_int *ldvl, + f2c_complex vr[], fortran_int *ldvr, + f2c_complex work[], fortran_int *lwork, + float rwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zgeev)(char *jobvl, char *jobvr, fortran_int *n, f2c_doublecomplex a[], fortran_int *lda, f2c_doublecomplex w[], @@ -109,24 +109,24 @@ FNAME(zgeev)(char *jobvl, char *jobvr, fortran_int *n, double rwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(ssyevd)(char *jobz, char *uplo, fortran_int *n, float a[], fortran_int *lda, float w[], float work[], fortran_int *lwork, fortran_int iwork[], fortran_int *liwork, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dsyevd)(char *jobz, char *uplo, fortran_int *n, double a[], fortran_int *lda, double w[], double work[], fortran_int *lwork, fortran_int iwork[], fortran_int *liwork, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cheevd)(char *jobz, char *uplo, fortran_int *n, f2c_complex a[], fortran_int *lda, float w[], f2c_complex work[], fortran_int *lwork, float rwork[], fortran_int *lrwork, fortran_int iwork[], fortran_int *liwork, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zheevd)(char *jobz, char *uplo, fortran_int *n, f2c_doublecomplex a[], fortran_int *lda, double w[], f2c_doublecomplex work[], @@ -134,19 +134,19 @@ FNAME(zheevd)(char *jobz, char *uplo, fortran_int *n, fortran_int *liwork, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(sgelsd)(fortran_int *m, fortran_int *n, fortran_int *nrhs, float a[], fortran_int *lda, float b[], fortran_int *ldb, float s[], float *rcond, fortran_int *rank, float work[], fortran_int *lwork, fortran_int iwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dgelsd)(fortran_int *m, fortran_int *n, fortran_int *nrhs, double a[], fortran_int *lda, double b[], fortran_int *ldb, double s[], double *rcond, fortran_int *rank, double work[], fortran_int *lwork, fortran_int iwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cgelsd)(fortran_int *m, fortran_int *n, fortran_int *nrhs, f2c_complex a[], fortran_int *lda, f2c_complex b[], fortran_int *ldb, @@ -154,7 +154,7 @@ FNAME(cgelsd)(fortran_int *m, fortran_int *n, fortran_int *nrhs, f2c_complex work[], fortran_int *lwork, float rwork[], fortran_int iwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zgelsd)(fortran_int *m, fortran_int *n, fortran_int *nrhs, f2c_doublecomplex a[], fortran_int *lda, f2c_doublecomplex b[], fortran_int *ldb, @@ -163,105 +163,105 @@ FNAME(zgelsd)(fortran_int *m, fortran_int *n, fortran_int *nrhs, double rwork[], fortran_int iwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dgeqrf)(fortran_int *m, fortran_int *n, double a[], fortran_int *lda, double tau[], double work[], fortran_int *lwork, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zgeqrf)(fortran_int *m, fortran_int *n, f2c_doublecomplex a[], fortran_int *lda, f2c_doublecomplex tau[], f2c_doublecomplex work[], fortran_int *lwork, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dorgqr)(fortran_int *m, fortran_int *n, fortran_int *k, double a[], fortran_int *lda, double tau[], double work[], fortran_int *lwork, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zungqr)(fortran_int *m, fortran_int *n, fortran_int *k, f2c_doublecomplex a[], fortran_int *lda, f2c_doublecomplex tau[], f2c_doublecomplex work[], fortran_int *lwork, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(sgesv)(fortran_int *n, fortran_int *nrhs, float a[], fortran_int *lda, fortran_int ipiv[], float b[], fortran_int *ldb, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dgesv)(fortran_int *n, fortran_int *nrhs, double a[], fortran_int *lda, fortran_int ipiv[], double b[], fortran_int *ldb, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cgesv)(fortran_int *n, fortran_int *nrhs, f2c_complex a[], fortran_int *lda, fortran_int ipiv[], f2c_complex b[], fortran_int *ldb, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zgesv)(fortran_int *n, fortran_int *nrhs, f2c_doublecomplex a[], fortran_int *lda, fortran_int ipiv[], f2c_doublecomplex b[], fortran_int *ldb, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(sgetrf)(fortran_int *m, fortran_int *n, float a[], fortran_int *lda, fortran_int ipiv[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dgetrf)(fortran_int *m, fortran_int *n, double a[], fortran_int *lda, fortran_int ipiv[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cgetrf)(fortran_int *m, fortran_int *n, f2c_complex a[], fortran_int *lda, fortran_int ipiv[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zgetrf)(fortran_int *m, fortran_int *n, f2c_doublecomplex a[], fortran_int *lda, fortran_int ipiv[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(spotrf)(char *uplo, fortran_int *n, float a[], fortran_int *lda, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dpotrf)(char *uplo, fortran_int *n, double a[], fortran_int *lda, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cpotrf)(char *uplo, fortran_int *n, f2c_complex a[], fortran_int *lda, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zpotrf)(char *uplo, fortran_int *n, f2c_doublecomplex a[], fortran_int *lda, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(sgesdd)(char *jobz, fortran_int *m, fortran_int *n, float a[], fortran_int *lda, float s[], float u[], fortran_int *ldu, float vt[], fortran_int *ldvt, float work[], fortran_int *lwork, fortran_int iwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dgesdd)(char *jobz, fortran_int *m, fortran_int *n, double a[], fortran_int *lda, double s[], double u[], fortran_int *ldu, double vt[], fortran_int *ldvt, double work[], fortran_int *lwork, fortran_int iwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cgesdd)(char *jobz, fortran_int *m, fortran_int *n, f2c_complex a[], fortran_int *lda, float s[], f2c_complex u[], fortran_int *ldu, f2c_complex vt[], fortran_int *ldvt, f2c_complex work[], fortran_int *lwork, float rwork[], fortran_int iwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zgesdd)(char *jobz, fortran_int *m, fortran_int *n, f2c_doublecomplex a[], fortran_int *lda, double s[], f2c_doublecomplex u[], fortran_int *ldu, @@ -269,87 +269,87 @@ FNAME(zgesdd)(char *jobz, fortran_int *m, fortran_int *n, f2c_doublecomplex work[], fortran_int *lwork, double rwork[], fortran_int iwork[], fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(spotrs)(char *uplo, fortran_int *n, fortran_int *nrhs, float a[], fortran_int *lda, float b[], fortran_int *ldb, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dpotrs)(char *uplo, fortran_int *n, fortran_int *nrhs, double a[], fortran_int *lda, double b[], fortran_int *ldb, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cpotrs)(char *uplo, fortran_int *n, fortran_int *nrhs, f2c_complex a[], fortran_int *lda, f2c_complex b[], fortran_int *ldb, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zpotrs)(char *uplo, fortran_int *n, fortran_int *nrhs, f2c_doublecomplex a[], fortran_int *lda, f2c_doublecomplex b[], fortran_int *ldb, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(spotri)(char *uplo, fortran_int *n, float a[], fortran_int *lda, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(dpotri)(char *uplo, fortran_int *n, double a[], fortran_int *lda, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(cpotri)(char *uplo, fortran_int *n, f2c_complex a[], fortran_int *lda, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(zpotri)(char *uplo, fortran_int *n, f2c_doublecomplex a[], fortran_int *lda, fortran_int *info); -extern fortran_int +extern "C" fortran_int FNAME(scopy)(fortran_int *n, float *sx, fortran_int *incx, float *sy, fortran_int *incy); -extern fortran_int +extern "C" fortran_int FNAME(dcopy)(fortran_int *n, double *sx, fortran_int *incx, double *sy, fortran_int *incy); -extern fortran_int +extern "C" fortran_int FNAME(ccopy)(fortran_int *n, f2c_complex *sx, fortran_int *incx, f2c_complex *sy, fortran_int *incy); -extern fortran_int +extern "C" fortran_int FNAME(zcopy)(fortran_int *n, f2c_doublecomplex *sx, fortran_int *incx, f2c_doublecomplex *sy, fortran_int *incy); -extern float +extern "C" float FNAME(sdot)(fortran_int *n, float *sx, fortran_int *incx, float *sy, fortran_int *incy); -extern double +extern "C" double FNAME(ddot)(fortran_int *n, double *sx, fortran_int *incx, double *sy, fortran_int *incy); -extern void +extern "C" void FNAME(cdotu)(f2c_complex *ret, fortran_int *n, f2c_complex *sx, fortran_int *incx, f2c_complex *sy, fortran_int *incy); -extern void +extern "C" void FNAME(zdotu)(f2c_doublecomplex *ret, fortran_int *n, f2c_doublecomplex *sx, fortran_int *incx, f2c_doublecomplex *sy, fortran_int *incy); -extern void +extern "C" void FNAME(cdotc)(f2c_complex *ret, fortran_int *n, f2c_complex *sx, fortran_int *incx, f2c_complex *sy, fortran_int *incy); -extern void +extern "C" void FNAME(zdotc)(f2c_doublecomplex *ret, fortran_int *n, f2c_doublecomplex *sx, fortran_int *incx, f2c_doublecomplex *sy, fortran_int *incy); -extern fortran_int +extern "C" fortran_int FNAME(sgemm)(char *transa, char *transb, fortran_int *m, fortran_int *n, fortran_int *k, float *alpha, @@ -357,7 +357,7 @@ FNAME(sgemm)(char *transa, char *transb, float *b, fortran_int *ldb, float *beta, float *c, fortran_int *ldc); -extern fortran_int +extern "C" fortran_int FNAME(dgemm)(char *transa, char *transb, fortran_int *m, fortran_int *n, fortran_int *k, double *alpha, @@ -365,7 +365,7 @@ FNAME(dgemm)(char *transa, char *transb, double *b, fortran_int *ldb, double *beta, double *c, fortran_int *ldc); -extern fortran_int +extern "C" fortran_int FNAME(cgemm)(char *transa, char *transb, fortran_int *m, fortran_int *n, fortran_int *k, f2c_complex *alpha, @@ -373,7 +373,7 @@ FNAME(cgemm)(char *transa, char *transb, f2c_complex *b, fortran_int *ldb, f2c_complex *beta, f2c_complex *c, fortran_int *ldc); -extern fortran_int +extern "C" fortran_int FNAME(zgemm)(char *transa, char *transb, fortran_int *m, fortran_int *n, fortran_int *k, f2c_doublecomplex *alpha, @@ -763,6 +763,7 @@ update_pointers(npy_uint8** bases, ptrdiff_t* offsets, size_t count) /**begin repeat #TYPE = FLOAT, DOUBLE, CFLOAT, CDOUBLE# #typ = float, double, COMPLEX_t, DOUBLECOMPLEX_t# + #ftyp = float, double, f2c_complex, f2c_doublecomplex# #copy = scopy, dcopy, ccopy, zcopy# #nan = s_nan, d_nan, c_nan, z_nan# #zero = s_zero, d_zero, c_zero, z_zero# @@ -785,14 +786,14 @@ linearize_@TYPE@_matrix(void *dst_in, for (i = 0; i < data->rows; i++) { if (column_strides > 0) { FNAME(@copy@)(&columns, - (void*)src, &column_strides, - (void*)dst, &one); + (@ftyp@*)src, &column_strides, + (@ftyp@*)dst, &one); } else if (column_strides < 0) { FNAME(@copy@)(&columns, - (void*)((@typ@*)src + (columns-1)*column_strides), + ((@ftyp@*)src + (columns-1)*column_strides), &column_strides, - (void*)dst, &one); + (@ftyp@*)dst, &one); } else { /* @@ -831,13 +832,13 @@ delinearize_@TYPE@_matrix(void *dst_in, for (i = 0; i < data->rows; i++) { if (column_strides > 0) { FNAME(@copy@)(&columns, - (void*)src, &one, - (void*)dst, &column_strides); + (@ftyp@*)src, &one, + (@ftyp@*)dst, &column_strides); } else if (column_strides < 0) { FNAME(@copy@)(&columns, - (void*)src, &one, - (void*)((@typ@*)dst + (columns-1)*column_strides), + (@ftyp@*)src, &one, + ((@ftyp@*)dst + (columns-1)*column_strides), &column_strides); } else { @@ -1061,6 +1062,7 @@ static NPY_INLINE @typ@ #TYPE = FLOAT, DOUBLE, CFLOAT, CDOUBLE# #typ = npy_float, npy_double, npy_cfloat, npy_cdouble# + #ftyp = float, double, f2c_complex, f2c_doublecomplex# #basetyp = npy_float, npy_double, npy_float, npy_double# #cblas_type = s, d, c, z# */ @@ -1076,7 +1078,7 @@ static NPY_INLINE void fortran_int lda = fortran_int_max(m, 1); int i; /* note: done in place */ - LAPACK(@cblas_type@getrf)(&m, &m, (void *)src, &lda, pivots, &info); + LAPACK(@cblas_type@getrf)(&m, &m, (@ftyp@*)src, &lda, pivots, &info); if (info == 0) { int change_sign = 0; @@ -1091,7 +1093,7 @@ static NPY_INLINE void &@cblas_type@_minus_one : &@cblas_type@_one , sizeof(*sign)); - @TYPE@_slogdet_from_factored_diagonal(src, m, sign, logdet); + @TYPE@_slogdet_from_factored_diagonal((@typ@*)src, m, sign, logdet); } else { /* if getrf fails, use 0 as sign and -inf as logdet @@ -1134,7 +1136,7 @@ static void BEGIN_OUTER_LOOP_3 linearize_@TYPE@_matrix(tmp_buff, args[0], &lin_data); @TYPE@_slogdet_single_element(m, - (void*)tmp_buff, + tmp_buff, (fortran_int*)(tmp_buff+matrix_size), (@typ@*)args[1], (@basetyp@*)args[2]); @@ -1180,7 +1182,7 @@ static void BEGIN_OUTER_LOOP_2 linearize_@TYPE@_matrix(tmp_buff, args[0], &lin_data); @TYPE@_slogdet_single_element(m, - (void*)tmp_buff, + tmp_buff, (fortran_int*)(tmp_buff + matrix_size), &sign, &logdet); @@ -1223,9 +1225,9 @@ call_@lapack_func@(EIGH_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->JOBZ, ¶ms->UPLO, ¶ms->N, - params->A, ¶ms->LDA, params->W, - params->WORK, ¶ms->LWORK, - params->IWORK, ¶ms->LIWORK, + (@typ@*)params->A, ¶ms->LDA, (@typ@*)params->W, + (@typ@*)params->WORK, ¶ms->LWORK, + (fortran_int*)params->IWORK, (fortran_int*)¶ms->LIWORK, &rv); return rv; } @@ -1247,7 +1249,7 @@ init_@lapack_func@(EIGH_PARAMS_t* params, char JOBZ, char UPLO, size_t alloc_size = safe_N * (safe_N + 1) * sizeof(@typ@); fortran_int lda = fortran_int_max(N, 1); - mem_buff = malloc(alloc_size); + mem_buff = (npy_uint8 *)malloc(alloc_size); if (!mem_buff) { goto error; @@ -1282,7 +1284,7 @@ init_@lapack_func@(EIGH_PARAMS_t* params, char JOBZ, char UPLO, liwork = query_iwork_size; } - mem_buff2 = malloc(lwork*sizeof(@typ@) + liwork*sizeof(fortran_int)); + mem_buff2 = (npy_uint8 *)malloc(lwork*sizeof(@typ@) + liwork*sizeof(fortran_int)); if (!mem_buff2) { goto error; } @@ -1321,10 +1323,10 @@ call_@lapack_func@(EIGH_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->JOBZ, ¶ms->UPLO, ¶ms->N, - params->A, ¶ms->LDA, params->W, - params->WORK, ¶ms->LWORK, - params->RWORK, ¶ms->LRWORK, - params->IWORK, ¶ms->LIWORK, + (@ftyp@*)params->A, ¶ms->LDA, (@fbasetyp@*)params->W, + (@ftyp@*)params->WORK, ¶ms->LWORK, + (@fbasetyp@*)params->RWORK, ¶ms->LRWORK, + (fortran_int*)params->IWORK, (fortran_int*)¶ms->LIWORK, &rv); return rv; } @@ -1348,7 +1350,7 @@ init_@lapack_func@(EIGH_PARAMS_t *params, size_t safe_N = N; fortran_int lda = fortran_int_max(N, 1); - mem_buff = malloc(safe_N * safe_N * sizeof(@typ@) + + mem_buff = (npy_uint8 *)malloc(safe_N * safe_N * sizeof(@typ@) + safe_N * sizeof(@basetyp@)); if (!mem_buff) { goto error; @@ -1385,7 +1387,7 @@ init_@lapack_func@(EIGH_PARAMS_t *params, liwork = query_iwork_size; } - mem_buff2 = malloc(lwork*sizeof(@typ@) + + mem_buff2 = (npy_uint8 *)malloc(lwork*sizeof(@typ@) + lrwork*sizeof(@basetyp@) + liwork*sizeof(fortran_int)); if (!mem_buff2) { @@ -1583,9 +1585,9 @@ call_@lapack_func@(GESV_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->N, ¶ms->NRHS, - params->A, ¶ms->LDA, + (@ftyp@*)params->A, ¶ms->LDA, params->IPIV, - params->B, ¶ms->LDB, + (@ftyp@*)params->B, ¶ms->LDB, &rv); return rv; } @@ -1602,7 +1604,7 @@ init_@lapack_func@(GESV_PARAMS_t *params, fortran_int N, fortran_int NRHS) size_t safe_N = N; size_t safe_NRHS = NRHS; fortran_int ld = fortran_int_max(N, 1); - mem_buff = malloc(safe_N * safe_N * sizeof(@ftyp@) + + mem_buff = (npy_uint8 *)malloc(safe_N * safe_N * sizeof(@ftyp@) + safe_N * safe_NRHS*sizeof(@ftyp@) + safe_N * sizeof(fortran_int)); if (!mem_buff) { @@ -1769,7 +1771,7 @@ call_@lapack_func@(POTR_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->UPLO, - ¶ms->N, params->A, ¶ms->LDA, + ¶ms->N, (@ftyp@*)params->A, ¶ms->LDA, &rv); return rv; } @@ -1782,7 +1784,7 @@ init_@lapack_func@(POTR_PARAMS_t *params, char UPLO, fortran_int N) size_t safe_N = N; fortran_int lda = fortran_int_max(N, 1); - mem_buff = malloc(safe_N * safe_N * sizeof(@ftyp@)); + mem_buff = (npy_uint8 *)malloc(safe_N * safe_N * sizeof(@ftyp@)); if (!mem_buff) { goto error; } @@ -1936,11 +1938,11 @@ call_@lapack_func@(GEEV_PARAMS_t* params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->JOBVL, ¶ms->JOBVR, - ¶ms->N, params->A, ¶ms->LDA, - params->WR, params->WI, - params->VLR, ¶ms->LDVL, - params->VRR, ¶ms->LDVR, - params->WORK, ¶ms->LWORK, + ¶ms->N, (@typ@*)params->A, ¶ms->LDA, + (@typ@*)params->WR, (@typ@*)params->WI, + (@typ@*)params->VLR, ¶ms->LDVL, + (@typ@*)params->VRR, ¶ms->LDVR, + (@typ@*)params->WORK, ¶ms->LWORK, &rv); return rv; } @@ -1964,7 +1966,7 @@ init_@lapack_func@(GEEV_PARAMS_t *params, char jobvl, char jobvr, fortran_int n) fortran_int ld = fortran_int_max(n, 1); /* allocate data for known sizes (all but work) */ - mem_buff = malloc(a_size + wr_size + wi_size + + mem_buff = (npy_uint8 *)malloc(a_size + wr_size + wi_size + vlr_size + vrr_size + w_size + vl_size + vr_size); if (!mem_buff) { @@ -2009,7 +2011,7 @@ init_@lapack_func@(GEEV_PARAMS_t *params, char jobvl, char jobvr, fortran_int n) work_count = (size_t)work_size_query; } - mem_buff2 = malloc(work_count*sizeof(@typ@)); + mem_buff2 = (npy_uint8 *)malloc(work_count*sizeof(@typ@)); if (!mem_buff2) { goto error; } @@ -2106,16 +2108,16 @@ process_@lapack_func@_results(GEEV_PARAMS_t *params) * into complex versions. This is the way to deal with imaginary * results. In our gufuncs we will always return complex arrays! */ - mk_@TYPE@_complex_array(params->W, params->WR, params->WI, params->N); + mk_@TYPE@_complex_array((@complextyp@*)params->W, (@typ@*)params->WR, (@typ@*)params->WI, params->N); /* handle the eigenvectors */ if ('V' == params->JOBVL) { - mk_@lapack_func@_complex_eigenvectors(params->VL, params->VLR, - params->WI, params->N); + mk_@lapack_func@_complex_eigenvectors((@complextyp@*)params->VL, (@typ@*)params->VLR, + (@typ@*)params->WI, params->N); } if ('V' == params->JOBVR) { - mk_@lapack_func@_complex_eigenvectors(params->VR, params->VRR, - params->WI, params->N); + mk_@lapack_func@_complex_eigenvectors((@complextyp@*)params->VR, (@typ@*)params->VRR, + (@typ@*)params->WI, params->N); } } @@ -2136,12 +2138,12 @@ call_@lapack_func@(GEEV_PARAMS_t* params) fortran_int rv; LAPACK(@lapack_func@)(¶ms->JOBVL, ¶ms->JOBVR, - ¶ms->N, params->A, ¶ms->LDA, - params->W, - params->VL, ¶ms->LDVL, - params->VR, ¶ms->LDVR, - params->WORK, ¶ms->LWORK, - params->WR, /* actually RWORK */ + ¶ms->N, (@ftyp@*)params->A, ¶ms->LDA, + (@ftyp@*)params->W, + (@ftyp@*)params->VL, ¶ms->LDVL, + (@ftyp@*)params->VR, ¶ms->LDVR, + (@ftyp@*)params->WORK, ¶ms->LWORK, + (@realtyp@*)params->WR, /* actually RWORK */ &rv); return rv; } @@ -2165,7 +2167,7 @@ init_@lapack_func@(GEEV_PARAMS_t* params, size_t total_size = a_size + w_size + vl_size + vr_size + rwork_size; fortran_int ld = fortran_int_max(n, 1); - mem_buff = malloc(total_size); + mem_buff = (npy_uint8 *)malloc(total_size); if (!mem_buff) { goto error; } @@ -2207,7 +2209,7 @@ init_@lapack_func@(GEEV_PARAMS_t* params, if(work_count == 0) work_count = 1; } - mem_buff2 = malloc(work_count*sizeof(@ftyp@)); + mem_buff2 = (npy_uint8 *)malloc(work_count*sizeof(@ftyp@)); if (!mem_buff2) { goto error; } @@ -2474,12 +2476,12 @@ call_@lapack_func@(GESDD_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->JOBZ, ¶ms->M, ¶ms->N, - params->A, ¶ms->LDA, - params->S, - params->U, ¶ms->LDU, - params->VT, ¶ms->LDVT, - params->WORK, ¶ms->LWORK, - params->IWORK, + (@ftyp@*)params->A, ¶ms->LDA, + (@ftyp@*)params->S, + (@ftyp@*)params->U, ¶ms->LDU, + (@ftyp@*)params->VT, ¶ms->LDVT, + (@ftyp@*)params->WORK, ¶ms->LWORK, + (fortran_int*)params->IWORK, &rv); return rv; } @@ -2517,7 +2519,7 @@ init_@lapack_func@(GESDD_PARAMS_t *params, u_size = safe_u_row_count * safe_m * sizeof(@ftyp@); vt_size = safe_n * safe_vt_column_count * sizeof(@ftyp@); - mem_buff = malloc(a_size + s_size + u_size + vt_size + iwork_size); + mem_buff = (npy_uint8 *)malloc(a_size + s_size + u_size + vt_size + iwork_size); if (!mem_buff) { goto error; @@ -2562,7 +2564,7 @@ init_@lapack_func@(GESDD_PARAMS_t *params, work_size = (size_t)work_count * sizeof(@ftyp@); } - mem_buff2 = malloc(work_size); + mem_buff2 = (npy_uint8 *)malloc(work_size); if (!mem_buff2) { goto error; } @@ -2597,13 +2599,13 @@ call_@lapack_func@(GESDD_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->JOBZ, ¶ms->M, ¶ms->N, - params->A, ¶ms->LDA, - params->S, - params->U, ¶ms->LDU, - params->VT, ¶ms->LDVT, - params->WORK, ¶ms->LWORK, - params->RWORK, - params->IWORK, + (@ftyp@*)params->A, ¶ms->LDA, + (@frealtyp@*)params->S, + (@ftyp@*)params->U, ¶ms->LDU, + (@ftyp@*)params->VT, ¶ms->LDVT, + (@ftyp@*)params->WORK, ¶ms->LWORK, + (@frealtyp@*)params->RWORK, + (fortran_int*)params->IWORK, &rv); return rv; } @@ -2642,7 +2644,7 @@ init_@lapack_func@(GESDD_PARAMS_t *params, rwork_size *= sizeof(@ftyp@); iwork_size = 8 * safe_min_m_n* sizeof(fortran_int); - mem_buff = malloc(a_size + + mem_buff = (npy_uint8 *)malloc(a_size + s_size + u_size + vt_size + @@ -2692,7 +2694,7 @@ init_@lapack_func@(GESDD_PARAMS_t *params, work_size = (size_t)work_count * sizeof(@ftyp@); } - mem_buff2 = malloc(work_size); + mem_buff2 = (npy_uint8 *)malloc(work_size); if (!mem_buff2) { goto error; } @@ -2896,6 +2898,7 @@ dump_geqrf_params(const char *name, /**begin repeat #lapack_func=dgeqrf,zgeqrf# + #typ=double,f2c_doublecomplex# */ static inline fortran_int @@ -2903,9 +2906,9 @@ call_@lapack_func@(GEQRF_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->M, ¶ms->N, - params->A, ¶ms->LDA, - params->TAU, - params->WORK, ¶ms->LWORK, + (@typ@*)params->A, ¶ms->LDA, + (@typ@*)params->TAU, + (@typ@*)params->WORK, ¶ms->LWORK, &rv); return rv; } @@ -2937,7 +2940,7 @@ init_@lapack_func@(GEQRF_PARAMS_t *params, size_t work_size; fortran_int lda = fortran_int_max(1, m); - mem_buff = malloc(a_size + tau_size); + mem_buff = (npy_uint8 *)malloc(a_size + tau_size); if (!mem_buff) goto error; @@ -2971,7 +2974,7 @@ init_@lapack_func@(GEQRF_PARAMS_t *params, params->LWORK = fortran_int_max(fortran_int_max(1, n), work_count); work_size = (size_t) params->LWORK * sizeof(@ftyp@); - mem_buff2 = malloc(work_size); + mem_buff2 = (npy_uint8 *)malloc(work_size); if (!mem_buff2) goto error; @@ -3016,7 +3019,7 @@ init_@lapack_func@(GEQRF_PARAMS_t *params, size_t work_size; fortran_int lda = fortran_int_max(1, m); - mem_buff = malloc(a_size + tau_size); + mem_buff = (npy_uint8 *)malloc(a_size + tau_size); if (!mem_buff) goto error; @@ -3052,7 +3055,7 @@ init_@lapack_func@(GEQRF_PARAMS_t *params, work_size = (size_t) params->LWORK * sizeof(@ftyp@); - mem_buff2 = malloc(work_size); + mem_buff2 = (npy_uint8 *)malloc(work_size); if (!mem_buff2) goto error; @@ -3153,6 +3156,7 @@ typedef struct gqr_params_struct /**begin repeat #lapack_func=dorgqr,zungqr# + #typ=double, f2c_doublecomplex# */ static inline fortran_int @@ -3160,9 +3164,9 @@ call_@lapack_func@(GQR_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->M, ¶ms->MC, ¶ms->MN, - params->Q, ¶ms->LDA, - params->TAU, - params->WORK, ¶ms->LWORK, + (@typ@*)params->Q, ¶ms->LDA, + (@typ@*)params->TAU, + (@typ@*)params->WORK, ¶ms->LWORK, &rv); return rv; } @@ -3195,7 +3199,7 @@ init_@lapack_func@_common(GQR_PARAMS_t *params, size_t work_size; fortran_int lda = fortran_int_max(1, m); - mem_buff = malloc(q_size + tau_size + a_size); + mem_buff = (npy_uint8 *)malloc(q_size + tau_size + a_size); if (!mem_buff) goto error; @@ -3231,7 +3235,7 @@ init_@lapack_func@_common(GQR_PARAMS_t *params, work_size = (size_t) params->LWORK * sizeof(@ftyp@); - mem_buff2 = malloc(work_size); + mem_buff2 = (npy_uint8 *)malloc(work_size); if (!mem_buff2) goto error; @@ -3278,7 +3282,7 @@ init_@lapack_func@_common(GQR_PARAMS_t *params, size_t work_size; fortran_int lda = fortran_int_max(1, m); - mem_buff = malloc(q_size + tau_size + a_size); + mem_buff = (npy_uint8 *)malloc(q_size + tau_size + a_size); if (!mem_buff) goto error; @@ -3315,7 +3319,7 @@ init_@lapack_func@_common(GQR_PARAMS_t *params, work_size = (size_t) params->LWORK * sizeof(@ftyp@); - mem_buff2 = malloc(work_size); + mem_buff2 = (npy_uint8 *)malloc(work_size); if (!mem_buff2) goto error; @@ -3595,12 +3599,12 @@ call_@lapack_func@(GELSD_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->M, ¶ms->N, ¶ms->NRHS, - params->A, ¶ms->LDA, - params->B, ¶ms->LDB, - params->S, - params->RCOND, ¶ms->RANK, - params->WORK, ¶ms->LWORK, - params->IWORK, + (@ftyp@*)params->A, ¶ms->LDA, + (@ftyp@*)params->B, ¶ms->LDB, + (@ftyp@*)params->S, + (@ftyp@*)params->RCOND, ¶ms->RANK, + (@ftyp@*)params->WORK, ¶ms->LWORK, + (fortran_int*)params->IWORK, &rv); return rv; } @@ -3632,7 +3636,7 @@ init_@lapack_func@(GELSD_PARAMS_t *params, fortran_int lda = fortran_int_max(1, m); fortran_int ldb = fortran_int_max(1, fortran_int_max(m,n)); - mem_buff = malloc(a_size + b_size + s_size); + mem_buff = (npy_uint8 *)malloc(a_size + b_size + s_size); if (!mem_buff) goto error; @@ -3670,7 +3674,7 @@ init_@lapack_func@(GELSD_PARAMS_t *params, iwork_size = (size_t)iwork_size_query * sizeof(fortran_int); } - mem_buff2 = malloc(work_size + iwork_size); + mem_buff2 = (npy_uint8 *)malloc(work_size + iwork_size); if (!mem_buff2) goto error; @@ -3707,13 +3711,13 @@ call_@lapack_func@(GELSD_PARAMS_t *params) { fortran_int rv; LAPACK(@lapack_func@)(¶ms->M, ¶ms->N, ¶ms->NRHS, - params->A, ¶ms->LDA, - params->B, ¶ms->LDB, - params->S, - params->RCOND, ¶ms->RANK, - params->WORK, ¶ms->LWORK, - params->RWORK, params->IWORK, - &rv); + (@ftyp@*)params->A, ¶ms->LDA, + (@ftyp@*)params->B, ¶ms->LDB, + (@frealtyp@*)params->S, + (@frealtyp@*)params->RCOND, ¶ms->RANK, + (@ftyp@*)params->WORK, ¶ms->LWORK, + (@frealtyp@*)params->RWORK, (fortran_int*)params->IWORK, + (fortran_int*)&rv); return rv; } @@ -3743,7 +3747,7 @@ init_@lapack_func@(GELSD_PARAMS_t *params, fortran_int lda = fortran_int_max(1, m); fortran_int ldb = fortran_int_max(1, fortran_int_max(m,n)); - mem_buff = malloc(a_size + b_size + s_size); + mem_buff = (npy_uint8 *)malloc(a_size + b_size + s_size); if (!mem_buff) goto error; @@ -3783,7 +3787,7 @@ init_@lapack_func@(GELSD_PARAMS_t *params, iwork_size = (size_t)iwork_size_query * sizeof(fortran_int); } - mem_buff2 = malloc(work_size + rwork_size + iwork_size); + mem_buff2 = (npy_uint8 *)malloc(work_size + rwork_size + iwork_size); if (!mem_buff2) goto error; @@ -4095,9 +4099,9 @@ static char lstsq_types[] = { }; typedef struct gufunc_descriptor_struct { - char *name; - char *signature; - char *doc; + const char *name; + const char *signature; + const char *doc; int ntypes; int nin; int nout; |
