annotate examples/code/mysparse.c @ 20595:c1a6c31ac29a

eliminate more simple uses of error_state * ov-classdef.cc: Eliminate simple uses of error_state.
author John W. Eaton <jwe@octave.org>
date Tue, 06 Oct 2015 00:20:02 -0400
parents c8240a60dd01
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
1 #include "mex.h"
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
2
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
3 void
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
4 mexFunction (int nlhs, mxArray *plhs[],
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
5 int nrhs, const mxArray *prhs[])
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
6 {
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
7 mwSize m, n, nz;
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
8 mxArray *v;
6686
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 6580
diff changeset
9 mwIndex i;
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
10 double *pr, *pi;
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
11 double *pr2, *pi2;
6686
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 6580
diff changeset
12 mwIndex *ir, *jc;
2aad75fcc93a [project @ 2007-06-03 20:58:28 by dbateman]
dbateman
parents: 6580
diff changeset
13 mwIndex *ir2, *jc2;
17289
4d7f95eb8bfe doc: Miscellaneous small tweaks to documentation for consistency.
Rik <rik@octave.org>
parents: 16867
diff changeset
14
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
15 if (nrhs != 1 || ! mxIsSparse (prhs[0]))
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
16 mexErrMsgTxt ("ARG1 must be a sparse matrix");
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
17
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
18 m = mxGetM (prhs[0]);
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
19 n = mxGetN (prhs[0]);
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
20 nz = mxGetNzmax (prhs[0]);
17289
4d7f95eb8bfe doc: Miscellaneous small tweaks to documentation for consistency.
Rik <rik@octave.org>
parents: 16867
diff changeset
21
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
22 if (mxIsComplex (prhs[0]))
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
23 {
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
24 mexPrintf ("Matrix is %d-by-%d complex sparse matrix", m, n);
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
25 mexPrintf (" with %d elements\n", nz);
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
26
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
27 pr = mxGetPr (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
28 pi = mxGetPi (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
29 ir = mxGetIr (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
30 jc = mxGetJc (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
31
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
32 i = n;
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
33 while (jc[i] == jc[i-1] && i != 0) i--;
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
34
18851
9ac2357f19bc doc: Replace "non-zero" with "nonzero" to match existing usage.
Rik <rik@octave.org>
parents: 17289
diff changeset
35 mexPrintf ("last nonzero element (%d, %d) = (%g, %g)\n",
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
36 ir[nz-1]+ 1, i, pr[nz-1], pi[nz-1]);
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
37
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
38 v = mxCreateSparse (m, n, nz, mxCOMPLEX);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
39 pr2 = mxGetPr (v);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
40 pi2 = mxGetPi (v);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
41 ir2 = mxGetIr (v);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
42 jc2 = mxGetJc (v);
17289
4d7f95eb8bfe doc: Miscellaneous small tweaks to documentation for consistency.
Rik <rik@octave.org>
parents: 16867
diff changeset
43
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
44 for (i = 0; i < nz; i++)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
45 {
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
46 pr2[i] = 2 * pr[i];
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
47 pi2[i] = 2 * pi[i];
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
48 ir2[i] = ir[i];
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
49 }
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
50 for (i = 0; i < n + 1; i++)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
51 jc2[i] = jc[i];
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
52
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
53 if (nlhs > 0)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
54 plhs[0] = v;
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
55 }
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
56 else if (mxIsLogical (prhs[0]))
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
57 {
15352
9a8dbd6b6b20 * mysparse.c (mexFunction): Declare pbr and pbr2 as mxLogical*, not bool*.
John W. Eaton <jwe@octave.org>
parents: 9932
diff changeset
58 mxLogical *pbr, *pbr2;
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
59 mexPrintf ("Matrix is %d-by-%d logical sparse matrix", m, n);
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
60 mexPrintf (" with %d elements\n", nz);
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
61
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
62 pbr = mxGetLogicals (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
63 ir = mxGetIr (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
64 jc = mxGetJc (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
65
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
66 i = n;
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
67 while (jc[i] == jc[i-1] && i != 0) i--;
18851
9ac2357f19bc doc: Replace "non-zero" with "nonzero" to match existing usage.
Rik <rik@octave.org>
parents: 17289
diff changeset
68 mexPrintf ("last nonzero element (%d, %d) = %d\n",
7081
503001863427 [project @ 2007-10-31 01:08:14 by jwe]
jwe
parents: 7019
diff changeset
69 ir[nz-1]+ 1, i, pbr[nz-1]);
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
70
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
71 v = mxCreateSparseLogicalMatrix (m, n, nz);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
72 pbr2 = mxGetLogicals (v);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
73 ir2 = mxGetIr (v);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
74 jc2 = mxGetJc (v);
17289
4d7f95eb8bfe doc: Miscellaneous small tweaks to documentation for consistency.
Rik <rik@octave.org>
parents: 16867
diff changeset
75
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
76 for (i = 0; i < nz; i++)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
77 {
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
78 pbr2[i] = pbr[i];
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
79 ir2[i] = ir[i];
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
80 }
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
81 for (i = 0; i < n + 1; i++)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
82 jc2[i] = jc[i];
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
83
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
84 if (nlhs > 0)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
85 plhs[0] = v;
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
86 }
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
87 else
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
88 {
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
89 mexPrintf ("Matrix is %d-by-%d real sparse matrix", m, n);
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
90 mexPrintf (" with %d elements\n", nz);
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
91
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
92 pr = mxGetPr (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
93 ir = mxGetIr (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
94 jc = mxGetJc (prhs[0]);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
95
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
96 i = n;
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
97 while (jc[i] == jc[i-1] && i != 0) i--;
18851
9ac2357f19bc doc: Replace "non-zero" with "nonzero" to match existing usage.
Rik <rik@octave.org>
parents: 17289
diff changeset
98 mexPrintf ("last nonzero element (%d, %d) = %g\n",
16867
be41c30bcb44 Re-write documentation and all examples of dynamically linked functions.
Rik <rik@octave.org>
parents: 15352
diff changeset
99 ir[nz-1]+ 1, i, pr[nz-1]);
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
100
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
101 v = mxCreateSparse (m, n, nz, mxREAL);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
102 pr2 = mxGetPr (v);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
103 ir2 = mxGetIr (v);
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
104 jc2 = mxGetJc (v);
17289
4d7f95eb8bfe doc: Miscellaneous small tweaks to documentation for consistency.
Rik <rik@octave.org>
parents: 16867
diff changeset
105
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
106 for (i = 0; i < nz; i++)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
107 {
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
108 pr2[i] = 2 * pr[i];
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
109 ir2[i] = ir[i];
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
110 }
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
111 for (i = 0; i < n + 1; i++)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
112 jc2[i] = jc[i];
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
113
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
114 if (nlhs > 0)
6580
d2bb3b8a8d20 [project @ 2007-04-25 22:19:03 by dbateman]
dbateman
parents: 5903
diff changeset
115 plhs[0] = v;
5903
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
116 }
11bb9bf343a0 [project @ 2006-07-26 03:36:33 by jwe]
jwe
parents:
diff changeset
117 }