Mercurial > hg > octave-nkf
annotate examples/code/mypow2.c @ 20828:a3b9ee5c040a
Replace bsxfun with broadcasting for performance with complex inputs (bug #38628).
cumtrapz.m, quadgk.m, trapz.m, center.m, zscore.m: Replace bsxfun with
broadcasting for performance where inputs might be complex.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 12 Oct 2015 21:28:32 -0700 |
parents | 5c42ff6f0eb1 |
children |
rev | line source |
---|---|
6593 | 1 #include "mex.h" |
2 | |
3 void | |
16867
be41c30bcb44
Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents:
9932
diff
changeset
|
4 mexFunction (int nlhs, mxArray* plhs[], |
be41c30bcb44
Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents:
9932
diff
changeset
|
5 int nrhs, const mxArray* prhs[]) |
6593 | 6 { |
16867
be41c30bcb44
Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents:
9932
diff
changeset
|
7 mwSize n; |
6686 | 8 mwIndex i; |
6593 | 9 double *vri, *vro; |
17791
224e76250443
Use GNU style coding conventions for code in examples/
Rik <rik@octave.org>
parents:
16867
diff
changeset
|
10 |
20472 | 11 if (nrhs != 1 || ! mxIsDouble (prhs[0])) |
12 mexErrMsgTxt ("ARG1 must be a double matrix"); | |
6593 | 13 |
14 n = mxGetNumberOfElements (prhs[0]); | |
17791
224e76250443
Use GNU style coding conventions for code in examples/
Rik <rik@octave.org>
parents:
16867
diff
changeset
|
15 plhs[0] = mxCreateNumericArray (mxGetNumberOfDimensions (prhs[0]), |
224e76250443
Use GNU style coding conventions for code in examples/
Rik <rik@octave.org>
parents:
16867
diff
changeset
|
16 mxGetDimensions (prhs[0]), |
224e76250443
Use GNU style coding conventions for code in examples/
Rik <rik@octave.org>
parents:
16867
diff
changeset
|
17 mxGetClassID (prhs[0]), |
224e76250443
Use GNU style coding conventions for code in examples/
Rik <rik@octave.org>
parents:
16867
diff
changeset
|
18 mxIsComplex (prhs[0])); |
6593 | 19 vri = mxGetPr (prhs[0]); |
20 vro = mxGetPr (plhs[0]); | |
21 | |
22 if (mxIsComplex (prhs[0])) | |
23 { | |
24 double *vii, *vio; | |
25 vii = mxGetPi (prhs[0]); | |
26 vio = mxGetPi (plhs[0]); | |
27 | |
28 for (i = 0; i < n; i++) | |
9932
6cb30a539481
untabify files in examples directory
John W. Eaton <jwe@octave.org>
parents:
9053
diff
changeset
|
29 { |
16867
be41c30bcb44
Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents:
9932
diff
changeset
|
30 vro[i] = vri[i] * vri[i] - vii[i] * vii[i]; |
be41c30bcb44
Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents:
9932
diff
changeset
|
31 vio[i] = 2 * vri[i] * vii[i]; |
9932
6cb30a539481
untabify files in examples directory
John W. Eaton <jwe@octave.org>
parents:
9053
diff
changeset
|
32 } |
6593 | 33 } |
34 else | |
35 { | |
36 for (i = 0; i < n; i++) | |
16867
be41c30bcb44
Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents:
9932
diff
changeset
|
37 vro[i] = vri[i] * vri[i]; |
6593 | 38 } |
39 } |