======== #1 declaration ========

gmp.mpz(0) .. 0L
gmp.mpq(0) .. 0Lr
gmp.mpf(0) .. 0.L
0L .. 0L
0Lr .. 0Lr
0.L .. 0.L
gmp.mpz(1) .. 1L
gmp.mpq(1) .. 1Lr
gmp.mpf(1) .. 1.L
1L .. 1L
1Lr .. 1Lr
1.L .. 1.L
gmp.mpz(-1) .. -1L
gmp.mpq(-1) .. -1Lr
gmp.mpf(-1) .. -1.L
-1L .. -1L
-1Lr .. -1Lr
-1.L .. -1.L
gmp.mpz(314) .. 314L
gmp.mpq(314) .. 314Lr
gmp.mpf(314) .. 314.L
314L .. 314L
314Lr .. 314Lr
314.L .. 314.L
gmp.mpz('314') .. 314L
gmp.mpq('314') .. 314Lr
gmp.mpf('314') .. 314.L
'314'.cast@mpz() .. 314L
'314'.cast@mpq() .. 314Lr
'314'.cast@mpf() .. 314.L
3.14L .. 3.14L
123456789012345678901234567890123456789012345678901234567890L .. 123456789012345678901234567890123456789012345678901234567890L
123456789012345678901234567890123456789012345678901234567890Lr .. 123456789012345678901234567890123456789012345678901234567890Lr
0777777 .. 262143
0b10101010 .. 170
0xffffffff .. 4294967295

======== #2 generic test for unary operators ========

gmp.mpz
+3L .. 3L
-3L .. -3L
~3L .. -4L
!3L .. false
gmp.mpq
+3Lr .. 3Lr
-3Lr .. -3Lr
~3Lr .. TypeError: can't evaluate (~ gmp.mpq)
!3Lr .. false
gmp.mpf
+3.L .. 3.L
-3.L .. -3.L
~3.L .. TypeError: can't evaluate (~ gmp.mpf)
!3.L .. false

======== #3 generic test for binary operators ========

