8
const mxArray *pargin [ ]
13
if (nargout > 1 || nargin != 2)
15
mexErrMsgTxt ("Usage: x = cs_pvec(b,p)") ;
17
n = mxGetNumberOfElements (pargin [0]) ;
18
if (n != mxGetNumberOfElements (pargin [1]))
20
mexErrMsgTxt ("b or p wrong size") ;
23
xx = mxGetPr (pargin [1]) ;
24
p = cs_dl_malloc (n, sizeof (CS_INT)) ;
25
for (k = 0 ; k < n ; k++) p [k] = xx [k] - 1 ;
27
if (mxIsComplex (pargin [0]))
30
b = cs_cl_mex_get_double (n, pargin [0]) ;
31
x = cs_dl_malloc (n, sizeof (cs_complex_t)) ;
32
cs_cl_pvec (p, b, x, n) ;
33
pargout [0] = cs_cl_mex_put_double (n, x) ;
34
cs_free (b) ; /* free copy of complex values */
39
b = cs_dl_mex_get_double (n, pargin [0]) ;
40
pargout [0] = mxCreateDoubleMatrix (n, 1, mxREAL) ;
41
x = mxGetPr (pargout [0]) ;
42
cs_dl_pvec (p, b, x, n) ;