1 -------------------------------------------------------------------------------
4 -------------------------------------------------------------------------------
6 -------------------------------------------------------------------------------
9 LAPACK project according to the specifications described at the forum for
10 the
Intel(R) Math Kernel Library (
Intel(R) MKL):
13 This
implementation provides a native C interface to LAPACK routines available
14 at www.netlib.org/
lapack to facilitate usage of LAPACK functionality
17 - row-major and column-major matrix layout controlled by the first function
20 without working
arrays (high-level interface);
21 - input scalars passed by
value;
22 - error code as a return
value instead of the INFO parameter.
27 This
implementation includes interfaces for the LAPACK-3.2.1 Driver and
28 Computational routines only.
30 -------------------------------------------------------------------------------
32 -------------------------------------------------------------------------------
34 The installation directory of this package has the following
structure:
36 src - C interface
source files
37 utils - C interface auxiliary files
38 include -
header files for C interface
40 -------------------------------------------------------------------------------
42 -------------------------------------------------------------------------------
44 The reference code for the C interface to LAPACK is built similarly to the
45 Basic Linear Algebra Subprograms (BLAS) and LAPACK. The build system produces
46 a static binary lapacke.a.
48 You need to provide a make.
inc file in the top directory that defines the
49 compiler, compiler
flags, names for binaries to be created/
linked to. You may
50 choose the appropriate LP64/ILP64
model, convenient complex type
style,
51 LAPACKE name
pattern, and/or redefine system malloc/free in make.
inc. Several
52 examples of make.
inc are provided.
54 After setting up the make.
inc, you can build C interface to LAPACK by typing
58 -------------------------------------------------------------------------------
59 Handling Complex Types
60 -------------------------------------------------------------------------------
65 1) C99 complex types (default):
67 #define lapack_complex_float float _Complex
68 #define lapack_complex_double double _Complex
70 2) C
structure option (set by enabling in the configuration file):
71 -DHAVE_LAPACK_CONFIG_H -DLAPACK_COMPLEX_STRUCTURE
75 #define lapack_complex_float _lapack_complex_float
76 #define lapack_complex_double _lapack_complex_double
78 3) C++ complex types (
set by enabling in the configuration file):
79 -DHAVE_LAPACK_CONFIG_H -DLAPACK_COMPLEX_CPP
81 #define lapack_complex_float std::complex<float>
82 #define lapack_complex_double std::complex<double>
84 You have to compile the
interface with C++ compiler with C++ types.
86 4) Custom complex types:
87 -DLAPACK_COMPLEX_CUSTOM
89 To use custom complex types, you need to:
92 functions
if you want to build the testing suite supplied. Use these
93 functions for the testing system. Their purpose is to make a complex
value of
94 a real part re, imaginary part im. The prototypes are as follows:
99 -------------------------------------------------------------------------------
100 Choosing ILP64 Data Model
101 -------------------------------------------------------------------------------
102 To choose ILP64 data
model (set by enabling in the configuration file), use the
105 -DHAVE_LAPACK_CONFIG_H -DLAPACK_ILP64
107 -------------------------------------------------------------------------------
108 Using Predicate Functions
109 -------------------------------------------------------------------------------
113 lapacke_?gees/lapacke_?gees_work
114 lapacke_?geesx/lapacke_?geesx_work
115 lapacke_?geev/lapacke_?geev_work
116 lapacke_?geevx/lapacke_?geevx_work
118 require the pointer to a predicate function as an argument of a predefined type
123 The purpose and format of these predicate functions are described in the LAPACK
124 documentation. This interface passes the pointer to the corresponding LAPACK
127 Be cautious with return values of the logical type
if you link against LAPACK
128 compiled with Fortran compiler. Whereas all non-zero values are treated as TRUE
129 generally, some Fortran compilers may rely on a certain TRUE
value,
so you will
130 have to use the same TRUE
value in the predicate function to be consistent with
133 -------------------------------------------------------------------------------
134 Implementation Details
135 -------------------------------------------------------------------------------
137 The current C interface
implementation consists of wrappers to LAPACK routines.
138 The row-major matrices are transposed on entry to and on exit from the LAPACK
139 routine,
if needed. Top-level interfaces additionally allocate/deallocate
140 working space on entry to and on exit from the LAPACK
routine.
143 this interface may require more memory space and run slower than the
146 -------------------------------------------------------------------------------
147 Disclaimer and Legal Information
148 -------------------------------------------------------------------------------
150 INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH
INTEL(R)
152 ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT
153 AS PROVIDED IN
INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH
PRODUCTS,
158 OTHER INTELLECTUAL PROPERTY RIGHT. UNLESS
OTHERWISE AGREED IN WRITING
160 APPLICATION IN WHICH THE FAILURE OF THE
INTEL PRODUCT COULD CREATE
A
161 SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.
163 Intel may make changes to specifications and product descriptions at
164 any
time, without
notice. Designers must not rely on the absence or
165 characteristics of any features or instructions marked "reserved" or
166 "undefined."
Intel reserves these for future definition and shall have
167 no responsibility whatsoever for conflicts or incompatibilities
168 arising from future changes to
them. The information here is subject
169 to change without
notice. Do not finalize a design with this
172 The products described in this
document may contain design defects or
173 errors known as errata which may cause the product to deviate from
174 published specifications. Current characterized errata are available
177 Contact your local
Intel sales office or your distributor to obtain
178 the latest specifications and before placing your product order.
179 Copies of documents which have an order number and are referenced in
181 1-800-548-4725, or go to
http:
183 Intel processor numbers are not a measure of performance. Processor
184 numbers differentiate features within each processor family, not
185 across different processor families. See
188 This
document contains information on products in the design phase of
201 Intel Corporation in the U.S. and other countries.
204 * Other names and brands may be claimed as the property of others.