whatever proof gave you that answer, I would think allows this to happen. I wasn't aware that that was a true statement but what ever reasoning allows for that gives the answer to your question.
Why? Let's say pow(x,y) == pow(c,d) would always return true. No matter what x,y,c and d are. Always true. Clearly the statement "pow(x,y) == pow(c,d) will always return true if the resulting numbers are really equal" would still be true, but the program would most certainly not produce the desired output.
What I'm trying to get at is that pow(a, == pow(c,d) never returning false when it should be returning true, is only half the battle. If it returns true only in one case where it should be returning false, your count will still be of by one.
So if for example for some c and d c^d would be 2^53+1, you'd get pow(2,53) == pow(c, d) being true even though it should be false, and your count would be off by one. And I'm wondering whether there's a mathematical reason that nothing like that happens here or whether it's just chance.
This post has been edited by sepp2k: 27 May 2012 - 01:06 AM