1

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?

Grigory M
  • 17,478
Paul
  • 121
  • 1
    see http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – deinst Dec 12 '11 at 15:48
  • 2
    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 Dec 12 '11 at 15:56
  • @Paul: 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
  • Wolfram gives the right result . http://www.wolframalpha.com/input/?i=1766319049%5E2-61%28226153980%5E2%29 – Rashmirathi Dec 12 '11 at 18:32

3 Answers3

11

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.

Mike
  • 13,318
6

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.

Lieven
  • 1,524
  • 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 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 Dec 12 '11 at 20:05
1

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.

Will Jagy
  • 139,541