Added SuperLU 3.0:
[blender.git] / intern / opennl / extern / ONL_opennl.h
1 /*
2  *  $Id$
3  *
4  *  OpenNL: Numerical Library
5  *  Copyright (C) 2004 Bruno Levy
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2 of the License, or
10  *  (at your option) any later version.
11  *
12  *  This program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with this program; if not, write to the Free Software
19  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  *
21  *  If you modify this software, you should include a notice giving the
22  *  name of the person performing the modification, the date of modification,
23  *  and the reason for such modification.
24  *
25  *  Contact: Bruno Levy
26  *
27  *     levy@loria.fr
28  *
29  *     ISA Project
30  *     LORIA, INRIA Lorraine, 
31  *     Campus Scientifique, BP 239
32  *     54506 VANDOEUVRE LES NANCY CEDEX 
33  *     FRANCE
34  *
35  *  Note that the GNU General Public License does not permit incorporating
36  *  the Software into proprietary programs. 
37  */
38
39 /*
40 #define NL_DEBUG
41 #define NL_PARANOID
42 */
43
44 #define NL_USE_SUPERLU
45
46 #ifndef nlOPENNL_H
47 #define nlOPENNL_H
48
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
52
53 #define NL_VERSION_0_0 1
54
55 /*
56  *
57  * Datatypes
58  *
59  */
60
61 typedef unsigned int    NLenum;
62 typedef unsigned char   NLboolean;
63 typedef unsigned int    NLbitfield;
64 typedef void            NLvoid;
65 typedef signed char     NLbyte;         /* 1-byte signed */
66 typedef short           NLshort;        /* 2-byte signed */
67 typedef int             NLint;          /* 4-byte signed */
68 typedef unsigned char   NLubyte;        /* 1-byte unsigned */
69 typedef unsigned short  NLushort;       /* 2-byte unsigned */
70 typedef unsigned int    NLuint;         /* 4-byte unsigned */
71 typedef int             NLsizei;        /* 4-byte signed */
72 typedef float           NLfloat;        /* single precision float */
73 typedef double          NLdouble;       /* double precision float */
74
75 typedef void* NLContext ;
76
77 /*
78  *
79  * Constants
80  *
81  */
82
83 #define NL_FALSE   0x0
84 #define NL_TRUE    0x1
85
86 /* Primitives */
87
88 #define NL_SYSTEM  0x0
89 #define NL_MATRIX  0x1
90 #define NL_ROW     0x2
91
92 /* Solver Parameters */
93
94 #define NL_SOLVER           0x100
95 #define NL_NB_VARIABLES     0x101
96 #define NL_LEAST_SQUARES    0x102
97 #define NL_SYMMETRIC        0x106
98 #define NL_ERROR            0x108
99
100 /* Enable / Disable */
101
102 #define NL_NORMALIZE_ROWS  0x400
103
104 /* Row parameters */
105
106 #define NL_RIGHT_HAND_SIDE 0x500
107 #define NL_ROW_SCALING     0x501
108
109 /*
110  * Contexts
111  */
112     NLContext nlNewContext() ;
113     void nlDeleteContext(NLContext context) ;
114     void nlMakeCurrent(NLContext context) ;
115     NLContext nlGetCurrent() ;
116
117 /*
118  * State set/get
119  */
120
121     void nlSolverParameterf(NLenum pname, NLfloat param) ;
122     void nlSolverParameteri(NLenum pname, NLint param) ;
123
124     void nlRowParameterf(NLenum pname, NLfloat param) ;
125     void nlRowParameteri(NLenum pname, NLint param) ;
126
127     void nlGetBooleanv(NLenum pname, NLboolean* params) ;
128     void nlGetFloatv(NLenum pname, NLfloat* params) ;
129     void nlGetIntergerv(NLenum pname, NLint* params) ;
130
131     void nlEnable(NLenum pname) ;
132     void nlDisable(NLenum pname) ;
133     NLboolean nlIsEnabled(NLenum pname) ;
134
135 /*
136  * Variables
137  */
138     void nlSetVariable(NLuint index, NLfloat value) ;
139     NLfloat nlGetVariable(NLuint index) ;
140     void nlLockVariable(NLuint index) ;
141     void nlUnlockVariable(NLuint index) ;
142     NLboolean nlVariableIsLocked(NLuint index) ;
143
144 /*
145  * Begin/End
146  */
147
148     void nlBegin(NLenum primitive) ;
149     void nlEnd(NLenum primitive) ;
150     void nlCoefficient(NLuint index, NLfloat value) ;
151
152 /*
153  * Solve
154  */
155
156     NLboolean nlSolve() ;
157
158 #ifdef __cplusplus
159 }
160 #endif
161
162 #endif
163