That is probably buried deep, deep in the mists of history, when Python was first written.
Why the difference between multiplication and exponentiation? Which rounds to zero, so you get the final result of 0.0. For brevity I won’t write them all down in full: While the second computes the similar sequence, but using multiplication. Your first method tries to compute the sequence of powers: The two methods behave differently because they are written differently, one uses the exponentiation operator ** and the other just uses multiplication.