summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
Diffstat (limited to 'numpy')
-rw-r--r--numpy/linalg/lapack_lite/f2c.h5
-rw-r--r--numpy/linalg/lapack_lite/f2c_blas.c14
-rw-r--r--numpy/linalg/lapack_lite/f2c_c_lapack.c6
-rw-r--r--numpy/linalg/lapack_lite/f2c_config.c6
-rw-r--r--numpy/linalg/lapack_lite/f2c_d_lapack.c6
-rw-r--r--numpy/linalg/lapack_lite/f2c_lapack.c6
-rw-r--r--numpy/linalg/lapack_lite/f2c_s_lapack.c6
-rw-r--r--numpy/linalg/lapack_lite/f2c_z_lapack.c6
-rw-r--r--numpy/linalg/lapack_lite/lapack_lite_names.h691
-rwxr-xr-xnumpy/linalg/lapack_lite/make_lite.py66
-rw-r--r--numpy/linalg/lapack_lite/python_xerbla.c3
-rw-r--r--numpy/linalg/setup.py9
12 files changed, 787 insertions, 37 deletions
diff --git a/numpy/linalg/lapack_lite/f2c.h b/numpy/linalg/lapack_lite/f2c.h
index 4462eaa74..d3fbfc177 100644
--- a/numpy/linalg/lapack_lite/f2c.h
+++ b/numpy/linalg/lapack_lite/f2c.h
@@ -11,6 +11,8 @@
#include "numpy/npy_common.h"
#include "npy_cblas.h"
+#include "lapack_lite_names.h"
+
typedef CBLAS_INT integer;
typedef char *address;
typedef short int shortint;
@@ -383,6 +385,9 @@ extern void z_log(doublecomplex *, doublecomplex *);
extern void z_sin(doublecomplex *, doublecomplex *);
extern void z_sqrt(doublecomplex *, doublecomplex *);
+extern double f__cabs(double, double);
+extern double f__cabsf(float, float);
+
#ifdef __cplusplus
}
#endif
diff --git a/numpy/linalg/lapack_lite/f2c_blas.c b/numpy/linalg/lapack_lite/f2c_blas.c
index 44ad23bfe..65286892f 100644
--- a/numpy/linalg/lapack_lite/f2c_blas.c
+++ b/numpy/linalg/lapack_lite/f2c_blas.c
@@ -1,7 +1,7 @@
/*
-NOTE: This is generated code. Look in Misc/lapack_lite for information on
- remaking this file.
-*/
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
#include "f2c.h"
#ifdef HAVE_CONFIG
@@ -4912,7 +4912,7 @@ L20:
( 1 + ( n - 1 )*abs( INCX ) ).
Before entry, the incremented array X must contain the n
element vector x. On exit, X is overwritten with the
- transformed vector x.
+ tranformed vector x.
INCX - INTEGER.
On entry, INCX specifies the increment for the elements of
@@ -9807,7 +9807,7 @@ L40:
( 1 + ( n - 1 )*abs( INCX ) ).
Before entry, the incremented array X must contain the n
element vector x. On exit, X is overwritten with the
- transformed vector x.
+ tranformed vector x.
INCX - INTEGER.
On entry, INCX specifies the increment for the elements of
@@ -14410,7 +14410,7 @@ L40:
( 1 + ( n - 1 )*abs( INCX ) ).
Before entry, the incremented array X must contain the n
element vector x. On exit, X is overwritten with the
- transformed vector x.
+ tranformed vector x.
INCX - INTEGER.
On entry, INCX specifies the increment for the elements of
@@ -19998,7 +19998,7 @@ L20:
( 1 + ( n - 1 )*abs( INCX ) ).
Before entry, the incremented array X must contain the n
element vector x. On exit, X is overwritten with the
- transformed vector x.
+ tranformed vector x.
INCX - INTEGER.
On entry, INCX specifies the increment for the elements of
diff --git a/numpy/linalg/lapack_lite/f2c_c_lapack.c b/numpy/linalg/lapack_lite/f2c_c_lapack.c
index f52e1e157..c36c0e368 100644
--- a/numpy/linalg/lapack_lite/f2c_c_lapack.c
+++ b/numpy/linalg/lapack_lite/f2c_c_lapack.c
@@ -1,7 +1,7 @@
/*
-NOTE: This is generated code. Look in Misc/lapack_lite for information on
- remaking this file.
-*/
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
#include "f2c.h"
#ifdef HAVE_CONFIG
diff --git a/numpy/linalg/lapack_lite/f2c_config.c b/numpy/linalg/lapack_lite/f2c_config.c
index 2fe608227..3f59e0263 100644
--- a/numpy/linalg/lapack_lite/f2c_config.c
+++ b/numpy/linalg/lapack_lite/f2c_config.c
@@ -1,7 +1,7 @@
/*
-NOTE: This is generated code. Look in Misc/lapack_lite for information on
- remaking this file.
-*/
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
#include "f2c.h"
#ifdef HAVE_CONFIG
diff --git a/numpy/linalg/lapack_lite/f2c_d_lapack.c b/numpy/linalg/lapack_lite/f2c_d_lapack.c
index 1a6675ef1..233db74b9 100644
--- a/numpy/linalg/lapack_lite/f2c_d_lapack.c
+++ b/numpy/linalg/lapack_lite/f2c_d_lapack.c
@@ -1,7 +1,7 @@
/*
-NOTE: This is generated code. Look in Misc/lapack_lite for information on
- remaking this file.
-*/
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
#include "f2c.h"
#ifdef HAVE_CONFIG
diff --git a/numpy/linalg/lapack_lite/f2c_lapack.c b/numpy/linalg/lapack_lite/f2c_lapack.c
index d956ddbbb..752261044 100644
--- a/numpy/linalg/lapack_lite/f2c_lapack.c
+++ b/numpy/linalg/lapack_lite/f2c_lapack.c
@@ -1,7 +1,7 @@
/*
-NOTE: This is generated code. Look in Misc/lapack_lite for information on
- remaking this file.
-*/
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
#include "f2c.h"
#ifdef HAVE_CONFIG
diff --git a/numpy/linalg/lapack_lite/f2c_s_lapack.c b/numpy/linalg/lapack_lite/f2c_s_lapack.c
index fccb1f58b..2a32315c7 100644
--- a/numpy/linalg/lapack_lite/f2c_s_lapack.c
+++ b/numpy/linalg/lapack_lite/f2c_s_lapack.c
@@ -1,7 +1,7 @@
/*
-NOTE: This is generated code. Look in Misc/lapack_lite for information on
- remaking this file.
-*/
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
#include "f2c.h"
#ifdef HAVE_CONFIG
diff --git a/numpy/linalg/lapack_lite/f2c_z_lapack.c b/numpy/linalg/lapack_lite/f2c_z_lapack.c
index 0f11f2e72..8234eca41 100644
--- a/numpy/linalg/lapack_lite/f2c_z_lapack.c
+++ b/numpy/linalg/lapack_lite/f2c_z_lapack.c
@@ -1,7 +1,7 @@
/*
-NOTE: This is generated code. Look in Misc/lapack_lite for information on
- remaking this file.
-*/
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
#include "f2c.h"
#ifdef HAVE_CONFIG
diff --git a/numpy/linalg/lapack_lite/lapack_lite_names.h b/numpy/linalg/lapack_lite/lapack_lite_names.h
new file mode 100644
index 000000000..08fd7257d
--- /dev/null
+++ b/numpy/linalg/lapack_lite/lapack_lite_names.h
@@ -0,0 +1,691 @@
+/*
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
+/*
+ * This file renames all BLAS/LAPACK and f2c symbols to avoid
+ * dynamic symbol name conflicts, in cases where e.g.
+ * integer sizes do not match with 'standard' ABI.
+ */
+#define caxpy_ BLAS_FUNC(caxpy)
+#define ccopy_ BLAS_FUNC(ccopy)
+#define cdotc_ BLAS_FUNC(cdotc)
+#define cdotu_ BLAS_FUNC(cdotu)
+#define cgebak_ BLAS_FUNC(cgebak)
+#define cgebal_ BLAS_FUNC(cgebal)
+#define cgebd2_ BLAS_FUNC(cgebd2)
+#define cgebrd_ BLAS_FUNC(cgebrd)
+#define cgeev_ BLAS_FUNC(cgeev)
+#define cgehd2_ BLAS_FUNC(cgehd2)
+#define cgehrd_ BLAS_FUNC(cgehrd)
+#define cgelq2_ BLAS_FUNC(cgelq2)
+#define cgelqf_ BLAS_FUNC(cgelqf)
+#define cgelsd_ BLAS_FUNC(cgelsd)
+#define cgemm_ BLAS_FUNC(cgemm)
+#define cgemv_ BLAS_FUNC(cgemv)
+#define cgeqr2_ BLAS_FUNC(cgeqr2)
+#define cgeqrf_ BLAS_FUNC(cgeqrf)
+#define cgerc_ BLAS_FUNC(cgerc)
+#define cgeru_ BLAS_FUNC(cgeru)
+#define cgesdd_ BLAS_FUNC(cgesdd)
+#define cgesv_ BLAS_FUNC(cgesv)
+#define cgetf2_ BLAS_FUNC(cgetf2)
+#define cgetrf_ BLAS_FUNC(cgetrf)
+#define cgetrs_ BLAS_FUNC(cgetrs)
+#define cheevd_ BLAS_FUNC(cheevd)
+#define chemv_ BLAS_FUNC(chemv)
+#define cher2_ BLAS_FUNC(cher2)
+#define cher2k_ BLAS_FUNC(cher2k)
+#define cherk_ BLAS_FUNC(cherk)
+#define chetd2_ BLAS_FUNC(chetd2)
+#define chetrd_ BLAS_FUNC(chetrd)
+#define chseqr_ BLAS_FUNC(chseqr)
+#define clabrd_ BLAS_FUNC(clabrd)
+#define clacgv_ BLAS_FUNC(clacgv)
+#define clacp2_ BLAS_FUNC(clacp2)
+#define clacpy_ BLAS_FUNC(clacpy)
+#define clacrm_ BLAS_FUNC(clacrm)
+#define cladiv_ BLAS_FUNC(cladiv)
+#define claed0_ BLAS_FUNC(claed0)
+#define claed7_ BLAS_FUNC(claed7)
+#define claed8_ BLAS_FUNC(claed8)
+#define clahqr_ BLAS_FUNC(clahqr)
+#define clahr2_ BLAS_FUNC(clahr2)
+#define clals0_ BLAS_FUNC(clals0)
+#define clalsa_ BLAS_FUNC(clalsa)
+#define clalsd_ BLAS_FUNC(clalsd)
+#define clange_ BLAS_FUNC(clange)
+#define clanhe_ BLAS_FUNC(clanhe)
+#define claqr0_ BLAS_FUNC(claqr0)
+#define claqr1_ BLAS_FUNC(claqr1)
+#define claqr2_ BLAS_FUNC(claqr2)
+#define claqr3_ BLAS_FUNC(claqr3)
+#define claqr4_ BLAS_FUNC(claqr4)
+#define claqr5_ BLAS_FUNC(claqr5)
+#define clarcm_ BLAS_FUNC(clarcm)
+#define clarf_ BLAS_FUNC(clarf)
+#define clarfb_ BLAS_FUNC(clarfb)
+#define clarfg_ BLAS_FUNC(clarfg)
+#define clarft_ BLAS_FUNC(clarft)
+#define clartg_ BLAS_FUNC(clartg)
+#define clascl_ BLAS_FUNC(clascl)
+#define claset_ BLAS_FUNC(claset)
+#define clasr_ BLAS_FUNC(clasr)
+#define classq_ BLAS_FUNC(classq)
+#define claswp_ BLAS_FUNC(claswp)
+#define clatrd_ BLAS_FUNC(clatrd)
+#define clatrs_ BLAS_FUNC(clatrs)
+#define clauu2_ BLAS_FUNC(clauu2)
+#define clauum_ BLAS_FUNC(clauum)
+#define cpotf2_ BLAS_FUNC(cpotf2)
+#define cpotrf_ BLAS_FUNC(cpotrf)
+#define cpotri_ BLAS_FUNC(cpotri)
+#define cpotrs_ BLAS_FUNC(cpotrs)
+#define crot_ BLAS_FUNC(crot)
+#define cscal_ BLAS_FUNC(cscal)
+#define csrot_ BLAS_FUNC(csrot)
+#define csscal_ BLAS_FUNC(csscal)
+#define cstedc_ BLAS_FUNC(cstedc)
+#define csteqr_ BLAS_FUNC(csteqr)
+#define cswap_ BLAS_FUNC(cswap)
+#define ctrevc_ BLAS_FUNC(ctrevc)
+#define ctrexc_ BLAS_FUNC(ctrexc)
+#define ctrmm_ BLAS_FUNC(ctrmm)
+#define ctrmv_ BLAS_FUNC(ctrmv)
+#define ctrsm_ BLAS_FUNC(ctrsm)
+#define ctrsv_ BLAS_FUNC(ctrsv)
+#define ctrti2_ BLAS_FUNC(ctrti2)
+#define ctrtri_ BLAS_FUNC(ctrtri)
+#define cung2r_ BLAS_FUNC(cung2r)
+#define cungbr_ BLAS_FUNC(cungbr)
+#define cunghr_ BLAS_FUNC(cunghr)
+#define cungl2_ BLAS_FUNC(cungl2)
+#define cunglq_ BLAS_FUNC(cunglq)
+#define cungqr_ BLAS_FUNC(cungqr)
+#define cunm2l_ BLAS_FUNC(cunm2l)
+#define cunm2r_ BLAS_FUNC(cunm2r)
+#define cunmbr_ BLAS_FUNC(cunmbr)
+#define cunmhr_ BLAS_FUNC(cunmhr)
+#define cunml2_ BLAS_FUNC(cunml2)
+#define cunmlq_ BLAS_FUNC(cunmlq)
+#define cunmql_ BLAS_FUNC(cunmql)
+#define cunmqr_ BLAS_FUNC(cunmqr)
+#define cunmtr_ BLAS_FUNC(cunmtr)
+#define daxpy_ BLAS_FUNC(daxpy)
+#define dbdsdc_ BLAS_FUNC(dbdsdc)
+#define dbdsqr_ BLAS_FUNC(dbdsqr)
+#define dcabs1_ BLAS_FUNC(dcabs1)
+#define dcopy_ BLAS_FUNC(dcopy)
+#define ddot_ BLAS_FUNC(ddot)
+#define dgebak_ BLAS_FUNC(dgebak)
+#define dgebal_ BLAS_FUNC(dgebal)
+#define dgebd2_ BLAS_FUNC(dgebd2)
+#define dgebrd_ BLAS_FUNC(dgebrd)
+#define dgeev_ BLAS_FUNC(dgeev)
+#define dgehd2_ BLAS_FUNC(dgehd2)
+#define dgehrd_ BLAS_FUNC(dgehrd)
+#define dgelq2_ BLAS_FUNC(dgelq2)
+#define dgelqf_ BLAS_FUNC(dgelqf)
+#define dgelsd_ BLAS_FUNC(dgelsd)
+#define dgemm_ BLAS_FUNC(dgemm)
+#define dgemv_ BLAS_FUNC(dgemv)
+#define dgeqr2_ BLAS_FUNC(dgeqr2)
+#define dgeqrf_ BLAS_FUNC(dgeqrf)
+#define dger_ BLAS_FUNC(dger)
+#define dgesdd_ BLAS_FUNC(dgesdd)
+#define dgesv_ BLAS_FUNC(dgesv)
+#define dgetf2_ BLAS_FUNC(dgetf2)
+#define dgetrf_ BLAS_FUNC(dgetrf)
+#define dgetrs_ BLAS_FUNC(dgetrs)
+#define dhseqr_ BLAS_FUNC(dhseqr)
+#define disnan_ BLAS_FUNC(disnan)
+#define dlabad_ BLAS_FUNC(dlabad)
+#define dlabrd_ BLAS_FUNC(dlabrd)
+#define dlacpy_ BLAS_FUNC(dlacpy)
+#define dladiv_ BLAS_FUNC(dladiv)
+#define dlae2_ BLAS_FUNC(dlae2)
+#define dlaed0_ BLAS_FUNC(dlaed0)
+#define dlaed1_ BLAS_FUNC(dlaed1)
+#define dlaed2_ BLAS_FUNC(dlaed2)
+#define dlaed3_ BLAS_FUNC(dlaed3)
+#define dlaed4_ BLAS_FUNC(dlaed4)
+#define dlaed5_ BLAS_FUNC(dlaed5)
+#define dlaed6_ BLAS_FUNC(dlaed6)
+#define dlaed7_ BLAS_FUNC(dlaed7)
+#define dlaed8_ BLAS_FUNC(dlaed8)
+#define dlaed9_ BLAS_FUNC(dlaed9)
+#define dlaeda_ BLAS_FUNC(dlaeda)
+#define dlaev2_ BLAS_FUNC(dlaev2)
+#define dlaexc_ BLAS_FUNC(dlaexc)
+#define dlahqr_ BLAS_FUNC(dlahqr)
+#define dlahr2_ BLAS_FUNC(dlahr2)
+#define dlaisnan_ BLAS_FUNC(dlaisnan)
+#define dlaln2_ BLAS_FUNC(dlaln2)
+#define dlals0_ BLAS_FUNC(dlals0)
+#define dlalsa_ BLAS_FUNC(dlalsa)
+#define dlalsd_ BLAS_FUNC(dlalsd)
+#define dlamc1_ BLAS_FUNC(dlamc1)
+#define dlamc2_ BLAS_FUNC(dlamc2)
+#define dlamc3_ BLAS_FUNC(dlamc3)
+#define dlamc4_ BLAS_FUNC(dlamc4)
+#define dlamc5_ BLAS_FUNC(dlamc5)
+#define dlamch_ BLAS_FUNC(dlamch)
+#define dlamrg_ BLAS_FUNC(dlamrg)
+#define dlange_ BLAS_FUNC(dlange)
+#define dlanst_ BLAS_FUNC(dlanst)
+#define dlansy_ BLAS_FUNC(dlansy)
+#define dlanv2_ BLAS_FUNC(dlanv2)
+#define dlapy2_ BLAS_FUNC(dlapy2)
+#define dlapy3_ BLAS_FUNC(dlapy3)
+#define dlaqr0_ BLAS_FUNC(dlaqr0)
+#define dlaqr1_ BLAS_FUNC(dlaqr1)
+#define dlaqr2_ BLAS_FUNC(dlaqr2)
+#define dlaqr3_ BLAS_FUNC(dlaqr3)
+#define dlaqr4_ BLAS_FUNC(dlaqr4)
+#define dlaqr5_ BLAS_FUNC(dlaqr5)
+#define dlarf_ BLAS_FUNC(dlarf)
+#define dlarfb_ BLAS_FUNC(dlarfb)
+#define dlarfg_ BLAS_FUNC(dlarfg)
+#define dlarft_ BLAS_FUNC(dlarft)
+#define dlarfx_ BLAS_FUNC(dlarfx)
+#define dlartg_ BLAS_FUNC(dlartg)
+#define dlas2_ BLAS_FUNC(dlas2)
+#define dlascl_ BLAS_FUNC(dlascl)
+#define dlasd0_ BLAS_FUNC(dlasd0)
+#define dlasd1_ BLAS_FUNC(dlasd1)
+#define dlasd2_ BLAS_FUNC(dlasd2)
+#define dlasd3_ BLAS_FUNC(dlasd3)
+#define dlasd4_ BLAS_FUNC(dlasd4)
+#define dlasd5_ BLAS_FUNC(dlasd5)
+#define dlasd6_ BLAS_FUNC(dlasd6)
+#define dlasd7_ BLAS_FUNC(dlasd7)
+#define dlasd8_ BLAS_FUNC(dlasd8)
+#define dlasda_ BLAS_FUNC(dlasda)
+#define dlasdq_ BLAS_FUNC(dlasdq)
+#define dlasdt_ BLAS_FUNC(dlasdt)
+#define dlaset_ BLAS_FUNC(dlaset)
+#define dlasq1_ BLAS_FUNC(dlasq1)
+#define dlasq2_ BLAS_FUNC(dlasq2)
+#define dlasq3_ BLAS_FUNC(dlasq3)
+#define dlasq4_ BLAS_FUNC(dlasq4)
+#define dlasq5_ BLAS_FUNC(dlasq5)
+#define dlasq6_ BLAS_FUNC(dlasq6)
+#define dlasr_ BLAS_FUNC(dlasr)
+#define dlasrt_ BLAS_FUNC(dlasrt)
+#define dlassq_ BLAS_FUNC(dlassq)
+#define dlasv2_ BLAS_FUNC(dlasv2)
+#define dlaswp_ BLAS_FUNC(dlaswp)
+#define dlasy2_ BLAS_FUNC(dlasy2)
+#define dlatrd_ BLAS_FUNC(dlatrd)
+#define dlauu2_ BLAS_FUNC(dlauu2)
+#define dlauum_ BLAS_FUNC(dlauum)
+#define dnrm2_ BLAS_FUNC(dnrm2)
+#define dorg2r_ BLAS_FUNC(dorg2r)
+#define dorgbr_ BLAS_FUNC(dorgbr)
+#define dorghr_ BLAS_FUNC(dorghr)
+#define dorgl2_ BLAS_FUNC(dorgl2)
+#define dorglq_ BLAS_FUNC(dorglq)
+#define dorgqr_ BLAS_FUNC(dorgqr)
+#define dorm2l_ BLAS_FUNC(dorm2l)
+#define dorm2r_ BLAS_FUNC(dorm2r)
+#define dormbr_ BLAS_FUNC(dormbr)
+#define dormhr_ BLAS_FUNC(dormhr)
+#define dorml2_ BLAS_FUNC(dorml2)
+#define dormlq_ BLAS_FUNC(dormlq)
+#define dormql_ BLAS_FUNC(dormql)
+#define dormqr_ BLAS_FUNC(dormqr)
+#define dormtr_ BLAS_FUNC(dormtr)
+#define dpotf2_ BLAS_FUNC(dpotf2)
+#define dpotrf_ BLAS_FUNC(dpotrf)
+#define dpotri_ BLAS_FUNC(dpotri)
+#define dpotrs_ BLAS_FUNC(dpotrs)
+#define drot_ BLAS_FUNC(drot)
+#define dscal_ BLAS_FUNC(dscal)
+#define dstedc_ BLAS_FUNC(dstedc)
+#define dsteqr_ BLAS_FUNC(dsteqr)
+#define dsterf_ BLAS_FUNC(dsterf)
+#define dswap_ BLAS_FUNC(dswap)
+#define dsyevd_ BLAS_FUNC(dsyevd)
+#define dsymv_ BLAS_FUNC(dsymv)
+#define dsyr2_ BLAS_FUNC(dsyr2)
+#define dsyr2k_ BLAS_FUNC(dsyr2k)
+#define dsyrk_ BLAS_FUNC(dsyrk)
+#define dsytd2_ BLAS_FUNC(dsytd2)
+#define dsytrd_ BLAS_FUNC(dsytrd)
+#define dtrevc_ BLAS_FUNC(dtrevc)
+#define dtrexc_ BLAS_FUNC(dtrexc)
+#define dtrmm_ BLAS_FUNC(dtrmm)
+#define dtrmv_ BLAS_FUNC(dtrmv)
+#define dtrsm_ BLAS_FUNC(dtrsm)
+#define dtrti2_ BLAS_FUNC(dtrti2)
+#define dtrtri_ BLAS_FUNC(dtrtri)
+#define dzasum_ BLAS_FUNC(dzasum)
+#define dznrm2_ BLAS_FUNC(dznrm2)
+#define icamax_ BLAS_FUNC(icamax)
+#define idamax_ BLAS_FUNC(idamax)
+#define ieeeck_ BLAS_FUNC(ieeeck)
+#define ilaclc_ BLAS_FUNC(ilaclc)
+#define ilaclr_ BLAS_FUNC(ilaclr)
+#define iladlc_ BLAS_FUNC(iladlc)
+#define iladlr_ BLAS_FUNC(iladlr)
+#define ilaenv_ BLAS_FUNC(ilaenv)
+#define ilaslc_ BLAS_FUNC(ilaslc)
+#define ilaslr_ BLAS_FUNC(ilaslr)
+#define ilazlc_ BLAS_FUNC(ilazlc)
+#define ilazlr_ BLAS_FUNC(ilazlr)
+#define iparmq_ BLAS_FUNC(iparmq)
+#define isamax_ BLAS_FUNC(isamax)
+#define izamax_ BLAS_FUNC(izamax)
+#define lsame_ BLAS_FUNC(lsame)
+#define saxpy_ BLAS_FUNC(saxpy)
+#define sbdsdc_ BLAS_FUNC(sbdsdc)
+#define sbdsqr_ BLAS_FUNC(sbdsqr)
+#define scabs1_ BLAS_FUNC(scabs1)
+#define scasum_ BLAS_FUNC(scasum)
+#define scnrm2_ BLAS_FUNC(scnrm2)
+#define scopy_ BLAS_FUNC(scopy)
+#define sdot_ BLAS_FUNC(sdot)
+#define sgebak_ BLAS_FUNC(sgebak)
+#define sgebal_ BLAS_FUNC(sgebal)
+#define sgebd2_ BLAS_FUNC(sgebd2)
+#define sgebrd_ BLAS_FUNC(sgebrd)
+#define sgeev_ BLAS_FUNC(sgeev)
+#define sgehd2_ BLAS_FUNC(sgehd2)
+#define sgehrd_ BLAS_FUNC(sgehrd)
+#define sgelq2_ BLAS_FUNC(sgelq2)
+#define sgelqf_ BLAS_FUNC(sgelqf)
+#define sgelsd_ BLAS_FUNC(sgelsd)
+#define sgemm_ BLAS_FUNC(sgemm)
+#define sgemv_ BLAS_FUNC(sgemv)
+#define sgeqr2_ BLAS_FUNC(sgeqr2)
+#define sgeqrf_ BLAS_FUNC(sgeqrf)
+#define sger_ BLAS_FUNC(sger)
+#define sgesdd_ BLAS_FUNC(sgesdd)
+#define sgesv_ BLAS_FUNC(sgesv)
+#define sgetf2_ BLAS_FUNC(sgetf2)
+#define sgetrf_ BLAS_FUNC(sgetrf)
+#define sgetrs_ BLAS_FUNC(sgetrs)
+#define shseqr_ BLAS_FUNC(shseqr)
+#define sisnan_ BLAS_FUNC(sisnan)
+#define slabad_ BLAS_FUNC(slabad)
+#define slabrd_ BLAS_FUNC(slabrd)
+#define slacpy_ BLAS_FUNC(slacpy)
+#define sladiv_ BLAS_FUNC(sladiv)
+#define slae2_ BLAS_FUNC(slae2)
+#define slaed0_ BLAS_FUNC(slaed0)
+#define slaed1_ BLAS_FUNC(slaed1)
+#define slaed2_ BLAS_FUNC(slaed2)
+#define slaed3_ BLAS_FUNC(slaed3)
+#define slaed4_ BLAS_FUNC(slaed4)
+#define slaed5_ BLAS_FUNC(slaed5)
+#define slaed6_ BLAS_FUNC(slaed6)
+#define slaed7_ BLAS_FUNC(slaed7)
+#define slaed8_ BLAS_FUNC(slaed8)
+#define slaed9_ BLAS_FUNC(slaed9)
+#define slaeda_ BLAS_FUNC(slaeda)
+#define slaev2_ BLAS_FUNC(slaev2)
+#define slaexc_ BLAS_FUNC(slaexc)
+#define slahqr_ BLAS_FUNC(slahqr)
+#define slahr2_ BLAS_FUNC(slahr2)
+#define slaisnan_ BLAS_FUNC(slaisnan)
+#define slaln2_ BLAS_FUNC(slaln2)
+#define slals0_ BLAS_FUNC(slals0)
+#define slalsa_ BLAS_FUNC(slalsa)
+#define slalsd_ BLAS_FUNC(slalsd)
+#define slamc1_ BLAS_FUNC(slamc1)
+#define slamc2_ BLAS_FUNC(slamc2)
+#define slamc3_ BLAS_FUNC(slamc3)
+#define slamc4_ BLAS_FUNC(slamc4)
+#define slamc5_ BLAS_FUNC(slamc5)
+#define slamch_ BLAS_FUNC(slamch)
+#define slamrg_ BLAS_FUNC(slamrg)
+#define slange_ BLAS_FUNC(slange)
+#define slanst_ BLAS_FUNC(slanst)
+#define slansy_ BLAS_FUNC(slansy)
+#define slanv2_ BLAS_FUNC(slanv2)
+#define slapy2_ BLAS_FUNC(slapy2)
+#define slapy3_ BLAS_FUNC(slapy3)
+#define slaqr0_ BLAS_FUNC(slaqr0)
+#define slaqr1_ BLAS_FUNC(slaqr1)
+#define slaqr2_ BLAS_FUNC(slaqr2)
+#define slaqr3_ BLAS_FUNC(slaqr3)
+#define slaqr4_ BLAS_FUNC(slaqr4)
+#define slaqr5_ BLAS_FUNC(slaqr5)
+#define slarf_ BLAS_FUNC(slarf)
+#define slarfb_ BLAS_FUNC(slarfb)
+#define slarfg_ BLAS_FUNC(slarfg)
+#define slarft_ BLAS_FUNC(slarft)
+#define slarfx_ BLAS_FUNC(slarfx)
+#define slartg_ BLAS_FUNC(slartg)
+#define slas2_ BLAS_FUNC(slas2)
+#define slascl_ BLAS_FUNC(slascl)
+#define slasd0_ BLAS_FUNC(slasd0)
+#define slasd1_ BLAS_FUNC(slasd1)
+#define slasd2_ BLAS_FUNC(slasd2)
+#define slasd3_ BLAS_FUNC(slasd3)
+#define slasd4_ BLAS_FUNC(slasd4)
+#define slasd5_ BLAS_FUNC(slasd5)
+#define slasd6_ BLAS_FUNC(slasd6)
+#define slasd7_ BLAS_FUNC(slasd7)
+#define slasd8_ BLAS_FUNC(slasd8)
+#define slasda_ BLAS_FUNC(slasda)
+#define slasdq_ BLAS_FUNC(slasdq)
+#define slasdt_ BLAS_FUNC(slasdt)
+#define slaset_ BLAS_FUNC(slaset)
+#define slasq1_ BLAS_FUNC(slasq1)
+#define slasq2_ BLAS_FUNC(slasq2)
+#define slasq3_ BLAS_FUNC(slasq3)
+#define slasq4_ BLAS_FUNC(slasq4)
+#define slasq5_ BLAS_FUNC(slasq5)
+#define slasq6_ BLAS_FUNC(slasq6)
+#define slasr_ BLAS_FUNC(slasr)
+#define slasrt_ BLAS_FUNC(slasrt)
+#define slassq_ BLAS_FUNC(slassq)
+#define slasv2_ BLAS_FUNC(slasv2)
+#define slaswp_ BLAS_FUNC(slaswp)
+#define slasy2_ BLAS_FUNC(slasy2)
+#define slatrd_ BLAS_FUNC(slatrd)
+#define slauu2_ BLAS_FUNC(slauu2)
+#define slauum_ BLAS_FUNC(slauum)
+#define snrm2_ BLAS_FUNC(snrm2)
+#define sorg2r_ BLAS_FUNC(sorg2r)
+#define sorgbr_ BLAS_FUNC(sorgbr)
+#define sorghr_ BLAS_FUNC(sorghr)
+#define sorgl2_ BLAS_FUNC(sorgl2)
+#define sorglq_ BLAS_FUNC(sorglq)
+#define sorgqr_ BLAS_FUNC(sorgqr)
+#define sorm2l_ BLAS_FUNC(sorm2l)
+#define sorm2r_ BLAS_FUNC(sorm2r)
+#define sormbr_ BLAS_FUNC(sormbr)
+#define sormhr_ BLAS_FUNC(sormhr)
+#define sorml2_ BLAS_FUNC(sorml2)
+#define sormlq_ BLAS_FUNC(sormlq)
+#define sormql_ BLAS_FUNC(sormql)
+#define sormqr_ BLAS_FUNC(sormqr)
+#define sormtr_ BLAS_FUNC(sormtr)
+#define spotf2_ BLAS_FUNC(spotf2)
+#define spotrf_ BLAS_FUNC(spotrf)
+#define spotri_ BLAS_FUNC(spotri)
+#define spotrs_ BLAS_FUNC(spotrs)
+#define srot_ BLAS_FUNC(srot)
+#define sscal_ BLAS_FUNC(sscal)
+#define sstedc_ BLAS_FUNC(sstedc)
+#define ssteqr_ BLAS_FUNC(ssteqr)
+#define ssterf_ BLAS_FUNC(ssterf)
+#define sswap_ BLAS_FUNC(sswap)
+#define ssyevd_ BLAS_FUNC(ssyevd)
+#define ssymv_ BLAS_FUNC(ssymv)
+#define ssyr2_ BLAS_FUNC(ssyr2)
+#define ssyr2k_ BLAS_FUNC(ssyr2k)
+#define ssyrk_ BLAS_FUNC(ssyrk)
+#define ssytd2_ BLAS_FUNC(ssytd2)
+#define ssytrd_ BLAS_FUNC(ssytrd)
+#define strevc_ BLAS_FUNC(strevc)
+#define strexc_ BLAS_FUNC(strexc)
+#define strmm_ BLAS_FUNC(strmm)
+#define strmv_ BLAS_FUNC(strmv)
+#define strsm_ BLAS_FUNC(strsm)
+#define strti2_ BLAS_FUNC(strti2)
+#define strtri_ BLAS_FUNC(strtri)
+#define xerbla_ BLAS_FUNC(xerbla)
+#define zaxpy_ BLAS_FUNC(zaxpy)
+#define zcopy_ BLAS_FUNC(zcopy)
+#define zdotc_ BLAS_FUNC(zdotc)
+#define zdotu_ BLAS_FUNC(zdotu)
+#define zdrot_ BLAS_FUNC(zdrot)
+#define zdscal_ BLAS_FUNC(zdscal)
+#define zgebak_ BLAS_FUNC(zgebak)
+#define zgebal_ BLAS_FUNC(zgebal)
+#define zgebd2_ BLAS_FUNC(zgebd2)
+#define zgebrd_ BLAS_FUNC(zgebrd)
+#define zgeev_ BLAS_FUNC(zgeev)
+#define zgehd2_ BLAS_FUNC(zgehd2)
+#define zgehrd_ BLAS_FUNC(zgehrd)
+#define zgelq2_ BLAS_FUNC(zgelq2)
+#define zgelqf_ BLAS_FUNC(zgelqf)
+#define zgelsd_ BLAS_FUNC(zgelsd)
+#define zgemm_ BLAS_FUNC(zgemm)
+#define zgemv_ BLAS_FUNC(zgemv)
+#define zgeqr2_ BLAS_FUNC(zgeqr2)
+#define zgeqrf_ BLAS_FUNC(zgeqrf)
+#define zgerc_ BLAS_FUNC(zgerc)
+#define zgeru_ BLAS_FUNC(zgeru)
+#define zgesdd_ BLAS_FUNC(zgesdd)
+#define zgesv_ BLAS_FUNC(zgesv)
+#define zgetf2_ BLAS_FUNC(zgetf2)
+#define zgetrf_ BLAS_FUNC(zgetrf)
+#define zgetrs_ BLAS_FUNC(zgetrs)
+#define zheevd_ BLAS_FUNC(zheevd)
+#define zhemv_ BLAS_FUNC(zhemv)
+#define zher2_ BLAS_FUNC(zher2)
+#define zher2k_ BLAS_FUNC(zher2k)
+#define zherk_ BLAS_FUNC(zherk)
+#define zhetd2_ BLAS_FUNC(zhetd2)
+#define zhetrd_ BLAS_FUNC(zhetrd)
+#define zhseqr_ BLAS_FUNC(zhseqr)
+#define zlabrd_ BLAS_FUNC(zlabrd)
+#define zlacgv_ BLAS_FUNC(zlacgv)
+#define zlacp2_ BLAS_FUNC(zlacp2)
+#define zlacpy_ BLAS_FUNC(zlacpy)
+#define zlacrm_ BLAS_FUNC(zlacrm)
+#define zladiv_ BLAS_FUNC(zladiv)
+#define zlaed0_ BLAS_FUNC(zlaed0)
+#define zlaed7_ BLAS_FUNC(zlaed7)
+#define zlaed8_ BLAS_FUNC(zlaed8)
+#define zlahqr_ BLAS_FUNC(zlahqr)
+#define zlahr2_ BLAS_FUNC(zlahr2)
+#define zlals0_ BLAS_FUNC(zlals0)
+#define zlalsa_ BLAS_FUNC(zlalsa)
+#define zlalsd_ BLAS_FUNC(zlalsd)
+#define zlange_ BLAS_FUNC(zlange)
+#define zlanhe_ BLAS_FUNC(zlanhe)
+#define zlaqr0_ BLAS_FUNC(zlaqr0)
+#define zlaqr1_ BLAS_FUNC(zlaqr1)
+#define zlaqr2_ BLAS_FUNC(zlaqr2)
+#define zlaqr3_ BLAS_FUNC(zlaqr3)
+#define zlaqr4_ BLAS_FUNC(zlaqr4)
+#define zlaqr5_ BLAS_FUNC(zlaqr5)
+#define zlarcm_ BLAS_FUNC(zlarcm)
+#define zlarf_ BLAS_FUNC(zlarf)
+#define zlarfb_ BLAS_FUNC(zlarfb)
+#define zlarfg_ BLAS_FUNC(zlarfg)
+#define zlarft_ BLAS_FUNC(zlarft)
+#define zlartg_ BLAS_FUNC(zlartg)
+#define zlascl_ BLAS_FUNC(zlascl)
+#define zlaset_ BLAS_FUNC(zlaset)
+#define zlasr_ BLAS_FUNC(zlasr)
+#define zlassq_ BLAS_FUNC(zlassq)
+#define zlaswp_ BLAS_FUNC(zlaswp)
+#define zlatrd_ BLAS_FUNC(zlatrd)
+#define zlatrs_ BLAS_FUNC(zlatrs)
+#define zlauu2_ BLAS_FUNC(zlauu2)
+#define zlauum_ BLAS_FUNC(zlauum)
+#define zpotf2_ BLAS_FUNC(zpotf2)
+#define zpotrf_ BLAS_FUNC(zpotrf)
+#define zpotri_ BLAS_FUNC(zpotri)
+#define zpotrs_ BLAS_FUNC(zpotrs)
+#define zrot_ BLAS_FUNC(zrot)
+#define zscal_ BLAS_FUNC(zscal)
+#define zstedc_ BLAS_FUNC(zstedc)
+#define zsteqr_ BLAS_FUNC(zsteqr)
+#define zswap_ BLAS_FUNC(zswap)
+#define ztrevc_ BLAS_FUNC(ztrevc)
+#define ztrexc_ BLAS_FUNC(ztrexc)
+#define ztrmm_ BLAS_FUNC(ztrmm)
+#define ztrmv_ BLAS_FUNC(ztrmv)
+#define ztrsm_ BLAS_FUNC(ztrsm)
+#define ztrsv_ BLAS_FUNC(ztrsv)
+#define ztrti2_ BLAS_FUNC(ztrti2)
+#define ztrtri_ BLAS_FUNC(ztrtri)
+#define zung2r_ BLAS_FUNC(zung2r)
+#define zungbr_ BLAS_FUNC(zungbr)
+#define zunghr_ BLAS_FUNC(zunghr)
+#define zungl2_ BLAS_FUNC(zungl2)
+#define zunglq_ BLAS_FUNC(zunglq)
+#define zungqr_ BLAS_FUNC(zungqr)
+#define zunm2l_ BLAS_FUNC(zunm2l)
+#define zunm2r_ BLAS_FUNC(zunm2r)
+#define zunmbr_ BLAS_FUNC(zunmbr)
+#define zunmhr_ BLAS_FUNC(zunmhr)
+#define zunml2_ BLAS_FUNC(zunml2)
+#define zunmlq_ BLAS_FUNC(zunmlq)
+#define zunmql_ BLAS_FUNC(zunmql)
+#define zunmqr_ BLAS_FUNC(zunmqr)
+#define zunmtr_ BLAS_FUNC(zunmtr)
+
+/* Symbols exported by f2c.c */
+#define abort_ numpy_lapack_lite_abort_
+#define c_abs numpy_lapack_lite_c_abs
+#define c_cos numpy_lapack_lite_c_cos
+#define c_div numpy_lapack_lite_c_div
+#define c_exp numpy_lapack_lite_c_exp
+#define c_log numpy_lapack_lite_c_log
+#define c_sin numpy_lapack_lite_c_sin
+#define c_sqrt numpy_lapack_lite_c_sqrt
+#define d_abs numpy_lapack_lite_d_abs
+#define d_acos numpy_lapack_lite_d_acos
+#define d_asin numpy_lapack_lite_d_asin
+#define d_atan numpy_lapack_lite_d_atan
+#define d_atn2 numpy_lapack_lite_d_atn2
+#define d_cnjg numpy_lapack_lite_d_cnjg
+#define d_cos numpy_lapack_lite_d_cos
+#define d_cosh numpy_lapack_lite_d_cosh
+#define d_dim numpy_lapack_lite_d_dim
+#define d_exp numpy_lapack_lite_d_exp
+#define d_imag numpy_lapack_lite_d_imag
+#define d_int numpy_lapack_lite_d_int
+#define d_lg10 numpy_lapack_lite_d_lg10
+#define d_log numpy_lapack_lite_d_log
+#define d_mod numpy_lapack_lite_d_mod
+#define d_nint numpy_lapack_lite_d_nint
+#define d_prod numpy_lapack_lite_d_prod
+#define d_sign numpy_lapack_lite_d_sign
+#define d_sin numpy_lapack_lite_d_sin
+#define d_sinh numpy_lapack_lite_d_sinh
+#define d_sqrt numpy_lapack_lite_d_sqrt
+#define d_tan numpy_lapack_lite_d_tan
+#define d_tanh numpy_lapack_lite_d_tanh
+#define derf_ numpy_lapack_lite_derf_
+#define derfc_ numpy_lapack_lite_derfc_
+#define do_fio numpy_lapack_lite_do_fio
+#define do_lio numpy_lapack_lite_do_lio
+#define do_uio numpy_lapack_lite_do_uio
+#define e_rdfe numpy_lapack_lite_e_rdfe
+#define e_rdue numpy_lapack_lite_e_rdue
+#define e_rsfe numpy_lapack_lite_e_rsfe
+#define e_rsfi numpy_lapack_lite_e_rsfi
+#define e_rsle numpy_lapack_lite_e_rsle
+#define e_rsli numpy_lapack_lite_e_rsli
+#define e_rsue numpy_lapack_lite_e_rsue
+#define e_wdfe numpy_lapack_lite_e_wdfe
+#define e_wdue numpy_lapack_lite_e_wdue
+#define e_wsfe numpy_lapack_lite_e_wsfe
+#define e_wsfi numpy_lapack_lite_e_wsfi
+#define e_wsle numpy_lapack_lite_e_wsle
+#define e_wsli numpy_lapack_lite_e_wsli
+#define e_wsue numpy_lapack_lite_e_wsue
+#define ef1asc_ numpy_lapack_lite_ef1asc_
+#define ef1cmc_ numpy_lapack_lite_ef1cmc_
+#define erf_ numpy_lapack_lite_erf_
+#define erfc_ numpy_lapack_lite_erfc_
+#define f__cabs numpy_lapack_lite_f__cabs
+#define f__cabsf numpy_lapack_lite_f__cabsf
+#define f_back numpy_lapack_lite_f_back
+#define f_clos numpy_lapack_lite_f_clos
+#define f_end numpy_lapack_lite_f_end
+#define f_exit numpy_lapack_lite_f_exit
+#define f_inqu numpy_lapack_lite_f_inqu
+#define f_open numpy_lapack_lite_f_open
+#define f_rew numpy_lapack_lite_f_rew
+#define flush_ numpy_lapack_lite_flush_
+#define getarg_ numpy_lapack_lite_getarg_
+#define getenv_ numpy_lapack_lite_getenv_
+#define h_abs numpy_lapack_lite_h_abs
+#define h_dim numpy_lapack_lite_h_dim
+#define h_dnnt numpy_lapack_lite_h_dnnt
+#define h_indx numpy_lapack_lite_h_indx
+#define h_len numpy_lapack_lite_h_len
+#define h_mod numpy_lapack_lite_h_mod
+#define h_nint numpy_lapack_lite_h_nint
+#define h_sign numpy_lapack_lite_h_sign
+#define hl_ge numpy_lapack_lite_hl_ge
+#define hl_gt numpy_lapack_lite_hl_gt
+#define hl_le numpy_lapack_lite_hl_le
+#define hl_lt numpy_lapack_lite_hl_lt
+#define i_abs numpy_lapack_lite_i_abs
+#define i_dim numpy_lapack_lite_i_dim
+#define i_dnnt numpy_lapack_lite_i_dnnt
+#define i_indx numpy_lapack_lite_i_indx
+#define i_len numpy_lapack_lite_i_len
+#define i_mod numpy_lapack_lite_i_mod
+#define i_nint numpy_lapack_lite_i_nint
+#define i_sign numpy_lapack_lite_i_sign
+#define iargc_ numpy_lapack_lite_iargc_
+#define l_ge numpy_lapack_lite_l_ge
+#define l_gt numpy_lapack_lite_l_gt
+#define l_le numpy_lapack_lite_l_le
+#define l_lt numpy_lapack_lite_l_lt
+#define pow_ci numpy_lapack_lite_pow_ci
+#define pow_dd numpy_lapack_lite_pow_dd
+#define pow_di numpy_lapack_lite_pow_di
+#define pow_hh numpy_lapack_lite_pow_hh
+#define pow_ii numpy_lapack_lite_pow_ii
+#define pow_ri numpy_lapack_lite_pow_ri
+#define pow_zi numpy_lapack_lite_pow_zi
+#define pow_zz numpy_lapack_lite_pow_zz
+#define r_abs numpy_lapack_lite_r_abs
+#define r_acos numpy_lapack_lite_r_acos
+#define r_asin numpy_lapack_lite_r_asin
+#define r_atan numpy_lapack_lite_r_atan
+#define r_atn2 numpy_lapack_lite_r_atn2
+#define r_cnjg numpy_lapack_lite_r_cnjg
+#define r_cos numpy_lapack_lite_r_cos
+#define r_cosh numpy_lapack_lite_r_cosh
+#define r_dim numpy_lapack_lite_r_dim
+#define r_exp numpy_lapack_lite_r_exp
+#define r_imag numpy_lapack_lite_r_imag
+#define r_int numpy_lapack_lite_r_int
+#define r_lg10 numpy_lapack_lite_r_lg10
+#define r_log numpy_lapack_lite_r_log
+#define r_mod numpy_lapack_lite_r_mod
+#define r_nint numpy_lapack_lite_r_nint
+#define r_sign numpy_lapack_lite_r_sign
+#define r_sin numpy_lapack_lite_r_sin
+#define r_sinh numpy_lapack_lite_r_sinh
+#define r_sqrt numpy_lapack_lite_r_sqrt
+#define r_tan numpy_lapack_lite_r_tan
+#define r_tanh numpy_lapack_lite_r_tanh
+#define s_cat numpy_lapack_lite_s_cat
+#define s_cmp numpy_lapack_lite_s_cmp
+#define s_copy numpy_lapack_lite_s_copy
+#define s_paus numpy_lapack_lite_s_paus
+#define s_rdfe numpy_lapack_lite_s_rdfe
+#define s_rdue numpy_lapack_lite_s_rdue
+#define s_rnge numpy_lapack_lite_s_rnge
+#define s_rsfe numpy_lapack_lite_s_rsfe
+#define s_rsfi numpy_lapack_lite_s_rsfi
+#define s_rsle numpy_lapack_lite_s_rsle
+#define s_rsli numpy_lapack_lite_s_rsli
+#define s_rsne numpy_lapack_lite_s_rsne
+#define s_rsni numpy_lapack_lite_s_rsni
+#define s_rsue numpy_lapack_lite_s_rsue
+#define s_stop numpy_lapack_lite_s_stop
+#define s_wdfe numpy_lapack_lite_s_wdfe
+#define s_wdue numpy_lapack_lite_s_wdue
+#define s_wsfe numpy_lapack_lite_s_wsfe
+#define s_wsfi numpy_lapack_lite_s_wsfi
+#define s_wsle numpy_lapack_lite_s_wsle
+#define s_wsli numpy_lapack_lite_s_wsli
+#define s_wsne numpy_lapack_lite_s_wsne
+#define s_wsni numpy_lapack_lite_s_wsni
+#define s_wsue numpy_lapack_lite_s_wsue
+#define sig_die numpy_lapack_lite_sig_die
+#define signal_ numpy_lapack_lite_signal_
+#define system_ numpy_lapack_lite_system_
+#define z_abs numpy_lapack_lite_z_abs
+#define z_cos numpy_lapack_lite_z_cos
+#define z_div numpy_lapack_lite_z_div
+#define z_exp numpy_lapack_lite_z_exp
+#define z_log numpy_lapack_lite_z_log
+#define z_sin numpy_lapack_lite_z_sin
+#define z_sqrt numpy_lapack_lite_z_sqrt
diff --git a/numpy/linalg/lapack_lite/make_lite.py b/numpy/linalg/lapack_lite/make_lite.py
index 4b1a0ad82..960f5e2d8 100755
--- a/numpy/linalg/lapack_lite/make_lite.py
+++ b/numpy/linalg/lapack_lite/make_lite.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
"""
-Usage: make_lite.py <wrapped_routines_file> <lapack_dir> <output_dir>
+Usage: make_lite.py <wrapped_routines_file> <lapack_dir>
Typical invocation:
@@ -13,6 +13,7 @@ Requires the following to be on the path:
"""
import sys
import os
+import re
import subprocess
import shutil
@@ -33,11 +34,14 @@ F2C_ARGS = ['-A', '-Nx800']
# The header to add to the top of the f2c_*.c file. Note that dlamch_() calls
# will be replaced by the macros below by clapack_scrub.scrub_source()
-HEADER = '''\
+HEADER_BLURB = '''\
/*
-NOTE: This is generated code. Look in Misc/lapack_lite for information on
- remaking this file.
-*/
+ * NOTE: This is generated code. Look in numpy/linalg/lapack_lite for
+ * information on remaking this file.
+ */
+'''
+
+HEADER = HEADER_BLURB + '''\
#include "f2c.h"
#ifdef HAVE_CONFIG
@@ -279,6 +283,52 @@ def ensure_executable(name):
except:
raise SystemExit(name + ' not found')
+def create_name_header(output_dir):
+ routine_re = re.compile(r'^ (subroutine|.* function)\s+(\w+)\(.*$',
+ re.I)
+ extern_re = re.compile(r'^extern [a-z]+ ([a-z0-9_]+)\(.*$')
+
+ # BLAS/LAPACK symbols
+ symbols = set(['xerbla'])
+ for fn in os.listdir(output_dir):
+ fn = os.path.join(output_dir, fn)
+
+ if not fn.endswith('.f'):
+ continue
+
+ with open(fn, 'r') as f:
+ for line in f:
+ m = routine_re.match(line)
+ if m:
+ symbols.add(m.group(2).lower())
+
+ # f2c symbols
+ f2c_symbols = set()
+ with open('f2c.h', 'r') as f:
+ for line in f:
+ m = extern_re.match(line)
+ if m:
+ f2c_symbols.add(m.group(1))
+
+ with open(os.path.join(output_dir, 'lapack_lite_names.h'), 'w') as f:
+ f.write(HEADER_BLURB)
+ f.write(
+ "/*\n"
+ " * This file renames all BLAS/LAPACK and f2c symbols to avoid\n"
+ " * dynamic symbol name conflicts, in cases where e.g.\n"
+ " * integer sizes do not match with 'standard' ABI.\n"
+ " */\n")
+
+ # Rename BLAS/LAPACK symbols
+ for name in sorted(symbols):
+ f.write("#define %s_ BLAS_FUNC(%s)\n" % (name, name))
+
+ # Rename also symbols that f2c exports itself
+ f.write("\n"
+ "/* Symbols exported by f2c.c */\n")
+ for name in sorted(f2c_symbols):
+ f.write("#define %s numpy_lapack_lite_%s\n" % (name, name))
+
def main():
if len(sys.argv) != 3:
print(__doc__)
@@ -328,12 +378,14 @@ def main():
print()
+ create_name_header(output_dir)
+
for fname in os.listdir(output_dir):
- if fname.endswith('.c'):
+ if fname.endswith('.c') or fname == 'lapack_lite_names.h':
print('Copying ' + fname)
shutil.copy(
os.path.join(output_dir, fname),
- os.path.dirname(__file__),
+ os.path.abspath(os.path.dirname(__file__)),
)
diff --git a/numpy/linalg/lapack_lite/python_xerbla.c b/numpy/linalg/lapack_lite/python_xerbla.c
index 4dbb92e1f..fe2f718b2 100644
--- a/numpy/linalg/lapack_lite/python_xerbla.c
+++ b/numpy/linalg/lapack_lite/python_xerbla.c
@@ -2,9 +2,6 @@
#include "numpy/npy_common.h"
#include "npy_cblas.h"
-#undef c_abs
-#include "f2c.h"
-
/*
From the original manpage:
--------------------------
diff --git a/numpy/linalg/setup.py b/numpy/linalg/setup.py
index 66eed41b0..acfab0a68 100644
--- a/numpy/linalg/setup.py
+++ b/numpy/linalg/setup.py
@@ -38,8 +38,13 @@ def configuration(parent_package='', top_path=None):
def calc_info(self):
info = {'language': 'c'}
if sys.maxsize > 2**32:
- # Build lapack-lite in 64-bit integer mode
- info['define_macros'] = [('HAVE_BLAS_ILP64', None)]
+ # Build lapack-lite in 64-bit integer mode.
+ # The suffix is arbitrary (lapack_lite symbols follow it),
+ # but use the "64_" convention here.
+ info['define_macros'] = [
+ ('HAVE_BLAS_ILP64', None),
+ ('BLAS_SYMBOL_SUFFIX', '64_')
+ ]
self.set_info(**info)
lapack_info = numpy_linalg_lapack_lite().get_info(2)