Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

A Pell's equation is given in the following way:

$ nx^2 + 1 = y^2 $

According to mathematical rules and the website http://www-groups.dcs.st-and.ac.uk/~history/HistTopics/Pell.html it can also be written like this:

$y^2 - nx^2 = 1$

The equation Bhaskara II uses as an example is:

$y^2 - 61x^2 = 1$

So you have to find x and y. A solution I found was $x = 226153980, y = 1766319049$. I tested the correctness of the result with the first version of the Pell's equation (see above):

$ 61x^2 + 1 = y^2 $

$ 61 * 226153980 + 1 = 1766319049^2 \Rightarrow y = 1766319049 $

So the result is correct. Now let's try it with the second way of writing it:

$ y^2 - 61x^2 = 1 $

$ 1766319049^2 - 61 * 226153980^2 = 0 \neq 1 $ (According to Google)

So the first equation proves the correctness and the second one? What's wrong with my logic or approach that the obviously correct solution equals 0?

share|improve this question
1  
1  
Looks like a google rounding error. –  Thomas Andrews Dec 12 '11 at 15:48
1  
Yes, it looks like google isn't doing arbitrary-precision arithmetic - if you just enter "61*226153980^2," it gives a response of $3.11988298 × 10^{18}$. –  Thomas Andrews Dec 12 '11 at 15:54
1  
Thank you! It really seems like the precision arithmetic is the problem here. My little C++ program also confirmed me that the result is 1. However, it's always nice to learn things. And this time I learned: Don't trust Google or the calculator for big numbers. ;) –  Paul Engstler Dec 12 '11 at 15:56
    
@Paul Engstler: If we casually use a calculator or computer to subtract two large nearly equal numbers, the answer cannot be trusted. –  André Nicolas Dec 12 '11 at 18:26

3 Answers 3

up vote 6 down vote accepted

Well, it seems Google is wrong, for if I paste the same line in my haskell interpreter, I get 1. Although I'm surprised about it, it probably means google does some rounding when numbers get too large.

share|improve this answer
1  
I just tested it with Python and my calculator. Python fails completely (probably it misinterprets the results data type) and my calculator shows 0. I'm going to test it now with C++. –  Paul Engstler Dec 12 '11 at 15:52
    
I wonder which version of Python you are using and what statement you are executing? On Python 2.6.1, 17663190492 - 61*2261539802 gives the correct result 1L. –  user12861 Dec 12 '11 at 17:48
    
@Paul: Maybe you used ^ in Python, it means xor (not exponentiation) –  sdcvvc Dec 12 '11 at 19:03
    
Yes, I tested it some minutes later with pow. That worked. I know that "^" exists in other languages. But whatever. Thank you. :) –  Paul Engstler Dec 12 '11 at 20:05

It should be easy to see that Google is wrong in this instance by looking at the last digit of what your answer should be. The first number ends in 9 which, when squared, will end in 1. And you're subtracting a multiple of 10. So just by simple inspection, the answer should have a last digit of 1.

share|improve this answer

I did not notice this one at the time. Start with $$ 29718^2 - 61 \cdot 3805^2 = -1.$$ Then use this version of BRAHMAGUPTA'S IDENTITY that is easily verified by hand, $$ \left( a^2 - 61 b^2 \right)^2 = \left( a^2 + 61 b^2 \right)^2 - 61 \left( 2 a b\right)^2, $$ using $$ a = 29718, \; \; b = 3805.$$ We find $$ a^2 + 61 b^2 = 1,766,319,049 $$ and $$ 2 a b = 226,153,980. $$ So $$ 1766319049^2 - 61 \cdot 226153980^2 = \left( -1 \right)^2 = 1 $$ after erasing the commas.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.