



"""simple docstring"""





from math import factorial, radians
def   a__      ( lowerCAmelCase__      ,     lowerCAmelCase__ = 18      ,     lowerCAmelCase__ = 10 ):
      UpperCAmelCase_     					=				angle_in_degrees - ((angle_in_degrees // 360.0) * 360.0)

      # Converting from degrees to radians
      UpperCAmelCase_     					=				radians(lowerCAmelCase__ )

      UpperCAmelCase_     					=				angle_in_radians
      UpperCAmelCase_     					=				3
      UpperCAmelCase_     					=				-1

      for _ in range(lowerCAmelCase__ ):
            result += (b * (angle_in_radians**a)) / factorial(lowerCAmelCase__ )

            UpperCAmelCase_     					=				-b  # One positive term and the next will be negative and so on...
            a += 2  # Increased by 2 for every term.

      return round(lowerCAmelCase__      ,     lowerCAmelCase__ )


if __name__ == "__main__":
  __import__("""doctest""").testmod()





from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


_lowercase:	Optional[Any]       			=		{
    '''configuration_rag''': ['''RagConfig'''],
    '''retrieval_rag''': ['''RagRetriever'''],
    '''tokenization_rag''': ['''RagTokenizer'''],
}

try:
				if not is_torch_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				_lowercase:	Optional[Any]       			=		[
				    '''RagModel''',
				    '''RagPreTrainedModel''',
				    '''RagSequenceForGeneration''',
				    '''RagTokenForGeneration''',
				]

try:
				if not is_tf_available():
								raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
				pass
else:
				_lowercase:	Optional[Any]       			=		[
				    '''TFRagModel''',
				    '''TFRagPreTrainedModel''',
				    '''TFRagSequenceForGeneration''',
				    '''TFRagTokenForGeneration''',
				]


if TYPE_CHECKING:
				from .configuration_rag import RagConfig
				from .retrieval_rag import RagRetriever
				from .tokenization_rag import RagTokenizer

				try:
								if not is_torch_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_rag import RagModel, RagPreTrainedModel, RagSequenceForGeneration, RagTokenForGeneration

				try:
								if not is_tf_available():
												raise OptionalDependencyNotAvailable()
				except OptionalDependencyNotAvailable:
								pass
				else:
								from .modeling_tf_rag import (
								    TFRagModel,
								    TFRagPreTrainedModel,
								    TFRagSequenceForGeneration,
								    TFRagTokenForGeneration,
								)

else:
				import sys

				_lowercase:	Optional[int]       			=		_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)