gmp.mpz, gmp.mpz
3L + 4L .. 7L
3L - 4L .. -1L
3L * 4L .. 12L
3L / 4L .. 0.75L
3L % 4L .. 3L
3L ** 4L .. TypeError: can't evaluate (gmp.mpz ** gmp.mpz)
3L == 4L .. false
3L < 4L .. true
3L > 4L .. false
3L <= 4L .. true
3L >= 4L .. false
3L <=> 4L .. -1
3L in 4L .. false
3L & 4L .. 0L
3L | 4L .. 7L
3L ^ 4L .. 7L
3L << 4L .. TypeError: can't evaluate (gmp.mpz << gmp.mpz)
3L >> 4L .. TypeError: can't evaluate (gmp.mpz >> gmp.mpz)
3L || 4L .. 3L
3L && 4L .. 4L
3L => 4L .. TypeError: can't evaluate (gmp.mpz => gmp.mpz)
gmp.mpz, gmp.mpq
3L + 4Lr .. 7Lr
3L - 4Lr .. -1Lr
3L * 4Lr .. 12Lr
3L / 4Lr .. 3/4Lr
3L % 4Lr .. TypeError: can't evaluate (gmp.mpz % gmp.mpq)
3L ** 4Lr .. TypeError: can't evaluate (gmp.mpz ** gmp.mpq)
3L == 4Lr .. false
3L < 4Lr .. true
3L > 4Lr .. false
3L <= 4Lr .. true
3L >= 4Lr .. false
3L <=> 4Lr .. -1
3L in 4Lr .. false
3L & 4Lr .. TypeError: can't evaluate (gmp.mpz & gmp.mpq)
3L | 4Lr .. TypeError: can't evaluate (gmp.mpz | gmp.mpq)
3L ^ 4Lr .. TypeError: can't evaluate (gmp.mpz ^ gmp.mpq)
3L << 4Lr .. TypeError: can't evaluate (gmp.mpz << gmp.mpq)
3L >> 4Lr .. TypeError: can't evaluate (gmp.mpz >> gmp.mpq)
3L || 4Lr .. 3L
3L && 4Lr .. 4Lr
3L => 4Lr .. TypeError: can't evaluate (gmp.mpz => gmp.mpq)
gmp.mpz, gmp.mpf
3L + 4.L .. 7.L
3L - 4.L .. -1.L
3L * 4.L .. 12.L
3L / 4.L .. 0.75L
3L % 4.L .. TypeError: can't evaluate (gmp.mpz % gmp.mpf)
3L ** 4.L .. TypeError: can't evaluate (gmp.mpz ** gmp.mpf)
3L == 4.L .. false
3L < 4.L .. true
3L > 4.L .. false
3L <= 4.L .. true
3L >= 4.L .. false
3L <=> 4.L .. -1
3L in 4.L .. false
3L & 4.L .. TypeError: can't evaluate (gmp.mpz & gmp.mpf)
3L | 4.L .. TypeError: can't evaluate (gmp.mpz | gmp.mpf)
3L ^ 4.L .. TypeError: can't evaluate (gmp.mpz ^ gmp.mpf)
3L << 4.L .. TypeError: can't evaluate (gmp.mpz << gmp.mpf)
3L >> 4.L .. TypeError: can't evaluate (gmp.mpz >> gmp.mpf)
3L || 4.L .. 3L
3L && 4.L .. 4.L
3L => 4.L .. TypeError: can't evaluate (gmp.mpz => gmp.mpf)
gmp.mpz, number
3L + 4 .. 7L
3L - 4 .. -1L
3L * 4 .. 12L
3L / 4 .. 0.75L
3L % 4 .. 3L
3L ** 4 .. TypeError: can't evaluate (gmp.mpz ** number)
3L == 4 .. false
3L < 4 .. true
3L > 4 .. false
3L <= 4 .. true
3L >= 4 .. false
3L <=> 4 .. -1
3L in 4 .. false
3L & 4 .. 0L
3L | 4 .. 7L
3L ^ 4 .. 7L
3L << 4 .. 48L
3L >> 4 .. 0L
3L || 4 .. 3L
3L && 4 .. 4
3L => 4 .. TypeError: can't evaluate (gmp.mpz => number)
gmp.mpz, rational
3L + 4r .. 7Lr
3L - 4r .. -1Lr
3L * 4r .. 12Lr
3L / 4r .. 3/4Lr
3L % 4r .. TypeError: can't evaluate (gmp.mpz % rational)
3L ** 4r .. TypeError: can't evaluate (gmp.mpz ** rational)
3L == 4r .. false
3L < 4r .. true
3L > 4r .. false
3L <= 4r .. true
3L >= 4r .. false
3L <=> 4r .. -1
3L in 4r .. false
3L & 4r .. TypeError: can't evaluate (gmp.mpz & rational)
3L | 4r .. TypeError: can't evaluate (gmp.mpz | rational)
3L ^ 4r .. TypeError: can't evaluate (gmp.mpz ^ rational)
3L << 4r .. TypeError: can't evaluate (gmp.mpz << rational)
3L >> 4r .. TypeError: can't evaluate (gmp.mpz >> rational)
3L || 4r .. 3L
3L && 4r .. 4r
3L => 4r .. TypeError: can't evaluate (gmp.mpz => rational)
gmp.mpq, gmp.mpz
3Lr + 4L .. 7Lr
3Lr - 4L .. -1Lr
3Lr * 4L .. 12Lr
3Lr / 4L .. 3/4Lr
3Lr % 4L .. TypeError: can't evaluate (gmp.mpq % gmp.mpz)
3Lr ** 4L .. TypeError: can't evaluate (gmp.mpq ** gmp.mpz)
3Lr == 4L .. false
3Lr < 4L .. true
3Lr > 4L .. false
3Lr <= 4L .. true
3Lr >= 4L .. false
3Lr <=> 4L .. -1
3Lr in 4L .. false
3Lr & 4L .. TypeError: can't evaluate (gmp.mpq & gmp.mpz)
3Lr | 4L .. TypeError: can't evaluate (gmp.mpq | gmp.mpz)
3Lr ^ 4L .. TypeError: can't evaluate (gmp.mpq ^ gmp.mpz)
3Lr << 4L .. TypeError: can't evaluate (gmp.mpq << gmp.mpz)
3Lr >> 4L .. TypeError: can't evaluate (gmp.mpq >> gmp.mpz)
3Lr || 4L .. 3Lr
3Lr && 4L .. 4L
3Lr => 4L .. TypeError: can't evaluate (gmp.mpq => gmp.mpz)
gmp.mpq, gmp.mpq
3Lr + 4Lr .. 7Lr
3Lr - 4Lr .. -1Lr
3Lr * 4Lr .. 12Lr
3Lr / 4Lr .. 3/4Lr
3Lr % 4Lr .. TypeError: can't evaluate (gmp.mpq % gmp.mpq)
3Lr ** 4Lr .. TypeError: can't evaluate (gmp.mpq ** gmp.mpq)
3Lr == 4Lr .. false
3Lr < 4Lr .. true
3Lr > 4Lr .. false
3Lr <= 4Lr .. true
3Lr >= 4Lr .. false
3Lr <=> 4Lr .. -1
3Lr in 4Lr .. false
3Lr & 4Lr .. TypeError: can't evaluate (gmp.mpq & gmp.mpq)
3Lr | 4Lr .. TypeError: can't evaluate (gmp.mpq | gmp.mpq)
3Lr ^ 4Lr .. TypeError: can't evaluate (gmp.mpq ^ gmp.mpq)
3Lr << 4Lr .. TypeError: can't evaluate (gmp.mpq << gmp.mpq)
3Lr >> 4Lr .. TypeError: can't evaluate (gmp.mpq >> gmp.mpq)
3Lr || 4Lr .. 3Lr
3Lr && 4Lr .. 4Lr
3Lr => 4Lr .. TypeError: can't evaluate (gmp.mpq => gmp.mpq)
gmp.mpq, gmp.mpf
3Lr + 4.L .. 7.L
3Lr - 4.L .. -1.L
3Lr * 4.L .. 12.L
3Lr / 4.L .. 0.75L
3Lr % 4.L .. TypeError: can't evaluate (gmp.mpq % gmp.mpf)
3Lr ** 4.L .. TypeError: can't evaluate (gmp.mpq ** gmp.mpf)
3Lr == 4.L .. false
3Lr < 4.L .. true
3Lr > 4.L .. false
3Lr <= 4.L .. true
3Lr >= 4.L .. false
3Lr <=> 4.L .. -1
3Lr in 4.L .. false
3Lr & 4.L .. TypeError: can't evaluate (gmp.mpq & gmp.mpf)
3Lr | 4.L .. TypeError: can't evaluate (gmp.mpq | gmp.mpf)
3Lr ^ 4.L .. TypeError: can't evaluate (gmp.mpq ^ gmp.mpf)
3Lr << 4.L .. TypeError: can't evaluate (gmp.mpq << gmp.mpf)
3Lr >> 4.L .. TypeError: can't evaluate (gmp.mpq >> gmp.mpf)
3Lr || 4.L .. 3Lr
3Lr && 4.L .. 4.L
3Lr => 4.L .. TypeError: can't evaluate (gmp.mpq => gmp.mpf)
gmp.mpq, number
3Lr + 4 .. 7Lr
3Lr - 4 .. -1Lr
3Lr * 4 .. 12Lr
3Lr / 4 .. 3/4Lr
3Lr % 4 .. TypeError: can't evaluate (gmp.mpq % number)
3Lr ** 4 .. TypeError: can't evaluate (gmp.mpq ** number)
3Lr == 4 .. false
3Lr < 4 .. true
3Lr > 4 .. false
3Lr <= 4 .. true
3Lr >= 4 .. false
3Lr <=> 4 .. -1
3Lr in 4 .. false
3Lr & 4 .. TypeError: can't evaluate (gmp.mpq & number)
3Lr | 4 .. TypeError: can't evaluate (gmp.mpq | number)
3Lr ^ 4 .. TypeError: can't evaluate (gmp.mpq ^ number)
3Lr << 4 .. TypeError: can't evaluate (gmp.mpq << number)
3Lr >> 4 .. TypeError: can't evaluate (gmp.mpq >> number)
3Lr || 4 .. 3Lr
3Lr && 4 .. 4
3Lr => 4 .. TypeError: can't evaluate (gmp.mpq => number)
gmp.mpq, rational
3Lr + 4r .. 7Lr
3Lr - 4r .. -1Lr
3Lr * 4r .. 12Lr
3Lr / 4r .. 3/4Lr
3Lr % 4r .. TypeError: can't evaluate (gmp.mpq % rational)
3Lr ** 4r .. TypeError: can't evaluate (gmp.mpq ** rational)
3Lr == 4r .. false
3Lr < 4r .. true
3Lr > 4r .. false
3Lr <= 4r .. true
3Lr >= 4r .. false
3Lr <=> 4r .. -1
3Lr in 4r .. false
3Lr & 4r .. TypeError: can't evaluate (gmp.mpq & rational)
3Lr | 4r .. TypeError: can't evaluate (gmp.mpq | rational)
3Lr ^ 4r .. TypeError: can't evaluate (gmp.mpq ^ rational)
3Lr << 4r .. TypeError: can't evaluate (gmp.mpq << rational)
3Lr >> 4r .. TypeError: can't evaluate (gmp.mpq >> rational)
3Lr || 4r .. 3Lr
3Lr && 4r .. 4r
3Lr => 4r .. TypeError: can't evaluate (gmp.mpq => rational)
gmp.mpf, gmp.mpz
3.L + 4L .. 7.L
3.L - 4L .. -1.L
3.L * 4L .. 12.L
3.L / 4L .. 0.75L
3.L % 4L .. TypeError: can't evaluate (gmp.mpf % gmp.mpz)
3.L ** 4L .. TypeError: can't evaluate (gmp.mpf ** gmp.mpz)
3.L == 4L .. false
3.L < 4L .. true
3.L > 4L .. false
3.L <= 4L .. true
3.L >= 4L .. false
3.L <=> 4L .. -1
3.L in 4L .. false
3.L & 4L .. TypeError: can't evaluate (gmp.mpf & gmp.mpz)
3.L | 4L .. TypeError: can't evaluate (gmp.mpf | gmp.mpz)
3.L ^ 4L .. TypeError: can't evaluate (gmp.mpf ^ gmp.mpz)
3.L << 4L .. TypeError: can't evaluate (gmp.mpf << gmp.mpz)
3.L >> 4L .. TypeError: can't evaluate (gmp.mpf >> gmp.mpz)
3.L || 4L .. 3.L
3.L && 4L .. 4L
3.L => 4L .. TypeError: can't evaluate (gmp.mpf => gmp.mpz)
gmp.mpf, gmp.mpq
3.L + 4Lr .. 7.L
3.L - 4Lr .. -1.L
3.L * 4Lr .. 12.L
3.L / 4Lr .. 0.75L
3.L % 4Lr .. TypeError: can't evaluate (gmp.mpf % gmp.mpq)
3.L ** 4Lr .. TypeError: can't evaluate (gmp.mpf ** gmp.mpq)
3.L == 4Lr .. false
3.L < 4Lr .. true
3.L > 4Lr .. false
3.L <= 4Lr .. true
3.L >= 4Lr .. false
3.L <=> 4Lr .. -1
3.L in 4Lr .. false
3.L & 4Lr .. TypeError: can't evaluate (gmp.mpf & gmp.mpq)
3.L | 4Lr .. TypeError: can't evaluate (gmp.mpf | gmp.mpq)
3.L ^ 4Lr .. TypeError: can't evaluate (gmp.mpf ^ gmp.mpq)
3.L << 4Lr .. TypeError: can't evaluate (gmp.mpf << gmp.mpq)
3.L >> 4Lr .. TypeError: can't evaluate (gmp.mpf >> gmp.mpq)
3.L || 4Lr .. 3.L
3.L && 4Lr .. 4Lr
3.L => 4Lr .. TypeError: can't evaluate (gmp.mpf => gmp.mpq)
gmp.mpf, gmp.mpf
3.L + 4.L .. 7.L
3.L - 4.L .. -1.L
3.L * 4.L .. 12.L
3.L / 4.L .. 0.75L
3.L % 4.L .. TypeError: can't evaluate (gmp.mpf % gmp.mpf)
3.L ** 4.L .. TypeError: can't evaluate (gmp.mpf ** gmp.mpf)
3.L == 4.L .. false
3.L < 4.L .. true
3.L > 4.L .. false
3.L <= 4.L .. true
3.L >= 4.L .. false
3.L <=> 4.L .. -1
3.L in 4.L .. false
3.L & 4.L .. TypeError: can't evaluate (gmp.mpf & gmp.mpf)
3.L | 4.L .. TypeError: can't evaluate (gmp.mpf | gmp.mpf)
3.L ^ 4.L .. TypeError: can't evaluate (gmp.mpf ^ gmp.mpf)
3.L << 4.L .. TypeError: can't evaluate (gmp.mpf << gmp.mpf)
3.L >> 4.L .. TypeError: can't evaluate (gmp.mpf >> gmp.mpf)
3.L || 4.L .. 3.L
3.L && 4.L .. 4.L
3.L => 4.L .. TypeError: can't evaluate (gmp.mpf => gmp.mpf)
gmp.mpf, number
3.L + 4 .. 7.L
3.L - 4 .. -1.L
3.L * 4 .. 12.L
3.L / 4 .. 0.75L
3.L % 4 .. TypeError: can't evaluate (gmp.mpf % number)
3.L ** 4 .. TypeError: can't evaluate (gmp.mpf ** number)
3.L == 4 .. false
3.L < 4 .. true
3.L > 4 .. false
3.L <= 4 .. true
3.L >= 4 .. false
3.L <=> 4 .. -1
3.L in 4 .. false
3.L & 4 .. TypeError: can't evaluate (gmp.mpf & number)
3.L | 4 .. TypeError: can't evaluate (gmp.mpf | number)
3.L ^ 4 .. TypeError: can't evaluate (gmp.mpf ^ number)
3.L << 4 .. TypeError: can't evaluate (gmp.mpf << number)
3.L >> 4 .. TypeError: can't evaluate (gmp.mpf >> number)
3.L || 4 .. 3.L
3.L && 4 .. 4
3.L => 4 .. TypeError: can't evaluate (gmp.mpf => number)
gmp.mpf, rational
3.L + 4r .. 7.L
3.L - 4r .. -1.L
3.L * 4r .. 12.L
3.L / 4r .. 0.75L
3.L % 4r .. TypeError: can't evaluate (gmp.mpf % rational)
3.L ** 4r .. TypeError: can't evaluate (gmp.mpf ** rational)
3.L == 4r .. false
3.L < 4r .. true
3.L > 4r .. false
3.L <= 4r .. true
3.L >= 4r .. false
3.L <=> 4r .. -1
3.L in 4r .. false
3.L & 4r .. TypeError: can't evaluate (gmp.mpf & rational)
3.L | 4r .. TypeError: can't evaluate (gmp.mpf | rational)
3.L ^ 4r .. TypeError: can't evaluate (gmp.mpf ^ rational)
3.L << 4r .. TypeError: can't evaluate (gmp.mpf << rational)
3.L >> 4r .. TypeError: can't evaluate (gmp.mpf >> rational)
3.L || 4r .. 3.L
3.L && 4r .. 4r
3.L => 4r .. TypeError: can't evaluate (gmp.mpf => rational)
number, gmp.mpz
3 + 4L .. 7L
3 - 4L .. -1L
3 * 4L .. 12L
3 / 4L .. 0.75L
3 % 4L .. 3L
3 ** 4L .. TypeError: can't evaluate (number ** gmp.mpz)
3 == 4L .. false
3 < 4L .. true
3 > 4L .. false
3 <= 4L .. true
3 >= 4L .. false
3 <=> 4L .. -1
3 in 4L .. false
3 & 4L .. 0L
3 | 4L .. 7L
3 ^ 4L .. 7L
3 << 4L .. TypeError: can't evaluate (number << gmp.mpz)
3 >> 4L .. TypeError: can't evaluate (number >> gmp.mpz)
3 || 4L .. 3
3 && 4L .. 4L
3 => 4L .. [3, 4L]
number, gmp.mpq
3 + 4Lr .. 7Lr
3 - 4Lr .. -1Lr
3 * 4Lr .. 12Lr
3 / 4Lr .. 3/4Lr
3 % 4Lr .. TypeError: can't evaluate (number % gmp.mpq)
3 ** 4Lr .. TypeError: can't evaluate (number ** gmp.mpq)
3 == 4Lr .. false
3 < 4Lr .. true
3 > 4Lr .. false
3 <= 4Lr .. true
3 >= 4Lr .. false
3 <=> 4Lr .. -1
3 in 4Lr .. false
3 & 4Lr .. TypeError: can't evaluate (number & gmp.mpq)
3 | 4Lr .. TypeError: can't evaluate (number | gmp.mpq)
3 ^ 4Lr .. TypeError: can't evaluate (number ^ gmp.mpq)
3 << 4Lr .. TypeError: can't evaluate (number << gmp.mpq)
3 >> 4Lr .. TypeError: can't evaluate (number >> gmp.mpq)
3 || 4Lr .. 3
3 && 4Lr .. 4Lr
3 => 4Lr .. [3, 4Lr]
number, gmp.mpf
3 + 4.L .. 7.L
3 - 4.L .. -1.L
3 * 4.L .. 12.L
3 / 4.L .. 0.75L
3 % 4.L .. TypeError: can't evaluate (number % gmp.mpf)
3 ** 4.L .. TypeError: can't evaluate (number ** gmp.mpf)
3 == 4.L .. false
3 < 4.L .. true
3 > 4.L .. false
3 <= 4.L .. true
3 >= 4.L .. false
3 <=> 4.L .. -1
3 in 4.L .. false
3 & 4.L .. TypeError: can't evaluate (number & gmp.mpf)
3 | 4.L .. TypeError: can't evaluate (number | gmp.mpf)
3 ^ 4.L .. TypeError: can't evaluate (number ^ gmp.mpf)
3 << 4.L .. TypeError: can't evaluate (number << gmp.mpf)
3 >> 4.L .. TypeError: can't evaluate (number >> gmp.mpf)
3 || 4.L .. 3
3 && 4.L .. 4.L
3 => 4.L .. [3, 4.L]
number, number
3 + 4 .. 7
3 - 4 .. -1
3 * 4 .. 12
3 / 4 .. 0.75
3 % 4 .. 3
3 ** 4 .. 81
3 == 4 .. false
3 < 4 .. true
3 > 4 .. false
3 <= 4 .. true
3 >= 4 .. false
3 <=> 4 .. -1
3 in 4 .. false
3 & 4 .. 0
3 | 4 .. 7
3 ^ 4 .. 7
3 << 4 .. 48
3 >> 4 .. 0
3 || 4 .. 3
3 && 4 .. 4
3 => 4 .. [3, 4]
number, rational
3 + 4r .. 7r
3 - 4r .. -1r
3 * 4r .. 12r
3 / 4r .. 3/4r
3 % 4r .. TypeError: can't evaluate (number % rational)
3 ** 4r .. TypeError: can't evaluate (number ** rational)
3 == 4r .. false
3 < 4r .. true
3 > 4r .. false
3 <= 4r .. true
3 >= 4r .. false
3 <=> 4r .. -1
3 in 4r .. false
3 & 4r .. TypeError: can't evaluate (number & rational)
3 | 4r .. TypeError: can't evaluate (number | rational)
3 ^ 4r .. TypeError: can't evaluate (number ^ rational)
3 << 4r .. TypeError: can't evaluate (number << rational)
3 >> 4r .. TypeError: can't evaluate (number >> rational)
3 || 4r .. 3
3 && 4r .. 4r
3 => 4r .. [3, 4r]
rational, gmp.mpz
3r + 4L .. 7Lr
3r - 4L .. -1Lr
3r * 4L .. 12Lr
3r / 4L .. 3/4Lr
3r % 4L .. TypeError: can't evaluate (rational % gmp.mpz)
3r ** 4L .. TypeError: can't evaluate (rational ** gmp.mpz)
3r == 4L .. false
3r < 4L .. true
3r > 4L .. false
3r <= 4L .. true
3r >= 4L .. false
3r <=> 4L .. -1
3r in 4L .. false
3r & 4L .. TypeError: can't evaluate (rational & gmp.mpz)
3r | 4L .. TypeError: can't evaluate (rational | gmp.mpz)
3r ^ 4L .. TypeError: can't evaluate (rational ^ gmp.mpz)
3r << 4L .. TypeError: can't evaluate (rational << gmp.mpz)
3r >> 4L .. TypeError: can't evaluate (rational >> gmp.mpz)
3r || 4L .. 3r
3r && 4L .. 4L
3r => 4L .. TypeError: can't evaluate (rational => gmp.mpz)
rational, gmp.mpq
3r + 4Lr .. 7Lr
3r - 4Lr .. -1Lr
3r * 4Lr .. 12Lr
3r / 4Lr .. 3/4Lr
3r % 4Lr .. TypeError: can't evaluate (rational % gmp.mpq)
3r ** 4Lr .. TypeError: can't evaluate (rational ** gmp.mpq)
3r == 4Lr .. false
3r < 4Lr .. true
3r > 4Lr .. false
3r <= 4Lr .. true
3r >= 4Lr .. false
3r <=> 4Lr .. -1
3r in 4Lr .. false
3r & 4Lr .. TypeError: can't evaluate (rational & gmp.mpq)
3r | 4Lr .. TypeError: can't evaluate (rational | gmp.mpq)
3r ^ 4Lr .. TypeError: can't evaluate (rational ^ gmp.mpq)
3r << 4Lr .. TypeError: can't evaluate (rational << gmp.mpq)
3r >> 4Lr .. TypeError: can't evaluate (rational >> gmp.mpq)
3r || 4Lr .. 3r
3r && 4Lr .. 4Lr
3r => 4Lr .. TypeError: can't evaluate (rational => gmp.mpq)
rational, gmp.mpf
3r + 4.L .. 7.L
3r - 4.L .. -1.L
3r * 4.L .. 12.L
3r / 4.L .. 0.75L
3r % 4.L .. TypeError: can't evaluate (rational % gmp.mpf)
3r ** 4.L .. TypeError: can't evaluate (rational ** gmp.mpf)
3r == 4.L .. false
3r < 4.L .. true
3r > 4.L .. false
3r <= 4.L .. true
3r >= 4.L .. false
3r <=> 4.L .. -1
3r in 4.L .. false
3r & 4.L .. TypeError: can't evaluate (rational & gmp.mpf)
3r | 4.L .. TypeError: can't evaluate (rational | gmp.mpf)
3r ^ 4.L .. TypeError: can't evaluate (rational ^ gmp.mpf)
3r << 4.L .. TypeError: can't evaluate (rational << gmp.mpf)
3r >> 4.L .. TypeError: can't evaluate (rational >> gmp.mpf)
3r || 4.L .. 3r
3r && 4.L .. 4.L
3r => 4.L .. TypeError: can't evaluate (rational => gmp.mpf)
rational, number
3r + 4 .. 7r
3r - 4 .. -1r
3r * 4 .. 12r
3r / 4 .. 3/4r
3r % 4 .. TypeError: can't evaluate (rational % number)
3r ** 4 .. TypeError: can't evaluate (rational ** number)
3r == 4 .. false
3r < 4 .. true
3r > 4 .. false
3r <= 4 .. true
3r >= 4 .. false
3r <=> 4 .. -1
3r in 4 .. false
3r & 4 .. TypeError: can't evaluate (rational & number)
3r | 4 .. TypeError: can't evaluate (rational | number)
3r ^ 4 .. TypeError: can't evaluate (rational ^ number)
3r << 4 .. TypeError: can't evaluate (rational << number)
3r >> 4 .. TypeError: can't evaluate (rational >> number)
3r || 4 .. 3r
3r && 4 .. 4
3r => 4 .. TypeError: can't evaluate (rational => number)
rational, rational
3r + 4r .. 7r
3r - 4r .. -1r
3r * 4r .. 12r
3r / 4r .. 3/4r
3r % 4r .. TypeError: can't evaluate (rational % rational)
3r ** 4r .. TypeError: can't evaluate (rational ** rational)
3r == 4r .. false
3r < 4r .. true
3r > 4r .. false
3r <= 4r .. true
3r >= 4r .. false
3r <=> 4r .. -1
3r in 4r .. false
3r & 4r .. TypeError: can't evaluate (rational & rational)
3r | 4r .. TypeError: can't evaluate (rational | rational)
3r ^ 4r .. TypeError: can't evaluate (rational ^ rational)
3r << 4r .. TypeError: can't evaluate (rational << rational)
3r >> 4r .. TypeError: can't evaluate (rational >> rational)
3r || 4r .. 3r
3r && 4r .. 4r
3r => 4r .. TypeError: can't evaluate (rational => rational)

