


"""simple docstring"""
def 						_a				(      _SCREAMING_SNAKE_CASE				, _SCREAMING_SNAKE_CASE = False				)    ->				bool:
							if n == 2:
														return True
							if not n % 2 or n < 2:
														return False
							if n > 5 and n % 10 not in (1, 3, 7, 9):  # can quickly check last digit
														return False
							if n > 3_317_044_064_679_887_385_961_981 and not allow_probable:
														raise ValueError(
														    """Warning: upper bound of deterministic test is exceeded. """
														    """Pass allow_probable=True to allow probabilistic test. """
														    """A return value of True indicates a probable prime."""				)
							# array bounds provided by analysis
							snake_case_           =		[
							    2_047,
							    1_373_653,
							    25_326_001,
							    3_215_031_751,
							    2_152_302_898_747,
							    3_474_749_660_383,
							    341_550_071_728_321,
							    1,
							    3_825_123_056_546_413_051,
							    1,
							    1,
							    318_665_857_834_031_151_167_461,
							    3_317_044_064_679_887_385_961_981,
							]

							snake_case_           =		[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41]
							for idx, _p in enumerate(SCREAMING_SNAKE_CASE_				, 1				):
														if n < _p:
																					# then we have our last prime to check
																					snake_case_           =		primes[:idx]
																					break
							snake_case_       ,						snake_case_           =		n - 1, 0
							# break up n -1 into a power of 2 (s) and
							# remaining odd component
							# essentially, solve for d * 2 ** s == n - 1
							while d % 2 == 0:
														d //= 2
														s += 1
							for prime in plist:
														snake_case_           =		False
														for r in range(SCREAMING_SNAKE_CASE_				):
																					snake_case_           =		pow(SCREAMING_SNAKE_CASE_				, d * 2**r				, SCREAMING_SNAKE_CASE_				)
																					# see article for analysis explanation for m
																					if (r == 0 and m == 1) or ((m + 1) % n == 0):
																												snake_case_           =		True
																												# this loop will not determine compositeness
																												break
														if pr:
																					continue
														# if pr is False, then the above loop never evaluated to true,
														# and the n MUST be composite
														return False
							return True







def 						_a				(      )    ->				None:
							assert not miller_rabin(561				)
							assert miller_rabin(563				)
							# 2047

							assert not miller_rabin(838_201				)
							assert miller_rabin(838_207				)
							# 1_373_653

							assert not miller_rabin(17_316_001				)
							assert miller_rabin(17_316_017				)
							# 25_326_001

							assert not miller_rabin(3_078_386_641				)
							assert miller_rabin(3_078_386_653				)
							# 3_215_031_751

							assert not miller_rabin(1_713_045_574_801				)
							assert miller_rabin(1_713_045_574_819				)
							# 2_152_302_898_747

							assert not miller_rabin(2_779_799_728_307				)
							assert miller_rabin(2_779_799_728_327				)
							# 3_474_749_660_383

							assert not miller_rabin(113_850_023_909_441				)
							assert miller_rabin(113_850_023_909_527				)
							# 341_550_071_728_321

							assert not miller_rabin(1_275_041_018_848_804_351				)
							assert miller_rabin(1_275_041_018_848_804_391				)
							# 3_825_123_056_546_413_051

							assert not miller_rabin(79_666_464_458_507_787_791_867				)
							assert miller_rabin(79_666_464_458_507_787_791_951				)
							# 318_665_857_834_031_151_167_461

							assert not miller_rabin(552_840_677_446_647_897_660_333				)
							assert miller_rabin(552_840_677_446_647_897_660_359				)
							# 3_317_044_064_679_887_385_961_981
							# upper limit for probabilistic test


if __name__ == "__main__":
				test_miller_rabin()







"""simple docstring"""
import copy
from dataclasses import dataclass, field
from typing import ClassVar, Dict

from ..features import Audio, Features, Value
from .base import TaskTemplate





@dataclass(frozen=snake_case__)
class      __A     (snake_case__):





							'''simple docstring'''

							__lowercase:		str							      =    field(default="""automatic-speech-recognition"""						,		metadata={"""include_in_asdict_even_if_is_default""": True})
							__lowercase:		ClassVar[Features]							      =    Features({"""audio""": Audio()})
							__lowercase:		ClassVar[Features]							      =    Features({"""transcription""": Value("""string""")})
							__lowercase:		str							      =    "audio"
							__lowercase:		str							      =    "transcription"



							def 		lowerCAmelCase       (				self							:      List[Any]		,       UpperCAmelCase_							:      Any       )					->int:



														"""simple docstring"""



														if self.audio_column not in features:
																					raise ValueError(F"""Column {self.audio_column} is not present in features."""       )
														if not isinstance(features[self.audio_column]		,       UpperCAmelCase_       ):
																					raise ValueError(F"""Column {self.audio_column} is not an Audio type."""       )
														snake_case_           =		copy.deepcopy(self       )
														snake_case_           =		self.input_schema.copy()
														snake_case_           =		features[self.audio_column]
														snake_case_           =		input_schema
														return task_template



							@property
							def 		lowerCAmelCase       (				self							:      List[str]       )					->Dict[str, str]:



														"""simple docstring"""



														return {self.audio_column: "audio", self.transcription_column: "transcription"}



