docs: def print_soln(self):
          """Print information about the model solution."""
          lmax = reduce(max,(len(x) for x in self.pnames), len('r chi sq'))
  
          if self.puncerts is None:
              for pn, val in zip(self.pnames, self.params):
                  print('%s: %14g' % (pn.rjust(lmax), val))
          else:
              for pn, val, err in zip(self.pnames, self.params, self.puncerts):
                  frac = abs(100. * err / val)
                  print('%s: %14g +/- %14g (%.2f%%)' % (pn.rjust(lmax), val, err, frac))
  
          if self.rchisq is not None:
              print('%s: %14g' % ('r chi sq'.rjust(lmax), self.rchisq))
          elif self.chisq is not None:
              print('%s: %14g' % ('chi sq'.rjust(lmax), self.chisq))
          else:
              print('%s: unknown/undefined' % ('r chi sq'.rjust(lmax)))
          return self