======== #4 zero-division ========

gmp.mpz, gmp.mpz
3L / 0L .. ZeroDivisionError: divide by zero
3L % 0L .. ZeroDivisionError: divide by zero
gmp.mpz, gmp.mpq
3L / 0Lr .. ZeroDivisionError: divide by zero
3L % 0Lr .. TypeError: can't evaluate (gmp.mpz % gmp.mpq)
gmp.mpz, gmp.mpf
3L / 0.L .. ZeroDivisionError: divide by zero
3L % 0.L .. TypeError: can't evaluate (gmp.mpz % gmp.mpf)
gmp.mpz, number
3L / 0 .. ZeroDivisionError: divide by zero
3L % 0 .. ZeroDivisionError: divide by zero
gmp.mpz, rational
3L / 0r .. ZeroDivisionError: divide by zero
3L % 0r .. TypeError: can't evaluate (gmp.mpz % rational)
gmp.mpq, gmp.mpz
3Lr / 0L .. ZeroDivisionError: divide by zero
3Lr % 0L .. TypeError: can't evaluate (gmp.mpq % gmp.mpz)
gmp.mpq, gmp.mpq
3Lr / 0Lr .. ZeroDivisionError: divide by zero
3Lr % 0Lr .. TypeError: can't evaluate (gmp.mpq % gmp.mpq)
gmp.mpq, gmp.mpf
3Lr / 0.L .. ZeroDivisionError: divide by zero
3Lr % 0.L .. TypeError: can't evaluate (gmp.mpq % gmp.mpf)
gmp.mpq, number
3Lr / 0 .. ZeroDivisionError: divide by zero
3Lr % 0 .. TypeError: can't evaluate (gmp.mpq % number)
gmp.mpq, rational
3Lr / 0r .. ZeroDivisionError: divide by zero
3Lr % 0r .. TypeError: can't evaluate (gmp.mpq % rational)
gmp.mpf, gmp.mpz
3.L / 0L .. ZeroDivisionError: divide by zero
3.L % 0L .. TypeError: can't evaluate (gmp.mpf % gmp.mpz)
gmp.mpf, gmp.mpq
3.L / 0Lr .. ZeroDivisionError: divide by zero
3.L % 0Lr .. TypeError: can't evaluate (gmp.mpf % gmp.mpq)
gmp.mpf, gmp.mpf
3.L / 0.L .. ZeroDivisionError: divide by zero
3.L % 0.L .. TypeError: can't evaluate (gmp.mpf % gmp.mpf)
gmp.mpf, number
3.L / 0 .. ZeroDivisionError: divide by zero
3.L % 0 .. TypeError: can't evaluate (gmp.mpf % number)
gmp.mpf, rational
3.L / 0r .. ZeroDivisionError: divide by zero
3.L % 0r .. TypeError: can't evaluate (gmp.mpf % rational)
number, gmp.mpz
3 / 0L .. ZeroDivisionError: divide by zero
3 % 0L .. ZeroDivisionError: divide by zero
number, gmp.mpq
3 / 0Lr .. ZeroDivisionError: divide by zero
3 % 0Lr .. TypeError: can't evaluate (number % gmp.mpq)
number, gmp.mpf
3 / 0.L .. ZeroDivisionError: divide by zero
3 % 0.L .. TypeError: can't evaluate (number % gmp.mpf)
number, number
3 / 0 .. ZeroDivisionError: divide by zero
3 % 0 .. ZeroDivisionError: divide by zero
number, rational
3 / 0r .. ZeroDivisionError: denominator can't be zero
3 % 0r .. TypeError: can't evaluate (number % rational)
rational, gmp.mpz
3r / 0L .. ZeroDivisionError: divide by zero
3r % 0L .. TypeError: can't evaluate (rational % gmp.mpz)
rational, gmp.mpq
3r / 0Lr .. ZeroDivisionError: divide by zero
3r % 0Lr .. TypeError: can't evaluate (rational % gmp.mpq)
rational, gmp.mpf
3r / 0.L .. ZeroDivisionError: divide by zero
3r % 0.L .. TypeError: can't evaluate (rational % gmp.mpf)
rational, number
3r / 0 .. ZeroDivisionError: denominator can't be zero
3r % 0 .. TypeError: can't evaluate (rational % number)
rational, rational
3r / 0r .. ZeroDivisionError: denominator can't be zero
3r % 0r .. TypeError: can't evaluate (rational % rational)

