Важнейшими строками являются
zr = zrSquared - ziSquared + cr;
zi = 2.0*(zr*zi) + ci;
Во втором присваивании используется уже заново вычисленный zr
и, следовательно, неверное значение.Вы можете просто поменять обе строки:
zi = 2.0*(zr*zi) + ci;
zr = zrSquared - ziSquared + cr;