code: def to_decimal(self):
          
          high = self.__high
          low = self.__low
          sign = 1 if (high & _SIGN) else 0
  
          if (high & _SNAN) == _SNAN:
              return decimal.Decimal((sign, (), 'N'))
          elif (high & _NAN) == _NAN:
              return decimal.Decimal((sign, (), 'n'))
          elif (high & _INF) == _INF:
              return decimal.Decimal((sign, (), 'F'))
  
          if (high & _EXPONENT_MASK) == _EXPONENT_MASK:
              exponent = ((high & 0x1fffe00000000000) >> 47) - _EXPONENT_BIAS
              return decimal.Decimal((sign, (0,), exponent))
          else:
              exponent = ((high & 0x7fff800000000000) >> 49) - _EXPONENT_BIAS
  
          arr = bytearray(15)
          mask = 0x00000000000000ff
          for i in range(14, 6, -1):
              arr[i] = (low & mask) >> ((14 - i) << 3)
              mask = mask << 8
  
          mask = 0x00000000000000ff
          for i in range(6, 0, -1):
              arr[i] = (high & mask) >> ((6 - i) << 3)
              mask = mask << 8
  
          mask = 0x0001000000000000
          arr[0] = (high & mask) >> 48
  
          # Have to convert bytearray to bytes for python 2.6.
          # cdecimal only accepts a tuple for digits.
          digits = tuple(
              int(digit) for digit in str(_from_bytes(bytes(arr), 'big')))
  
          with decimal.localcontext(_DEC128_CTX) as ctx:
              return ctx.create_decimal((sign, digits, exponent))
docs: Returns an instance of :class:`decimal.Decimal` for this
          :class:`Decimal128`.