1. A non-binary low density parity check data decoder comprising: a variable node processor operable to update variable node symbol values according to a plurality of elements in a non-binary Galois Field; a check node processor connected to the variable node processor and operable to perform parity check calculations; and a controller operable to perform symbol flipping and to control decoding iterations in the variable node processor and the check node processor, wherein symbols to be flipped in the symbol flipping are selectively chosen from sets of check nodes for which parity check constraints are violated, wherein the controller is operable to perform the symbol flipping in a plurality of modes of operation, at least one of which comprises flipping a single symbol value at a time and at least one of which comprises flipping multiple symbol values at a time.