### Question:
MathematicalFunction { private static FunctionResolver exp() { return FunctionDSL.define(BuiltinFunctionName.EXP.getName(), ExprCoreType.numberTypes().stream() .map(type -> FunctionDSL.impl(FunctionDSL.nullMissingHandling( v -> new ExprDoubleValue(Math.exp(v.doubleValue()))), type, DOUBLE)).collect(Collectors.toList())); }  static void register(BuiltinFunctionRepository repository);  }### Answer:
@Test public void exp_null_value() { FunctionExpression exp = dsl.exp(DSL.ref(DOUBLE_TYPE_NULL_VALUE_FIELD, DOUBLE)); assertEquals(DOUBLE, exp.type()); assertTrue(exp.valueOf(valueEnv()).isNull()); }
@Test public void exp_missing_value() { FunctionExpression exp = dsl.exp(DSL.ref(DOUBLE_TYPE_MISSING_VALUE_FIELD, DOUBLE)); assertEquals(DOUBLE, exp.type()); assertTrue(exp.valueOf(valueEnv()).isMissing()); }