Mercurial > octave
view test/mex/mexnumtst.c @ 28160:478ad929e77a
Fix compilation of BIST file mexnumtst.c.
* test/mex/mexnumtst.c: #include "mex.h" rather than <mex.h>.
author | Rik <rik@octave.org> |
---|---|
date | Sat, 14 Mar 2020 20:23:01 -0700 |
parents | 1188addabaad |
children | b24567df50ab |
line wrap: on
line source
#include "mex.h" // To be called with // // single array // complex single array // double array // complex double array // // Will return arrays of the same type, but created internally to test // the mxArray -> octave_value conversion void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { if (nrhs != 4 || nlhs != 4) mexErrMsgTxt ("invalid arguments"); const mxArray *sngl_ra = prhs[0]; const mxArray *cplx_sngl_ra = prhs[1]; const mxArray *dble_ra = prhs[2]; const mxArray *cplx_dble_ra = prhs[3]; #if MX_HAS_INTERLEAVED_COMPLEX mxSingle *sngl_data = mxGetSingles (sngl_ra); size_t sngl_data_nr = mxGetM (sngl_ra); size_t sngl_data_nc = mxGetN (sngl_ra); plhs[0] = mxCreateNumericMatrix (sngl_data_nr, sngl_data_nc, mxSINGLE_CLASS, mxREAL); mxSetSingles (plhs[0], sngl_data); mxComplexSingle *cplx_sngl_data = mxGetComplexSingles (cplx_sngl_ra); size_t cplx_sngl_data_nr = mxGetM (cplx_sngl_ra); size_t cplx_sngl_data_nc = mxGetN (cplx_sngl_ra); plhs[1] = mxCreateNumericMatrix (cplx_sngl_data_nr, cplx_sngl_data_nc, mxSINGLE_CLASS, mxCOMPLEX); mxSetComplexSingles (plhs[1], cplx_sngl_data); mxDouble *dble_data = mxGetDoubles (dble_ra); size_t dble_data_nr = mxGetM (dble_ra); size_t dble_data_nc = mxGetN (dble_ra); plhs[2] = mxCreateNumericMatrix (dble_data_nr, dble_data_nc, mxDOUBLE_CLASS, mxREAL); mxSetDoubles (plhs[2], dble_data); mxComplexDouble *cplx_dble_data = mxGetComplexDoubles (cplx_dble_ra); size_t cplx_dble_data_nr = mxGetM (cplx_dble_ra); size_t cplx_dble_data_nc = mxGetN (cplx_dble_ra); plhs[3] = mxCreateNumericMatrix (cplx_dble_data_nr, cplx_dble_data_nc, mxDOUBLE_CLASS, mxCOMPLEX); mxSetComplexDoubles (plhs[3], cplx_dble_data); #else mxSingle *sngl_data = (mxSingle *) mxGetData (sngl_ra); size_t sngl_data_nr = mxGetM (sngl_ra); size_t sngl_data_nc = mxGetN (sngl_ra); mxSingle *cplx_sngl_data_real = (mxSingle *) mxGetData (cplx_sngl_ra); mxSingle *cplx_sngl_data_imag = (mxSingle *) mxGetImagData (cplx_sngl_ra); size_t cplx_sngl_data_nr = mxGetM (cplx_sngl_ra); size_t cplx_sngl_data_nc = mxGetN (cplx_sngl_ra); mxDouble *dble_data = (mxDouble *) mxGetData (dble_ra); size_t dble_data_nr = mxGetM (dble_ra); size_t dble_data_nc = mxGetN (dble_ra); mxDouble *cplx_dble_data_real = (mxDouble *) mxGetData (cplx_dble_ra); mxDouble *cplx_dble_data_imag = (mxDouble *) mxGetImagData (cplx_dble_ra); size_t cplx_dble_data_nr = mxGetM (cplx_dble_ra); size_t cplx_dble_data_nc = mxGetN (cplx_dble_ra); plhs[0] = mxCreateNumericMatrix (sngl_data_nr, sngl_data_nc, mxSINGLE_CLASS, mxREAL); mxSetData (plhs[0], sngl_data); plhs[1] = mxCreateNumericMatrix (cplx_sngl_data_nr, cplx_sngl_data_nc, mxSINGLE_CLASS, mxCOMPLEX); mxSetData (plhs[1], cplx_sngl_data_real); mxSetImagData (plhs[1], cplx_sngl_data_imag); plhs[2] = mxCreateNumericMatrix (dble_data_nr, dble_data_nc, mxDOUBLE_CLASS, mxREAL); mxSetData (plhs[2], dble_data); plhs[3] = mxCreateNumericMatrix (cplx_dble_data_nr, cplx_dble_data_nc, mxDOUBLE_CLASS, mxCOMPLEX); mxSetData (plhs[3], cplx_dble_data_real); mxSetImagData (plhs[3], cplx_dble_data_imag); #endif }