Question about Vertical pod autoscaler recommender algorithm

Hello people! Does anyone know how the vertical pod autoscaler calculates CPU and memory recommendation upper, lower and target values? Thank you!