Measuring Speed using GPS module

I have a project using GPS neo 6m module to measure speed using tinygps++ library. I have already code it and it works, but i dont know how it works, what the algorithm behind the function in that library to measure speed. Can someone explain the algorithm how gps measure speed?

The Haversine formula adjusted for lat/long is/can be used to determine distance. The distance divided by the time difference between the two position samples gives ground speed.

How about doppler effect? What algorithm neo 6m use? Doppler effect or harvesine formula?

In the u-blox forum I asked if the speed is calculated from the distance traveled between successive position measurements or from the doppler shift. A pundit there replied it was a mix of both with other data such as wheel clicks (if available) contributing.

He said the precise algorithm is proprietary to u-blox. I suppose that means it's secret.


@NissanCedric Thankyou bro for the info, appreciate it