@Override
	public ValueType returnedType(ValueType... types) throws Exception {
		// Check the number of argument
		if (types.length == 1) {
			// if array
			if (types[0] == ValueType.NONE) {
				return ValueType.NONE;
			}

			// If numerical
			if (types[0].isNumeric()) {
				return ValueType.DOUBLE;
			}

			// if array
			if (types[0] == ValueType.ARRAY) {
				return ValueType.ARRAY;
			}

			// the type is incorrect
			throw new EvalException(this.name() + " function does not handle "
					+ types[0].toString() + " type");
		}

		// number of argument is incorrect
		throw new EvalException(this.name()
				+ " function only allows one numerical parameter");
	}