



from collections.abc import Callable

import numpy as np


def    lowerCamelCase_(lowerCamelCase_    ,   lowerCamelCase_    ,   lowerCamelCase_    ,   lowerCamelCase_    ,   lowerCamelCase_    ) ->       List[str]:
						UpperCAmelCase         =     int(np.ceil((x_end - xa) / step_size    )    )
						UpperCAmelCase         =     np.zeros((n + 1,)    )
						UpperCAmelCase         =     ya
						UpperCAmelCase         =     xa

						for k in range(__a    ):
												UpperCAmelCase         =     y[k] + step_size * ode_func(__a    ,   y[k]    )
												UpperCAmelCase         =     y[k] + (
												    (step_size / 2) * (ode_func(__a    ,   y[k]    ) + ode_func(x + step_size    ,   __a    ))
												)
												x += step_size

						return y


if __name__ == "__main__":
		import doctest

		doctest.testmod()








from __future__ import annotations

def    lowerCamelCase_(lowerCamelCase_    ) ->       int:
						UpperCAmelCase         =     len(lowerCamelCase_    ) // 2

						# choose the middle 3 elements
						UpperCAmelCase         =     lst[m - 1 : m + 2]

						# if middle element is peak
						if three[1] > three[0] and three[1] > three[2]:
												return three[1]

						# if increasing, recurse on right
						elif three[0] < three[2]:
												if len(lst[:m]    ) == 2:
																		m -= 1
												return peak(lst[m:]    )

						# decreasing
						else:
												if len(lst[:m]    ) == 2:
																		m += 1
												return peak(lst[:m]    )


if __name__ == "__main__":
		import doctest

		doctest.testmod()



