コード例 #1
0
  /**
   * 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;
  }