/** * Evaluates a valid expression and returns the resulting String in GeoGebra notation. * * @param casInput: in GeoGebraCAS syntax * @param useGeoGebraVariables: whether GeoGebra objects should be substituted before evaluation * @return evaluation result * @throws Throwable */ public String evaluateGeoGebraCAS(ValidExpression casInput, boolean useGeoGebraVariables) throws Throwable { // convert parsed input to Maxima string String MaximaString = toMaximaString(casInput, useGeoGebraVariables); // Maxima simplification is turned off by default using simp:false; // We turn it on here using ev(command, simp) when KeepInput is not used if (!casInput.isKeepInputUsed()) { StringBuilder sb = new StringBuilder(); sb.append("ev("); sb.append(MaximaString); sb.append(",simp)"); MaximaString = sb.toString(); } // EVALUATE input in Maxima String result = evaluateMaxima(MaximaString); // convert Maxima result back into GeoGebra syntax String ggbString = toGeoGebraString(result); // TODO: remove System.out.println("eval with Maxima: " + MaximaString); System.out.println(" result: " + result); System.out.println(" ggbString: " + ggbString); return ggbString; }