docs: def text_pieces(self, method, uplaces=2, use_exponent=True):
          """Return (main, dhigh, dlow, sharedexponent), all as strings. The
          delta terms do not have sign indicators. Any item except the first
          may be None.
  
          `method` is passed to Uval.repvals() to compute representative
          statistical limits.
  
          """
          md, hi, lo = self.repvals(method)
  
          if hi == lo:
              return '%g' % lo, None, None, None
  
          if not np.isfinite([lo, md, hi]).all():
              raise ValueError('got nonfinite values when formatting Uval')
  
          # Deltas. Round to limited # of places because we don't actually know
          # the fourth moment of the thing we're trying to describe.
  
          from numpy import abs, ceil, floor, log10
  
          dh = hi - md
          dl = md - lo
  
          if dh <= 0:
              raise ValueError('strange problem formatting Uval; '
                               'hi=%g md=%g dh=%g' % (hi, md, dh))
          if dl <= 0:
              raise ValueError('strange problem formatting Uval; '
                               'lo=%g md=%g dl=%g' % (lo, md, dl))
  
          p = int(ceil(log10(dh)))
          rdh = round(dh * 10**(-p), uplaces) * 10**p
          p = int(ceil(log10(dl)))
          rdl = round(dl * 10**(-p), uplaces) * 10**p
  
          # The least significant place to worry about is the L.S.P. of one of
          # the deltas, which we can find relative to its M.S.P. Any precision
          # in the datum beyond this point is false.
  
          lsp = int(ceil(log10(min(rdh, rdl)))) - uplaces
  
          # We should round the datum since it might be something like
          # 0.999+-0.1 and we're about to try to decide what its most
          # significant place is. Might get -1 rather than 0.
  
          rmd = round(md, -lsp)
  
          if rmd == -0.: # 0 = -0, too, but no problem there.
              rmd = 0.
  
          # The most significant place to worry about is the M.S.P. of any of
          # the datum or the deltas. rdl and rdl must be positive, but not
          # necessarily rmd.
  
          msp = int(floor(log10(max(abs(rmd), rdh, rdl))))
  
          # If we're not very large or very small, or it's been explicitly
          # disabled, don't use scientific notation.
  
          if (msp > -3 and msp < 3) or not use_exponent:
              srmd = '%.*f' % (-lsp, rmd)
              srdh = '%.*f' % (-lsp, rdh)
              srdl = '%.*f' % (-lsp, rdl)
              return srmd, srdh, srdl, None
  
          # Use scientific notation. Adjust values, then format.
  
          armd = rmd * 10**-msp
          ardh = rdh * 10**-msp
          ardl = rdl * 10**-msp
          prec = msp - lsp
  
          sarmd = '%.*f' % (prec, armd)
          sardh = '%.*f' % (prec, ardh)
          sardl = '%.*f' % (prec, ardl)
          return sarmd, sardh, sardl, str(msp)