gnumeric r16823 - trunk/src/tools



Author: guelzow
Date: Tue Sep 23 15:48:39 2008
New Revision: 16823
URL: http://svn.gnome.org/viewvc/gnumeric?rev=16823&view=rev

Log:
2008-09-23  Andreas J. Guelzow <aguelzow pyrshep ca>

	* analysis-tools.c (analysis_tool_moving_average_engine_run): fix
	  standard error for non-zero offset




Modified:
   trunk/src/tools/ChangeLog
   trunk/src/tools/analysis-tools.c

Modified: trunk/src/tools/analysis-tools.c
==============================================================================
--- trunk/src/tools/analysis-tools.c	(original)
+++ trunk/src/tools/analysis-tools.c	Tue Sep 23 15:48:39 2008
@@ -3546,7 +3546,7 @@
 
 		(*mover) = 1 - info->interval + info->offset;
 		for (row = 1; row <= height; row++, (*mover)++) {
-			if ((*mover >= 0) && (*mover + info->interval - 1 < height)) { 
+			if ((*mover >= 0) && (*mover < height - info->interval + 1)) { 
 				GnmExprList *list ;
 				GnmExpr const *expr_offset;
 				
@@ -3557,25 +3557,7 @@
 				list = gnm_expr_list_prepend (list, gnm_expr_copy (expr_input));
 				expr_offset = gnm_expr_new_funcall (fd_offset, list);
 				dao_set_cell_expr (dao, col, row, 
-						   gnm_expr_new_funcall1 (fd_average, gnm_expr_copy (expr_offset)));
-				if (info->std_error_flag) {
-					if (*mover > info->interval - 2)
-						dao_set_cell_expr (dao, col + 1, row,
-								   gnm_expr_new_funcall1 
-								   (fd_sqrt,
-								    gnm_expr_new_binary 
-								    (gnm_expr_new_funcall2
-								     (fd_sumxmy2,
-								      expr_offset,
-								      make_rangeref (-1, - info->interval + 1, -1, 0)),
-								     GNM_EXPR_OP_DIV,
-								     gnm_expr_new_constant (value_new_int (info->interval - info->df)))));
-					else {
-						dao_set_cell_na (dao, col + 1, row);
-						gnm_expr_free (expr_offset);
-					}
-				} else
-					  gnm_expr_free (expr_offset);
+						   gnm_expr_new_funcall1 (fd_average, expr_offset));
 			} else {
 				dao_set_cell_na (dao, col, row);
 				if (info->std_error_flag)
@@ -3587,6 +3569,38 @@
 			col++;
 			dao_set_italic (dao, col, 0, col, 0);
 			dao_set_cell (dao, col, 0, _("Standard Error"));
+
+			(*mover) = 1 - info->interval;
+			for (row = 1; row <= height; row++, (*mover)++) {
+				if ((*mover >= info->interval - info->offset - 1) && (*mover < height - info->interval + 1)) { 
+					GnmExpr const *expr_offset;
+					GnmExprList *list ;
+					
+					list = gnm_expr_list_prepend (NULL, gnm_expr_new_constant (value_new_int (delta_x))); 
+					list = gnm_expr_list_prepend (list, gnm_expr_new_constant (value_new_int (delta_y))); 
+					list = gnm_expr_list_prepend (list, gnm_expr_new_constant (value_new_int (x))); 
+					list = gnm_expr_list_prepend (list, gnm_expr_new_constant (value_new_int (y))); 
+					list = gnm_expr_list_prepend (list, gnm_expr_copy (expr_input));
+					expr_offset = gnm_expr_new_funcall (fd_offset, list);
+					dao_set_cell_expr (dao, col, row,
+							   gnm_expr_new_funcall1 
+							   (fd_sqrt,
+							    gnm_expr_new_binary 
+							    (gnm_expr_new_funcall2
+							     (fd_sumxmy2,
+							      expr_offset,
+							      make_rangeref (-1, - info->interval + 1, -1, 0)),
+							     GNM_EXPR_OP_DIV,
+							     gnm_expr_new_constant (value_new_int (info->interval - info->df)))));
+				} else {
+					dao_set_cell_na (dao, col, row);
+					if (info->std_error_flag)
+						dao_set_cell_na (dao, col, row);
+				}
+			}
+			
+			
+			
 		}
 		
 		gnm_expr_free (expr_input);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]