======== #5 comparator ========

gmp.mpz, gmp.mpz
3L == 4L .. false
3L < 4L .. true
3L > 4L .. false
3L <= 4L .. true
3L >= 4L .. false
3L <=> 4L .. -1
gmp.mpz, gmp.mpq
3L == 4Lr .. false
3L < 4Lr .. true
3L > 4Lr .. false
3L <= 4Lr .. true
3L >= 4Lr .. false
3L <=> 4Lr .. -1
gmp.mpz, gmp.mpf
3L == 4.L .. false
3L < 4.L .. true
3L > 4.L .. false
3L <= 4.L .. true
3L >= 4.L .. false
3L <=> 4.L .. -1
gmp.mpz, number
3L == 4 .. false
3L < 4 .. true
3L > 4 .. false
3L <= 4 .. true
3L >= 4 .. false
3L <=> 4 .. -1
gmp.mpz, rational
3L == 4r .. false
3L < 4r .. true
3L > 4r .. false
3L <= 4r .. true
3L >= 4r .. false
3L <=> 4r .. -1
gmp.mpq, gmp.mpz
3Lr == 4L .. false
3Lr < 4L .. true
3Lr > 4L .. false
3Lr <= 4L .. true
3Lr >= 4L .. false
3Lr <=> 4L .. -1
gmp.mpq, gmp.mpq
3Lr == 4Lr .. false
3Lr < 4Lr .. true
3Lr > 4Lr .. false
3Lr <= 4Lr .. true
3Lr >= 4Lr .. false
3Lr <=> 4Lr .. -1
gmp.mpq, gmp.mpf
3Lr == 4.L .. false
3Lr < 4.L .. true
3Lr > 4.L .. false
3Lr <= 4.L .. true
3Lr >= 4.L .. false
3Lr <=> 4.L .. -1
gmp.mpq, number
3Lr == 4 .. false
3Lr < 4 .. true
3Lr > 4 .. false
3Lr <= 4 .. true
3Lr >= 4 .. false
3Lr <=> 4 .. -1
gmp.mpq, rational
3Lr == 4r .. false
3Lr < 4r .. true
3Lr > 4r .. false
3Lr <= 4r .. true
3Lr >= 4r .. false
3Lr <=> 4r .. -1
gmp.mpf, gmp.mpz
3.L == 4L .. false
3.L < 4L .. true
3.L > 4L .. false
3.L <= 4L .. true
3.L >= 4L .. false
3.L <=> 4L .. -1
gmp.mpf, gmp.mpq
3.L == 4Lr .. false
3.L < 4Lr .. true
3.L > 4Lr .. false
3.L <= 4Lr .. true
3.L >= 4Lr .. false
3.L <=> 4Lr .. -1
gmp.mpf, gmp.mpf
3.L == 4.L .. false
3.L < 4.L .. true
3.L > 4.L .. false
3.L <= 4.L .. true
3.L >= 4.L .. false
3.L <=> 4.L .. -1
gmp.mpf, number
3.L == 4 .. false
3.L < 4 .. true
3.L > 4 .. false
3.L <= 4 .. true
3.L >= 4 .. false
3.L <=> 4 .. -1
gmp.mpf, rational
3.L == 4r .. false
3.L < 4r .. true
3.L > 4r .. false
3.L <= 4r .. true
3.L >= 4r .. false
3.L <=> 4r .. -1
number, gmp.mpz
3 == 4L .. false
3 < 4L .. true
3 > 4L .. false
3 <= 4L .. true
3 >= 4L .. false
3 <=> 4L .. -1
number, gmp.mpq
3 == 4Lr .. false
3 < 4Lr .. true
3 > 4Lr .. false
3 <= 4Lr .. true
3 >= 4Lr .. false
3 <=> 4Lr .. -1
number, gmp.mpf
3 == 4.L .. false
3 < 4.L .. true
3 > 4.L .. false
3 <= 4.L .. true
3 >= 4.L .. false
3 <=> 4.L .. -1
number, number
3 == 4 .. false
3 < 4 .. true
3 > 4 .. false
3 <= 4 .. true
3 >= 4 .. false
3 <=> 4 .. -1
number, rational
3 == 4r .. false
3 < 4r .. true
3 > 4r .. false
3 <= 4r .. true
3 >= 4r .. false
3 <=> 4r .. -1
rational, gmp.mpz
3r == 4L .. false
3r < 4L .. true
3r > 4L .. false
3r <= 4L .. true
3r >= 4L .. false
3r <=> 4L .. -1
rational, gmp.mpq
3r == 4Lr .. false
3r < 4Lr .. true
3r > 4Lr .. false
3r <= 4Lr .. true
3r >= 4Lr .. false
3r <=> 4Lr .. -1
rational, gmp.mpf
3r == 4.L .. false
3r < 4.L .. true
3r > 4.L .. false
3r <= 4.L .. true
3r >= 4.L .. false
3r <=> 4.L .. -1
rational, number
3r == 4 .. false
3r < 4 .. true
3r > 4 .. false
3r <= 4 .. true
3r >= 4 .. false
3r <=> 4 .. -1
rational, rational
3r == 4r .. false
3r < 4r .. true
3r > 4r .. false
3r <= 4r .. true
3r >= 4r .. false
3r <=> 4r .. -1
gmp.mpz, gmp.mpz
4L == 4L .. true
4L < 4L .. false
4L > 4L .. false
4L <= 4L .. true
4L >= 4L .. true
4L <=> 4L .. 0
gmp.mpz, gmp.mpq
4L == 4Lr .. true
4L < 4Lr .. false
4L > 4Lr .. false
4L <= 4Lr .. true
4L >= 4Lr .. true
4L <=> 4Lr .. 0
gmp.mpz, gmp.mpf
4L == 4.L .. true
4L < 4.L .. false
4L > 4.L .. false
4L <= 4.L .. true
4L >= 4.L .. true
4L <=> 4.L .. 0
gmp.mpz, number
4L == 4 .. true
4L < 4 .. false
4L > 4 .. false
4L <= 4 .. true
4L >= 4 .. true
4L <=> 4 .. 0
gmp.mpz, rational
4L == 4r .. true
4L < 4r .. false
4L > 4r .. false
4L <= 4r .. true
4L >= 4r .. true
4L <=> 4r .. 0
gmp.mpq, gmp.mpz
4Lr == 4L .. true
4Lr < 4L .. false
4Lr > 4L .. false
4Lr <= 4L .. true
4Lr >= 4L .. true
4Lr <=> 4L .. 0
gmp.mpq, gmp.mpq
4Lr == 4Lr .. true
4Lr < 4Lr .. false
4Lr > 4Lr .. false
4Lr <= 4Lr .. true
4Lr >= 4Lr .. true
4Lr <=> 4Lr .. 0
gmp.mpq, gmp.mpf
4Lr == 4.L .. true
4Lr < 4.L .. false
4Lr > 4.L .. false
4Lr <= 4.L .. true
4Lr >= 4.L .. true
4Lr <=> 4.L .. 0
gmp.mpq, number
4Lr == 4 .. true
4Lr < 4 .. false
4Lr > 4 .. false
4Lr <= 4 .. true
4Lr >= 4 .. true
4Lr <=> 4 .. 0
gmp.mpq, rational
4Lr == 4r .. true
4Lr < 4r .. false
4Lr > 4r .. false
4Lr <= 4r .. true
4Lr >= 4r .. true
4Lr <=> 4r .. 0
gmp.mpf, gmp.mpz
4.L == 4L .. true
4.L < 4L .. false
4.L > 4L .. false
4.L <= 4L .. true
4.L >= 4L .. true
4.L <=> 4L .. 0
gmp.mpf, gmp.mpq
4.L == 4Lr .. true
4.L < 4Lr .. false
4.L > 4Lr .. false
4.L <= 4Lr .. true
4.L >= 4Lr .. true
4.L <=> 4Lr .. 0
gmp.mpf, gmp.mpf
4.L == 4.L .. true
4.L < 4.L .. false
4.L > 4.L .. false
4.L <= 4.L .. true
4.L >= 4.L .. true
4.L <=> 4.L .. 0
gmp.mpf, number
4.L == 4 .. true
4.L < 4 .. false
4.L > 4 .. false
4.L <= 4 .. true
4.L >= 4 .. true
4.L <=> 4 .. 0
gmp.mpf, rational
4.L == 4r .. true
4.L < 4r .. false
4.L > 4r .. false
4.L <= 4r .. true
4.L >= 4r .. true
4.L <=> 4r .. 0
number, gmp.mpz
4 == 4L .. true
4 < 4L .. false
4 > 4L .. false
4 <= 4L .. true
4 >= 4L .. true
4 <=> 4L .. 0
number, gmp.mpq
4 == 4Lr .. true
4 < 4Lr .. false
4 > 4Lr .. false
4 <= 4Lr .. true
4 >= 4Lr .. true
4 <=> 4Lr .. 0
number, gmp.mpf
4 == 4.L .. true
4 < 4.L .. false
4 > 4.L .. false
4 <= 4.L .. true
4 >= 4.L .. true
4 <=> 4.L .. 0
number, number
4 == 4 .. true
4 < 4 .. false
4 > 4 .. false
4 <= 4 .. true
4 >= 4 .. true
4 <=> 4 .. 0
number, rational
4 == 4r .. true
4 < 4r .. false
4 > 4r .. false
4 <= 4r .. true
4 >= 4r .. true
4 <=> 4r .. 0
rational, gmp.mpz
4r == 4L .. true
4r < 4L .. false
4r > 4L .. false
4r <= 4L .. true
4r >= 4L .. true
4r <=> 4L .. 0
rational, gmp.mpq
4r == 4Lr .. true
4r < 4Lr .. false
4r > 4Lr .. false
4r <= 4Lr .. true
4r >= 4Lr .. true
4r <=> 4Lr .. 0
rational, gmp.mpf
4r == 4.L .. true
4r < 4.L .. false
4r > 4.L .. false
4r <= 4.L .. true
4r >= 4.L .. true
4r <=> 4.L .. 0
rational, number
4r == 4 .. true
4r < 4 .. false
4r > 4 .. false
4r <= 4 .. true
4r >= 4 .. true
4r <=> 4 .. 0
rational, rational
4r == 4r .. true
4r < 4r .. false
4r > 4r .. false
4r <= 4r .. true
4r >= 4r .. true
4r <=> 4r .. 0
gmp.mpz, gmp.mpz
5L == 4L .. false
5L < 4L .. false
5L > 4L .. true
5L <= 4L .. false
5L >= 4L .. true
5L <=> 4L .. 1
gmp.mpz, gmp.mpq
5L == 4Lr .. false
5L < 4Lr .. false
5L > 4Lr .. true
5L <= 4Lr .. false
5L >= 4Lr .. true
5L <=> 4Lr .. 1
gmp.mpz, gmp.mpf
5L == 4.L .. false
5L < 4.L .. false
5L > 4.L .. true
5L <= 4.L .. false
5L >= 4.L .. true
5L <=> 4.L .. 1
gmp.mpz, number
5L == 4 .. false
5L < 4 .. false
5L > 4 .. true
5L <= 4 .. false
5L >= 4 .. true
5L <=> 4 .. 1
gmp.mpz, rational
5L == 4r .. false
5L < 4r .. false
5L > 4r .. true
5L <= 4r .. false
5L >= 4r .. true
5L <=> 4r .. 1
gmp.mpq, gmp.mpz
5Lr == 4L .. false
5Lr < 4L .. false
5Lr > 4L .. true
5Lr <= 4L .. false
5Lr >= 4L .. true
5Lr <=> 4L .. 1
gmp.mpq, gmp.mpq
5Lr == 4Lr .. false
5Lr < 4Lr .. false
5Lr > 4Lr .. true
5Lr <= 4Lr .. false
5Lr >= 4Lr .. true
5Lr <=> 4Lr .. 1
gmp.mpq, gmp.mpf
5Lr == 4.L .. false
5Lr < 4.L .. false
5Lr > 4.L .. true
5Lr <= 4.L .. false
5Lr >= 4.L .. true
5Lr <=> 4.L .. 1
gmp.mpq, number
5Lr == 4 .. false
5Lr < 4 .. false
5Lr > 4 .. true
5Lr <= 4 .. false
5Lr >= 4 .. true
5Lr <=> 4 .. 1
gmp.mpq, rational
5Lr == 4r .. false
5Lr < 4r .. false
5Lr > 4r .. true
5Lr <= 4r .. false
5Lr >= 4r .. true
5Lr <=> 4r .. 1
gmp.mpf, gmp.mpz
5.L == 4L .. false
5.L < 4L .. false
5.L > 4L .. true
5.L <= 4L .. false
5.L >= 4L .. true
5.L <=> 4L .. 1
gmp.mpf, gmp.mpq
5.L == 4Lr .. false
5.L < 4Lr .. false
5.L > 4Lr .. true
5.L <= 4Lr .. false
5.L >= 4Lr .. true
5.L <=> 4Lr .. 1
gmp.mpf, gmp.mpf
5.L == 4.L .. false
5.L < 4.L .. false
5.L > 4.L .. true
5.L <= 4.L .. false
5.L >= 4.L .. true
5.L <=> 4.L .. 1
gmp.mpf, number
5.L == 4 .. false
5.L < 4 .. false
5.L > 4 .. true
5.L <= 4 .. false
5.L >= 4 .. true
5.L <=> 4 .. 1
gmp.mpf, rational
5.L == 4r .. false
5.L < 4r .. false
5.L > 4r .. true
5.L <= 4r .. false
5.L >= 4r .. true
5.L <=> 4r .. 1
number, gmp.mpz
5 == 4L .. false
5 < 4L .. false
5 > 4L .. true
5 <= 4L .. false
5 >= 4L .. true
5 <=> 4L .. 1
number, gmp.mpq
5 == 4Lr .. false
5 < 4Lr .. false
5 > 4Lr .. true
5 <= 4Lr .. false
5 >= 4Lr .. true
5 <=> 4Lr .. 1
number, gmp.mpf
5 == 4.L .. false
5 < 4.L .. false
5 > 4.L .. true
5 <= 4.L .. false
5 >= 4.L .. true
5 <=> 4.L .. 1
number, number
5 == 4 .. false
5 < 4 .. false
5 > 4 .. true
5 <= 4 .. false
5 >= 4 .. true
5 <=> 4 .. 1
number, rational
5 == 4r .. false
5 < 4r .. false
5 > 4r .. true
5 <= 4r .. false
5 >= 4r .. true
5 <=> 4r .. 1
rational, gmp.mpz
5r == 4L .. false
5r < 4L .. false
5r > 4L .. true
5r <= 4L .. false
5r >= 4L .. true
5r <=> 4L .. 1
rational, gmp.mpq
5r == 4Lr .. false
5r < 4Lr .. false
5r > 4Lr .. true
5r <= 4Lr .. false
5r >= 4Lr .. true
5r <=> 4Lr .. 1
rational, gmp.mpf
5r == 4.L .. false
5r < 4.L .. false
5r > 4.L .. true
5r <= 4.L .. false
5r >= 4.L .. true
5r <=> 4.L .. 1
rational, number
5r == 4 .. false
5r < 4 .. false
5r > 4 .. true
5r <= 4 .. false
5r >= 4 .. true
5r <=> 4 .. 1
rational, rational
5r == 4r .. false
5r < 4r .. false
5r > 4r .. true
5r <= 4r .. false
5r >= 4r .. true
5r <=> 4r .. 1

