Because you used too much punctuation.
Because you used a library that you did not provide a link to.
Because you posted your code incorrectly.
Because you have unrealistic expectations.
Shall I go on?
If the result of that library being used is to store values in an array that is in PROGMEM, you need to use the proper functions or methods to access those values. The standard array operator ([]) may, or may not, be overloaded. Without knowing anything about the library, we can't tell you.
The problem appears to be a compiler bug. The other possibility is const is not applied correctly to operator[] but that seems extremely unlikely because print works correctly.
I believe Mikal Hart typically uses a much newer version of avr-gcc toolset which, presumably, will have fewer bugs. I suggest replacing the toolset with the one available from Atmel.
The difference is that the original version has to actually store the result (x and y) for later use # but your version uses the result immediately. I think the gcc folks call that "register spill"; that's probably where the bug lies.
# That's not entirely accurate. If the compiler performs reorder optimizations the need to store the result can be eliminated. But I have seen no evidence that the Arduino version of gcc performs reorder optimizations.