Your if statements are not going to do what you think they're going to do:
forward.x < -1.0f && forward.x < 1.0f
The second condition is irrelevant. If x < -1, your if statement is fine. Both conditions will evaluate true. However, there is no point to the second condition. If you're trying to catch x > 0 and < 1, that second condition will never execute because any positive number will cause the first condition to fail.
0 degres is North.
90 degrees is East.
180 degrees is South.
270 degrees is West.
For four directions, you want to test +/- 45 degrees.
e.g. If a heading is > 315 (360-45) degrees and < 45 degees, then that is a "northerly" direction.
If you want to use NE, SE, SW and NW, then you want to break your compass into 8 sectors. Hint: +/- 22.5 degrees