()
| 6073 | } |
| 6074 | |
| 6075 | double fit() { |
| 6076 | interp.getToken(); |
| 6077 | if (interp.token!='.') |
| 6078 | interp.error("'.' expected"); |
| 6079 | interp.getToken(); |
| 6080 | if (!(interp.token==WORD||interp.token==ARRAY_FUNCTION)) |
| 6081 | interp.error("Function name expected: "); |
| 6082 | if (props==null) |
| 6083 | props = new Properties(); |
| 6084 | String name = interp.tokenString; |
| 6085 | if (name.equals("doFit")) |
| 6086 | return fitCurve(false); |
| 6087 | if (name.equals("doWeightedFit")) |
| 6088 | return fitCurve(true); |
| 6089 | else if (name.equals("getEquation")) |
| 6090 | return getEquation(); |
| 6091 | else if (name.equals("nEquations")) { |
| 6092 | interp.getParens(); |
| 6093 | return CurveFitter.fitList.length; |
| 6094 | } else if (name.equals("showDialog")) { |
| 6095 | showFitDialog = true; |
| 6096 | return Double.NaN; |
| 6097 | } else if (name.equals("logResults")) { |
| 6098 | logFitResults = true; |
| 6099 | return Double.NaN; |
| 6100 | } |
| 6101 | if (fitter==null) |
| 6102 | interp.error("No fit"); |
| 6103 | if (name.equals("f")) |
| 6104 | return fitter.f(fitter.getParams(), getArg()); |
| 6105 | else if (name.equals("plot")) { |
| 6106 | interp.getParens(); |
| 6107 | Fitter.plot(fitter); |
| 6108 | return Double.NaN; |
| 6109 | } else if (name.equals("nParams")) { |
| 6110 | interp.getParens(); |
| 6111 | return fitter.getNumParams(); |
| 6112 | } else if (name.equals("p")) { |
| 6113 | int index = (int)getArg(); |
| 6114 | checkIndex(index, 0, fitter.getNumParams()-1); |
| 6115 | double[] p = fitter.getParams(); |
| 6116 | return index<p.length?p[index]:Double.NaN; |
| 6117 | } else if (name.equals("rSquared")) { |
| 6118 | interp.getParens(); |
| 6119 | return fitter.getRSquared(); |
| 6120 | } |
| 6121 | return Double.NaN; |
| 6122 | } |
| 6123 | |
| 6124 | double fitCurve(boolean withWeights) { |
| 6125 | interp.getLeftParen(); |
no test coverage detected