The original implementation uses operator ^, which means XOR in C++ language.
At the first glance of reviewing, I thought it should be power, my bad.
It doesn't make sense to use XOR here. So I believe it should be a carelessness as I made.
Test Plan: check-all
Converting to double here is to reduce the ambitious reloading.