diff extra/NaN/src/covm_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/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; 
 		}	
 	    }
     }