zeta(2)

The sum of the reciprocals of the squares of the positive integers is pi squared over six. About 1.644934 .

This number is also referred to as zeta(2). The question arises as to whether these squares can all be packed into a 1 by zeta(2) rectangle.
See
for some discussion about this in 2004. At the time I had packed the first million squares into the rectangle.

I have now packed the first 20,000,000 squares into the rectangle and I can make simple animations of the packing.
Here is a zoom into the smallest square...

Zeta_2 packing


Here are some close-ups of the packing...
The magnification specifies how many pixels would make up the "1" side of the square.
The origin is at the top left hand corner of the image and the y-axis runs vertically downwards.

Magnification 600:
The smallest square visible in the image is 1/120 .

Magnification 1200:
The smallest square visible in the image is 1/240 .

Magnification 9600:
The smallest square visible in the image is 1/1,919 .

Magnification 19,200:
The smallest square visible in the image is 1/3,840 .

Magnification 614,400:
The smallest square visible in the image is 1/119,149 .

Magnification 125,000,000:
The smallest square visible in the image is 1/19,997,172 .

The color of square 1/n is derived from digits 8 to 13 of the value of sin(n). [n being in radians]
So, for any fixed n, square 1/n always has the same color.

The packing process was carried out by a C# program that I wrote, using exact rational arithmetic. I used the GNU Multiple Precision Arithmetic Library, GMP.

The 20,000,000 square run took about 4 hours.

The long side of the rectangle was effectively defined as being pi squared over six, truncated to 100 places of decimals.

During a packing run the program produces a text file which defines the positions of all the squares. These positions are represented as double precision floating point numbers. Such numbers are sufficient for producing the graphics, but not, of course, for the packing process itself.

Two of these data files (for 1,000 squares and also for 400,000 squares) are available here:

Here is part of the million square data file...
All decimal values are given to 16 places of decimals, and the decimal point is omitted. Due to the limited precision of double precision floating point numbers the very last decimal digit will often be wrong.

============================================
A,100,2,1,1000000
B,1,00000000000000000,00000000000000000
B,2,10000000000000000,00000000000000000
B,3,10000000000000000,05000000000000000
B,4,13333333333333332,05000000000000000
    ****    999,992 lines omitted here    ****
B,999997,16106798784434001,07480841529710908
B,999998,16106798784434001,07480851529740908
B,999999,16106798784434001,07480861529760908
B,1000000,16106798784434001,07480871529770908
C,16106798784434001,07480881529770908,00000010002640051,00003715085655267
C,16449330665588162,02146269032023532,00000010002894103,00000065618553885
C,16428560932662814,07462729366371656,00000119505464659,00000010003320788
C,16388256708015090,07477093981222190,00000010004245044,00000999110086298
C,14729457137860295,09999989982942381,00000133663920499,00000010017057618
C,16443787816176540,07493775952922735,00005552852305733,00000010017711313
C,16443126668754953,07493785970634049,00006213999727324,00006214029365947
Z,2290308884
============================================

The "A" line is a header line. The fields have the following significance:

100: zeta(2) was defined to 100 places of decimals
2: the packing is in two dimensions (the program will perform exact packing in any number of dimensions)
1: the size of the largest square
1000000: the last square is 1/1,000,000

Each "B" line defines one square.
So
B,4,13333333333333332,05000000000000000
indicates that the corner nearest the origin of the square with side 1/4 has coordinates
(1.3333333333333332, 0.5000000000000000)

The lines beginning "C" define what I call "slivers": sub-rectangles of the original rectangle with a short side at least as long as the side of the smallest square, which are unused after the packing process is complete. In this case there are exactly 7 slivers.
So
C,16106798784434001,07480881529770908,00000010002640051,00003715085655267
indicates that there is a sliver at (1.6106798784434001, 0.7480881529770908) with sides 0.0000010002640051 and  0.0003715085655267 .

The "Z" is the last line. The "2290308884" is a simple checksum. The sum of all the characters in the file (excluding the newline characters) is 2,290,308,884.