operator ** over floats may not be precise enough on some architectures
update Changes