code: def primitives():
      
      z = randomZ(orderG1())
  
      # G1 operations
      P,Q = randomG1(),randomG1()
      R = generatorG1()
      g1Add = P + Q
      g1ScalarMultiply = z*P
      g1GeneratorMultiply = z*R
      g1Hash = hashG1(hash_in)
  
      # G2 operations
      P,Q = randomG2(),randomG2()
      R = generatorG2()
      g2Add = P + Q
      g2ScalarMultiply = z*P
      g2GeneratorMultiply = z*R
      g2hash = hashG2(hash_in)
  
      # Gt operations
      P = randomGt()
      Q = randomGt()
      gtMult = P * Q
      gtExp = P**z
  
      # Pairing
      x,y = (randomG1(), randomG2())
      R = pair(x,y)
docs: Perform primitive operations for profiling