summaryrefslogtreecommitdiff
path: root/numpy/linalg/lapack_lite/README.rst
blob: ed738ab86d75c8c6eceea0cf735c781e57d6921d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Regenerating lapack_lite source
===============================

:Authors: * David M. Cooke <cookedm@physics.mcmaster.ca>
          * Eric Wieser (upgraded lapack version on 2017-03-26)

The ``numpy/linalg/f2c_*.c`` files are ``f2c``'d versions of the LAPACK routines
required by the ``LinearAlgebra`` module, and wrapped by the ``lapack_lite``
module. The scripts in this directory can be used to create these files
automatically from a directory of LAPACK source files.

You'll need `plex 2.0.0dev`_, available from PyPI, installed to do the
appropriate scrubbing. As of writing, **this is only available for python 2.7**,
and is unlikely to ever be ported to python 3.

.. _plex 2.0.0dev: https://pypi.python.org/pypi/plex/

The routines that ``lapack_litemodule.c`` wraps are listed in
``wrapped_routines``, along with a few exceptions that aren't picked up
properly. Assuming that you have an unpacked LAPACK source tree in
``~/LAPACK``, you generate the new routines in this directory with::

$ python ./make_lite.py wrapped_routines ~/LAPACK

This will grab the right routines, with dependencies, put them into the
appropriate ``f2c_*.f`` files, run ``f2c`` over them, then do some scrubbing
similar to that done to generate the CLAPACK_ distribution.

.. _CLAPACK: http://netlib.org/clapack/index.html

The output C files in git use the LAPACK source from the LAPACK_ page, using
version 3.2.2. Unfortunately, newer versions use newer FORTRAN features, which
are increasingly not supported by ``f2c``. As these are found, the patch files
will need to be changed to re-express new constructs with legacy constructs.

.. _LAPACK: http://netlib.org/lapack/index.html