Mercurial > forge
comparison extra/NaN/src/kth_element.cpp @ 12686:7c1bc8d8c406 octave-forge
fix range check of k-index
author | schloegl |
---|---|
date | Sat, 12 Sep 2015 07:33:55 +0000 |
parents | 6a419bec96bb |
children | 13815b367946 |
comparison
equal
deleted
inserted
replaced
12685:f26b1170ea90 | 12686:7c1bc8d8c406 |
---|---|
188 | 188 |
189 /*********** create output arguments *****************/ | 189 /*********** create output arguments *****************/ |
190 POutput[0] = mxCreateDoubleMatrix(mxGetM(PInputs[1]),mxGetN(PInputs[1]),mxREAL); | 190 POutput[0] = mxCreateDoubleMatrix(mxGetM(PInputs[1]),mxGetN(PInputs[1]),mxREAL); |
191 Y = (double*) mxGetData(POutput[0]); | 191 Y = (double*) mxGetData(POutput[0]); |
192 for (k=0; k < szK; k++) { | 192 for (k=0; k < szK; k++) { |
193 n = K[k]-1; // convert to zero-based indexing | 193 if (K[k] > szX || K[k] < 1) |
194 if (n >= szX || n < 0) | |
195 Y[k] = 0.0/0.0; // NaN: result undefined | 194 Y[k] = 0.0/0.0; // NaN: result undefined |
196 else { | 195 else { |
196 n = (size_t)(K[k]-1); // convert to zero-based indexing, round towards 0 | |
197 findFirstK(T, 0, szX-1, n); | 197 findFirstK(T, 0, szX-1, n); |
198 Y[k] = T[n]; | 198 Y[k] = T[n]; |
199 } | 199 } |
200 } | 200 } |
201 | 201 |