



'''simple docstring'''




from ..utils import DummyObject, requires_backends

class     UpperCamelCase_				(							metaclass=_UpperCAmelCase    ):
 lowercase    =				['torch', 'torchsde']





 def __init__(						self	,	*A	,	**A					)    ->    List[str]:
        requires_backends(self	,	["""torch""", """torchsde"""]					)





 @classmethod
 def 				_lowercase(						cls	,	*A	,	**A					)    ->    Optional[Any]:
        requires_backends(cls	,	["""torch""", """torchsde"""]					)






 @classmethod
 def 				_lowercase(						cls	,	*A	,	**A					)    ->    Dict:
        requires_backends(cls	,	["""torch""", """torchsde"""]					)






'''simple docstring'''




from collections.abc import Callable

import numpy as np



def    __lowerCamelCase						(      _lowercase			,       _lowercase			,       _lowercase			,       _lowercase			,       _lowercase	)   ->    np.array:
							UpperCAmelCase  :	Optional[Any]							  =	int(np.ceil((x_end - xa) / step_size	)	)
							UpperCAmelCase  :	str							  =	np.zeros((n + 1,)	)
							UpperCAmelCase  :	Optional[Any]							  =	ya
							UpperCAmelCase  :	Union[str, Any]							  =	xa

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

							return y


if __name__ == "__main__":
							import doctest

							doctest.testmod()

