Abstract: QMMM is a computer program for performing geometry optimizations and calculating single-point energies, gradients, and/or Hessians using combined quantum mechanics (QM) and molecular mechanics (MM) methods. Four types of embedding schemes are available. The first is mechanical embedding, where calculations for the QM region are done in the gas phase; this embedding scheme is equivalent to the original integrated molecular-orbital molecular-mechanics (IMOMM) scheme. The second is electrostatic embedding, where the QM region is polarized by the MM region. The third is polarizable-boundary embedding, where the QM and MM regions polarized each other until self-consistency is reached for their charge distributions. The forth is flexible-boundary embedding, where both mutual polarization and partial charge transfer between the QM and MM regions are accounted for in a self-consistent manner. The boundary between the QM and MM regions, if going through one or more covalent bonds, can be treated by a number of schemes, including the redistributed charge (RC) scheme, the redistributed charge and dipole (RCD) schemes, the polarized-boundary RC (PBRC) scheme, and the polarized-boundary RCD (PBRCD) scheme. All of these schemes use link atoms to saturate the dangling bonds (if any) for the QM subsystem, and they use redistributed MM point charges to mimic a hybrid orbital on the MM host atom (called the M1 atom) that is replaced by the link atom. In the RCD treatment, the value of the redistributed charge and the value of the charge on the M2 atom, i.e., the MM atom that is directly bonded to the M1 atom, are further modified to preserve the M1-M2 bond dipole. The PBRC and PBRCD schemes account for the polarization of the MM subsystem due to the QM subsystem near the boundary; the polarization of the MM subsystem is realized by adjusting the secondary-subsystem atomic partial charges in the embedded-QM calculations according to the principle of electronegativity equalization and the principle of charge conservation. (The flexible-boundary embedding scheme is currently only implemented for QM/MM calculations where the QM and MM subsystems do not covalently bonded to each other.) Some other schemes used for QM/MM boundary treatments are also implemented; in particular, besides the mechanical embedding scheme, we have also implemented the straight electrostatic embedding scheme, three eliminated-charge schemes, and the shifted-charge scheme. QMMM calls a QM package and an MM package to perform required single-level calculations. The package was tested with GAMESS, Gaussian03, and ORCA for the QM package and TINKER for the MM package; it contains 132 sample runs that can be used to learn and test the program.