Why is this single multiplication require more multiplicative depth?

Hi, I need help, I have this simple code, a single ciphertext-ciphertext multiplication:

int main(int argc, char* argv[]) {
    uint32_t batchSize = 8;
    CCParams<CryptoContextCKKSRNS> parameters;
    parameters.SetMultiplicativeDepth(2);
    parameters.SetScalingModSize(50);
    parameters.SetScalingTechnique(FIXEDMANUAL);
    parameters.SetBatchSize(batchSize);

    CryptoContext<DCRTPoly> cc = GenCryptoContext(parameters);

    cc->Enable(PKE);
    cc->Enable(KEYSWITCH);
    cc->Enable(LEVELEDSHE);

    auto keys = cc->KeyGen();
    cc->EvalMultKeyGen(keys.secretKey);

    std::vector<double> x = {100.0, 100.01, 100.02, 100.03, 100.04, 100.05, 100.06, 100.07};
    Plaintext ptxt        = cc->MakeCKKSPackedPlaintext(x);
    auto c = cc->Encrypt(keys.publicKey, ptxt);

    auto c2 = cc->EvalMult(c, c);
    auto cRes = cc->Rescale(c2);

    Plaintext result;
    cc->Decrypt(keys.secretKey, cRes, &result);
    result->SetLength(batchSize);
    std::cout << "Results = " << result << std::endl;
    return 0;
}

It only has one multiplication, but when I set the SetMultiplicativeDepth(1) it returns the wrong results. I changed the FIXEDMANUAL to FIXEDAUTO and removed the rescaling process, but it still behaves the same. Is this expected?

Thank you in advance!

First, you are performing a ciphertext-ciphertext multiplication, not a plaintext-ciphertext multiplication.

Second, the results have the magnitude too large to be able to be decrypted when multiplicative depth is set to 1 and the moduli are set the way they are. You need to ensure that when decryption happens on level 0, the magnitude of the result is at most FirstModSize - ScalingModSize bits. You can check that either decreasing the inputs, e.g., divide by 10, or increasing the difference between FirstModSize (by default set to 60 bits) and the ScalingModSize, e.g., by setting the latter to 40 bits.

See also EvalAdd does not add in some cases - #7 by ypolyakov.

Thank you for the answer and the referenced discussion is clear now!

I am sorry that I wrote the question (code) while checking other cases, and it turns out it also happened in Ciphertext-ciphertext multiplication. I will update the question and title for future reference.