




from math import isclose, sqrt







def   _snake_case    (       lowercase__							,					lowercase__							,					lowercase__	):
				_lowerCamelCase  :    Dict					=					point_y / 4 / point_x
				_lowerCamelCase  :    List[str]					=					2 * normal_gradient / (1 + normal_gradient * normal_gradient)
				_lowerCamelCase  :    List[Any]					=					(1 - normal_gradient * normal_gradient) / (
				    1 + normal_gradient * normal_gradient
				)
				_lowerCamelCase  :    Union[str, Any]					=					(sa - ca * incoming_gradient) / (ca + sa * incoming_gradient)

				# to find the next point, solve the simultaeneous equations:
				# y^2 + 4x^2 = 100
				# y - b = m * (x - a)
				# ==> A x^2 + B x + C = 0
				_lowerCamelCase  :    Tuple					=					outgoing_gradient**2 + 4
				_lowerCamelCase  :    Optional[int]					=					2 * outgoing_gradient * (point_y - outgoing_gradient * point_x)
				_lowerCamelCase  :    Optional[int]					=					(point_y - outgoing_gradient * point_x) ** 2 - 100

				_lowerCamelCase  :    str					=					(
				    -linear_term - sqrt(linear_term**2 - 4 * quadratic_term * constant_term	)
				) / (2 * quadratic_term)
				_lowerCamelCase  :    Optional[int]					=					(
				    -linear_term + sqrt(linear_term**2 - 4 * quadratic_term * constant_term	)
				) / (2 * quadratic_term)

				# two solutions, one of which is our input point
				_lowerCamelCase  :    List[str]					=					x_minus if isclose(__lowerCAmelCase							,					__lowerCAmelCase	) else x_plus
				_lowerCamelCase  :    Tuple					=					point_y + outgoing_gradient * (next_x - point_x)

				return next_x, next_y, outgoing_gradient







def   _snake_case    (       lowercase__ = 1.4							,					lowercase__ = -9.6	):
				_lowerCamelCase  :    int					=					0
				_lowerCamelCase  :    float					=					first_x_coord
				_lowerCamelCase  :    float					=					first_y_coord
				_lowerCamelCase  :    float					=					(10.1 - point_y) / (0.0 - point_x)

				while not (-0.0_1 <= point_x <= 0.0_1 and point_y > 0):
								_lowerCamelCase  :    str					=					next_point(__lowerCAmelCase							,					__lowerCAmelCase							,					__lowerCAmelCase	)
								num_reflections += 1

				return num_reflections


if __name__ == "__main__":
			print(F"{solution() = }")





"""simple docstring"""






from ...configuration_utils import PretrainedConfig
from ...utils import logging


lowercase__  		=		logging.get_logger(__name__)

lowercase__  		=		{
    """google/realm-cc-news-pretrained-embedder""": (
        """https://huggingface.co/google/realm-cc-news-pretrained-embedder/resolve/main/config.json"""
    ),
    """google/realm-cc-news-pretrained-encoder""": (
        """https://huggingface.co/google/realm-cc-news-pretrained-encoder/resolve/main/config.json"""
    ),
    """google/realm-cc-news-pretrained-scorer""": (
        """https://huggingface.co/google/realm-cc-news-pretrained-scorer/resolve/main/config.json"""
    ),
    """google/realm-cc-news-pretrained-openqa""": (
        """https://huggingface.co/google/realm-cc-news-pretrained-openqa/aresolve/main/config.json"""
    ),
    """google/realm-orqa-nq-openqa""": """https://huggingface.co/google/realm-orqa-nq-openqa/resolve/main/config.json""",
    """google/realm-orqa-nq-reader""": """https://huggingface.co/google/realm-orqa-nq-reader/resolve/main/config.json""",
    """google/realm-orqa-wq-openqa""": """https://huggingface.co/google/realm-orqa-wq-openqa/resolve/main/config.json""",
    """google/realm-orqa-wq-reader""": """https://huggingface.co/google/realm-orqa-wq-reader/resolve/main/config.json""",
    # See all REALM models at https://huggingface.co/models?filter=realm
}






class lowerCAmelCase__			(  lowercase		):






			'''simple docstring'''



			lowerCamelCase__   =    """realm"""
			def __init__(						self						,   lowercase=30522						,   lowercase=768						,   lowercase=128						,   lowercase=12						,   lowercase=12						,   lowercase=8						,   lowercase=3072						,   lowercase="gelu_new"						,   lowercase=0.1						,   lowercase=0.1						,   lowercase=512						,   lowercase=2						,   lowercase=0.02						,   lowercase=1E-12						,   lowercase=256						,   lowercase=10						,   lowercase=1E-3						,   lowercase=5						,   lowercase=320						,   lowercase=13353718						,   lowercase=5000						,   lowercase=1						,   lowercase=0						,   lowercase=2						,   **lowercase						,   ):
							super().__init__(pad_token_id=lowercase						,   bos_token_id=lowercase						,   eos_token_id=lowercase						,   **lowercase						)

							# Common config
							_lowerCamelCase  :    str					=					vocab_size
							_lowerCamelCase  :    Dict					=					max_position_embeddings
							_lowerCamelCase  :    int					=					hidden_size
							_lowerCamelCase  :    Optional[Any]					=					retriever_proj_size
							_lowerCamelCase  :    Dict					=					num_hidden_layers
							_lowerCamelCase  :    Any					=					num_attention_heads
							_lowerCamelCase  :    int					=					num_candidates
							_lowerCamelCase  :    List[Any]					=					intermediate_size
							_lowerCamelCase  :    int					=					hidden_act
							_lowerCamelCase  :    Union[str, Any]					=					hidden_dropout_prob
							_lowerCamelCase  :    Dict					=					attention_probs_dropout_prob
							_lowerCamelCase  :    Union[str, Any]					=					initializer_range
							_lowerCamelCase  :    List[Any]					=					type_vocab_size
							_lowerCamelCase  :    int					=					layer_norm_eps

							# Reader config
							_lowerCamelCase  :    Tuple					=					span_hidden_size
							_lowerCamelCase  :    int					=					max_span_width
							_lowerCamelCase  :    Tuple					=					reader_layer_norm_eps
							_lowerCamelCase  :    Union[str, Any]					=					reader_beam_size
							_lowerCamelCase  :    Union[str, Any]					=					reader_seq_len

							# Retrieval config
							_lowerCamelCase  :    Optional[Any]					=					num_block_records
							_lowerCamelCase  :    str					=					searcher_beam_size