


from decimal import Decimal, getcontext
from math import ceil, factorial






def 		_A		(		_lowercase )					-> str:


     """simple docstring"""


     if not isinstance(_lowercase					,  _lowercase ):
          raise TypeError('Undefined for non-integers' )
     elif precision < 1:
          raise ValueError('Undefined for non-natural numbers' )

     __UpperCamelCase =			precision
     __UpperCamelCase =			ceil(precision / 14 )
     __UpperCamelCase =			42_68_80 * Decimal(1_00_05 ).sqrt()
     __UpperCamelCase =			1
     __UpperCamelCase =			13_59_14_09
     __UpperCamelCase =			Decimal(_lowercase )
     for k in range(1					,  _lowercase ):
          __UpperCamelCase =			factorial(6 * k ) // (factorial(3 * k ) * factorial(_lowercase ) ** 3)
          linear_term += 5_45_14_01_34
          exponential_term *= -26_25_37_41_26_40_76_80_00
          partial_sum += Decimal(multinomial_term * linear_term ) / exponential_term
     return str(constant_term / partial_sum )[:-1]


if __name__ == "__main__":
    __snake_case   							=						5_0
    print(f"""The first {n} digits of pi is: {pi(n)}""")






'''simple docstring'''

import unittest

import numpy as np

def _SCREAMING_SNAKE_CASE (A    ,					A    ,					A    ,					A = None    ,					)			->			np.ndarray:






       """simple docstring"""







       lowercase__      =					np.shape(A			)
       lowercase__      =					np.shape(A			)
       lowercase__      =					np.shape(A			)

       if shape_a[0] != shape_b[0]:
              lowercase__      =					(
                  '''Expected the same number of rows for A and B. '''
                  f"Instead found A of size {shape_a} and B of size {shape_b}"
              )
              raise ValueError(A			)

       if shape_b[1] != shape_c[1]:
              lowercase__      =					(
                  '''Expected the same number of columns for B and C. '''
                  f"Instead found B of size {shape_b} and C of size {shape_c}"
              )
              raise ValueError(A			)

       lowercase__      =					pseudo_inv
       if a_inv is None:
              try:
                     lowercase__      =					np.linalg.inv(A			)
              except np.linalg.LinAlgError:
                     raise ValueError(
                         '''Input matrix A is not invertible. Cannot compute Schur complement.'''			)

       return mat_c - mat_b.T @ a_inv @ mat_b
class     __lowerCAmelCase		(unittest.TestCase	):





      '''simple docstring'''






      def  UpperCamelCase__						(self       :       Dict					):

             '''simple docstring'''







             lowercase__      =					np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]					)
             lowercase__      =					np.array([[0, 3], [3, 0], [2, 3]]					)
             lowercase__      =					np.array([[2, 1], [6, 3]]					)

             lowercase__      =					schur_complement(UpperCamelCase  ,		UpperCamelCase  ,		UpperCamelCase					)

             lowercase__      =					np.block([[a, b], [b.T, c]]					)

             lowercase__      =					np.linalg.det(UpperCamelCase					)
             lowercase__      =					np.linalg.det(UpperCamelCase					)
             lowercase__      =					np.linalg.det(UpperCamelCase					)

             self.assertAlmostEqual(UpperCamelCase  ,		det_a * det_s					)



      def  UpperCamelCase__						(self       :       Optional[int]					):

             '''simple docstring'''







             lowercase__      =					np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]					)
             lowercase__      =					np.array([[0, 3], [3, 0], [2, 3]]					)
             lowercase__      =					np.array([[2, 1], [6, 3]]					)

             with self.assertRaises(UpperCamelCase					):
                    schur_complement(UpperCamelCase  ,		UpperCamelCase  ,		UpperCamelCase					)






      def  UpperCamelCase__						(self       :       Union[str, Any]					):

             '''simple docstring'''







             lowercase__      =					np.array([[1, 2, 1], [2, 1, 2], [3, 2, 4]]					)
             lowercase__      =					np.array([[0, 3], [3, 0], [2, 3]]					)
             lowercase__      =					np.array([[2, 1, 3], [6, 3, 5]]					)

             with self.assertRaises(UpperCamelCase					):
                    schur_complement(UpperCamelCase  ,		UpperCamelCase  ,		UpperCamelCase					)


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 unittest.main()




