


"""simple docstring"""







from typing import Any

import numpy as np




def      UpperCAmelCase__ (lowerCAmelCase_     ):
					return np.array_equal(__snake_case						,		matrix.conjugate().T     )




def      UpperCAmelCase__ (lowerCAmelCase_						,		lowerCAmelCase_     ):
					__SCREAMING_SNAKE_CASE		     =       v.conjugate().T
					__SCREAMING_SNAKE_CASE		     =       v_star.dot(__snake_case     )
					assert isinstance(__snake_case						,		np.ndarray     )
					return (v_star_dot.dot(__snake_case     )) / (v_star.dot(__snake_case     ))




def      UpperCAmelCase__ ():
					__SCREAMING_SNAKE_CASE		     =       np.array([[2, 2 + 1J, 4], [2 - 1J, 3, 1J], [4, -1J, 1]]     )
					__SCREAMING_SNAKE_CASE		     =       np.array([[1], [2], [3]]     )
					assert is_hermitian(__snake_case     ), f"""{a} is not hermitian."""
					print(rayleigh_quotient(__snake_case						,		__snake_case     )     )

					__SCREAMING_SNAKE_CASE		     =       np.array([[1, 2, 4], [2, 3, -1], [4, -1, 1]]     )
					assert is_hermitian(__snake_case     ), f"""{a} is not hermitian."""
					assert rayleigh_quotient(__snake_case						,		__snake_case     ) == float(3     )


if __name__ == "__main__":
		import doctest

		doctest.testmod()
		tests()




"""simple docstring"""







import functools




def      UpperCAmelCase__ (lowerCAmelCase_						,		lowerCAmelCase_     ):




					'''simple docstring'''


					if not isinstance(lowerCAmelCase_						,		lowerCAmelCase_     ) or not all(isinstance(lowerCAmelCase_						,		lowerCAmelCase_     ) for day in days     ):
										raise ValueError("The parameter days should be a list of integers"     )

					if len(lowerCAmelCase_     ) != 3 or not all(isinstance(lowerCAmelCase_						,		lowerCAmelCase_     ) for cost in costs     ):
										raise ValueError("The parameter costs should be a list of three integers"     )

					if len(lowerCAmelCase_     ) == 0:
										return 0

					if min(lowerCAmelCase_     ) <= 0:
										raise ValueError("All days elements should be greater than 0"     )

					if max(lowerCAmelCase_     ) >= 366:
										raise ValueError("All days elements should be less than 366"     )

					__SCREAMING_SNAKE_CASE		     =       set(lowerCAmelCase_     )

					@functools.cache
					def dynamic_programming(lowerCAmelCase_     ) -> int:
										if index > 365:
															return 0

										if index not in days_set:
															return dynamic_programming(index + 1     )

										return min(
										    costs[0] + dynamic_programming(index + 1     )						,		costs[1] + dynamic_programming(index + 7     )						,		costs[2] + dynamic_programming(index + 30     )						,		)

					return dynamic_programming(1     )


if __name__ == "__main__":
		import doctest

		doctest.testmod()
