docstr: Generate square double of given size
docstr_tok: ["Generate","square","double","of","given","size"]
code: def square(self, size, device=None):
      """Generate square double of given size"""
      generator = TTPClient.get().get_generator(device=device)
  
      r = generate_random_ring_element(
          size, generator=generator, device=device
      )
      if comm.get().get_rank() == 0:
          # Request r2 from TTP
          r2 = TTPClient.get().ttp_request("square", device, size)
      else:
          r2 = generate_random_ring_element(
              size, generator=generator, device=device
          )
  
      r = ArithmeticSharedTensor.from_shares(r, precision=0)
      r2 = ArithmeticSharedTensor.from_shares(r2, precision=0)
      return r, r2
  
imports: import logging
  import crypten
  import crypten.communicator
  import torch
  import torch.distributed
  from crypten.common.rng import generate_kbit_random_tensor, generate_random_ring_element
  from crypten.common.util import count_wraps
  from crypten.mpc.primitives import ArithmeticSharedTensor, BinarySharedTensor
  from .provider import TupleProvider
label_desc: Use image node_id 2 for calling the TrustedThirdParty obj's underlying member method code with example usage: obj.square(size, device) and returns: r,  r2