
from math import atan, cos, radians, sin, tan

from .haversine_distance import haversine_distance

lowercase    :   Tuple						=			6_3_7_8_1_3_7.0
lowercase    :   Union[str, Any]						=			6_3_5_6_7_5_2.3_1_4_2_4_5
lowercase    :   List[Any]						=			6378137




def       _SCREAMING_SNAKE_CASE   (						_lowerCamelCase					:     float		,    _lowerCamelCase					:     float		,    _lowerCamelCase					:     float		,    _lowerCamelCase					:     float)   ->       float:






							'''simple docstring'''





							__UpperCamelCase      :  Union[str, Any]       =   (AXIS_A - AXIS_B) / AXIS_A
							# Parametric latitudes
							# https://en.wikipedia.org/wiki/Latitude#Parametric_(or_reduced)_latitude
							__UpperCamelCase      :  str       =   atan((1 - flattening) * tan(radians(_lowerCamelCase)))
							__UpperCamelCase      :  Union[str, Any]       =   atan((1 - flattening) * tan(radians(_lowerCamelCase)))

							# Compute central angle between two points
							# using haversine theta. sigma =  haversine_distance / equatorial radius
							__UpperCamelCase      :  List[str]       =   haversine_distance(_lowerCamelCase		,    _lowerCamelCase		,    _lowerCamelCase		,    _lowerCamelCase) / EQUATORIAL_RADIUS

							# Intermediate P and Q values
							__UpperCamelCase      :  str       =   (b_lata + b_lata) / 2
							__UpperCamelCase      :  str       =   (b_lata - b_lata) / 2

							# Intermediate X value
							# X = (sigma - sin(sigma)) * sin^2Pcos^2Q / cos^2(sigma/2)
							__UpperCamelCase      :  Optional[int]       =   (sin(_lowerCamelCase) ** 2) * (cos(_lowerCamelCase) ** 2)
							__UpperCamelCase      :  Dict       =   cos(sigma / 2) ** 2
							__UpperCamelCase      :  Optional[int]       =   (sigma - sin(_lowerCamelCase)) * (x_numerator / x_demonimator)

							# Intermediate Y value
							# Y = (sigma + sin(sigma)) * cos^2Psin^2Q / sin^2(sigma/2)
							__UpperCamelCase      :  int       =   (cos(_lowerCamelCase) ** 2) * (sin(_lowerCamelCase) ** 2)
							__UpperCamelCase      :  List[Any]       =   sin(sigma / 2) ** 2
							__UpperCamelCase      :  Tuple       =   (sigma + sin(_lowerCamelCase)) * (y_numerator / y_denominator)

							return EQUATORIAL_RADIUS * (sigma - ((flattening / 2) * (x_value + y_value)))


if __name__ == "__main__":
		import doctest

		doctest.testmod()

import argparse

import torch

from transformers import BertConfig, BertForPreTraining, load_tf_weights_in_bert
from transformers.utils import logging


logging.set_verbosity_info()




def       _SCREAMING_SNAKE_CASE   (						_lowerCamelCase					:     Optional[int]		,    _lowerCamelCase					:     List[Any]		,    _lowerCamelCase					:     Optional[Any])   ->       Dict:






							'''simple docstring'''





							__UpperCamelCase      :  str       =   BertConfig.from_json_file(_lowerCamelCase)
							print(F'Building PyTorch model from configuration: {config}')
							__UpperCamelCase      :  Optional[Any]       =   BertForPreTraining(_lowerCamelCase)

							# Load weights from tf checkpoint
							load_tf_weights_in_bert(_lowerCamelCase		,    _lowerCamelCase		,    _lowerCamelCase)

							# Save pytorch-model
							print(F'Save PyTorch model to {pytorch_dump_path}')
							torch.save(model.state_dict()		,    _lowerCamelCase)


if __name__ == "__main__":
		lowercase    :   Union[str, Any]						=			argparse.ArgumentParser()
		# Required parameters
		parser.add_argument(
		    '--tf_checkpoint_path', default=None, type=str, required=True, help='Path to the TensorFlow checkpoint path.'
		)
		parser.add_argument(
		    '--bert_config_file',
		    default=None,
		    type=str,
		    required=True,
		    help=(
		        'The config json file corresponding to the pre-trained BERT model. \n'
		        'This specifies the model architecture.'
		    ),
		)
		parser.add_argument(
		    '--pytorch_dump_path', default=None, type=str, required=True, help='Path to the output PyTorch model.'
		)
		lowercase    :   Any						=			parser.parse_args()
		convert_tf_checkpoint_to_pytorch(args.tf_checkpoint_path, args.bert_config_file, args.pytorch_dump_path)