void init_checksums (Setup &sp, Checksums &cks)
{
  for (int i=0; i<MAXITER+1; i++) cks[i].real = cks[i].imag = 0.0;
}

void sumproc (ArrayCplx &arr, RangeNP &ra, Cplx &res)
{
  res.real = res.imag = 0.0;
  for (int i=ra.s; i<=ra.e; i++) {
    res.real += arr(i).real; res.imag += arr(i).imag;
  }
}

void econd (Int &max, Int &idx, Int &cond)
{ cond = (idx + 1) < max; }

void checksum_set (Setup &sp, Cplx &res, Int &iter, Checksums &cksum /* inout */)
{
  int i = iter+1;
  cksum[i].real = res.real/(double)(NTOTAL); cksum[i].imag = res.imag/(double)(NTOTAL);
  PRINTP0("T = %5d     Checksum = %22.12e %22.12e\n", i, cksum[i].real, cksum[i].imag);
}

