public ExprValue add(ExprValue other){
		switch (dataType){
		case Long:
			if (other.dataType == DataType.Long){
				setLong(getLong() + other.getLong());
				return this;
			}else{
				if (other.dataType == DataType.Double){
					setDouble(getLong() + other.getDouble());
					return this;
				}
			}
			break;
		case Double:
			if (other.dataType == DataType.Long || other.dataType == DataType.Double){
				setDouble(getDouble() + other.getDouble());
				return this;
			}
			break;
		case String:
			setString(getString() + other.getString());
			return this;
		}
		throw new FormulaException("Can not add value between "
				+ dataType.toString() + " and " + other.dataType.toString());				
	}