parameters: (self, exp, rounding)
return_statement: return _dec_from_triple(self._sign, coeff, exp)
docstring: Rescale self so that the exponent is exp, either by padding with zeros
          or by truncating digits, using the given rounding mode.
  
          Specials are returned without change.  This operation is
          quiet: it raises no flags, and uses no information from the
          context.
  
          exp = exp to scale to (an integer)
          rounding = rounding mode
docstring_summary: Rescale self so that the exponent is exp, either by padding with zeros
          or by truncating digits, using the given rounding mode.
docstring_tokens: Rescale self so that the exponent is exp either by padding with zeros or by truncating digits using the given rounding mode .
function: def _rescale(self, exp, rounding):
          """Rescale self so that the exponent is exp, either by padding with zeros
          or by truncating digits, using the given rounding mode.
  
          Specials are returned without change.  This operation is
          quiet: it raises no flags, and uses no information from the
          context.
  
          exp = exp to scale to (an integer)
          rounding = rounding mode
          """
          if self._is_special:
              return Decimal(self)
          if not self:
              return _dec_from_triple(self._sign, '0', exp)
  
          if self._exp >= exp:
              # pad answer with zeros if necessary
              return _dec_from_triple(self._sign,
                                          self._int + '0'*(self._exp - exp), exp)
  
          # too many digits; round and lose data.  If self.adjusted() <
          # exp-1, replace self by 10**(exp-1) before rounding
          digits = len(self._int) + self._exp - exp
          if digits < 0:
              self = _dec_from_triple(self._sign, '1', exp-1)
              digits = 0
          this_function = self._pick_rounding_function[rounding]
          changed = this_function(self, digits)
          coeff = self._int[:digits] or '0'
          if changed == 1:
              coeff = str(int(coeff)+1)
          return _dec_from_triple(self._sign, coeff, exp)
function_tokens: def _rescale ( self , exp , rounding ) : if self . _is_special : return Decimal ( self ) if not self : return _dec_from_triple ( self . _sign , '0' , exp ) if self . _exp >= exp : # pad answer with zeros if necessary return _dec_from_triple ( self . _sign , self . _int + '0' * ( self . _exp - exp ) , exp ) # too many digits; round and lose data.  If self.adjusted() < # exp-1, replace self by 10**(exp-1) before rounding digits = len ( self . _int ) + self . _exp - exp if digits < 0 : self = _dec_from_triple ( self . _sign , '1' , exp - 1 ) digits = 0 this_function = self . _pick_rounding_function [ rounding ] changed = this_function ( self , digits ) coeff = self . _int [ : digits ] or '0' if changed == 1 : coeff = str ( int ( coeff ) + 1 ) return _dec_from_triple ( self . _sign , coeff , exp )