anchor.diff:    (modular-inverse (mod x +ed25519-q+) +ed25519-q+))
   
   (defun ed25519-recover-x (y)
  -  "Recover the X coordinate of a point on curve25519 from the Y coordinate."
  +  "Recover the X coordinate of a point on ed25519 curve from the Y coordinate."
     (declare (optimize (speed 3) (safety 0) (space 0) (debug 0)))
     (let* ((yy (mod (* y y) +ed25519-q+))
            (xx (mod (* (- yy 1) (ed25519-inv (+ (* +ed25519-d+ yy) 1))) +ed25519-q+))
  
positive.code:     (cons (mod x2 +ed25519-q+) (mod y2 +ed25519-q+))))
  
  (defun ed25519-edwards-add (p q)
    "Point addition on curve25519."
    (declare (optimize (speed 3) (safety 0) (space 0) (debug 0)))
    (let* ((x1 (car p))
           (y1 (cdr p))
  
negative.code:   (octets-to-integer octets :big-endian nil))
  
  (defun ed25519-encode-point (p)
    "Encode a point on ed25519 curve as a byte array."
    (let ((x (car p))
          (y (cdr p)))
      (setf (ldb (byte 1 (- +ed25519-bits+ 1)) y) (ldb (byte 1 0) x))
      (ed25519-encode-int y)))
  
  (defun ed25519-decode-point (octets)
    "Decode a byte array to a point on ed25519 curve."
    (let* ((y (ed25519-decode-int octets))
           (b (ldb (byte 1 (- +ed25519-bits+ 1)) y)))
      (setf (ldb (byte 1 (- +ed25519-bits+ 1)) y) 0)
  