lib/ed25519_keccak/ed25519base.rb
def point_decompress(s)
      # check argument
      raise ArgumentError , "Invalid input length for decompression" unless s.length.equal? 32

      y = int_form_bytes(s)
      sign = y >> 255
      y &= (1 << 255) - 1
      x = recover_x(y, sign)
      if x.nil? then
        return nil
      else
        return [x, y, 1, x*y % @@p]
      end
    end
def point_decompress(s)
      # check argument
      raise ArgumentError , "Invalid input length for decompression" unless s.length.equal? 32

      y = int_form_bytes(s)
      sign = y >> 255
      y &= (1 << 255) - 1
      x = recover_x(y, sign)
      if x.nil? then
        return nil
      else
        return [x, y, 1, x*y % @@p]
      end
    end
decompress point that is compressed into 32bytes