Ints and floats are represented differently and so, if we want to put an integer array into floating point registers, we need to have casts. If you were to simply call SetFloatArray, you would get nonsense values in the floating point registers.
Even using casts will fall foul of the C aliasing rules - which mean that the compiler can assume that a read of type will not be modified by a write to a different type so can be reorderd (unless one of the types is 'char').
Exactly. Which is why I am not ever casting int pointers to float pointers as Rico suggested. Instead I'm looping through the array and casting each int to a float, which should invoke the machinery necessary to convert from the bit representation of an int to that of a float.
Not only that, but there are systems that will fault is an invalid FP bit pattern is loaded into an FP register.
If I'm casting ints to floats (and not int pointers to float pointers) I don't see how this could be an issue.
Travis