


'''simple docstring'''






def 		_A (lowerCAmelCase__     :int ,  lowerCAmelCase__     :int						)      ->     Optional[Any]:




     '''simple docstring'''



     return base * power(__SCREAMING_SNAKE_CASE ,  (exponent - 1)						) if exponent else 1


if __name__ == "__main__":
 print("Raise base to the power of exponent using recursion...")
 a_    :			List[Any]      				=			int(input("Enter the base: ").strip())
 a_    :			Any      				=			int(input("Enter the exponent: ").strip())
 a_    :			Union[str, Any]      				=			power(base, abs(exponent))
 if exponent < 0:  # power() does not properly deal w/ negative exponents
  a_    :			int      				=			1 / result
 print(f'''{base} to the power of {exponent} is {result}''')



'''simple docstring'''







import torch

from transformers import AutoModel






class  lowerCAmelCase__   (  torch.nn.Module     ):






					def __init__(   self				,							__SCREAMING_SNAKE_CASE="sayef/fsner-bert-base-uncased"		):


											"""simple docstring"""





											super(__SCREAMING_SNAKE_CASE				,							self		).__init__()

											lowercase_	:     Tuple													=       AutoModel.from_pretrained(__SCREAMING_SNAKE_CASE				,							return_dict=__SCREAMING_SNAKE_CASE		)
											lowercase_	:     Optional[Any]													=       torch.nn.CosineSimilarity(3				,							1E-0_8		)
											lowercase_	:     Optional[Any]													=       torch.nn.Softmax(dim=1		)






					def 	_snake_case    (   self				,							**__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											return self.bert(**__SCREAMING_SNAKE_CASE		).last_hidden_state






					def 	_snake_case    (   self				,							__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											return token_embeddings.sum(2				,							keepdim=__SCREAMING_SNAKE_CASE		)






					def 	_snake_case    (   self				,							__SCREAMING_SNAKE_CASE				,							__SCREAMING_SNAKE_CASE				,							__SCREAMING_SNAKE_CASE=1		):


											"""simple docstring"""





											return self.softmax(T * self.cos(__SCREAMING_SNAKE_CASE				,							__SCREAMING_SNAKE_CASE		)		)






					def 	_snake_case    (   self				,							__SCREAMING_SNAKE_CASE				,							__SCREAMING_SNAKE_CASE		):


											"""simple docstring"""





											lowercase_	:     Optional[Any]													=       W_supports['''sizes'''].tolist()
											lowercase_	:     Dict													=       W_supports['''start_token_id'''].item()
											lowercase_	:     List[Any]													=       W_supports['''end_token_id'''].item()

											del W_supports["sizes"]
											del W_supports["start_token_id"]
											del W_supports["end_token_id"]

											lowercase_	:     List[str]													=       self.BERT(**__SCREAMING_SNAKE_CASE		)
											lowercase_	:     Optional[int]													=       self.BERT(**__SCREAMING_SNAKE_CASE		)

											lowercase_	:     str													=       None
											lowercase_	:     Dict													=       None

											lowercase_	:     Tuple													=       W_supports['''input_ids'''] == start_token_id
											lowercase_	:     Any													=       W_supports['''input_ids'''] == end_token_id

											for i, size in enumerate(__SCREAMING_SNAKE_CASE		):
																	if i == 0:
																							lowercase_	:     List[str]													=       0
																	else:
																							lowercase_	:     List[Any]													=       support_sizes[i - 1]

																	lowercase_	:     str													=       S[s : s + size][start_token_masks[s : s + size]]
																	lowercase_	:     Optional[int]													=       S[s : s + size][end_token_masks[s : s + size]]

																	lowercase_	:     List[str]													=       torch.matmul(q[i]				,							s_start.T		).sum(1		).softmax(0		)
																	lowercase_	:     List[str]													=       torch.matmul(q[i]				,							s_end.T		).sum(1		).softmax(0		)

																	if p_starts is not None:
																							lowercase_	:     Tuple													=       torch.vstack((p_starts, p_start)		)
																							lowercase_	:     Optional[Any]													=       torch.vstack((p_ends, p_end)		)
																	else:
																							lowercase_	:     str													=       p_start
																							lowercase_	:     int													=       p_end

											return p_starts, p_ends



