



"""simple docstring"""







from math import isclose, sqrt

def  __SCREAMING_SNAKE_CASE		(			lowerCamelCase_:							float     ,		lowerCamelCase_:							float     ,		lowerCamelCase_:							float ):
						"""simple docstring"""






						snake_case   :			Any						    = point_y / 4 / point_x
						snake_case   :			Tuple						    = 2 * normal_gradient / (1 + normal_gradient * normal_gradient)
						snake_case   :			Dict						    = (1 - normal_gradient * normal_gradient) / (
						    1 + normal_gradient * normal_gradient
						)
						snake_case   :			Optional[int]						    = (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
						snake_case   :			Optional[int]						    = outgoing_gradient**2 + 4
						snake_case   :			Tuple						    = 2 * outgoing_gradient * (point_y - outgoing_gradient * point_x)
						snake_case   :			int						    = (point_y - outgoing_gradient * point_x) ** 2 - 1_0_0

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

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

						return next_x, next_y, outgoing_gradient

def  __SCREAMING_SNAKE_CASE		(			lowerCamelCase_:							float = 1.4     ,		lowerCamelCase_:							float = -9.6 ):
						"""simple docstring"""






						snake_case   :			int						    = 0
						snake_case   :			float						    = first_x_coord
						snake_case   :			float						    = first_y_coord
						snake_case   :			float						    = (1_0.1 - point_y) / (0.0 - point_x)

						while not (-0.0_1 <= point_x <= 0.0_1 and point_y > 0):
												snake_case    ,			snake_case    ,			snake_case   :			List[Any]						    = next_point(lowerCamelCase_     ,		lowerCamelCase_     ,		lowerCamelCase_ )
												num_reflections += 1

						return num_reflections


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








"""simple docstring"""







from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_sentencepiece_available


A		=						{}

try:
			if not is_sentencepiece_available():
						raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
			pass
else:
			A		=						['GPTSw3Tokenizer']


if TYPE_CHECKING:
			try:
						if not is_sentencepiece_available():
									raise OptionalDependencyNotAvailable()
			except OptionalDependencyNotAvailable:
						pass
			else:
						from .tokenization_gpt_swa import GPTSwaTokenizer

else:
			import sys

			A		=						_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)



