  In this paper, we develop a (preconditioned) GMRES solver based on integer
arithmetic, and introduce an iterative refinement framework for the solver. We
describe the data format for the coefficient matrix and vectors for the solver
that is based on integer or fixed-point numbers. To avoid overflow in
calculations, we introduce initial scaling and logical shifts (adjustments) of
operands in arithmetic operations. We present the approach for operand shifts,
considering the characteristics of the GMRES algorithm. Numerical tests
demonstrate that the integer arithmetic-based solver with iterative refinement
has comparable solver performance in terms of convergence to the standard
solver based on floating-point arithmetic. Moreover, we show that
preconditioning is important, not only for improving convergence but also
reducing the risk of overflow.
