code: public double eval(final double... args) {
  		final double val = apply(
  			DoubleStream.of(args)
  				.boxed()
  				.toArray(Double[]::new)
  		);
  		return val == -0.0 ? 0.0 : val;
  	}
docs: Convenient method, which lets you apply the program function without
  explicitly create a wrapper array.
  
  <pre>{@code
  final double result = MathExpr.parse("2*z + 3*x - y").eval(3, 2, 1);
  assert result == 9.0;
  }</pre>
  
  @see #apply(Double[])
  @see #eval(String, double...)
  
  @param args the function arguments
  @return the evaluated value
  @throws NullPointerException if the given variable array is {@code null}
  @throws IllegalArgumentException if the length of the arguments array
  is smaller than the program arity