Нужно внимательно проверять соответствие осей х-у, потому что смотреть на ось z можно с двух сторон

Формулы перепроверять лениво, но даже при отсутствии ошибок этот способ расчета более-менее обеспечивает компенсацию только при наклонах до 30 градусов и предварительной калибровке акселерометров и магнитометров.
Акселерометры можно калибровать в здании, а магнитометры - только в отсутствии искажений геомагнитного поля, т.е. вдали от всякого железа.
А еще все это хозяйство плывет от температуры, поэтому ошибки не больше 5 градусов по азимуту для диапазона температур -20...+50 обеспечить сложно.