diff --git a/src/variable.cpp b/src/variable.cpp index 35eb0781b2..efdc701c1a 100644 --- a/src/variable.cpp +++ b/src/variable.cpp @@ -4057,7 +4057,7 @@ int Variable::special_function(char *word, char *contents, Tree **tree, Tree **treestack, int &ntreestack, double *argstack, int &nargstack, int ivar) { - bigint sx,sxx; + double sx,sxx; double value,sy,sxy; // word not a match to any special function @@ -4213,10 +4213,7 @@ int Variable::special_function(char *word, char *contents, Tree **tree, "variable formula",ivar); value = 0.0; - if (method == SLOPE) { - sx = sxx = 0; - sy = sxy = 0.0; - } + if (method == SLOPE) sx = sxx = sy = sxy = 0.0; else if (method == XMIN) value = BIG; else if (method == XMAX) value = -BIG; @@ -4235,10 +4232,10 @@ int Variable::special_function(char *word, char *contents, Tree **tree, else if (method == AVE) value += vec[j]; else if (method == TRAP) value += vec[j]; else if (method == SLOPE) { - sx += i; + sx += (double)i; sy += vec[j]; - sxx += i*i; - sxy += i*vec[j]; + sxx += (double)i * (double)i; + sxy += (double)i * vec[j]; } j += nstride; } @@ -4256,10 +4253,10 @@ int Variable::special_function(char *word, char *contents, Tree **tree, else if (method == AVE) value += one; else if (method == TRAP) value += one; else if (method == SLOPE) { - sx += i; + sx += (double)i; sy += one; - sxx += i*i; - sxy += i*one; + sxx += (double)i * (double)i; + sxy += (double)i * one; } } if (method == TRAP) { @@ -4281,10 +4278,10 @@ int Variable::special_function(char *word, char *contents, Tree **tree, else if (method == AVE) value += one; else if (method == TRAP) value += one; else if (method == SLOPE) { - sx += i; + sx += (double) i; sy += one; - sxx += i*i; - sxy += i*one; + sxx += (double)i * (double)i; + sxy += (double)i * one; } } if (method == TRAP) value -= 0.5*vec[0] + 0.5*vec[nvec-1];