======== #6 precision for mpf ========

prec=10    3.14159292035398230088
prec=100   3.141592920353982300884955752212389380531
prec=1000  3.141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424779
prec=9900  3.14159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991150442477876106194690265486725663716814159292035398230088495575221238938053097345132743362831858407079646017699115044247787610619469026548672566371681415929203539823008849557522123893805309734513274336283185840707964601769911504424778761061946902654867256637168141592920353982300884955752212389380530973451327433628318584070796460176991

======== #7 Formatter test - basic ========

%d        |0                   |0                   
%u        |0                   |0                   
%o        |0                   |0                   
%x        |0                   |0                   
%e        |0.000000e+00        |0.000000e+00        
%f        |0.000000            |0.000000            
%g        |0                   |0                   
%d        |0                   |0                   
%u        |0                   |0                   
%o        |0                   |0                   
%x        |0                   |0                   
%e        |0.000000e+00        |0.000000e+00        
%f        |0.000000            |0.000000            
%g        |0                   |0                   
%d        |1                   |1                   
%u        |1                   |1                   
%o        |1                   |1                   
%x        |1                   |1                   
%e        |1.000000e+00        |1.000000e+00        
%f        |1.000000            |1.000000            
%g        |1                   |1                   
%d        |2                   |2                   
%u        |2                   |2                   
%o        |2                   |2                   
%x        |2                   |2                   
%e        |2.000000e+00        |2.000000e+00        
%f        |2.000000            |2.000000            
%g        |2                   |2                   
%d        |8                   |8                   
%u        |8                   |8                   
%o        |10                  |10                  
%x        |8                   |8                   
%e        |8.000000e+00        |8.000000e+00        
%f        |8.000000            |8.000000            
%g        |8                   |8                   
%d        |10                  |10                  
%u        |10                  |10                  
%o        |12                  |12                  
%x        |a                   |a                   
%e        |1.000000e+01        |1.000000e+01        
%f        |10.000000           |10.000000           
%g        |10                  |10                  
%d        |16                  |16                  
%u        |16                  |16                  
%o        |20                  |20                  
%x        |10                  |10                  
%e        |1.600000e+01        |1.600000e+01        
%f        |16.000000           |16.000000           
%g        |16                  |16                  

