changeset 1056:84d5d1dd6776 octave-forge

returns sum square also for complex data
author schloegl
date Fri, 26 Sep 2003 07:41:23 +0000
parents ff83f8133f21
children 750ebc804b2d
files extra/NaN/sumskipnan2.cpp
diffstat 1 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/extra/NaN/sumskipnan2.cpp	Thu Sep 25 14:41:33 2003 +0000
+++ b/extra/NaN/sumskipnan2.cpp	Fri Sep 26 07:41:23 2003 +0000
@@ -79,8 +79,8 @@
 	mexErrMsgTxt("First argument must be NUMERIC.");
     if(!mxIsDouble(PInputs[0]))
 	mexErrMsgTxt("First argument must be DOUBLE.");
-    if(mxIsComplex(PInputs[0]) & (POutputCount > 2))
-	mexErrMsgTxt("More than 2 output arguments only supported for REAL data ");
+    if(mxIsComplex(PInputs[0]) & (POutputCount > 3))
+	mexErrMsgTxt("More than 3 output arguments only supported for REAL data ");
     LInput  = mxGetPr(PInputs[0]);
 
     	// get 2nd argument
@@ -190,18 +190,22 @@
 			{
 				LSum = 0.0;	
 	    			LCountI = 0;
+				LSum2  = 0.0;
 				for (j=0; j<D2; j++) 	
 				{
 					x = LInputI[ix1 + j*D1];
         	        		if (!mxIsNaN(x))
 					{
 						LCountI++; 
-						LSum += x; 
+						LSum  += x; 
+						LSum2 += x*x; 
 					}
 				}
 				LOutputSumI[ix2] = LSum;
 				if (LCount != LCountI)
 			            	mexErrMsgTxt("Number of NaNs is different for REAL and IMAG part");
+	            		if (POutputCount >= 3)
+        	        		LOutputSum2[ix2] += LSum2;
 			}	
 		}
 	}