[Scipy-svn] r3387 - trunk/scipy/lib/blas

scipy-svn@scip... scipy-svn@scip...
Tue Oct 2 02:40:39 CDT 2007


Author: pearu
Date: 2007-10-02 02:40:02 -0500 (Tue, 02 Oct 2007)
New Revision: 3387

Added:
   trunk/scipy/lib/blas/fblaswrap_veclib_c.c.src
Modified:
   trunk/scipy/lib/blas/setup.py
Log:
Ported veclib support from linalg to lib.blas.

Added: trunk/scipy/lib/blas/fblaswrap_veclib_c.c.src
===================================================================
--- trunk/scipy/lib/blas/fblaswrap_veclib_c.c.src	2007-10-02 06:38:43 UTC (rev 3386)
+++ trunk/scipy/lib/blas/fblaswrap_veclib_c.c.src	2007-10-02 07:40:02 UTC (rev 3387)
@@ -0,0 +1,18 @@
+#include <vecLib/vecLib.h>
+
+//#define WRAP_F77(a) wcblas_##a##_
+#define WRAP_F77(a) w##a##_
+
+/**begin repeat
+#p2=c,z,c,z#
+#s2=u,u,c,c#
+#ctype2=complex,double complex,complex,double complex#
+*/
+
+void WRAP_F77(@p2@dot@s2@)(@ctype2@ *dot@s2@, const int *N, const @ctype2@ *X, const int *incX, const @ctype2@ *Y, const int *incY)
+{
+    cblas_@p2@dot@s2@_sub(*N, X, *incX, Y, *incY, dot@s2@);
+}
+
+/**end repeat**/
+

Modified: trunk/scipy/lib/blas/setup.py
===================================================================
--- trunk/scipy/lib/blas/setup.py	2007-10-02 06:38:43 UTC (rev 3386)
+++ trunk/scipy/lib/blas/setup.py	2007-10-02 07:40:02 UTC (rev 3387)
@@ -21,6 +21,22 @@
 
 #--------------------
 
+def needs_cblas_wrapper(info):
+    """Returns true if needs c wrapper around cblas for calling from
+    fortran."""
+    r_accel = re.compile("Accelerate")
+    r_vec = re.compile("vecLib")
+    res = False
+    try:
+        tmpstr = info['extra_link_args']
+        for i in tmpstr:
+            if r_accel.search(i) or r_vec.search(i):
+                res = True
+    except KeyError:
+        pass
+
+    return res
+
 tmpl_empty_cblas_pyf = '''
 python module cblas
   usercode void empty_module(void) {}
@@ -62,14 +78,19 @@
         skip_names['fblas'].extend(\
             'drotmg srotmg drotm srotm'.split())
 
+    depends = [__file__, 'fblas_l?.pyf.src', 'fblas.pyf.src','fblaswrap.f.src',
+               'fblaswrap_veclib_c.c.src']
     # fblas:
+    if needs_cblas_wrapper(blas_opt):
+        sources = ['fblas.pyf.src', 'fblaswrap_veclib_c.c.src'],
+    else:
+        sources = ['fblas.pyf.src','fblaswrap.f.src']
     config.add_extension('fblas',
-                         sources = ['fblas.pyf.src','fblaswrap.f.src'],
-                         depends = [__file__,'fblas_l?.pyf.src'],
+                         sources = sources,
+                         depends = depends,
                          f2py_options = ['skip:']+skip_names['fblas']+[':'],
                          extra_info = blas_opt
                          )
-
     # cblas:
     def get_cblas_source(ext, build_dir):
         name = ext.name.split('.')[-1]



More information about the Scipy-svn mailing list