======== #8 Formatter test - specifier in upper case ========

%x        |bc614e              |bc614e              
%X        |BC614E              |BC614E              
%e        |1.234568e-10        |1.234568e-10        
%E        |1.234568E-10        |1.234568E-10        
%g        |1.23457e-10         |1.23457e-10         
%G        |1.23457E-10         |1.23457E-10         

======== #9 Formatter test - specifier d, u, o, x ========

%1d       |12345678            |12345678            
%10d      |  12345678          |  12345678          
%-10d$    |12345678  $         |12345678  $         
%010d     |0012345678          |0012345678          
%-010d    |12345678            |12345678            
%#d       |12345678            |12345678            
%#010d    |0012345678          |0012345678          
%1u       |12345678            |12345678            
%10u      |  12345678          |  12345678          
%-10u$    |12345678  $         |12345678  $         
%010u     |0012345678          |0012345678          
%-010u    |12345678            |12345678            
%#u       |12345678            |12345678            
%#010u    |0012345678          |0012345678          
%1o       |57060516            |57060516            
%10o      |  57060516          |  57060516          
%-10o$    |57060516  $         |57060516  $         
%010o     |0057060516          |0057060516          
%-010o    |57060516            |57060516            
%#o       |057060516           |057060516           
%#010o    |0057060516          |0057060516          
%1x       |bc614e              |bc614e              
%10x      |    bc614e          |    bc614e          
%-10x$    |bc614e    $         |bc614e    $         
%010x     |0000bc614e          |0000bc614e          
%-010x    |bc614e              |bc614e              
%#x       |0xbc614e            |0xbc614e            
%#010x    |000xbc614e          |0x00bc614e          

======== #10 Formatter test - specifier e, f, g ========

%1e       |0.000000e+00        |0.000000e+00        
%10e      |0.000000e+00        |0.000000e+00        
%.e       |0.000000e+00        |0e+00               
%.0e      |0e+00               |0e+00               
%.1e      |0.0e+00             |0.0e+00             
%.6e      |0.000000e+00        |0.000000e+00        
%.10e     |0.0000000000e+00    |0.0000000000e+00    
%.12e     |0.000000000000e+00  |0.000000000000e+00  
%3.3e     |0.000e+00           |0.000e+00           
%13.3e    |    0.000e+00       |    0.000e+00       
%-13.3e$  |0.000e+00    $      |0.000e+00    $      
%013.3e   |00000.000e+00       |00000.000e+00       
%1e       |1.428571e+04        |1.428571e+04        
%10e      |1.428571e+04        |1.428571e+04        
%.e       |1.428571e+04        |1.42857142857142857143e+04
%.0e      |1e+04               |1e+04               
%.1e      |1.4e+04             |1.4e+04             
%.6e      |1.428571e+04        |1.428571e+04        
%.10e     |1.4285714286e+04    |1.4285714286e+04    
%.12e     |1.428571428571e+04  |1.428571428571e+04  
%3.3e     |1.429e+04           |1.429e+04           
%13.3e    |    1.429e+04       |    1.429e+04       
%-13.3e$  |1.429e+04    $      |1.429e+04    $      
%013.3e   |00001.429e+04       |00001.429e+04       
%1f       |0.000000            |0.000000            
%10f      |  0.000000          |  0.000000          
%.f       |0.000000            |0                   
%.0f      |0                   |0                   
%.1f      |0.0                 |0.0                 
%.6f      |0.000000            |0.000000            
%.10f     |0.0000000000        |0.0000000000        
%.12f     |0.000000000000      |0.000000000000      
%3.3f     |0.000               |0.000               
%13.3f    |        0.000       |        0.000       
%-13.3f$  |0.000        $      |0.000        $      
%013.3f   |000000000.000       |000000000.000       
%1f       |14285.714286        |14285.714286        
%10f      |14285.714286        |14285.714286        
%.f       |14285.714286        |14285.7142857142857143
%.0f      |14286               |14286               
%.1f      |14285.7             |14285.7             
%.6f      |14285.714286        |14285.714286        
%.10f     |14285.7142857143    |14285.7142857143    
%.12f     |14285.714285714286  |14285.714285714286  
%3.3f     |14285.714           |14285.714           
%13.3f    |    14285.714       |    14285.714       
%-13.3f$  |14285.714    $      |14285.714    $      
%013.3f   |000014285.714       |000014285.714       
%1g       |0                   |0                   
%10g      |         0          |         0          
%.g       |0                   |0                   
%.0g      |0                   |0                   
%.1g      |0                   |0                   
%.6g      |0                   |0                   
%.10g     |0                   |0                   
%.12g     |0                   |0                   
%3.3g     |  0                 |  0                 
%13.3g    |            0       |            0       
%-13.3g$  |0            $      |0            $      
%013.3g   |0000000000000       |0000000000000       
%1g       |14285.7             |14285.7             
%10g      |   14285.7          |   14285.7          
%.g       |14285.7             |14285.7142857142857143
%.0g      |1e+04               |1e+04               
%.1g      |1e+04               |1e+04               
%.6g      |14285.7             |14285.7             
%.10g     |14285.71429         |14285.71429         
%.12g     |14285.7142857       |14285.7142857       
%3.3g     |1.43e+04            |1.43e+04            
%13.3g    |     1.43e+04       |     1.43e+04       
%-13.3g$  |1.43e+04     $      |1.43e+04     $      
%013.3g   |000001.43e+04       |000001.43e+04       

