double型の最大値

C++ではdouble型の最大値と最小値は以下の式で得られる。

std::numeric_limits< double >::max();
std::numeric_limits< double >::lowest();

僕の環境だと-1.79769e+308と1.79769e+308と出た。

今日ある集合の総和をlogで出力しようとしたけど、この値を越えていてオーバーフローが起きた。
つまり\log \left( \sum_i a_i\right)  \sum_i a_i部分が最大値を超えていた。
こういうときは全ての a_iをある程度大きな数bであらかじめ割って、
 \log \left( \sum_i \frac{a_i}{b} \right) + \log b
とやるといいと感じた。

そもそもこんなことやって意味あるのか分からない。
算術平均を出そうとしていたのだけど、幾何平均にしたほうがいいかも。