They’re not going to be identical due to different orderings of floating point addition.  If you want to compare against a reference implementation, you should use double-precision numbers in the reference. You may also want to try comparing the reference implementation against itself with single and double precision numbers.