======== #11 Formatter test - big numbers ========

%d        |12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
%10d      |12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
%100d     |12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
%200d     |12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
%201d     | 12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
%210d     |          12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
%-210d$   |12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890          $
%0210d    |000000000012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890

======== #12 sequence ========

format('%d', 1L .. 10L).join(',') .. 1,2,3,4,5,6,7,8,9,10
format('%d', 10L .. 1L).join(',') .. 10,9,8,7,6,5,4,3,2,1
format('%d', (1L..).head(10)).join(',') .. 1,2,3,4,5,6,7,8,9,10
format('%d', 1000000000000000L .. 1000000000000010L).join(',') .. 1000000000000000,1000000000000001,1000000000000002,1000000000000003,1000000000000004,1000000000000005,1000000000000006,1000000000000007,1000000000000008,1000000000000009,1000000000000010
format('%d', (1000000000000000L..).head(10)).join(',') .. 1000000000000000,1000000000000001,1000000000000002,1000000000000003,1000000000000004,1000000000000005,1000000000000006,1000000000000007,1000000000000008,1000000000000009

======== #13 sort ========

0L,1L,2L,3L,4L,5L,6L,7L,8L,9L,10L,11L,12L,13L,14L,15L,16L,17L,18L,19L,20L,21L,22L,23L,24L,25L,26L,27L,28L,29L,30L,31L,32L,33L,34L,35L,36L,37L,38L,39L,40L,41L,42L,43L,44L,45L,46L,47L,48L,49L,50L,51L,52L,53L,54L,55L,56L,57L,58L,59L,60L,61L,62L,63L,64L,65L,66L,67L,68L,69L,70L,71L,72L,73L,74L,75L,76L,77L,78L,79L,80L,81L,82L,83L,84L,85L,86L,87L,88L,89L,90L,91L,92L,93L,94L,95L,96L,97L,98L,99L
99L,98L,97L,96L,95L,94L,93L,92L,91L,90L,89L,88L,87L,86L,85L,84L,83L,82L,81L,80L,79L,78L,77L,76L,75L,74L,73L,72L,71L,70L,69L,68L,67L,66L,65L,64L,63L,62L,61L,60L,59L,58L,57L,56L,55L,54L,53L,52L,51L,50L,49L,48L,47L,46L,45L,44L,43L,42L,41L,40L,39L,38L,37L,36L,35L,34L,33L,32L,31L,30L,29L,28L,27L,26L,25L,24L,23L,22L,21L,20L,19L,18L,17L,16L,15L,14L,13L,12L,11L,10L,9L,8L,7L,6L,5L,4L,3L,2L,1L,0L
0.L,1.L,2.L,3.L,4.L,5.L,6.L,7.L,8.L,9.L,10.L,11.L,12.L,13.L,14.L,15.L,16.L,17.L,18.L,19.L,20.L,21.L,22.L,23.L,24.L,25.L,26.L,27.L,28.L,29.L,30.L,31.L,32.L,33.L,34.L,35.L,36.L,37.L,38.L,39.L,40.L,41.L,42.L,43.L,44.L,45.L,46.L,47.L,48.L,49.L,50.L,51.L,52.L,53.L,54.L,55.L,56.L,57.L,58.L,59.L,60.L,61.L,62.L,63.L,64.L,65.L,66.L,67.L,68.L,69.L,70.L,71.L,72.L,73.L,74.L,75.L,76.L,77.L,78.L,79.L,80.L,81.L,82.L,83.L,84.L,85.L,86.L,87.L,88.L,89.L,90.L,91.L,92.L,93.L,94.L,95.L,96.L,97.L,98.L,99.L
99.L,98.L,97.L,96.L,95.L,94.L,93.L,92.L,91.L,90.L,89.L,88.L,87.L,86.L,85.L,84.L,83.L,82.L,81.L,80.L,79.L,78.L,77.L,76.L,75.L,74.L,73.L,72.L,71.L,70.L,69.L,68.L,67.L,66.L,65.L,64.L,63.L,62.L,61.L,60.L,59.L,58.L,57.L,56.L,55.L,54.L,53.L,52.L,51.L,50.L,49.L,48.L,47.L,46.L,45.L,44.L,43.L,42.L,41.L,40.L,39.L,38.L,37.L,36.L,35.L,34.L,33.L,32.L,31.L,30.L,29.L,28.L,27.L,26.L,25.L,24.L,23.L,22.L,21.L,20.L,19.L,18.L,17.L,16.L,15.L,14.L,13.L,12.L,11.L,10.L,9.L,8.L,7.L,6.L,5.L,4.L,3.L,2.L,1.L,0.L
0Lr,1Lr,2Lr,3Lr,4Lr,5Lr,6Lr,7Lr,8Lr,9Lr,10Lr,11Lr,12Lr,13Lr,14Lr,15Lr,16Lr,17Lr,18Lr,19Lr,20Lr,21Lr,22Lr,23Lr,24Lr,25Lr,26Lr,27Lr,28Lr,29Lr,30Lr,31Lr,32Lr,33Lr,34Lr,35Lr,36Lr,37Lr,38Lr,39Lr,40Lr,41Lr,42Lr,43Lr,44Lr,45Lr,46Lr,47Lr,48Lr,49Lr,50Lr,51Lr,52Lr,53Lr,54Lr,55Lr,56Lr,57Lr,58Lr,59Lr,60Lr,61Lr,62Lr,63Lr,64Lr,65Lr,66Lr,67Lr,68Lr,69Lr,70Lr,71Lr,72Lr,73Lr,74Lr,75Lr,76Lr,77Lr,78Lr,79Lr,80Lr,81Lr,82Lr,83Lr,84Lr,85Lr,86Lr,87Lr,88Lr,89Lr,90Lr,91Lr,92Lr,93Lr,94Lr,95Lr,96Lr,97Lr,98Lr,99Lr
99Lr,98Lr,97Lr,96Lr,95Lr,94Lr,93Lr,92Lr,91Lr,90Lr,89Lr,88Lr,87Lr,86Lr,85Lr,84Lr,83Lr,82Lr,81Lr,80Lr,79Lr,78Lr,77Lr,76Lr,75Lr,74Lr,73Lr,72Lr,71Lr,70Lr,69Lr,68Lr,67Lr,66Lr,65Lr,64Lr,63Lr,62Lr,61Lr,60Lr,59Lr,58Lr,57Lr,56Lr,55Lr,54Lr,53Lr,52Lr,51Lr,50Lr,49Lr,48Lr,47Lr,46Lr,45Lr,44Lr,43Lr,42Lr,41Lr,40Lr,39Lr,38Lr,37Lr,36Lr,35Lr,34Lr,33Lr,32Lr,31Lr,30Lr,29Lr,28Lr,27Lr,26Lr,25Lr,24Lr,23Lr,22Lr,21Lr,20Lr,19Lr,18Lr,17Lr,16Lr,15Lr,14Lr,13Lr,12Lr,11Lr,10Lr,9Lr,8Lr,7Lr,6Lr,5Lr,4Lr,3Lr,2Lr,1Lr,0Lr

======== #14 square root ========

