code: def erank(self):
          
          r = self.r
          n = self.n
          d = self.d
          if d <= 1:
              er = 0e0
          else:
              sz = _np.dot(n * r[0:d], r[1:])
              if sz == 0:
                  er = 0e0
              else:
                  b = r[0] * n[0] + n[d - 1] * r[d]
                  if d is 2:
                      er = sz * 1.0 / b
                  else:
                      a = _np.sum(n[1:d - 1])
                      er = (_np.sqrt(b * b + 4 * a * sz) - b) / (2 * a)
          return er
docs: Effective rank of the TT-vector