





'''simple docstring'''



def  lowercase__(		_UpperCamelCase  : int ,   _UpperCamelCase  : int = 1000				)->   str:






					"""simple docstring"""

					if (not isinstance(_UpperCamelCase ,   _UpperCamelCase				)) or (digit_position <= 0):
										raise ValueError("Digit position must be a positive integer"				)
					elif (not isinstance(_UpperCamelCase ,   _UpperCamelCase				)) or (precision < 0):
										raise ValueError("Precision must be a nonnegative integer"				)

					# compute an approximation of (16 ** (n - 1)) * pi whose fractional part is mostly
					# accurate
					_UpperCamelCase											=   (
					    4 * _subsum(_UpperCamelCase ,   1 ,   _UpperCamelCase				)
					    - 2 * _subsum(_UpperCamelCase ,   4 ,   _UpperCamelCase				)
					    - _subsum(_UpperCamelCase ,   5 ,   _UpperCamelCase				)
					    - _subsum(_UpperCamelCase ,   6 ,   _UpperCamelCase				)
					)

					# return the first hex digit of the fractional part of the result
					return hex(int((sum_result % 1) * 16				)				)[2:]



def  lowercase__(		_UpperCamelCase  : int ,   _UpperCamelCase  : int ,   _UpperCamelCase  : int				)->   float:






					"""simple docstring"""

					_UpperCamelCase											=   0.0
					for sum_index in range(digit_pos_to_extract + precision				):
										_UpperCamelCase											=   8 * sum_index + denominator_addend
										if sum_index < digit_pos_to_extract:
															# if the exponential term is an integer and we mod it by the denominator
															# before dividing, only the integer part of the sum will change;
															# the fractional part will not
															_UpperCamelCase											=   pow(
															    16 ,   digit_pos_to_extract - 1 - sum_index ,   _UpperCamelCase				)
										else:
															_UpperCamelCase											=   pow(16 ,   digit_pos_to_extract - 1 - sum_index				)
										total += exponential_term / denominator
					return total


if __name__ == "__main__":
			import doctest

			doctest.testmod()










'''simple docstring'''



import unittest

import numpy as np
from datasets import load_dataset

from transformers.testing_utils import require_torch, require_vision
from transformers.utils import is_torch_available, is_vision_available

from ...test_image_processing_common import ImageProcessingSavingTestMixin, prepare_image_inputs


if is_torch_available():
			import torch

if is_vision_available():
			from PIL import Image

			from transformers import SegformerImageProcessor

class     A_ (  unittest.TestCase  ):

			'''simple docstring'''





			def __init__(					self			,     A_			,     A_=7			,     A_=3			,     A_=30			,     A_=4_00			,     A_=True			,     A_=None			,     A_=True			,     A_=[0.5, 0.5, 0.5]			,     A_=[0.5, 0.5, 0.5]			,     A_=False			,     ):
								_UpperCamelCase											=   size if size is not None else {"height": 30, "width": 30}
								_UpperCamelCase											=   parent
								_UpperCamelCase											=   batch_size
								_UpperCamelCase											=   num_channels
								_UpperCamelCase											=   min_resolution
								_UpperCamelCase											=   max_resolution
								_UpperCamelCase											=   do_resize
								_UpperCamelCase											=   size
								_UpperCamelCase											=   do_normalize
								_UpperCamelCase											=   image_mean
								_UpperCamelCase											=   image_std
								_UpperCamelCase											=   do_reduce_labels




			def       a	(					self   ):
								return {
								    "do_resize": self.do_resize,
								    "size": self.size,
								    "do_normalize": self.do_normalize,
								    "image_mean": self.image_mean,
								    "image_std": self.image_std,
								    "do_reduce_labels": self.do_reduce_labels,
								}




def  lowercase__(		)->   Dict:






					"""simple docstring"""

					_UpperCamelCase											=   load_dataset("hf-internal-testing/fixtures_ade20k" ,   split="test"				)

					_UpperCamelCase											=   Image.open(dataset[0]["file"]				)
					_UpperCamelCase											=   Image.open(dataset[1]["file"]				)

					return image, map



