
from collections.abc import Callable


def 			UpperCamelCase					(    __lowerCamelCase     : Callable[[float], float]				,					__lowerCamelCase     : float				,					__lowerCamelCase     : float    ):
       snake_case       :   float							=      a
       snake_case       :   float							=      b
       if function(__lowerCamelCase    ) == 0:  # one of the a or b is a root for the function
              return a
       elif function(__lowerCamelCase    ) == 0:
              return b
       elif (
           function(__lowerCamelCase    ) * function(__lowerCamelCase    ) > 0
       ):  # if none of these are root and they are both positive or negative,
              # then this algorithm can't find the root
              raise ValueError("could not find root in given interval."    )
       else:
              snake_case       :   float							=      start + (end - start) / 2.0
              while abs(start - mid    ) > 10**-7:  # until precisely equals to 10^-7
                     if function(__lowerCamelCase    ) == 0:
                            return mid
                     elif function(__lowerCamelCase    ) * function(__lowerCamelCase    ) < 0:
                            snake_case       :   Optional[int]							=      mid
                     else:
                            snake_case       :   Optional[int]							=      mid
                     snake_case       :   str							=      start + (end - start) / 2.0
              return mid


def 			UpperCamelCase					(    __lowerCamelCase     : float    ):
       return x**3 - 2 * x - 5


if __name__ == "__main__":
   print(bisection(f, 1, 10_00))

   import doctest

   doctest.testmod()








import argparse

import torch

from transformers import OpenAIGPTConfig, OpenAIGPTModel, load_tf_weights_in_openai_gpt
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()






def        UpperCamelCase_(							_snake_case   :  Dict       ,     _snake_case   :  Optional[int]       ,     _snake_case   :  str	):




			"""simple docstring"""






			if openai_config_file == "":
						__a        =OpenAIGPTConfig()
			else:
						__a        =OpenAIGPTConfig.from_json_file(_snake_case	)
			__a        =OpenAIGPTModel(_snake_case	)

			# Load weights from numpy
			load_tf_weights_in_openai_gpt(_snake_case       ,     _snake_case       ,     _snake_case	)

			# Save pytorch-model
			__a        =pytorch_dump_folder_path + '/' + WEIGHTS_NAME
			__a        =pytorch_dump_folder_path + '/' + CONFIG_NAME
			print(F'Save PyTorch model to {pytorch_weights_dump_path}'	)
			torch.save(model.state_dict()       ,     _snake_case	)
			print(F'Save configuration file to {pytorch_config_dump_path}'	)
			with open(_snake_case       ,     'w'       ,     encoding='utf-8'	) as f:
						f.write(config.to_json_string()	)


if __name__ == "__main__":
						_lowerCAmelCase					:			Tuple  				=			argparse.ArgumentParser()
						# Required parameters
						parser.add_argument(
						    "--openai_checkpoint_folder_path",
						    default=None,
						    type=str,
						    required=True,
						    help="Path to the TensorFlow checkpoint path.",
						)
						parser.add_argument(
						    "--pytorch_dump_folder_path", default=None, type=str, required=True, help="Path to the output PyTorch model."
						)
						parser.add_argument(
						    "--openai_config_file",
						    default="",
						    type=str,
						    help=(
						        "An optional config json file corresponding to the pre-trained OpenAI model. \n"
						        "This specifies the model architecture."
						    ),
						)
						_lowerCAmelCase					:			int  				=			parser.parse_args()
						convert_openai_checkpoint_to_pytorch(
						    args.openai_checkpoint_folder_path, args.openai_config_file, args.pytorch_dump_folder_path
						)






