예제 #1
0
 def _height(P, check=True):
     if check:
         assert P.curve() == self._E, "the point P must lie on the curve from which the height function was created"
     Q = n * P
     cQ = denominator(Q[0])
     uQ = self.lift(Q, prec=prec)
     si = self.__padic_sigma_square(uQ, prec=prec)
     nn = self._q.valuation()
     qEu = self._q / p ** nn
     return -(log(si*self._Csquare()/cQ) + log(uQ)**2/log(qEu)) / n**2
예제 #2
0
 def _height(P, check=True):
     if check:
         assert P.curve(
         ) == self._E, "the point P must lie on the curve from which the height function was created"
     Q = n * P
     cQ = denominator(Q[0])
     q = self.parameter(prec=prec)
     nn = q.valuation()
     precp = prec + nn + 2
     uQ = self.lift(Q, prec=precp)
     si = self.__padic_sigma_square(uQ, prec=precp)
     q = self.parameter(prec=precp)
     nn = q.valuation()
     qEu = q / p**nn
     res = -(log(si * self._Csquare(prec=precp) / cQ) +
             log(uQ)**2 / log(qEu)) / n**2
     R = Qp(self._p, prec)
     return R(res)