In this paper, we describe a general implementation of CC/EOM-CC methods that allows users to perform calculations in either single or double precision. We implemented both the standard variant and one using Cholesky decomposition (CD) or resolution-of-the-identity (RI) of electron-repulsion integrals. In addition, our implementation allows one to follow up a singleprecision calculation with a clean-up step in which the full double-precision accuracy can be recovered. The code is based on the libtensor 29 and libxm 30 libraries for many-body electronic structure calculations. The production-level code is implemented in the Q-Chem electronic structure package. 2 Algorithms and implementation details Libtensor 29 was developed to provide a high-level interface for tensor operations and to deliver efficient performance. The library has been used to implement a large number of CC, 2-4 EOM-CC, and ADC (algebraic diagrammatic construction) methods for calculating energies, properties, and nuclear gradients in Q-Chem. Libtensor supports tensor symmetries, block-sparcity, several contraction algorithms, different BLAS implementations, and several computational backends. We extended the libtensor library to incorporate single-precision operations by generalizing all tensor operations for the general element type. Fig. gives an example of the code. The code is available in the original repository on github. The numerical tests presented in this paper were performed with a developer version of Q-Chem and the template<size_t N, typename T> class bto_copy : public additive_gen_bto<N, typename bto_traits<T>::bti_traits>, public noncopyable { // .... // Declaration of the templated class } template<size_t N> using btod_copy = bto_copy<N, double>; Fig. shows an overview of the CCSD and EOM-CCSD workflows. In our implementation, we compute all integrals and solve SCF equations in double precision; the integral transformation step is also performed in double precision. We then convert the tensors (integrals) to single precision and perform all tensor operations (contractions, additions, etc.) in the CCSD/EOM-CCSD calculations using single precision. In the RI/CD variants, we also employ the single precision algorithm at the CCSD step. Once the CCSD equations converge in single precision, the procedure can switch to double precision to perform clean-up iterations to recover the double-precision result. We follow the same strategy for Λ-amplitudes. We also implemented single-precision calculations of various density matrices needed for property and nuclear gradient calculations.