Why my "double" type data is always positive?

I am working on coremark-pro radix2 validation test case porting. During this process, I found this issue below. With code below. 

double test=-3.5;
printf("test is %e\n",test);

with CA53 core, I got print out "test is 3.500000e+00". with cm40 core, I got print out "test is -3.500000e+00". I used same complier to compile the code.

Why CA53 have a wrong double value, and lead to my testcase fail to work properly?? thanks in advance