private double evaluateSum(String exp) {
        String valores[] = obtenerLimites(exp);
        if (valores == null) {
            return 0; // error
        }
        String varIndex = valores[0], arg = valores[4];
        if (varValor.containsKey(varIndex)) {
            error = true;
            strError.append("Error: La variable ").append(varIndex)
                    .append(" esta definida para expresiones anidadas.\n");
            return 0;
        }
        int limInf = Integer.parseInt(valores[1]);
        int limSup = Integer.parseInt(valores[2]);
        int inc = Integer.parseInt(valores[3]);
        if( limInf<=limSup && inc<0 || limInf>limSup && inc>0 || inc==0 ) {
            error = true;
            strError.append("Error: Los argumentos (limIni=").append(limInf).append(", limFin=").append(limSup).append(", inc=").append(inc)
                    .append(") esta definiendo una sumatoria sin límite en la expresión ")
                    .append("sum(").append(exp).append(").\n");
            return 0;
        }
        double sum = 0;
        for (int i = limInf; i <= limSup; i += inc) {
            setValorVariable(varIndex, i);
            sum += evaluate(arg);
        }
        varValor.remove(varIndex);
        return sum;
    }