






"""simple docstring"""





from math import isclose, sqrt







def      lowerCamelCase__       (							_lowerCamelCase       :		float		,				_lowerCamelCase       :		float		,				_lowerCamelCase       :		float )      ->				tuple[float, float, float]:
  lowerCamelCase_         =						point_y / 4 / point_x
  lowerCamelCase_         =						2 * normal_gradient / (1 + normal_gradient * normal_gradient)
  lowerCamelCase_         =						(1 - normal_gradient * normal_gradient) / (
      1 + normal_gradient * normal_gradient
  )
  lowerCamelCase_         =						(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_         =						outgoing_gradient**2 + 4
  lowerCamelCase_         =						2 * outgoing_gradient * (point_y - outgoing_gradient * point_x)
  lowerCamelCase_         =						(point_y - outgoing_gradient * point_x) ** 2 - 100

  lowerCamelCase_         =						(
      -linear_term - sqrt(linear_term**2 - 4 * quadratic_term * constant_term )
  ) / (2 * quadratic_term)
  lowerCamelCase_         =						(
      -linear_term + sqrt(linear_term**2 - 4 * quadratic_term * constant_term )
  ) / (2 * quadratic_term)

  # two solutions, one of which is our input point
  lowerCamelCase_         =						x_minus if isclose(UpperCAmelCase_		,				UpperCAmelCase_ ) else x_plus
  lowerCamelCase_         =						point_y + outgoing_gradient * (next_x - point_x)

  return next_x, next_y, outgoing_gradient







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

  while not (-0.01 <= point_x <= 0.01 and point_y > 0):
    lowerCamelCase_         =						next_point(UpperCAmelCase_		,				UpperCAmelCase_		,				UpperCAmelCase_ )
    num_reflections += 1

  return num_reflections


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








'''simple docstring'''



from numpy import exp, pi, sqrt



def 			UpperCAmelCase__					(	UpperCAmelCase_    :				Optional[int]      ,    UpperCAmelCase_    :				float = 0.0      ,    UpperCAmelCase_    :				float = 1.0							)     ->		int:
     return 1 / sqrt(2 * pi * sigma**2							) * exp(-((x - mu) ** 2) / (2 * sigma**2)							)


if __name__ == "__main__":
      import doctest

      doctest.testmod()






