




from __future__ import annotations



def       UpperCAmelCase__  (     lowerCamelCase,			lowerCamelCase,			lowerCamelCase,			):
  if (electron_conc, hole_conc, intrinsic_conc).count(0   ) != 1:
    raise ValueError("You cannot supply more or less than 2 values"   )
  elif electron_conc < 0:
    raise ValueError("Electron concentration cannot be negative in a semiconductor"   )
  elif hole_conc < 0:
    raise ValueError("Hole concentration cannot be negative in a semiconductor"   )
  elif intrinsic_conc < 0:
    raise ValueError(
        "Intrinsic concentration cannot be negative in a semiconductor"   )
  elif electron_conc == 0:
    return (
        "electron_conc",
        intrinsic_conc**2 / hole_conc,
    )
  elif hole_conc == 0:
    return (
        "hole_conc",
        intrinsic_conc**2 / electron_conc,
    )
  elif intrinsic_conc == 0:
    return (
        "intrinsic_conc",
        (electron_conc * hole_conc) ** 0.5,
    )
  else:
    return (-1, -1)


if __name__ == "__main__":
     import doctest

     doctest.testmod()









def       UpperCAmelCase__  (     lowerCamelCase,			lowerCamelCase   ):
  if discount_rate < 0:
    raise ValueError("Discount rate cannot be negative"   )
  if not cash_flows:
    raise ValueError("Cash flows list cannot be empty"   )
  lowercase    :Dict      	=						sum(
      cash_flow / ((1 + discount_rate) ** i) for i, cash_flow in enumerate(lowerCamelCase   )   )
  return round(lowerCamelCase,			ndigits=2   )


if __name__ == "__main__":
     import doctest

     doctest.testmod()



