
from typing import TYPE_CHECKING

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


SCREAMING_SNAKE_CASE							:Dict										=    {
    "configuration_poolformer": [
        "POOLFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP",
        "PoolFormerConfig",
        "PoolFormerOnnxConfig",
    ]
}

try:
					if not is_vision_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					SCREAMING_SNAKE_CASE							:int										=    ["PoolFormerFeatureExtractor"]
					SCREAMING_SNAKE_CASE							:str										=    ["PoolFormerImageProcessor"]

try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					SCREAMING_SNAKE_CASE							:List[str]										=    [
					    "POOLFORMER_PRETRAINED_MODEL_ARCHIVE_LIST",
					    "PoolFormerForImageClassification",
					    "PoolFormerModel",
					    "PoolFormerPreTrainedModel",
					]


if TYPE_CHECKING:
					from .configuration_poolformer import (
					    POOLFORMER_PRETRAINED_CONFIG_ARCHIVE_MAP,
					    PoolFormerConfig,
					    PoolFormerOnnxConfig,
					)

					try:
										if not is_vision_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .feature_extraction_poolformer import PoolFormerFeatureExtractor
										from .image_processing_poolformer import PoolFormerImageProcessor

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_poolformer import (
										    POOLFORMER_PRETRAINED_MODEL_ARCHIVE_LIST,
										    PoolFormerForImageClassification,
										    PoolFormerModel,
										    PoolFormerPreTrainedModel,
										)


else:
					import sys

					SCREAMING_SNAKE_CASE							:List[Any]										=    _LazyModule(__name__, globals()['__file__'], _import_structure)


from math import log

from scipy.constants import Boltzmann, physical_constants

SCREAMING_SNAKE_CASE							:Dict										=    300  # TEMPERATURE (unit = K)


def 						UpperCAmelCase      (     a_		,       a_		,       a_		,       )		->     float:







				"""simple docstring"""



				if donor_conc <= 0:
								raise ValueError("Donor concentration should be positive"						)
				elif acceptor_conc <= 0:
								raise ValueError("Acceptor concentration should be positive"						)
				elif intrinsic_conc <= 0:
								raise ValueError("Intrinsic concentration should be positive"						)
				elif donor_conc <= intrinsic_conc:
								raise ValueError(
								    "Donor concentration should be greater than intrinsic concentration"						)
				elif acceptor_conc <= intrinsic_conc:
								raise ValueError(
								    "Acceptor concentration should be greater than intrinsic concentration"						)
				else:
								return (
								    Boltzmann
								    * T
								    * log((donor_conc * acceptor_conc) / intrinsic_conc**2						)
								    / physical_constants["electron volt"][0]
								)


if __name__ == "__main__":
					import doctest

					doctest.testmod()
