






from math import pi, sqrt







def 		SCREAMING_SNAKE_CASE							( __lowerCAmelCase      )			->     Union[str, Any]:
     if num <= 0:
          raise ValueError("math domain error"      )
     if num > 171.5:
          raise OverflowError("math range error"      )
     elif num - int(__SCREAMING_SNAKE_CASE      ) not in (0, 0.5):
          raise NotImplementedError("num must be an integer or a half-integer"      )
     elif num == 0.5:
          return sqrt(__SCREAMING_SNAKE_CASE      )
     else:
          return 1.0 if num == 1 else (num - 1) * gamma(num - 1      )







def 		SCREAMING_SNAKE_CASE							( )			->     str:
     assert gamma(0.5      ) == sqrt(__SCREAMING_SNAKE_CASE      )
     assert gamma(1      ) == 1.0
     assert gamma(2      ) == 1.0


if __name__ == "__main__":
 from doctest import testmod

 testmod()
 lowerCamelCase     :							Dict    =1.0
 while num:
  lowerCamelCase     :							List[str]    =float(input('''Gamma of: '''))
  print(F"""gamma({num}) = {gamma(num)}""")
  print('''\nEnter 0 to exit...''')







from __future__ import annotations







def 		SCREAMING_SNAKE_CASE							( __lowerCAmelCase ,   __lowerCAmelCase      )			->     list[int]:
     UpperCamelCase__      :       Optional[Any]	    =  0
     UpperCamelCase__      :       Any	    =  len(__lowerCAmelCase      ) - 1

     while i < j:
          if nums[i] + nums[j] == target:
               return [i, j]
          elif nums[i] + nums[j] < target:
               UpperCamelCase__      :       Optional[int]	    =  i + 1
          else:
               UpperCamelCase__      :       Dict	    =  j - 1

     return []


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 print(F"""{two_pointer([2, 7, 11, 15], 9) = }""")