


"""simple docstring"""
def 				_snake_case      (   __snake_case							:      str   ):




   """simple docstring"""







   _lowerCamelCase	:					Any   =		0

   # if input_string is "aba" than new_input_string become "a|b|a"
   _lowerCamelCase	:					List[Any]   =		""""""
   _lowerCamelCase	:					Union[str, Any]   =		""""""

   # append each character + "|" in new_string for range(0, length-1)
   for i in input_string[: len(__snake_case   ) - 1]:
      new_input_string += i + "|"
   # append last character
   new_input_string += input_string[-1]

   # we will store the starting and ending of previous furthest ending palindromic
   # substring
   _lowerCamelCase   ,    _lowerCamelCase	:					Optional[int]   =		0, 0

   # length[i] shows the length of palindromic substring with center i
   _lowerCamelCase	:					List[str]   =		[1 for i in range(len(__snake_case   )   )]

   # for each character in new_string find corresponding palindromic string
   _lowerCamelCase	:					Optional[int]   =		0
   for j in range(len(__snake_case   )   ):
      _lowerCamelCase	:					Dict   =		1 if j > r else min(length[l + r - j] // 2						, r - j + 1   )
      while (
          j - k >= 0
          and j + k < len(__snake_case   )
          and new_input_string[k + j] == new_input_string[j - k]
      ):
         k += 1

      _lowerCamelCase	:					Union[str, Any]   =		2 * k - 1

      # does this string is ending after the previously explored end (that is r) ?
      # if yes the update the new r to the last index of this
      if j + k - 1 > r:
         _lowerCamelCase	:					str   =		j - k + 1  # noqa: E741
         _lowerCamelCase	:					Tuple   =		j + k - 1

      # update max_length and start position
      if max_length < length[j]:
         _lowerCamelCase	:					Optional[int]   =		length[j]
         _lowerCamelCase	:					List[str]   =		j

    # create that string
   _lowerCamelCase	:					Optional[int]   =		new_input_string[start - max_length // 2 : start + max_length // 2 + 1]
   for i in s:
      if i != "|":
         output_string += i

   return output_string


if __name__ == "__main__":
 import doctest

 doctest.testmod()





"""simple docstring"""
from __future__ import annotations

from numpy import array, cos, cross, floataa, radians, sin
from numpy.typing import NDArray

def 				_snake_case      (   __snake_case							:      float						, __snake_case							:      float						, __snake_case							:      bool = False   ):




   """simple docstring"""







   if radian_mode:
      return [magnitude * cos(__snake_case   ), magnitude * sin(__snake_case   )]
   return [magnitude * cos(radians(__snake_case   )   ), magnitude * sin(radians(__snake_case   )   )]

def 				_snake_case      (   __snake_case							:      NDArray[floataa]						, __snake_case							:      NDArray[floataa]						, __snake_case							:      float = 10**-1   ):




   """simple docstring"""







   _lowerCamelCase	:					NDArray[floataa]   =		cross(__snake_case						, __snake_case   )
   _lowerCamelCase	:					float   =		sum(__snake_case   )
   return abs(__snake_case   ) < eps


if __name__ == "__main__":
 # Test to check if it works
 UpperCAmelCase				=						array(
     [
         polar_force(718.4, 180 - 30),
         polar_force(879.54, 45),
         polar_force(100, -90),
     ]
 )

 UpperCAmelCase				=						array([[0, 0], [0, 0], [0, 0]])

 assert in_static_equilibrium(forces, location)

 # Problem 1 in image_data/2D_problems.jpg
 UpperCAmelCase				=						array(
     [
         polar_force(30 * 9.81, 15),
         polar_force(215, 180 - 45),
         polar_force(264, 90 - 30),
     ]
 )

 UpperCAmelCase				=						array([[0, 0], [0, 0], [0, 0]])

 assert in_static_equilibrium(forces, location)

 # Problem in image_data/2D_problems_1.jpg
 UpperCAmelCase				=						array([[0, -2000], [0, -1200], [0, 1_5600], [0, -1_2400]])

 UpperCAmelCase				=						array([[0, 0], [6, 0], [10, 0], [12, 0]])

 assert in_static_equilibrium(forces, location)

 import doctest

 doctest.testmod()

