# HG changeset patch # User schloegl # Date 1442042101 0 # Node ID f26b1170ea90e36e24c15c42b35d58f81ac06896 # Parent 29631e455f62ba5ec8e9bbaba40c7b937e53d5f9 resulting values should be really converted to output data type diff -r 29631e455f62 -r f26b1170ea90 extra/NaN/src/covm_mex.cpp --- a/extra/NaN/src/covm_mex.cpp Sat Sep 12 06:34:22 2015 +0000 +++ b/extra/NaN/src/covm_mex.cpp Sat Sep 12 07:15:01 2015 +0000 @@ -362,9 +362,9 @@ cc += z*W[k]; nn += W[k]; } - CC[i] = cc; + CC[i] = (typeof(*CC))cc; if (NN != NULL) - NN[i] = nn; + NN[i] = (typeof(*NN))nn; } else /* no weights, all weights are 1 */ #pragma omp for schedule(dynamic) nowait @@ -386,9 +386,9 @@ cc += z; nn++; } - CC[i] = cc; + CC[i] = (typeof(*CC))cc; if (NN != NULL) - NN[i] = (double)nn; + NN[i] = (typeof(*NN))nn; } else // if (X0==Y0) && (cX==cY) /******** X==Y, output is symetric *******/ @@ -416,11 +416,11 @@ nn += W[k]; } size_t j = jj + ii*cX; - CC[i] = cc; - CC[j] = cc; + CC[i] = (typeof(*CC))cc; + CC[j] = (typeof(*CC))cc; if (NN != NULL) { - NN[i] = nn; - NN[j] = nn; + NN[i] = (typeof(*NN))nn; + NN[j] = (typeof(*NN))nn; } } else /* no weights, all weights are 1 */ @@ -447,11 +447,11 @@ nn++; } size_t j = jj + ii*cX; - CC[i] = cc; - CC[j] = cc; + CC[i] = (typeof(*CC))cc; + CC[j] = (typeof(*CC))cc; if (NN != NULL) { - NN[i] = (double)nn; - NN[j] = (double)nn; + NN[i] = (typeof(*NN))nn; + NN[j] = (typeof(*NN))nn; } } @@ -500,9 +500,9 @@ rn= (t-nn)-y; nn= t; } - CC[i] = cc; + CC[i] = (typeof(*CC))cc; if (NN != NULL) - NN[i] = nn; + NN[i] = (typeof(*NN))nn; } else /* no weights, all weights are 1 */ #pragma omp for schedule(dynamic) nowait @@ -531,9 +531,9 @@ nn++; } - CC[i] = cc; + CC[i] = (typeof(*CC))cc; if (NN != NULL) - NN[i] = (double)nn; + NN[i] = (typeof(*NN))nn; } else // if (X0==Y0) && (cX==cY) /******** X==Y, output is symetric *******/ @@ -573,11 +573,11 @@ nn= t; } size_t j = jj + ii*cX; - CC[i] = cc; - CC[j] = cc; + CC[i] = (typeof(*CC))cc; + CC[j] = (typeof(*CC))cc; if (NN != NULL) { - NN[i] = nn; - NN[j] = nn; + NN[i] = (typeof(*NN))nn; + NN[j] = (typeof(*NN))nn; } } else /* no weights, all weights are 1 */ @@ -611,11 +611,11 @@ nn++; } size_t j = jj + ii*cX; - CC[i] = cc; - CC[j] = cc; + CC[i] = (typeof(*CC))cc; + CC[j] = (typeof(*CC))cc; if (NN != NULL) { - NN[i] = (double)nn; - NN[j] = (double)nn; + NN[i] = (typeof(*NN))nn; + NN[j] = (typeof(*NN))nn; } } } diff -r 29631e455f62 -r f26b1170ea90 extra/NaN/src/histo_mex.cpp --- a/extra/NaN/src/histo_mex.cpp Sat Sep 12 06:34:22 2015 +0000 +++ b/extra/NaN/src/histo_mex.cpp Sat Sep 12 07:15:01 2015 +0000 @@ -161,6 +161,8 @@ else if (f1>f2) z = 1; break; } + default: + mexErrMsgTxt("unsupported input type"); } i++; ix1 += Sort.Stride; @@ -234,8 +236,6 @@ mexErrMsgTxt("Error HISTO.MEX: input must be vector or matrix (no more than two dimensions)"); size_t n = SZ[0]; - size_t sz = 1; - char flag = 0; const char *fnames[] = {"datatype","X","H"}; mxArray *HIS = mxCreateStructMatrix(1, 1, 3, fnames); @@ -335,7 +335,7 @@ int8_t *x; x = (int8_t*)mxGetData(X); for (k=0; k<0x0100; k++) - x[k]=k-128; + x[k]=(int8_t)(k-128); x = (int8_t*)mxGetData(PInputs[0]); double *h = (double*)mxGetData(H); @@ -353,7 +353,7 @@ mxSetField(HIS,0,"X",X); uint8_t *x = (uint8_t*)mxGetData(X); - for (k=0; k<0x0100; k++) x[k]=k; + for (k=0; k<0x0100; k++) x[k]=(uint8_t)k; x = (uint8_t*)mxGetData(PInputs[0]); double *h = (double*)mxGetData(H); @@ -373,7 +373,7 @@ double *h = (double*)mxGetData(H); int16_t *x = (int16_t*)mxGetData(X); for (k=0; k<0x10000; k++) - x[k]=k-0x8000; + x[k]=(int16_t)(k-0x8000); x = (int16_t*)mxGetData(PInputs[0]); for (k=0; k