

from math import isclose, sqrt

def    A_  (							a					,   a					,   a  ):

      """simple docstring"""



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

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

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

      return next_x, next_y, outgoing_gradient

def    A_  (							a = 1.4					,   a = -9.6  ):

      """simple docstring"""



      SCREAMING_SNAKE_CASE_				:  int           =     0
      SCREAMING_SNAKE_CASE_				:  float           =     first_x_coord
      SCREAMING_SNAKE_CASE_				:  float           =     first_y_coord
      SCREAMING_SNAKE_CASE_				:  float           =     (10.1 - point_y) / (0.0 - point_x)

      while not (-0.01 <= point_x <= 0.01 and point_y > 0):
            SCREAMING_SNAKE_CASE_       ,						SCREAMING_SNAKE_CASE_       ,						SCREAMING_SNAKE_CASE_				:  int           =     next_point(a					,   a					,   a  )
            num_reflections += 1

      return num_reflections


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









from math import pi

def    A_  (							a					,   a  ):

      """simple docstring"""



      return 2 * pi * radius * (angle / 3_6_0)


if __name__ == "__main__":
    print(arc_length(90, 10))






