Arithmetic and logic unit