w1
1.1 1.2 1.3
2.1 2.2 2.3
3.1 3.2 3.3

x1
1
2
3

b1
1.1
2.1
3.1

w1x1
7.4
13.4
19.4


w1x1b1
8.5
15.5
22.5




	C1
1	15.8
2	15.2
3	14.6

3.6 13.2 28.8
4.7 15.3 31.9 




Ciphertext getIndexVector(cencryptor_t &encr, cevaluator_t &eval, Ciphertext vector_ct, int slot_count, int index)
{
    vector<double> index_vector(slot_count, 0ULL);
    // vector<double> index_vector;
    index_vector[index] = 1ULL;

    Plaintext index_vector_pt;
    init_plaintext_ckks(encr, index_vector, index_vector_pt);

    multiply_plain_inplace_ckks(eval, vector_ct, index_vector_pt);
    relinearize_inplace_ckks(eval, vector_ct);
    rescale_to_next_inplace_ckks(eval, vector_ct);
    vector_ct.scale() = pow(2.0, 40);

    Ciphertext result = vector_ct;
    for (size_t i = 0; i < slot_count; i++)
    {
        /* code */
        // eval.eval->rotate_rows_inplace(vector_ct, 1, eval.gk);
        eval.eval->rotate_vector(vector_ct, 1, eval.gk, vector_ct);

        relinearize_inplace_ckks(eval, vector_ct);
        rescale_to_next_inplace_ckks(eval, vector_ct);
        vector_ct.scale() = pow(2.0, 40);

        add_ciphertext_ckks(eval, result, vector_ct, result);

        relinearize_inplace_ckks(eval, vector_ct);
        rescale_to_next_inplace_ckks(eval, vector_ct);
        vector_ct.scale() = pow(2.0, 40);
    }
    return result;
}




1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 
/ANN_encrypt_v1 "1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1" "x" ./ "25" keys/


time ./ANN_evaluate_v1 testSet2/w1.csv testSet2/w2.csv testSet2/w3.csv testSet2/w4.csv testSet2/x.ct testSet2/b1.csv testSet2/b2.csv testSet2/b3.csv testSet2/b4.csv "testSet2/test" ./ 3 keys/

time ./ANN_decrypt_v1 testSet2/test.ct 3 keys/

time ./ANN_encrypt_v1 "1 2 3" "x" ./testSet2/ "3" keys/

./ANN_genkey_v1 keys/



time ./ANN_evaluate_v1 testSet1/w1.csv testSet1/w2.csv testSet1/w3.csv testSet1/w4.csv testSet1/x.ct testSet1/b1.csv testSet1/b2.csv testSet1/b3.csv testSet1/b4.csv "testSet1/test" ./ 25 keys/

time ./ANN_decrypt_v1 testSet1/test.ct 25 keys/

time ./ANN_encrypt_v1 "1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1" "x" ./testSet1/ "25" keys/

./ANN_genkey_v1 keys/