
from math import log

from scipy.constants import Boltzmann, physical_constants

_A   =			3_00  # TEMPERATURE (unit = K)



def 						lowercase_      (       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()



from __future__ import annotations



def 						lowercase_      (       A__			,		A__			,		A__		)							->							int | float:
    """simple docstring"""

    if len(A__		) == 0:
        raise ValueError("find_max() arg is an empty sequence"		)
    if (
        left >= len(A__		)
        or left < -len(A__		)
        or right >= len(A__		)
        or right < -len(A__		)
    ):
        raise IndexError("list index out of range"		)
    if left == right:
        return nums[left]
    snake_case								= (left + right) >> 1  # the middle
    snake_case								= find_max(A__			,		A__			,		A__		)  # find max in range[left, mid]
    snake_case								= find_max(A__			,		mid + 1			,		A__		)  # find max in range[mid + 1, right]

    return left_max if left_max >= right_max else right_max


if __name__ == "__main__":
   import doctest

   doctest.testmod(verbose=True)

