
from __future__ import annotations





def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__    ):
				if b == 0:
								return (1, 0)
				((lowerCamelCase_)	,    (lowerCamelCase_))						=			extended_euclid(lowerCamelCase__	, a % b    )
				lowerCamelCase_						=			a // b
				return (y, x - k * y)





def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__    ):
				((lowerCamelCase_)	,    (lowerCamelCase_))						=			extended_euclid(lowerCamelCase__	, lowerCamelCase__    )
				lowerCamelCase_						=			na * na
				lowerCamelCase_						=			ra * x * na + ra * y * na
				return (n % m + m) % m





def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__    ):
				((lowerCamelCase_)	,    (lowerCamelCase_))						=			extended_euclid(lowerCamelCase__	, lowerCamelCase__    )
				if b < 0:
								lowerCamelCase_						=			(b % n + n) % n
				return b





def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__    ):
				lowerCamelCase_	,    lowerCamelCase_						=			invert_modulo(lowerCamelCase__	, lowerCamelCase__    ), invert_modulo(lowerCamelCase__	, lowerCamelCase__    )
				lowerCamelCase_						=			na * na
				lowerCamelCase_						=			ra * x * na + ra * y * na
				return (n % m + m) % m


if __name__ == "__main__":
			from doctest import testmod

			testmod(name='''chinese_remainder_theorem''', verbose=True)
			testmod(name='''chinese_remainder_theorem2''', verbose=True)
			testmod(name='''invert_modulo''', verbose=True)
			testmod(name='''extended_euclid''', verbose=True)









"""simple docstring"""





from __future__ import annotations

__A											=		1.6_021e-19  # units = C
def  __A   (_SCREAMING_SNAKE_CASE     ,   _SCREAMING_SNAKE_CASE     ,   _SCREAMING_SNAKE_CASE     ,   )					->tuple[str, float]:





  """simple docstring"""


  if (conductivity, electron_conc, mobility).count(0			) != 1:
    raise ValueError('You cannot supply more or less than 2 values'			)
  elif conductivity < 0:
    raise ValueError('Conductivity cannot be negative'			)
  elif electron_conc < 0:
    raise ValueError('Electron concentration cannot be negative'			)
  elif mobility < 0:
    raise ValueError('mobility cannot be negative'			)
  elif conductivity == 0:
    return (
        "conductivity",
        mobility * electron_conc * ELECTRON_CHARGE,
    )
  elif electron_conc == 0:
    return (
        "electron_conc",
        conductivity / (mobility * ELECTRON_CHARGE),
    )
  else:
    return (
        "mobility",
        conductivity / (electron_conc * ELECTRON_CHARGE),
    )


if __name__ == "__main__":
  import doctest

  doctest.testmod()
