@@ -163,14 +163,6 @@ FNAME(zgelsd)(fortran_int *m, fortran_int *n, fortran_int *nrhs,
163163 fortran_int * info );
164164
165165extern fortran_int
166- FNAME (sgeqrf )(fortran_int * m , fortran_int * n , float a [], fortran_int * lda ,
167- float tau [], float work [],
168- fortran_int * lwork , fortran_int * info );
169- extern fortran_int
170- FNAME (cgeqrf )(fortran_int * m , fortran_int * n , f2c_complex a [], fortran_int * lda ,
171- f2c_complex tau [], f2c_complex work [],
172- fortran_int * lwork , fortran_int * info );
173- extern fortran_int
174166FNAME (dgeqrf )(fortran_int * m , fortran_int * n , double a [], fortran_int * lda ,
175167 double tau [], double work [],
176168 fortran_int * lwork , fortran_int * info );
@@ -180,18 +172,10 @@ FNAME(zgeqrf)(fortran_int *m, fortran_int *n, f2c_doublecomplex a[], fortran_int
180172 fortran_int * lwork , fortran_int * info );
181173
182174extern fortran_int
183- FNAME (sorgqr )(fortran_int * m , fortran_int * n , fortran_int * k , float a [], fortran_int * lda ,
184- float tau [], float work [],
185- fortran_int * lwork , fortran_int * info );
186- extern fortran_int
187175FNAME (dorgqr )(fortran_int * m , fortran_int * n , fortran_int * k , double a [], fortran_int * lda ,
188176 double tau [], double work [],
189177 fortran_int * lwork , fortran_int * info );
190178extern fortran_int
191- FNAME (cungqr )(fortran_int * m , fortran_int * n , fortran_int * k , f2c_complex a [],
192- fortran_int * lda , f2c_complex tau [],
193- f2c_complex work [], fortran_int * lwork , fortran_int * info );
194- extern fortran_int
195179FNAME (zungqr )(fortran_int * m , fortran_int * n , fortran_int * k , f2c_doublecomplex a [],
196180 fortran_int * lda , f2c_doublecomplex tau [],
197181 f2c_doublecomplex work [], fortran_int * lwork , fortran_int * info );
@@ -2910,7 +2894,7 @@ dump_geqrf_params(const char *name,
29102894}
29112895
29122896/**begin repeat
2913- #lapack_func=sgeqrf, dgeqrf,cgeqrf ,zgeqrf#
2897+ #lapack_func=dgeqrf,zgeqrf#
29142898 */
29152899
29162900static inline fortran_int
@@ -2928,9 +2912,9 @@ call_@lapack_func@(GEQRF_PARAMS_t *params)
29282912/**end repeat**/
29292913
29302914/**begin repeat
2931- #TYPE=FLOAT, DOUBLE#
2932- #lapack_func=sgeqrf, dgeqrf#
2933- #ftyp=fortran_real, fortran_doublereal#
2915+ #TYPE=DOUBLE#
2916+ #lapack_func=dgeqrf#
2917+ #ftyp=fortran_doublereal#
29342918 */
29352919static inline int
29362920init_ @lapack_func @(GEQRF_PARAMS_t * params ,
@@ -3007,9 +2991,9 @@ init_@lapack_func@(GEQRF_PARAMS_t *params,
30072991/**end repeat**/
30082992
30092993/**begin repeat
3010- #TYPE=CFLOAT, CDOUBLE#
3011- #lapack_func=cgeqrf, zgeqrf#
3012- #ftyp=fortran_complex, fortran_doublecomplex#
2994+ #TYPE=CDOUBLE#
2995+ #lapack_func=zgeqrf#
2996+ #ftyp=fortran_doublecomplex#
30132997 */
30142998static inline int
30152999init_ @lapack_func @(GEQRF_PARAMS_t * params ,
@@ -3088,7 +3072,7 @@ init_@lapack_func@(GEQRF_PARAMS_t *params,
30883072/**end repeat**/
30893073
30903074/**begin repeat
3091- #lapack_func=sgeqrf, dgeqrf,cgeqrf ,zgeqrf#
3075+ #lapack_func=dgeqrf,zgeqrf#
30923076 */
30933077static inline void
30943078release_ @lapack_func @(GEQRF_PARAMS_t * params )
@@ -3102,14 +3086,13 @@ release_@lapack_func@(GEQRF_PARAMS_t* params)
31023086/**end repeat**/
31033087
31043088/**begin repeat
3105- #TYPE=FLOAT,DOUBLE,CFLOAT,CDOUBLE#
3106- #REALTYPE=FLOAT,DOUBLE,FLOAT,DOUBLE#
3107- #lapack_func=sgeqrf,dgeqrf,cgeqrf,zgeqrf#
3108- #typ = npy_float, npy_double, npy_cfloat, npy_cdouble#
3109- #basetyp = npy_float, npy_double, npy_float, npy_double#
3110- #ftyp = fortran_real, fortran_doublereal,
3111- fortran_complex, fortran_doublecomplex#
3112- #cmplx = 0, 0, 1, 1#
3089+ #TYPE=DOUBLE,CDOUBLE#
3090+ #REALTYPE=DOUBLE,DOUBLE#
3091+ #lapack_func=dgeqrf,zgeqrf#
3092+ #typ = npy_double,npy_cdouble#
3093+ #basetyp = npy_double,npy_double#
3094+ #ftyp = fortran_doublereal,fortran_doublecomplex#
3095+ #cmplx = 0, 1#
31133096 */
31143097static void
31153098@TYPE @_qr_r_raw (char * * args , npy_intp const * dimensions , npy_intp const * steps ,
@@ -3168,7 +3151,7 @@ typedef struct gqr_params_struct
31683151} GQR_PARAMS_t ;
31693152
31703153/**begin repeat
3171- #lapack_func=sorgqr, dorgqr,cungqr ,zungqr#
3154+ #lapack_func=dorgqr,zungqr#
31723155 */
31733156
31743157static inline fortran_int
@@ -3186,8 +3169,8 @@ call_@lapack_func@(GQR_PARAMS_t *params)
31863169/**end repeat**/
31873170
31883171/**begin repeat
3189- #lapack_func=sorgqr, dorgqr#
3190- #ftyp=fortran_real, fortran_doublereal#
3172+ #lapack_func=dorgqr#
3173+ #ftyp=fortran_doublereal#
31913174 */
31923175static inline int
31933176init_ @lapack_func @_common (GQR_PARAMS_t * params ,
@@ -3268,8 +3251,8 @@ init_@lapack_func@_common(GQR_PARAMS_t *params,
32683251/**end repeat**/
32693252
32703253/**begin repeat
3271- #lapack_func=cungqr, zungqr#
3272- #ftyp=fortran_complex, fortran_doublecomplex#
3254+ #lapack_func=zungqr#
3255+ #ftyp=fortran_doublecomplex#
32733256 */
32743257static inline int
32753258init_ @lapack_func @_common (GQR_PARAMS_t * params ,
@@ -3385,8 +3368,8 @@ dump_gqr_params(const char *name,
33853368}
33863369
33873370/**begin repeat
3388- #lapack_func=sorgqr, dorgqr,cungqr ,zungqr#
3389- #ftyp=fortran_real, fortran_doublereal,fortran_complex ,fortran_doublecomplex#
3371+ #lapack_func=dorgqr,zungqr#
3372+ #ftyp=fortran_doublereal,fortran_doublecomplex#
33903373 */
33913374static inline int
33923375init_ @lapack_func @(GQR_PARAMS_t * params ,
@@ -3401,7 +3384,7 @@ init_@lapack_func@(GQR_PARAMS_t *params,
34013384/**end repeat**/
34023385
34033386/**begin repeat
3404- #lapack_func=sorgqr, dorgqr,cungqr ,zungqr#
3387+ #lapack_func=dorgqr,zungqr#
34053388 */
34063389static inline void
34073390release_ @lapack_func @(GQR_PARAMS_t * params )
@@ -3415,14 +3398,13 @@ release_@lapack_func@(GQR_PARAMS_t* params)
34153398/**end repeat**/
34163399
34173400/**begin repeat
3418- #TYPE=FLOAT,DOUBLE,CFLOAT,CDOUBLE#
3419- #REALTYPE=FLOAT,DOUBLE,FLOAT,DOUBLE#
3420- #lapack_func=sorgqr,dorgqr,cungqr,zungqr#
3421- #typ = npy_float, npy_double, npy_cfloat, npy_cdouble#
3422- #basetyp = npy_float, npy_double, npy_float, npy_double#
3423- #ftyp = fortran_real, fortran_doublereal,
3424- fortran_complex, fortran_doublecomplex#
3425- #cmplx = 0, 0, 1, 1#
3401+ #TYPE=DOUBLE,CDOUBLE#
3402+ #REALTYPE=DOUBLE,DOUBLE#
3403+ #lapack_func=dorgqr,zungqr#
3404+ #typ = npy_double, npy_cdouble#
3405+ #basetyp = npy_double, npy_double#
3406+ #ftyp = fortran_doublereal,fortran_doublecomplex#
3407+ #cmplx = 0, 1#
34263408 */
34273409static void
34283410@TYPE @_qr_reduced (char * * args , npy_intp const * dimensions , npy_intp const * steps ,
@@ -3470,8 +3452,8 @@ static void
34703452 /* qr (modes - complete) */
34713453
34723454/**begin repeat
3473- #lapack_func=sorgqr, dorgqr,cungqr ,zungqr#
3474- #ftyp=fortran_real, fortran_doublereal,fortran_complex ,fortran_doublecomplex#
3455+ #lapack_func=dorgqr,zungqr#
3456+ #ftyp=fortran_doublereal,fortran_doublecomplex#
34753457 */
34763458static inline int
34773459init_ @lapack_func @_complete (GQR_PARAMS_t * params ,
@@ -3484,14 +3466,13 @@ init_@lapack_func@_complete(GQR_PARAMS_t *params,
34843466/**end repeat**/
34853467
34863468/**begin repeat
3487- #TYPE=FLOAT,DOUBLE,CFLOAT,CDOUBLE#
3488- #REALTYPE=FLOAT,DOUBLE,FLOAT,DOUBLE#
3489- #lapack_func=sorgqr,dorgqr,cungqr,zungqr#
3490- #typ = npy_float, npy_double, npy_cfloat, npy_cdouble#
3491- #basetyp = npy_float, npy_double, npy_float, npy_double#
3492- #ftyp = fortran_real, fortran_doublereal,
3493- fortran_complex, fortran_doublecomplex#
3494- #cmplx = 0, 0, 1, 1#
3469+ #TYPE=DOUBLE,CDOUBLE#
3470+ #REALTYPE=DOUBLE,DOUBLE#
3471+ #lapack_func=dorgqr,zungqr#
3472+ #typ = npy_double,npy_cdouble#
3473+ #basetyp = npy_double,npy_double#
3474+ #ftyp = fortran_doublereal,fortran_doublecomplex#
3475+ #cmplx = 0, 1#
34953476 */
34963477static void
34973478@TYPE @_qr_complete (char * * args , npy_intp const * dimensions , npy_intp const * steps ,
@@ -3992,6 +3973,13 @@ static void *array_of_nulls[] = {
39923973 CDOUBLE_ ## NAME \
39933974 }
39943975
3976+ #define GUFUNC_FUNC_ARRAY_QR (NAME ) \
3977+ static PyUFuncGenericFunction \
3978+ FUNC_ARRAY_NAME(NAME)[] = { \
3979+ DOUBLE_ ## NAME, \
3980+ CDOUBLE_ ## NAME \
3981+ }
3982+
39953983
39963984GUFUNC_FUNC_ARRAY_REAL_COMPLEX (slogdet );
39973985GUFUNC_FUNC_ARRAY_REAL_COMPLEX (det );
@@ -4006,9 +3994,9 @@ GUFUNC_FUNC_ARRAY_REAL_COMPLEX(cholesky_lo);
40063994GUFUNC_FUNC_ARRAY_REAL_COMPLEX (svd_N );
40073995GUFUNC_FUNC_ARRAY_REAL_COMPLEX (svd_S );
40083996GUFUNC_FUNC_ARRAY_REAL_COMPLEX (svd_A );
4009- GUFUNC_FUNC_ARRAY_REAL_COMPLEX (qr_r_raw );
4010- GUFUNC_FUNC_ARRAY_REAL_COMPLEX (qr_reduced );
4011- GUFUNC_FUNC_ARRAY_REAL_COMPLEX (qr_complete );
3997+ GUFUNC_FUNC_ARRAY_QR (qr_r_raw );
3998+ GUFUNC_FUNC_ARRAY_QR (qr_reduced );
3999+ GUFUNC_FUNC_ARRAY_QR (qr_complete );
40124000GUFUNC_FUNC_ARRAY_REAL_COMPLEX (lstsq );
40134001GUFUNC_FUNC_ARRAY_EIG (eig );
40144002GUFUNC_FUNC_ARRAY_EIG (eigvals );
@@ -4077,25 +4065,19 @@ static char svd_1_3_types[] = {
40774065
40784066/* A, tau */
40794067static char qr_r_raw_types [] = {
4080- NPY_FLOAT , NPY_FLOAT ,
40814068 NPY_DOUBLE , NPY_DOUBLE ,
4082- NPY_CFLOAT , NPY_CFLOAT ,
40834069 NPY_CDOUBLE , NPY_CDOUBLE ,
40844070};
40854071
40864072/* A, tau, q */
40874073static char qr_reduced_types [] = {
4088- NPY_FLOAT , NPY_FLOAT , NPY_FLOAT ,
40894074 NPY_DOUBLE , NPY_DOUBLE , NPY_DOUBLE ,
4090- NPY_CFLOAT , NPY_CFLOAT , NPY_CFLOAT ,
40914075 NPY_CDOUBLE , NPY_CDOUBLE , NPY_CDOUBLE ,
40924076};
40934077
40944078/* A, tau, q */
40954079static char qr_complete_types [] = {
4096- NPY_FLOAT , NPY_FLOAT , NPY_FLOAT ,
40974080 NPY_DOUBLE , NPY_DOUBLE , NPY_DOUBLE ,
4098- NPY_CFLOAT , NPY_CFLOAT , NPY_CFLOAT ,
40994081 NPY_CDOUBLE , NPY_CDOUBLE , NPY_CDOUBLE ,
41004082};
41014083
0 commit comments