use C99 complex instead of structs