Well,
The module Beard uses has an airspeed sensor. I don't have this. But I have a very accurate pressure sensor for height. This is the one I use for the vertical velocity (this vertical velocity has only minor influence on the end result).
This method is quite accurate, I've made a lot of flights and matlab simulations with it. However, any change to improve it will be taken
I'm planning to add an other loop (very slow one), to adapt for gyro bias drift. The current algorithm can handle bias drift, but sometimes the calibration was made months ago or at a total different temperature. In this case the bias is a bit too different.
Normalization only takes care we use always the same domain. Eg pitch 0°, roll 180° instead of roll 0° and pitch 180° (which is the same attitude if you don' t take yaw into account).
(int)pitch == -1 is only used when pitch = NaN. I haven't found a good build-in function for NaN to do it otherwise. Normally never occurs, but you never know.
Where do you see the pitch limitation to 100°?