





"""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()







"""simple docstring"""





def  __A   (_SCREAMING_SNAKE_CASE     ,   _SCREAMING_SNAKE_CASE			)					->float:





  """simple docstring"""


  if discount_rate < 0:
    raise ValueError('Discount rate cannot be negative'			)
  if not cash_flows:
    raise ValueError('Cash flows list cannot be empty'			)
  lowerCAmelCase__			:Union[str, Any]											=							sum(
      cash_flow / ((1 + discount_rate) ** i) for i, cash_flow in enumerate(_SCREAMING_SNAKE_CASE			)			)
  return round(_SCREAMING_SNAKE_CASE     ,   ndigits=2			)


if __name__ == "__main__":
  import doctest

  doctest.testmod()
