Regarding this sentence in the explanation:
DoubleUnaryOperator is a function that accepts a Double value and returns a Double and so can be used here.
"(...)DoubleUnaryOperator is a function that accepts a
double and returns a
double (...)"
Since we are assigning this lambda expression to a DoubleFunction<DoubleUnaryOperator>, it implies that we are trying to using this lambda expression to implement a DoubleFunction that converts a Double into a DoubleUnaryOperator.
"(...)DoubleFunction that converts a
double into a DoubleUnaryOperator(...)"