forked from b45ch1/pyadolc
-
Notifications
You must be signed in to change notification settings - Fork 1
/
py_colpack.hpp
55 lines (37 loc) · 2.16 KB
/
py_colpack.hpp
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef PY_COLPACK_HPP
#define PY_COLPACK_HPP
#define PY_ARRAY_UNIQUE_SYMBOL PyArrayHandle
#include "num_util.h"
#include "adolc.h"
#include "sparse/sparsedrivers.h"
using namespace std;
namespace b = boost;
namespace bp = boost::python;
namespace bpn = boost::python::numeric;
namespace nu = num_util;
// extern int jac_pat(short,int,int,double*,unsigned int**,int*);
// extern void generate_seed_jac(int, int, unsigned int**, double***, int*, int);
// extern int sparse_jac(short, int , int, int, double*, int *, unsigned int **, unsigned int **, double **,int*);
// extern int hess_pat(short,int,double*,unsigned int**, int);
// extern void generate_seed_hess(int, unsigned int**, double***, int*, int);
// extern int sparse_hess(short, int , int, double*, int *, unsigned int **, unsigned int **, double **,int*);
// extern int bit_vector_propagation(short, int, int, double*, unsigned int**, int*);
bp::list wrapped_jac_pat(short tape_tag, bpn::array &bpn_x, bpn::array &bpn_options);
bp::list wrapped_sparse_jac_no_repeat(short tape_tag, bpn::array &bpn_x, bpn::array &bpn_options);
bp::list wrapped_sparse_jac_repeat(short tape_tag, bpn::array &bpn_x, npy_intp nnz, bpn::array &bpn_rind, bpn::array &bpn_cind, bpn::array &bpn_values);
bp::list wrapped_hess_pat(short tape_tag, bpn::array &bpn_x, npy_intp option);
bp::list wrapped_sparse_hess_no_repeat(short tape_tag, bpn::array &bpn_x, bpn::array &bpn_options);
bp::list wrapped_sparse_hess_repeat(short tape_tag, bpn::array &bpn_x, npy_intp nnz, bpn::array &bpn_rind, bpn::array &bpn_cind, bpn::array &bpn_values);
BOOST_PYTHON_MODULE(_colpack)
{
using namespace boost::python;
import_array(); /* some kind of hack to get numpy working */
bpn::array::set_module_and_type("numpy", "ndarray"); /* some kind of hack to get numpy working */
def("jac_pat", &wrapped_jac_pat);
def("sparse_jac_no_repeat", &wrapped_sparse_jac_no_repeat);
def("sparse_jac_repeat", &wrapped_sparse_jac_repeat);
def("hess_pat", &wrapped_hess_pat);
def("sparse_hess_no_repeat", &wrapped_sparse_hess_no_repeat);
def("sparse_hess_repeat", &wrapped_sparse_hess_repeat);
}
#endif