def  lowercase__(		)->   Dict:






					"""simple docstring"""

					_UpperCamelCase											=   load_dataset("hf-internal-testing/fixtures_ade20k" ,   split="test"				)

					_UpperCamelCase											=   Image.open(dataset[0]["file"]				)
					_UpperCamelCase											=   Image.open(dataset[1]["file"]				)
					_UpperCamelCase											=   Image.open(dataset[2]["file"]				)
					_UpperCamelCase											=   Image.open(dataset[3]["file"]				)

					return [imagea, imagea], [mapa, mapa]

@require_torch
@require_vision
class     A_ (  lowerCAmelCase_    ,			unittest.TestCase  ):

			'''simple docstring'''





			_lowerCAmelCase						=    SegformerImageProcessor if is_vision_available() else None




			def       a	(					self   ):
								_UpperCamelCase											=   SegformerImageProcessingTester(self   )




			@property
			def       a	(					self   ):
								return self.image_processor_tester.prepare_image_processor_dict()




			def       a	(					self   ):
								_UpperCamelCase											=   self.image_processing_class(**self.image_processor_dict   )
								self.assertTrue(hasattr(A_			,     "do_resize"   )   )
								self.assertTrue(hasattr(A_			,     "size"   )   )
								self.assertTrue(hasattr(A_			,     "do_normalize"   )   )
								self.assertTrue(hasattr(A_			,     "image_mean"   )   )
								self.assertTrue(hasattr(A_			,     "image_std"   )   )
								self.assertTrue(hasattr(A_			,     "do_reduce_labels"   )   )




			def       a	(					self   ):
								_UpperCamelCase											=   self.image_processing_class.from_dict(self.image_processor_dict   )
								self.assertEqual(image_processor.size			,     {"height": 30, "width": 30}   )
								self.assertEqual(image_processor.do_reduce_labels			,     A_   )

								_UpperCamelCase											=   self.image_processing_class.from_dict(self.image_processor_dict			,     size=42			,     reduce_labels=A_   )
								self.assertEqual(image_processor.size			,     {"height": 42, "width": 42}   )
								self.assertEqual(image_processor.do_reduce_labels			,     A_   )




			def       a	(					self   ):
								pass




			def       a	(					self   ):
								# Initialize image_processing
								_UpperCamelCase											=   self.image_processing_class(**self.image_processor_dict   )
								# create random PIL images
								_UpperCamelCase											=   prepare_image_inputs(self.image_processor_tester			,     equal_resolution=A_   )
								for image in image_inputs:
													self.assertIsInstance(A_			,     Image.Image   )

								# Test not batched input
								_UpperCamelCase											=   image_processing(image_inputs[0]			,     return_tensors="pt"   ).pixel_values
								self.assertEqual(
								    encoded_images.shape			,     (
								        1,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )

								# Test batched
								_UpperCamelCase											=   image_processing(A_			,     return_tensors="pt"   ).pixel_values
								self.assertEqual(
								    encoded_images.shape			,     (
								        self.image_processor_tester.batch_size,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )




			def       a	(					self   ):
								# Initialize image_processing
								_UpperCamelCase											=   self.image_processing_class(**self.image_processor_dict   )
								# create random numpy tensors
								_UpperCamelCase											=   prepare_image_inputs(self.image_processor_tester			,     equal_resolution=A_			,     numpify=A_   )
								for image in image_inputs:
													self.assertIsInstance(A_			,     np.ndarray   )

								# Test not batched input
								_UpperCamelCase											=   image_processing(image_inputs[0]			,     return_tensors="pt"   ).pixel_values
								self.assertEqual(
								    encoded_images.shape			,     (
								        1,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )

								# Test batched
								_UpperCamelCase											=   image_processing(A_			,     return_tensors="pt"   ).pixel_values
								self.assertEqual(
								    encoded_images.shape			,     (
								        self.image_processor_tester.batch_size,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )




			def       a	(					self   ):
								# Initialize image_processing
								_UpperCamelCase											=   self.image_processing_class(**self.image_processor_dict   )
								# create random PyTorch tensors
								_UpperCamelCase											=   prepare_image_inputs(self.image_processor_tester			,     equal_resolution=A_			,     torchify=A_   )
								for image in image_inputs:
													self.assertIsInstance(A_			,     torch.Tensor   )

								# Test not batched input
								_UpperCamelCase											=   image_processing(image_inputs[0]			,     return_tensors="pt"   ).pixel_values
								self.assertEqual(
								    encoded_images.shape			,     (
								        1,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )

								# Test batched
								_UpperCamelCase											=   image_processing(A_			,     return_tensors="pt"   ).pixel_values
								self.assertEqual(
								    encoded_images.shape			,     (
								        self.image_processor_tester.batch_size,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )




			def       a	(					self   ):
								# Initialize image_processing
								_UpperCamelCase											=   self.image_processing_class(**self.image_processor_dict   )
								# create random PyTorch tensors
								_UpperCamelCase											=   prepare_image_inputs(self.image_processor_tester			,     equal_resolution=A_			,     torchify=A_   )
								_UpperCamelCase											=   []
								for image in image_inputs:
													self.assertIsInstance(A_			,     torch.Tensor   )
													maps.append(torch.zeros(image.shape[-2:]   ).long()   )

								# Test not batched input
								_UpperCamelCase											=   image_processing(image_inputs[0]			,     maps[0]			,     return_tensors="pt"   )
								self.assertEqual(
								    encoding["pixel_values"].shape			,     (
								        1,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )
								self.assertEqual(
								    encoding["labels"].shape			,     (
								        1,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )
								self.assertEqual(encoding["labels"].dtype			,     torch.long   )
								self.assertTrue(encoding["labels"].min().item() >= 0   )
								self.assertTrue(encoding["labels"].max().item() <= 2_55   )

								# Test batched
								_UpperCamelCase											=   image_processing(A_			,     A_			,     return_tensors="pt"   )
								self.assertEqual(
								    encoding["pixel_values"].shape			,     (
								        self.image_processor_tester.batch_size,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )
								self.assertEqual(
								    encoding["labels"].shape			,     (
								        self.image_processor_tester.batch_size,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )
								self.assertEqual(encoding["labels"].dtype			,     torch.long   )
								self.assertTrue(encoding["labels"].min().item() >= 0   )
								self.assertTrue(encoding["labels"].max().item() <= 2_55   )

								# Test not batched input (PIL images)
								_UpperCamelCase				,	_UpperCamelCase											=   prepare_semantic_single_inputs()

								_UpperCamelCase											=   image_processing(A_			,     A_			,     return_tensors="pt"   )
								self.assertEqual(
								    encoding["pixel_values"].shape			,     (
								        1,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )
								self.assertEqual(
								    encoding["labels"].shape			,     (
								        1,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )
								self.assertEqual(encoding["labels"].dtype			,     torch.long   )
								self.assertTrue(encoding["labels"].min().item() >= 0   )
								self.assertTrue(encoding["labels"].max().item() <= 2_55   )

								# Test batched input (PIL images)
								_UpperCamelCase				,	_UpperCamelCase											=   prepare_semantic_batch_inputs()

								_UpperCamelCase											=   image_processing(A_			,     A_			,     return_tensors="pt"   )
								self.assertEqual(
								    encoding["pixel_values"].shape			,     (
								        2,
								        self.image_processor_tester.num_channels,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )
								self.assertEqual(
								    encoding["labels"].shape			,     (
								        2,
								        self.image_processor_tester.size["height"],
								        self.image_processor_tester.size["width"],
								    )			,     )
								self.assertEqual(encoding["labels"].dtype			,     torch.long   )
								self.assertTrue(encoding["labels"].min().item() >= 0   )
								self.assertTrue(encoding["labels"].max().item() <= 2_55   )




			def       a	(					self   ):
								# Initialize image_processing
								_UpperCamelCase											=   self.image_processing_class(**self.image_processor_dict   )

								# ADE20k has 150 classes, and the background is included, so labels should be between 0 and 150
								_UpperCamelCase				,	_UpperCamelCase											=   prepare_semantic_single_inputs()
								_UpperCamelCase											=   image_processing(A_			,     A_			,     return_tensors="pt"   )
								self.assertTrue(encoding["labels"].min().item() >= 0   )
								self.assertTrue(encoding["labels"].max().item() <= 1_50   )

								_UpperCamelCase											=   True
								_UpperCamelCase											=   image_processing(A_			,     A_			,     return_tensors="pt"   )
								self.assertTrue(encoding["labels"].min().item() >= 0   )
								self.assertTrue(encoding["labels"].max().item() <= 2_55   )



