From: <ha...@us...> - 2009-07-19 16:06:37
|
Revision: 11259 http://jmol.svn.sourceforge.net/jmol/?rev=11259&view=rev Author: hansonr Date: 2009-07-19 16:06:28 +0000 (Sun, 19 Jul 2009) Log Message: ----------- version=11.8.RC4_dev # new feature: [x,y,z].sum2 or {xx}.someProperty.sum2 -- sum of squares Modified Paths: -------------- trunk/Jmol/src/org/jmol/util/ArrayUtil.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/ScriptCompiler.java trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java trunk/Jmol/src/org/jmol/viewer/ScriptMathProcessor.java trunk/Jmol/src/org/jmol/viewer/Token.java Modified: trunk/Jmol/src/org/jmol/util/ArrayUtil.java =================================================================== --- trunk/Jmol/src/org/jmol/util/ArrayUtil.java 2009-07-19 05:51:14 UTC (rev 11258) +++ trunk/Jmol/src/org/jmol/util/ArrayUtil.java 2009-07-19 16:06:28 UTC (rev 11259) @@ -262,6 +262,7 @@ continue; n++; switch(tok){ + case Token.sum2: case Token.stddev: sum2 += ((double) v) * v; //fall through @@ -288,6 +289,10 @@ if (n == 1) return "NaN"; sum = Math.sqrt((sum2 - sum * sum / n) / (n - 1)); + break; + case Token.sum2: + sum = sum2; + break; } return new Float(sum); } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-07-19 05:51:14 UTC (rev 11258) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-07-19 16:06:28 UTC (rev 11259) @@ -3,6 +3,7 @@ version=11.8.RC4_dev +# new feature: [x,y,z].sum2 or {xx}.someProperty.sum2 -- sum of squares # new feature: VRML export nearly full support # -- includes draw, ellipsoids, dots, isosurface, cartoons, stars, halos, # polyhedra, vectors, dipoles, etc. Modified: trunk/Jmol/src/org/jmol/viewer/ScriptCompiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptCompiler.java 2009-07-19 05:51:14 UTC (rev 11258) +++ trunk/Jmol/src/org/jmol/viewer/ScriptCompiler.java 2009-07-19 16:06:28 UTC (rev 11259) @@ -1372,8 +1372,8 @@ } } if (bracketCount == 0 && theTok != Token.identifier - && !Token.tokAttr(theTok, Token.expression) && theTok != Token.min - && theTok != Token.max && theTok != Token.average && theTok != Token.stddev) + && !Token.tokAttr(theTok, Token.expression) + && (theTok & Token.minmaxmask) != theTok) return ERROR(ERROR_invalidExpressionToken, ident); break; case Token.center: Modified: trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java 2009-07-19 05:51:14 UTC (rev 11258) +++ trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java 2009-07-19 16:06:28 UTC (rev 11259) @@ -809,6 +809,7 @@ case Token.min: case Token.max: case Token.stddev: + case Token.sum2: case Token.average: allowMathFunc = (isUserFunction || tok2 == Token.minmaxmask || tok2 == Token.allfloat); @@ -971,6 +972,7 @@ case Token.max: case Token.average: case Token.stddev: + case Token.sum2: case Token.property: break; case Token.identifier: @@ -1074,6 +1076,7 @@ i = BitSetUtil.length(bsNew) - 1; break; case Token.stddev: + case Token.sum2: return new Float(Float.NaN); default: return bsNew; @@ -1180,6 +1183,7 @@ case Token.all: vout.add(new Float(fv)); break; + case Token.sum2: case Token.stddev: sum2 += ((double) fv) * fv; // fall through @@ -1247,6 +1251,7 @@ case Token.all: vout.add(new Integer(iv)); break; + case Token.sum2: case Token.stddev: sum2 += ((double) iv) * iv; // fall through @@ -1293,6 +1298,7 @@ case Token.all: vout.add(new Float(fv)); break; + case Token.sum2: case Token.stddev: sum2 += (double) fv * fv; // fall through @@ -1386,7 +1392,11 @@ switch (minmaxtype) { case Token.min: case Token.max: - return new Float(fvMinMax); + sum = fvMinMax; + break; + case Token.sum2: + sum = sum2; + break; case Token.stddev: // because SUM (x_i - X_av)^2 = SUM(x_i^2) - 2X_av SUM(x_i) + SUM(X_av^2) // = SUM(x_i^2) - 2nX_av^2 + nX_av^2 Modified: trunk/Jmol/src/org/jmol/viewer/ScriptMathProcessor.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptMathProcessor.java 2009-07-19 05:51:14 UTC (rev 11258) +++ trunk/Jmol/src/org/jmol/viewer/ScriptMathProcessor.java 2009-07-19 16:06:28 UTC (rev 11259) @@ -321,6 +321,7 @@ case Token.min: case Token.max: case Token.average: + case Token.sum2: case Token.stddev: case Token.minmaxmask: tok = (oPt < 0 ? Token.nada : tok0); @@ -2112,7 +2113,8 @@ case Token.list: String[] list = (String[]) x2.value; if (op.intValue == Token.min || op.intValue == Token.max - || op.intValue == Token.average || op.intValue == Token.stddev) { + || op.intValue == Token.average || op.intValue == Token.stddev + || op.intValue == Token.sum2) { return addX(ArrayUtil.getMinMax(list, op.intValue)); } if (op.intValue == Token.sort || op.intValue == Token.reverse) Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2009-07-19 05:51:14 UTC (rev 11258) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2009-07-19 16:06:28 UTC (rev 11259) @@ -135,6 +135,8 @@ * x max * xx average * x stddev + * x x sum2 + * xx allfloat * xxx minmaxmask (all) * x settable * xxx maximum number of parameters for function @@ -448,7 +450,8 @@ public final static int max = 2 << 5; public final static int average = 3 << 5; public final static int stddev = 4 << 5; - public final static int allfloat = 5 << 5; + public final static int sum2 = 5 << 5; + public final static int allfloat = 6 << 5; //not user-selectable final static int minmaxmask /*all*/ = 7 << 5; final static int settable = 1 << 8; @@ -1175,6 +1178,7 @@ "straightness", new Token(straightness), "sub", new Token(sub), "substructure", new Token(substructure), + "sum2", new Token(sum2), // sum of squares "surface", new Token(surface), "surfaceDistance", new Token(surfacedistance), "symop", new Token(symop), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |