@Override
    public ValueType returnedType(ValueType... types) throws EvalException
    {
        // Check the number of argument
        if (types.length == 1)
        {
            // If numerical
            if (types[0].isNumeric() || types[0] == ValueType.NONE)
                return types[0];

            // 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");
    }