I am trying to see how a GPS works by analyzing the data it collects. Basically, I have the pseudorange, satellites positions and also the GPS receiver location data I got from a GPS, and I was expecting to reproduce the positions reported by the GPS to high accuracy by solving the pseudorange equations based on the satellite locations and pseudoranges reported at the same instance. However, I found out that the best I could get is within about 0.5 meters and sometimes, the deviation is as big as 100+ meters (most of the cases, the deviation is around 1 to 10 meters). I don't think there is any error in my pseudo-range solver, and I begin to suspect that a GPS doesn't only use pseudo-range information for positioning, as I have made the following observations: 1) Sometimes, the GPS could only obtain less than four pseudo-range/satellite location data, and the pseudo-range equations are unsolvable. But the GPS still would produce positioning data; 2) The positioning solution of the pseudo-range equations could fluctuate greatly from time to time, while the variation of the positioning data the GPS gave me appear to be much smoother. Does anyone know what algorithm a GPS usually use? Do they use some form of Kalman filtering or maybe other data that I have not considered? Thanks.