sqrt(   1) = 1.L
sqrt(   2) = 1.414213562373095048801688724209698078569L
sqrt(   3) = 1.732050807568877293527446341505872366942L
sqrt(   4) = 2.L
sqrt(   5) = 2.23606797749978969640917366873127623544L
sqrt(   6) = 2.449489742783178098197284074705891391964L
sqrt(   7) = 2.645751311064590590501615753639260425709L
sqrt(   8) = 2.828427124746190097603377448419396157138L
sqrt(   9) = 3.L
sqrt(  10) = 3.162277660168379331998893544432718533717L
sqrt(  1L) = 1.L
sqrt(  2L) = 1.414213562373095048801688724209698078569L
sqrt(  3L) = 1.732050807568877293527446341505872366942L
sqrt(  4L) = 2.L
sqrt(  5L) = 2.23606797749978969640917366873127623544L
sqrt(  6L) = 2.449489742783178098197284074705891391964L
sqrt(  7L) = 2.645751311064590590501615753639260425709L
sqrt(  8L) = 2.828427124746190097603377448419396157138L
sqrt(  9L) = 3.L
sqrt( 10L) = 3.162277660168379331998893544432718533717L
sqrt( 1.L) = 1.L
sqrt( 2.L) = 1.414213562373095048801688724209698078569L
sqrt( 3.L) = 1.732050807568877293527446341505872366942L
sqrt( 4.L) = 2.L
sqrt( 5.L) = 2.23606797749978969640917366873127623544L
sqrt( 6.L) = 2.449489742783178098197284074705891391964L
sqrt( 7.L) = 2.645751311064590590501615753639260425709L
sqrt( 8.L) = 2.828427124746190097603377448419396157138L
sqrt( 9.L) = 3.L
sqrt(10.L) = 3.162277660168379331998893544432718533717L
sqrt( 1Lr) = 1.L
sqrt( 2Lr) = 1.414213562373095048801688724209698078569L
sqrt( 3Lr) = 1.732050807568877293527446341505872366942L
sqrt( 4Lr) = 2.L
sqrt( 5Lr) = 2.23606797749978969640917366873127623544L
sqrt( 6Lr) = 2.449489742783178098197284074705891391964L
sqrt( 7Lr) = 2.645751311064590590501615753639260425709L
sqrt( 8Lr) = 2.828427124746190097603377448419396157138L
sqrt( 9Lr) = 3.L
sqrt(10Lr) = 3.162277660168379331998893544432718533717L

======== #15 type cast ========

gmp.mpz(3) .. 3L
gmp.mpz(3L) .. 3L
gmp.mpz(3.L) .. 3L
gmp.mpf(3) .. 3.L
gmp.mpf(3L) .. 3.L
gmp.mpf(3.L) .. 3.L
gmp.mpf(3Lr) .. 3.L
gmp.mpf(3Lr / 2) .. 1.5L
gmp.mpf(2Lr / 3) .. 0.666666666666666666667L
gmp.mpq(3) .. 3Lr
1Lr.cast@mpf() .. 1.L
(3Lr / 2).cast@mpf() .. 1.5L
(2Lr / 3).cast@mpf() .. 0.666666666666666666667L

======== #16 fibonacci ========

359579325206583560961765665172189099052367214309267232255589801
581811569836004006491505558634099066259034153405766997246569401
941390895042587567453271223806288165311401367715034229502159202
1523202464878591573944776782440387231570435521120801226748728603
2464593359921179141398048006246675396881836888835835456250887805
3987795824799770715342824788687062628452272409956636682999616408
6452389184720949856740872794933738025334109298792472139250504213
10440185009520720572083697583620800653786381708749108822250120621
16892574194241670428824570378554538679120491007541580961500624834
27332759203762391000908267962175339332906872716290689783750745455
44225333398004061429732838340729878012027363723832270745251370289
71558092601766452430641106302905217344934236440122960529002115744
115783425999770513860373944643635095356961600163955231274253486033
187341518601536966291015050946540312701895836604078191803255601777
303124944601307480151388995590175408058857436768033423077509087810
490466463202844446442404046536715720760753273372111614880764689587
793591407804151926593793042126891128819610710140145037958273777397
1284057871006996373036197088663606849580363983512256652839038466984
2077649278811148299629990130790497978399974693652401690797312244381
3361707149818144672666187219454104827980338677164658343636350711365
5439356428629292972296177350244602806380313370817060034433662955746
8801063578447437644962364569698707634360652047981718378070013667111
14240420007076730617258541919943310440740965418798778412503676622857
23041483585524168262220906489642018075101617466780496790573690289968
37281903592600898879479448409585328515842582885579275203077366912825
60323387178125067141700354899227346590944200352359771993651057202793
97605290770725966021179803308812675106786783237939047196728424115618
157928677948851033162880158208040021697730983590298819190379481318411
255533968719576999184059961516852696804517766828237866387107905434029
413462646668428032346940119724892718502248750418536685577487386752440
668996615388005031531000081241745415306766517246774551964595292186469
1082459262056433063877940200966638133809015267665311237542082678938909
1751455877444438095408940282208383549115781784912085789506677971125378
2833915139500871159286880483175021682924797052577397027048760650064287
4585371016945309254695820765383405232040578837489482816555438621189665
7419286156446180413982701248558426914965375890066879843604199271253952
12004657173391489668678522013941832147005954727556362660159637892443617
19423943329837670082661223262500259061971330617623242503763837163697569
31428600503229159751339745276442091208977285345179605163923475056141186
50852543833066829834000968538942350270948615962802847667687312219838755
82281144336295989585340713815384441479925901307982452831610787275979941
133133688169362819419341682354326791750874517270785300499298099495818696
215414832505658809004682396169711233230800418578767753330908886771798637
348548520675021628424024078524038024981674935849553053830206986267617333
563963353180680437428706474693749258212475354428320807161115873039415970
912511873855702065852730553217787283194150290277873860991322859307033303
1476475227036382503281437027911536541406625644706194668152438732346449273
2388987100892084569134167581129323824600775934984068529143761591653482576
3865462327928467072415604609040860366007401579690263197296200323999931849
6254449428820551641549772190170184190608177514674331726439961915653414425
10119911756749018713965376799211044556615579094364594923736162239653346274
16374361185569570355515148989381228747223756609038926650176124155306760699
26494272942318589069480525788592273303839335703403521573912286394960106973
42868634127888159424995674777973502051063092312442448224088410550266867672
69362907070206748494476200566565775354902428015845969798000696945226974645
112231541198094907919471875344539277405965520328288418022089107495493842317
181594448268301656413948075911105052760867948344134387820089804440720816962
293825989466396564333419951255644330166833468672422805842178911936214659279
475420437734698220747368027166749382927701417016557193662268716376935476241
769246427201094785080787978422393713094534885688979999504447628313150135520
1244666864935793005828156005589143096022236302705537193166716344690085611761
2013913292136887790908943984011536809116771188394517192671163973003235747281
3258580157072680796737099989600679905139007491100054385837880317693321359042
5272493449209568587646043973612216714255778679494571578509044290696557106323
8531073606282249384383143963212896619394786170594625964346924608389878465365
13803567055491817972029187936825113333650564850089197542855968899086435571688
22334640661774067356412331900038009953045351020683823507202893507476314037053
36138207717265885328441519836863123286695915870773021050058862406562749608741
58472848379039952684853851736901133239741266891456844557261755914039063645794
94611056096305838013295371573764256526437182762229865607320618320601813254535
153083904475345790698149223310665389766178449653686710164582374234640876900329
247694960571651628711444594884429646292615632415916575771902992555242690154864
400778865046997419409593818195095036058794082069603285936485366789883567055193
648473825618649048121038413079524682351409714485519861708388359345126257210057
1049252690665646467530632231274619718410203796555123147644873726135009824265250
1697726516284295515651670644354144400761613511040643009353262085480136081475307
2746979206949941983182302875628764119171817307595766156998135811615145905740557
4444705723234237498833973519982908519933430818636409166351397897095281987215864
7191684930184179482016276395611672639105248126232175323349533708710427892956421
11636390653418416980850249915594581159038678944868584489700931605805709880172285
18828075583602596462866526311206253798143927071100759813050465314516137773128706
30464466237021013443716776226800834957182606015969344302751396920321847653300991
49292541820623609906583302538007088755326533087070104115801862234837985426429697
79757008057644623350300078764807923712509139103039448418553259155159833079730688
129049549878268233256883381302815012467835672190109552534355121389997818506160385
208806557935912856607183460067622936180344811293149000952908380545157651585891073
337856107814181089864066841370437948648180483483258553487263501935155470092051458
546662665750093946471250301438060884828525294776407554440171882480313121677942531
884518773564275036335317142808498833476705778259666107927435384415468591769993989
1431181439314368982806567444246559718305231073036073662367607266895781713447936520
2315700212878644019141884587055058551781936851295739770295042651311250305217930509
3746881652193013001948452031301618270087167924331813432662649918207032018665867029
6062581865071657021090336618356676821869104775627553202957692569518282323883797538
9809463517264670023038788649658295091956272699959366635620342487725314342549664567
15872045382336327044129125268014971913825377475586919838578035057243596666433462105
25681508899600997067167913917673267005781650175546286474198377544968911008983126672
41553554281937324111297039185688238919607027651133206312776412602212507675416588777
67235063181538321178464953103361505925388677826679492786974790147181418684399715449
108788617463475645289761992289049744844995705477812699099751202749393926359816304226
176023680645013966468226945392411250770384383304492191886725992896575345044216019675

======== #17 gmp.mpq ========

x .. 3/4Lr
x.numer .. 3L
x.denom .. 4L
