Mercurial > forge
diff extra/NaN/src/sumskipnan_mex.cpp @ 12685:f26b1170ea90 octave-forge
resulting values should be really converted to output data type
author | schloegl |
---|---|
date | Sat, 12 Sep 2015 07:15:01 +0000 |
parents | de98e4cb9248 |
children | 6d6285a2a633 |
line wrap: on
line diff
--- a/extra/NaN/src/sumskipnan_mex.cpp Sat Sep 12 06:34:22 2015 +0000 +++ b/extra/NaN/src/sumskipnan_mex.cpp Sat Sep 12 07:15:01 2015 +0000 @@ -327,7 +327,7 @@ /* copy to output */ for (j=0; j<D1; j++) { - LOutputSum[ix0+j] = LongOutputSum[ix0+j]; + LOutputSum[ix0+j] = (typeof(*LOutputSum))LongOutputSum[ix0+j]; } } } @@ -371,8 +371,8 @@ /* copy to output */ for (j=0; j<D1; j++) { - LOutputSum[ix0+j] = LongOutputSum[ix0+j]; - LOutputCount[ix0+j] = LongOutputCount[ix0+j]; + LOutputSum[ix0+j] = (typeof(*LOutputSum))LongOutputSum[ix0+j]; + LOutputCount[ix0+j] = (typeof(*LOutputCount))LongOutputCount[ix0+j]; } // end else } } @@ -390,7 +390,7 @@ long double x = *LInput; if (!isnan(x)) { LongOutputCount[ix2] += W[j]; - double t = W[j]*x; + long double t = W[j]*x; LongOutputSum[ix2] += t; LongOutputSum2[ix2] += x*t; } @@ -419,9 +419,9 @@ /* copy to output */ for (j=0; j<D1; j++) { - LOutputSum[ix0+j] = LongOutputSum[ix0+j]; - LOutputCount[ix0+j] = LongOutputCount[ix0+j]; - LOutputSum2[ix0+j] = LongOutputSum2[ix0+j]; + LOutputSum[ix0+j] = (typeof(*LOutputSum))LongOutputSum[ix0+j]; + LOutputCount[ix0+j] = (typeof(*LOutputCount))LongOutputCount[ix0+j]; + LOutputSum2[ix0+j] = (typeof(*LOutputSum2))LongOutputSum2[ix0+j]; } } } @@ -500,7 +500,7 @@ W++; } while (data < end); - *No = count; + *No = (typeof(*No))count; } else { // w/o weight vector size_t countI = 0; @@ -518,13 +518,13 @@ data++; // stride=1 } while (data < end); - *No = (double)countI; + *No = (typeof(*No))countI; } #ifndef NO_FLAG if (flag && (flag_anyISNAN != NULL)) *flag_anyISNAN = 1; #endif - *s = sum; + *s = (typeof(*s))sum; } @@ -556,7 +556,7 @@ W++; } while (data < end); - *No = count; + *No = (typeof(*No))count; } else { // w/o weight vector size_t countI = 0; @@ -574,14 +574,14 @@ data++; // stride=1 } while (data < end); - *No = (double)countI; + *No = (typeof(*No))countI; } #ifndef NO_FLAG if (flag && (flag_anyISNAN != NULL)) *flag_anyISNAN = 1; #endif - *s = sum; - *s2 = msq; + *s = (typeof(*s))sum; + *s2 = (typeof(*s2))msq; } inline void __sumskipnan2wr__(double *data, size_t Ni, double *s, double *No, char *flag_anyISNAN, double *W) @@ -610,7 +610,7 @@ W++; } while (data < end); - *No = count; + *No = (typeof(*No))count; } else { // w/o weight vector size_t countI = 0; @@ -628,13 +628,13 @@ data++; // stride=1 } while (data < end); - *No = (double)countI; + *No = (typeof(*No))countI; } #ifndef NO_FLAG if (flag && (flag_anyISNAN != NULL)) *flag_anyISNAN = 1; #endif - *s = sum; + *s = (typeof(*s))sum; } @@ -684,14 +684,14 @@ data++; // stride=1 } while (data < end); - *No = (double)countI; + *No = (typeof(*No))countI; } #ifndef NO_FLAG if (flag && (flag_anyISNAN != NULL)) *flag_anyISNAN = 1; #endif - *s = sum; - *s2 = msq; + *s = (typeof(*s))sum; + *s2 = (typeof(*s2))msq; } @@ -743,7 +743,7 @@ W++; } while (data < end); - *No = count; + *No = (typeof(*No))count; } else { // w/o weight vector size_t countI = 0; @@ -767,13 +767,13 @@ data++; // stride=1 } while (data < end); - *No = (double)countI; + *No = (typeof(*No))countI; } #ifndef NO_FLAG if (flag && (flag_anyISNAN != NULL)) *flag_anyISNAN = 1; #endif - *s = sum; + *s = (typeof(*s))sum; } @@ -821,7 +821,7 @@ W++; } while (data < end); - *No = count; + *No = (typeof(*No))count; } else { // w/o weight vector size_t countI = 0; @@ -850,14 +850,14 @@ data++; // stride=1 } while (data < end); - *No = (double)countI; + *No = (typeof(*No))countI; } #ifndef NO_FLAG if (flag && (flag_anyISNAN != NULL)) *flag_anyISNAN = 1; #endif - *s = sum; - *s2 = msq; + *s = (typeof(*s))sum; + *s2 = (typeof(*s))msq; } inline void __sumskipnan2wer__(double *data, size_t Ni, double *s, double *No, char *flag_anyISNAN, double *W) @@ -897,7 +897,7 @@ W++; } while (data < end); - *No = count; + *No = (typeof(*No))count; } else { // w/o weight vector size_t countI = 0; @@ -921,13 +921,13 @@ data++; // stride=1 } while (data < end); - *No = (double)countI; + *No = (typeof(*No))countI; } #ifndef NO_FLAG if (flag && (flag_anyISNAN != NULL)) *flag_anyISNAN = 1; #endif - *s = sum; + *s = (typeof(*s))sum; } @@ -975,7 +975,7 @@ W++; } while (data < end); - *No = count; + *No = (typeof(*No))count; } else { // w/o weight vector size_t countI = 0; @@ -1004,13 +1004,13 @@ data++; // stride=1 } while (data < end); - *No = (double)countI; + *No = (typeof(*No))countI; } #ifndef NO_FLAG if (flag && (flag_anyISNAN != NULL)) *flag_anyISNAN = 1; #endif - *s = sum; - *s2 = msq; + *s = (typeof(*s))sum; + *s2 = (typeof(*s))msq; }