Measuring Frequency with PulseIn, Frequency measurement way out???

I'm measuring the frequency from a signal generator at 50khz using the arduino PulseIn function.

Measuring the low and high time, then dividing 1,000,000 by the sum of these to get the frequency.

For upto about 2000Hz the frequency the arduino produces it very accurate, but then the error tends to increase as the frequency from the signal generator increases. So at 50khz, its about 3-4khz out. I'm measuring a DC square wave.

Is this just the limitations of the arduino or do I need to add anything into the circuit that prevents this happening?

Is this just the limitations of the arduino

Yes.

The micro ticker only increments in units of four. So the shorter time you try and measure the less accurate it is.