intervals 0.3.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. data/VERSION.txt +1 -0
  2. data/ext/crlibm/AUTHORS +2 -0
  3. data/ext/crlibm/COPYING +504 -0
  4. data/ext/crlibm/ChangeLog +80 -0
  5. data/ext/crlibm/INSTALL +182 -0
  6. data/ext/crlibm/Makefile.am +84 -0
  7. data/ext/crlibm/Makefile.in +530 -0
  8. data/ext/crlibm/NEWS +0 -0
  9. data/ext/crlibm/README +31 -0
  10. data/ext/crlibm/TODO +47 -0
  11. data/ext/crlibm/VERSION +1 -0
  12. data/ext/crlibm/aclocal.m4 +989 -0
  13. data/ext/crlibm/atan-itanium.c +846 -0
  14. data/ext/crlibm/atan-pentium.c +261 -0
  15. data/ext/crlibm/atan_accurate.c +244 -0
  16. data/ext/crlibm/atan_accurate.h +191 -0
  17. data/ext/crlibm/atan_fast.c +324 -0
  18. data/ext/crlibm/atan_fast.h +678 -0
  19. data/ext/crlibm/config.guess +1461 -0
  20. data/ext/crlibm/config.sub +1566 -0
  21. data/ext/crlibm/configure +7517 -0
  22. data/ext/crlibm/configure.ac +364 -0
  23. data/ext/crlibm/crlibm.h +125 -0
  24. data/ext/crlibm/crlibm_config.h +149 -0
  25. data/ext/crlibm/crlibm_config.h.in +148 -0
  26. data/ext/crlibm/crlibm_private.c +293 -0
  27. data/ext/crlibm/crlibm_private.h +658 -0
  28. data/ext/crlibm/csh_fast.c +631 -0
  29. data/ext/crlibm/csh_fast.h +771 -0
  30. data/ext/crlibm/double-extended.h +496 -0
  31. data/ext/crlibm/exp-td.c +962 -0
  32. data/ext/crlibm/exp-td.h +685 -0
  33. data/ext/crlibm/exp_accurate.c +197 -0
  34. data/ext/crlibm/exp_accurate.h +85 -0
  35. data/ext/crlibm/gappa/log-de-E0-logir0.gappa +106 -0
  36. data/ext/crlibm/gappa/log-de-E0.gappa +79 -0
  37. data/ext/crlibm/gappa/log-de.gappa +81 -0
  38. data/ext/crlibm/gappa/log-td-E0-logir0.gappa +126 -0
  39. data/ext/crlibm/gappa/log-td-E0.gappa +143 -0
  40. data/ext/crlibm/gappa/log-td-accurate-E0-logir0.gappa +230 -0
  41. data/ext/crlibm/gappa/log-td-accurate-E0.gappa +213 -0
  42. data/ext/crlibm/gappa/log-td-accurate.gappa +217 -0
  43. data/ext/crlibm/gappa/log-td.gappa +156 -0
  44. data/ext/crlibm/gappa/trigoSinCosCase3.gappa +204 -0
  45. data/ext/crlibm/gappa/trigoTanCase2.gappa +73 -0
  46. data/ext/crlibm/install-sh +269 -0
  47. data/ext/crlibm/log-de.c +431 -0
  48. data/ext/crlibm/log-de.h +732 -0
  49. data/ext/crlibm/log-td.c +852 -0
  50. data/ext/crlibm/log-td.h +819 -0
  51. data/ext/crlibm/log10-td.c +906 -0
  52. data/ext/crlibm/log10-td.h +823 -0
  53. data/ext/crlibm/log2-td.c +935 -0
  54. data/ext/crlibm/log2-td.h +821 -0
  55. data/ext/crlibm/maple/atan.mpl +359 -0
  56. data/ext/crlibm/maple/common-procedures.mpl +997 -0
  57. data/ext/crlibm/maple/csh.mpl +446 -0
  58. data/ext/crlibm/maple/double-extended.mpl +151 -0
  59. data/ext/crlibm/maple/exp-td.mpl +195 -0
  60. data/ext/crlibm/maple/log-de.mpl +243 -0
  61. data/ext/crlibm/maple/log-td.mpl +316 -0
  62. data/ext/crlibm/maple/log10-td.mpl +345 -0
  63. data/ext/crlibm/maple/log2-td.mpl +334 -0
  64. data/ext/crlibm/maple/trigo.mpl +728 -0
  65. data/ext/crlibm/maple/triple-double.mpl +58 -0
  66. data/ext/crlibm/missing +198 -0
  67. data/ext/crlibm/mkinstalldirs +40 -0
  68. data/ext/crlibm/rem_pio2_accurate.c +219 -0
  69. data/ext/crlibm/rem_pio2_accurate.h +53 -0
  70. data/ext/crlibm/scs_lib/AUTHORS +3 -0
  71. data/ext/crlibm/scs_lib/COPYING +504 -0
  72. data/ext/crlibm/scs_lib/ChangeLog +16 -0
  73. data/ext/crlibm/scs_lib/INSTALL +215 -0
  74. data/ext/crlibm/scs_lib/Makefile.am +18 -0
  75. data/ext/crlibm/scs_lib/Makefile.in +328 -0
  76. data/ext/crlibm/scs_lib/NEWS +0 -0
  77. data/ext/crlibm/scs_lib/README +9 -0
  78. data/ext/crlibm/scs_lib/TODO +4 -0
  79. data/ext/crlibm/scs_lib/addition_scs.c +623 -0
  80. data/ext/crlibm/scs_lib/config.guess +1461 -0
  81. data/ext/crlibm/scs_lib/config.sub +1566 -0
  82. data/ext/crlibm/scs_lib/configure +6226 -0
  83. data/ext/crlibm/scs_lib/division_scs.c +110 -0
  84. data/ext/crlibm/scs_lib/double2scs.c +174 -0
  85. data/ext/crlibm/scs_lib/install-sh +269 -0
  86. data/ext/crlibm/scs_lib/missing +198 -0
  87. data/ext/crlibm/scs_lib/mkinstalldirs +40 -0
  88. data/ext/crlibm/scs_lib/multiplication_scs.c +456 -0
  89. data/ext/crlibm/scs_lib/poly_fct.c +112 -0
  90. data/ext/crlibm/scs_lib/print_scs.c +73 -0
  91. data/ext/crlibm/scs_lib/rand_scs.c +63 -0
  92. data/ext/crlibm/scs_lib/scs.h +353 -0
  93. data/ext/crlibm/scs_lib/scs2double.c +391 -0
  94. data/ext/crlibm/scs_lib/scs2mpf.c +58 -0
  95. data/ext/crlibm/scs_lib/scs2mpfr.c +61 -0
  96. data/ext/crlibm/scs_lib/scs_private.c +23 -0
  97. data/ext/crlibm/scs_lib/scs_private.h +133 -0
  98. data/ext/crlibm/scs_lib/tests/tbx_timing.h +102 -0
  99. data/ext/crlibm/scs_lib/wrapper_scs.h +486 -0
  100. data/ext/crlibm/scs_lib/zero_scs.c +52 -0
  101. data/ext/crlibm/stamp-h.in +1 -0
  102. data/ext/crlibm/tests/Makefile.am +43 -0
  103. data/ext/crlibm/tests/Makefile.in +396 -0
  104. data/ext/crlibm/tests/blind_test.c +148 -0
  105. data/ext/crlibm/tests/generate_test_vectors.c +258 -0
  106. data/ext/crlibm/tests/soak_test.c +334 -0
  107. data/ext/crlibm/tests/test_common.c +627 -0
  108. data/ext/crlibm/tests/test_common.h +28 -0
  109. data/ext/crlibm/tests/test_perf.c +570 -0
  110. data/ext/crlibm/tests/test_val.c +249 -0
  111. data/ext/crlibm/trigo_accurate.c +500 -0
  112. data/ext/crlibm/trigo_accurate.h +331 -0
  113. data/ext/crlibm/trigo_fast.c +1219 -0
  114. data/ext/crlibm/trigo_fast.h +639 -0
  115. data/ext/crlibm/triple-double.h +878 -0
  116. data/ext/extconf.rb +31 -0
  117. data/ext/fpu.c +107 -0
  118. data/ext/jamis-mod.rb +591 -0
  119. data/lib/fpu.rb +287 -0
  120. data/lib/interval.rb +1170 -0
  121. data/lib/intervals.rb +212 -0
  122. data/lib/struct_float.rb +133 -0
  123. data/test/data_atan.txt +360 -0
  124. data/test/data_cos.txt +346 -0
  125. data/test/data_cosh.txt +3322 -0
  126. data/test/data_exp.txt +3322 -0
  127. data/test/data_log.txt +141 -0
  128. data/test/data_sin.txt +140 -0
  129. data/test/data_sinh.txt +3322 -0
  130. data/test/data_tan.txt +342 -0
  131. metadata +186 -0
data/lib/intervals.rb ADDED
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/ruby
2
+ =begin rdoc
3
+ = Intervals -- Interval arithmetic in Ruby
4
+
5
+ Besides making obvious a possible loss of precision during floating
6
+ point calculations, interval arithmetic provides not-so-conventional
7
+ methods for a variety of computational applications.
8
+
9
+ This library implements an interval system in the extended real set
10
+ that is closed under arithmetic operations. Correct rounding ensures
11
+ that the operations are inclusion-wise monotonic.
12
+
13
+ == Introduction
14
+
15
+ Fire up ruby's interactive shell by typing
16
+
17
+ irb
18
+
19
+ on the command line. Take into consideration the rather innocent
20
+ looking function
21
+
22
+ def f(x,y)
23
+ (333.75-x**2)* y**6 + x**2 * (11* x**2 * y**2-121 * y**4 -2) +
24
+ 5.5 * y**8 + x/(2*y)
25
+ end
26
+
27
+ We can calculate it for some specific +x+ and +y+,
28
+
29
+ f(77617.0,33096.0) # => 1.17260394005318
30
+
31
+ There is only one problem: this result is *WRONG*. The correct
32
+ result can be obtained by calculating separately the numerator and
33
+ denominator of +f+ using integer arithmetic.
34
+
35
+ def f_num(x,y)
36
+ ((33375- 100 * x**2)* y**6 +
37
+ 100 * x**2 * (11* x**2 * y**2-121 * y**4 -2) +
38
+ 550 * y**8) *
39
+ 2*y + 100 *x
40
+ end
41
+
42
+ def f_den(x,y)
43
+ 200*y
44
+ end
45
+
46
+ f_num(77617, 33096).to_f / f_den(77617, 33096).to_f
47
+ # => -0.827396059946821
48
+
49
+ The result obtained by directly calculating +f+ is completely wrong:
50
+ sign, order of magnitude, and all digits are wrong. No warnings, no
51
+ errors are generated, but the computation simply yields unreliable
52
+ results.
53
+
54
+ Using interval arithmetic it is possible to detect the loss of
55
+ precision due to floating-point roundings.
56
+
57
+ require "intervals" # you must have installed this package, obviously
58
+
59
+ 1/Interval[3.0] # => Interval[0.333333333333333, 0.333333333333333]
60
+
61
+ yields an interval that is very sharp. Its width
62
+
63
+ (1/Interval[3.0]).width # => 5.55111512312578e-17
64
+
65
+ corresponds to one bit in the least significant position. We cannot
66
+ do any-better with floating point operations. But if we calculate
67
+ +f+ with intervals we obtain
68
+
69
+ f(Interval[77617.0], Interval[33096.0])
70
+ # => Interval[-2.36118324143482e+21, 1.18059162071741e+21]
71
+
72
+ The result has an uncertainity of the order of 10 to the power of 21 !
73
+
74
+ == Cool Applications
75
+
76
+ Obviously, interval arithmetics allows us to detect whenever
77
+ floating-point calculations become unreliable. But it also has other
78
+ interesting applications.
79
+
80
+ Finding all solutions of an equation that fall into an interval, for
81
+ instance. Take the equation
82
+
83
+ x**3 == x
84
+
85
+ We rewrite it first in the form
86
+
87
+ x**3 - x == 0
88
+
89
+ The left-hand side of this equation has derivative
90
+
91
+ 3* x**2 - 1
92
+
93
+ To find all solutions in [-100,100] we do
94
+
95
+ Interval[-100,100].newton(proc {|x| x**3 - x}, proc {|x| 3* x**2 - 1})
96
+ # => Interval[[-1.0], [-0.0], [1.0]]
97
+
98
+ which shows that the equation has the three solutions -1, 0, and +1.
99
+
100
+ == Intervals in Ruby
101
+
102
+ An Interval can be created starting from a number
103
+
104
+ a = Interval[3] # Or, in alternative, as
105
+ b = 3.to_interval # equivalent to above
106
+ a == b # => true
107
+
108
+ An Interval can also be created from a pair of numbers that
109
+ represent its lower and upper bounds:
110
+
111
+ c = Interval[1,2] # In mathematical notation: [1,2]
112
+ c.include?(1.5) # => true
113
+ c.include?(0) # => false
114
+ c.include?(3) # => false
115
+
116
+ The interval is _closed_, i.e., it includes its bounds:
117
+
118
+ c.include?(1) # => true
119
+ c.include?(2) # => true
120
+
121
+ An interval can be _unbounded_, i.e., one or both of its extrema are infinite:
122
+
123
+ d = Interval[5,Infinity] # includes all reals > 1
124
+ d.include?(Infinity) # => true
125
+ d.width # => Infinity
126
+
127
+ An interval can have more than one connected components:
128
+
129
+ e = Interval[[1,2],[3,4]] # The set {x | 1<= x <= 2 or 3 <= x <= 4}
130
+
131
+ This way, the set of intervals is closed under set union
132
+
133
+ a | c # => Interval[[1, 2], [3]]
134
+
135
+ The intersection is also well-defined on intervals
136
+
137
+ Interval[1,3] & Interval[2,4]
138
+ # => Interval[2, 3]
139
+
140
+ All arithmetic operations are defined on intervals
141
+
142
+ a + c # => Interval[4, 5]
143
+ 3 + Interval[1,2] # equivalent to above
144
+ a * c # => Interval[3, 6]
145
+ (a | c) + a * c # => Interval[4, 9]
146
+ (-c) ** 2 # => Interval[1, 4]
147
+ 1 / a # => Interval[0.333333333333333, 0.333333333333333]
148
+
149
+ Note that the rounding is consistent with the arithmetic
150
+ operations. If we look into bits of the result of the last
151
+ operation, we see that _sup_ is _inf_ plus one bit in the least
152
+ significant position:
153
+
154
+ (1/a).inf.to_struct # => Struct::Float[1, 1021, 1501199875790165]
155
+ (1/a).sup.to_struct # => Struct::Float[1, 1021, 1501199875790166]
156
+ (1/a).width # => 5.55111512312578e-17
157
+ (1/a).width == 2 ** -54 # => true
158
+
159
+ We say that 1/a is sharp
160
+
161
+ (1/a).sharp? # => true
162
+
163
+ == Installation
164
+
165
+ This projects homepage is at http://intervals.rubyforge.org and its
166
+ cockpit at http://rubyforge.org/projects/intervals .
167
+
168
+ You can download the library from http://rubyforge.org/frs/?group_id=1458 .
169
+
170
+ You can browse the project
171
+ repository[http://rubyforge.org/plugins/scmsvn/viewcvs.php/trunk?root=intervals].
172
+
173
+ To compile the C extension, go into the directory with the project files and type
174
+
175
+ ruby extconf.rb
176
+ make
177
+
178
+ On a unix-like system you can type
179
+
180
+ ./extconf.rb && make
181
+
182
+ == Testing
183
+
184
+ Executing interval.rb runs the library testsuite.
185
+
186
+ == References
187
+
188
+ Eldon Hansen, G. William Walster, {Global Optimization Using
189
+ Interval
190
+ Analysis}[http://www.ebooks.dekker.com/eBookCover.asp?eBookID=0824758706&type=ISBN]
191
+ - Second Edition, Revised and Expanded. John Dekker, Inc., 2003.
192
+
193
+ == Author & License
194
+
195
+ Copyright (c) 2006, Stefano Taschini.
196
+
197
+ You can reach me using the concact information provided in
198
+ http://www.taschini.net/contact .
199
+
200
+ This work is licensed under the terms of LGPL[http://www.gnu.org/copyleft/lesser.html].
201
+
202
+ Correctly-rounded transcendetal functions are computed using
203
+ CRlibm[http://lipforge.ens-lyon.fr/www/crlibm/], which is developed
204
+ at the {ENS Lyon}[http://www.ens-lyon.fr/LIP/] and is also released
205
+ under the terms of LGPL.
206
+
207
+ RDoc template by {Jamis Buck}[http://rubyforge.org/frs/?group_id=1458].
208
+
209
+ =end
210
+ require 'interval'
211
+
212
+ Test::Unit.run = (__FILE__ != $0)
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # Definitions for the Struct::Float class.
4
+ #
5
+ # Copyright (c) 2006 Stefano Taschini <taschini@ieee.org>.
6
+ # Licensed under the terms of LGPL: http://www.gnu.org/copyleft/lesser.html
7
+
8
+ # Symbolic constant for IEEE-754 plus infinity
9
+ Kernel::Infinity = 1/0.0
10
+
11
+ Struct.new('Float', :sign, :biased_exp, :fraction)
12
+
13
+ # Struct class for the fields that form a Float
14
+ # according to the IEEE-754 standard: sign, biased exponent, fraction.
15
+ class Struct::Float
16
+
17
+ # Assemble a float number from a Float::Struct.
18
+ # It is the inverse of Float#to_struct.
19
+ #
20
+ # Struct::Float[1,1024,0].to_f
21
+ # # => 2.0
22
+ #
23
+ def to_f
24
+ ["%b%011b%052b" % [sign < 0 ? 1 : 0, biased_exp , fraction]].pack("B*").unpack("G").first
25
+ end
26
+
27
+ # Overrides Object#inspect.
28
+ def inspect
29
+ self.class.name + to_a.inspect
30
+ end
31
+
32
+ end
33
+
34
+ class Float
35
+
36
+ # Split a float number into a Struct::Float fields: sign, biased exponent, fraction.
37
+ # It is the inverse of Struct::Float#to_f.
38
+ #
39
+ # (2.0).to_struct # => Struct::Float[1, 1024, 0]
40
+ #
41
+ def to_struct
42
+ x, = [self].pack("G").unpack("B*")
43
+ Struct::Float[x[0] == ?1 ? -1 : 1, x[1,11].to_i(2), x[12,52].to_i(2)]
44
+ end
45
+
46
+ # Unit in the last place. The least significant bit of the fraction of a
47
+ # floating point number in its standard representation is its last place.
48
+ # The value represented by this bit (e.g., the absolute difference between
49
+ # two numbers whose structure are identical except for this bit)
50
+ # is the unit in the last place of that number.
51
+ #
52
+ # (1.0).ulp # => 2 ** -52
53
+ # (1.1).ulp # => 2 ** -52
54
+ # (0.1).ulp # => 2 ** -56
55
+ #
56
+ def ulp
57
+ 2.0 ** if !finite?
58
+ Infinity
59
+ elsif zero?
60
+ -1074
61
+ else
62
+ [Math.frexp(self).last - 53, -1074].max
63
+ end
64
+ end
65
+
66
+ end
67
+
68
+ require 'test/unit'
69
+
70
+ # Tests Struct::Float.
71
+ class Struct::Float::Test < Test::Unit::TestCase
72
+
73
+ def assert_consistent(f,s)
74
+ assert_equal(f,s.to_f)
75
+ assert_equal(s,f.to_struct)
76
+ assert_equal(s, eval(s.inspect))
77
+ assert(f.ulp.infinite? || (f/f.ulp).to_i == f/f.ulp, [f,f.ulp].inspect)
78
+ end
79
+
80
+ def assert_nan(s)
81
+ # NaN does not have a unique representation, and therefore
82
+ # it does not make sense to have it as a constant as for
83
+ # Infinity. In particular a NaN has 2047 as biased exponent and
84
+ # non-zero fraction
85
+ assert(2047, s.biased_exp)
86
+ assert(!s.fraction.zero?, s.fraction)
87
+ # You cannot test for NaN with equality. You MUST use nan?
88
+ assert(s.to_f.nan?, s.to_f)
89
+ assert_equal(s, eval(s.inspect))
90
+ end
91
+
92
+ def test_consistency
93
+ assert_consistent Infinity, Struct::Float[1,2047,0]
94
+ assert_consistent -Infinity, Struct::Float[-1,2047,0]
95
+ assert_consistent 2.0 ** -1074, Struct::Float[1,0,1]
96
+ assert_consistent 0.0, Struct::Float[1,0,0]
97
+ assert_consistent -0.0, Struct::Float[-1,0,0]
98
+ assert_consistent 1.0, Struct::Float[1,1023, 0]
99
+ assert_consistent 1/3.0, Struct::Float[1,1021,0x5555555555555]
100
+ assert_consistent 1/5.0, Struct::Float[1,1020,0x999999999999a]
101
+ end
102
+
103
+ def test_nan
104
+ assert_nan( (0.0/0.0).to_struct)
105
+ assert_nan( Struct::Float[-1,2047,34])
106
+ assert_nan( Struct::Float[+1,2047,34])
107
+ end
108
+
109
+ def test_denormalized
110
+ assert_consistent 34 * 2.0 ** -(1023+51), Struct::Float[1,0,34]
111
+ end
112
+
113
+ def test_normalized
114
+ assert_consistent -(2**52+34) * 2.0**(1043-1023-52), Struct::Float[-1,1043,34]
115
+ end
116
+
117
+ def test_samples
118
+ n = 1000
119
+ srand 12345
120
+ n.times{
121
+ s = Struct::Float[2*rand(2) -1, rand(2048), rand(2**52)]
122
+ f = s.to_f
123
+ if f.nan?
124
+ assert_nan(s)
125
+ else
126
+ assert_consistent(f,s)
127
+ end
128
+ }
129
+ end
130
+
131
+ end
132
+
133
+ Test::Unit.run = (__FILE__ != $0)
@@ -0,0 +1,360 @@
1
+ -49 -6676745168884016 -52 -6695412621809827
2
+ -30 -4861106110007748 -52 -7074236757254170
3
+ -29 -5362405488479229 -52 -7074237301139068
4
+ -10 7422940652573050 -52 7074237752027820
5
+ -56 8350049073576612 -56 8312971906493987
6
+ -20 6686836979619935 -52 7074237751322222
7
+ -31 4996362415435413 -52 7074235816338883
8
+ -16 7993329455915879 -52 7074237751991516
9
+ -30 -7832367964376866 -52 -7074237134628529
10
+ -34 -5670071353421996 -52 -7074224106476624
11
+ -44 4908274183574264 -52 7058096065503260
12
+ -25 6616520859494375 -52 7074237729189288
13
+ -34 -6897813713270117 -52 -7074226535249375
14
+ -18 4750063628585111 -52 7074237751779899
15
+ -51 6283760758550648 -52 5524566621009389
16
+ -44 8685813128183540 -52 7065116204856259
17
+ -9 8054599679028929 -52 7074237752028154
18
+ -45 -5376903770095701 -52 -7044768364027066
19
+ -32 -6028762688456171 -52 -7074234543606726
20
+ -46 6083765743530758 -52 7022148547480404
21
+ -48 7886386524171885 -52 6913566862338224
22
+ -11 -6408340492808532 -52 -7074237752027000
23
+ -51 8974883386486003 -52 5967137188717274
24
+ -14 6269990605230410 -52 7074237752016673
25
+ -11 8952336012353831 -52 7074237752027411
26
+ -50 5627183984336594 -52 6184890802852611
27
+ -12 -7210616123731563 -52 -7074237752025882
28
+ -11 5654083981120363 -52 7074237752026809
29
+ -40 8773729828431031 -52 7073673367185500
30
+ -18 4557049905856740 -52 7074237751769371
31
+ -13 8095513431826583 -52 7074237752023883
32
+ -13 6917603096342324 -52 7074237752023107
33
+ -17 -8408020525220567 -52 -7074237751958233
34
+ -26 -5659695092548994 -52 -7074237698627779
35
+ -9 -5539225035292282 -52 -7074237752028024
36
+ -24 -5398563840997248 -52 -7074237738032520
37
+ -53 7213017425312897 -53 6081949995546634
38
+ -10 -4889013770309537 -52 -7074237752027497
39
+ -24 -5398563841318084 -52 -7074237738032521
40
+ -28 -8332694619496757 -52 -7074237606946221
41
+ -23 -4716531970377033 -52 -7074237744018544
42
+ -23 -5983062640679389 -52 -7074237745714126
43
+ -31 6417264544425362 -52 7074236244936675
44
+ -36 7883889025917166 -52 7074198496654754
45
+ -51 8301272625598633 -52 5881299659417314
46
+ -50 8659630853679287 -52 6491959254457818
47
+ -52 6546230263066222 -53 8720689060095029
48
+ -12 -5651098405753654 -52 -7074237752025175
49
+ -8 5163661619656860 -52 7074237752028217
50
+ -47 -4580372742674242 -52 -6935902733499553
51
+ -39 8180030493813520 -52 7073935078330987
52
+ -2 -7915014755394663 -52 -7074237752028437
53
+ -35 -7673788035457036 -52 -7074217586954269
54
+ -25 8315023577327304 -52 7074237733854623
55
+ -19 5743905400979178 -52 7074237751617364
56
+ -17 -5681533095476947 -52 -7074237751924543
57
+ -47 7973900975981561 -52 6994758523590856
58
+ -43 6356257461171345 -52 7068005459486531
59
+ -18 -6953439369247259 -52 -7074237751858655
60
+ -33 6443909080170189 -52 7074231748587711
61
+ -38 5538660629756963 -52 7074014243111571
62
+ -14 -8075380245201889 -52 -7074237752019302
63
+ -10 5256826173771725 -52 7074237752027564
64
+ -51 5573466478855810 -52 5344998260262317
65
+ -47 -7526291182379321 -52 -6990032740047549
66
+ -39 -7763550144845679 -52 -7073918841217246
67
+ -16 -4817539807515188 -52 -7074237751967174
68
+ -34 -4693933252258754 -52 -7074221268783303
69
+ -6 -7945520526923850 -52 -7074237752028403
70
+ -3 -4951817484616873 -52 -7074237752028432
71
+ -49 -8329767197513852 -52 -6770333485570071
72
+ -43 -7849188580362113 -52 -7069190852687350
73
+ -30 -5417939574386929 -52 -7074236859492964
74
+ -36 -5877818206934241 -52 -7074185098986289
75
+ -48 -8166094051967038 -52 -6919065778702098
76
+ -39 -7820525575821808 -52 -7073921164600844
77
+ -12 -7313531862082622 -52 -7074237752025918
78
+ -3 4951836814829880 -52 7074237752028433
79
+ -23 -8723725200447980 -52 -7074237747697844
80
+ -55 6528457036738331 -55 6458381038228554
81
+ -37 8787130241231394 -52 7074167311508885
82
+ -45 -8714270568872257 -52 -7056054306524929
83
+ -7 -5134327898415580 -52 -7074237752028327
84
+ -32 -5859945482704943 -52 -7074234451176380
85
+ -42 5175484385816680 -52 7070410663705062
86
+ -16 -8479001620843270 -52 -7074237751993631
87
+ -30 8632105164682643 -52 7074237191828677
88
+ -21 7440328686910488 -52 7074237750759044
89
+ -11 8561755344018095 -52 7074237752027363
90
+ -20 4776849915848136 -52 7074237751039847
91
+ -4 5427736524026002 -52 7074237752028427
92
+ -15 -6197649985754546 -52 -7074237752004629
93
+ -1 -7060484441362482 -52 -7074237752028439
94
+ -55 -5018043258006925 -55 -4985968176082536
95
+ -47 -8193733614400224 -52 -6996890475444739
96
+ -25 8358193290813304 -52 7074237733948489
97
+ -28 7159678999044318 -52 7074237583176482
98
+ -39 -6317111304104169 -52 -7073845819711099
99
+ -54 7745007694309976 -54 7314613275119242
100
+ -12 7503936071959207 -52 7074237752025983
101
+ -21 6644798921957811 -52 7074237750607068
102
+ -56 5829680918067314 -56 5817011617561633
103
+ -13 -8074252884931639 -52 -7074237752023870
104
+ -33 9002850770762419 -52 7074233454986625
105
+ -4 8707062609193408 -52 7074237752028433
106
+ -52 8245660807233913 -52 4822869285731787
107
+ -21 -8853054343549432 -52 -7074237750961607
108
+ -9 -5273200803018387 -52 -7074237752028002
109
+ -49 7033788768772385 -52 6714558409141340
110
+ -14 7517565260791892 -52 7074237752018625
111
+ -48 8649541151443065 -52 6927732476883626
112
+ -24 -5260077118099210 -52 -7074237737664038
113
+ -44 6281526399614621 -52 7061624901212693
114
+ -18 8568779177826050 -52 7074237751890662
115
+ -2 -7915762172198987 -52 -7074237752028438
116
+ -32 7291756019291007 -52 7074235099332291
117
+ -56 -8508052373226590 -56 -8468842291585479
118
+ -32 5286847131351178 -52 7074234093361444
119
+ -20 -4684765264905091 -52 -7074237751020413
120
+ -44 -7372790180017576 -52 -7063491750824057
121
+ -44 -8450692827142862 -52 -7064862420362054
122
+ -14 8851311819283196 -52 7074237752020104
123
+ -46 -8207649073777348 -52 -7035626831584532
124
+ -55 7088890124964889 -55 6999480473640342
125
+ -32 5624610406737997 -52 7074234313067924
126
+ -12 -4573638195416916 -52 -7074237752024407
127
+ -42 8887332342286145 -52 7072009069871766
128
+ -42 -8139557730670931 -52 -7071804322675597
129
+ -18 4564661521721110 -52 7074237751769804
130
+ -44 5579999223267263 -52 7060039201662116
131
+ -32 -6466361833585952 -52 -7074234760730766
132
+ -4 -4717122230842631 -52 -7074237752028425
133
+ -24 -8897952373415419 -52 -7074237743536838
134
+ -35 5278532582957760 -52 7074208436588500
135
+ -33 7830855330466550 -52 7074232811875086
136
+ -35 8522863278914607 -52 7074219595864268
137
+ -21 6288852820382094 -52 7074237750526620
138
+ -13 -6656739900311236 -52 -7074237752022898
139
+ -35 7248321512868041 -52 7074216403292098
140
+ -28 -4956891741597365 -52 -7074237508140560
141
+ -51 8194336304817978 -52 5866463162859028
142
+ -33 5760410091289691 -52 7074231036252026
143
+ -29 7611330646056895 -52 7074237434363665
144
+ -55 7415571026782073 -55 7313438725482747
145
+ -30 -8542842653890073 -52 -7074237185975256
146
+ -5 8342042070771333 -52 7074237752028423
147
+ -24 8189610396922894 -52 7074237742802377
148
+ -28 7939203753583904 -52 7074237599755510
149
+ -38 4886866681773973 -52 7073984432239179
150
+ -27 -6341065457088490 -52 -7074237656703307
151
+ -53 6954918379615667 -53 5922483138569978
152
+ -30 -4571031407498819 -52 -7074236694126437
153
+ -41 -5410362198557212 -52 -7072407279426887
154
+ -1 7060237450447329 -52 7074237752028440
155
+ -20 -8471930411811767 -52 -7074237751471027
156
+ -24 5407049589174038 -52 7074237738054487
157
+ -7 -8968554475863365 -52 -7074237752028375
158
+ -19 -4679638799713993 -52 -7074237751523875
159
+ -43 -5692309413505514 -52 -7067278529180735
160
+ -53 -6449491238214693 -53 -5597149308470579
161
+ -30 -8247115081444027 -52 -7074237165677549
162
+ -29 4741992271164001 -52 7074237242147467
163
+ -40 -8647083634277326 -52 -7073665101139437
164
+ -17 -6849864479373372 -52 -7074237751942263
165
+ -11 -8740248149138188 -52 -7074237752027385
166
+ -6 -8661871452648979 -52 -7074237752028407
167
+ -1 -7060239598468739 -52 -7074237752028439
168
+ -22 8411163793457497 -52 7074237749782679
169
+ -32 7102221646358434 -52 7074235028540767
170
+ -48 6625427109887130 -52 6883021586560288
171
+ -3 4951888360853153 -52 7074237752028433
172
+ -22 4793687838465350 -52 7074237748087953
173
+ -33 5037551492709695 -52 7074230072578159
174
+ -17 8586710923490501 -52 7074237751959695
175
+ -6 -7338631672232787 -52 -7074237752028401
176
+ -34 -6640169989730872 -52 -7074226100029684
177
+ -31 5892290758242923 -52 7074236110662298
178
+ -34 8498334067564255 -52 7074228647743784
179
+ -4 7768372624658816 -52 7074237752028432
180
+ -40 -5319858496741530 -52 -7073306945299339
181
+ -3 -4951890508054820 -52 -7074237752028432
182
+ -52 -5087796255121572 -53 -7622174978478882
183
+ -42 -6131032036652416 -52 -7071007131618577
184
+ -17 6474083934948123 -52 7074237751937262
185
+ -14 8751579042007142 -52 7074237752020009
186
+ -28 -6485705268614996 -52 -7074237565629927
187
+ -57 -5682856434446167 -57 -5679913677639312
188
+ -16 6792305067417004 -52 7074237751984988
189
+ -10 -6576137724758490 -52 -7074237752027739
190
+ -46 -6619295705325359 -52 -7026362460404083
191
+ -35 -5951131755189007 -52 -7074211749830661
192
+ -29 7948599940098146 -52 7074237447842590
193
+ -20 8520969917420164 -52 7074237751474236
194
+ -19 -8894776888768346 -52 -7074237751762983
195
+ -40 -8714351068247504 -52 -7073669521520845
196
+ -22 6430447127284201 -52 7074237749090937
197
+ -15 -5969512010341847 -52 -7074237752003719
198
+ -47 -8438645494322425 -52 -6999134876235455
199
+ -39 -5344774715415482 -52 -7073774518271795
200
+ -23 -7738347492163984 -52 -7074237747146399
201
+ -27 -4630281922039889 -52 -7074237621482845
202
+ -51 5733649741925627 -52 5388869056488382
203
+ -14 8751579042149628 -52 7074237752020009
204
+ -37 -7911526026902446 -52 -7074159515539363
205
+ -29 -8363980642578203 -52 -7074237462949383
206
+ -56 -5471361555839683 -56 -5460882872524809
207
+ -25 -8740163642192211 -52 -7074237734738635
208
+ -54 -7293798276823893 -54 -6930360960521604
209
+ -20 -5924075390274085 -52 -7074237751231291
210
+ -35 5316238428037218 -52 7074208644510596
211
+ -23 -6438887565851618 -52 -7074237746161133
212
+ -39 -8783266031433407 -52 -7073955865988955
213
+ -29 5450641376010239 -52 7074237308438142
214
+ -10 8615532986338452 -52 7074237752027905
215
+ -29 8916598080078003 -52 7074237480865423
216
+ -53 -7621911932155515 -53 -6325621976850426
217
+ -6 -8930241024601165 -52 -7074237752028407
218
+ -36 8394812251504800 -52 7074200885806715
219
+ -19 -8058830822182016 -52 -7074237751735446
220
+ -39 6482966766724009 -52 7073855846619740
221
+ -15 8833972851343274 -52 7074237752011736
222
+ -17 -6068926507539837 -52 -7074237751931175
223
+ -17 -5839293699485431 -52 -7074237751927350
224
+ -21 7308517160838253 -52 7074237750736149
225
+ -36 5134218815465219 -52 7074177473138715
226
+ -32 -5520038755694706 -52 -7074234247920232
227
+ -18 -5359716634007052 -52 -7074237751808168
228
+ -32 6951969565653881 -52 7074234969678355
229
+ -3 -6829111545014507 -52 -7074237752028434
230
+ -12 6237749041886070 -52 7074237752025484
231
+ -12 -8918899681429038 -52 -7074237752026371
232
+ -56 4538369543843802 -56 4532382852903039
233
+ -10 5436541046956387 -52 7074237752027593
234
+ -21 -8100084332480526 -52 -7074237750862435
235
+ -19 -4679638799662613 -52 -7074237751523875
236
+ -54 5324410975629659 -54 5177019016980924
237
+ -37 -6873391062959741 -52 -7074147698950725
238
+ -45 -4705930441671496 -52 -7040566754434276
239
+ -41 8070757011613524 -52 7073010665144899
240
+ -38 7976984851872774 -52 7074082563061459
241
+ -53 4797051248905019 -54 8815713119371226
242
+ -45 5654824372855079 -52 7046216673064072
243
+ -47 -7077235955521838 -52 -6984691243327956
244
+ -55 -7642108931780940 -55 -7530497651889227
245
+ -7 -6385553723968823 -52 -7074237752028350
246
+ -39 5744425319652186 -52 7073806746325827
247
+ -55 -7457638946007913 -55 -7353787618504137
248
+ -47 7305006666454828 -52 6987482609077841
249
+ -10 8615532985901724 -52 7074237752027905
250
+ -4 -6390483422890183 -52 -7074237752028429
251
+ -3 -4951890508162731 -52 -7074237752028432
252
+ -4 5047546654932597 -52 7074237752028427
253
+ -3 -4951890508209012 -52 -7074237752028432
254
+ -12 6237749041537918 -52 7074237752025484
255
+ -30 -8759820937046622 -52 -7074237199996234
256
+ -36 7682559227253178 -52 7074197467925103
257
+ -54 -5064411173450590 -54 -4936980006185010
258
+ -51 -4512146585915903 -52 -4989568152983964
259
+ -34 7937737750520733 -52 7074228004761035
260
+ -10 8615532985891792 -52 7074237752027905
261
+ -3 -8426279266841558 -52 -7074237752028436
262
+ -34 5651620059214397 -52 7074224061926904
263
+ -27 -6386477418599027 -52 -7074237657381130
264
+ -38 7794366224858560 -52 7074078927051136
265
+ -13 8030316425878167 -52 7074237752023847
266
+ -33 5311247477625746 -52 7074230468310935
267
+ -31 6413536055658885 -52 7074236244060531
268
+ -32 -5103955739788071 -52 -7074233962259465
269
+ -41 -7785611388108184 -52 -7072965723467387
270
+ -31 -4582661250289816 -52 -7074235641593907
271
+ -10 8615532986362298 -52 7074237752027905
272
+ -21 6544361683821565 -52 7074237750585255
273
+ -32 6415342104946022 -52 7074234736941670
274
+ -15 -7680832482089317 -52 -7074237752009227
275
+ -46 5101102787421158 -52 7012115390830925
276
+ -43 -7813033408197856 -52 -7069167497947749
277
+ -43 -8091372821567080 -52 -7069341912159763
278
+ -28 -8537314766843932 -52 -7074237610423514
279
+ -15 -7680832482083896 -52 -7074237752009227
280
+ -49 -7579834100268866 -52 -6740370941207896
281
+ -18 -8557351016156329 -52 -7074237751890477
282
+ -10 8615532985973451 -52 7074237752027905
283
+ -54 -8987374063802812 -54 -8336465663026128
284
+ -35 -8098788497074548 -52 -7074218645157707
285
+ -43 7609248734740904 -52 7069031710671010
286
+ -20 -7190034759967473 -52 -7074237751371647
287
+ -17 -6245110485182150 -52 -7074237751933918
288
+ -23 -4715604143976837 -52 -7074237744016968
289
+ -49 -8133918448833037 -52 -6763039067316581
290
+ -27 -8534159932910234 -52 -7074237681199803
291
+ -41 7608523209080351 -52 7072936117037474
292
+ -19 -8073766254741575 -52 -7074237751735989
293
+ -22 6844665898701309 -52 7074237749268705
294
+ -36 7645540661218370 -52 7074197272875490
295
+ -45 -5185664086328955 -52 -7043681608990561
296
+ -35 6596162447822515 -52 7074214292553915
297
+ -15 -7680832482067889 -52 -7074237752009227
298
+ -15 -5969512010100428 -52 -7074237752003719
299
+ -30 -7852363488186396 -52 -7074237136200697
300
+ -13 8030316425602391 -52 7074237752023846
301
+ -36 -6624138793332516 -52 -7074191031236580
302
+ -17 6249738879349834 -52 7074237751933989
303
+ -40 -7485139648846966 -52 -7073576206572533
304
+ -40 4976594840597848 -52 7073242742341059
305
+ -35 7748007726286247 -52 7074217780119484
306
+ -55 -5966260648412790 -55 -5912604420596429
307
+ -32 5411163019632823 -52 7074234177415544
308
+ -16 6792305067381763 -52 7074237751984988
309
+ -28 6388676504575429 -52 7074237562798978
310
+ -51 7044900798434440 -52 5680949257935218
311
+ -25 -4843807041145495 -52 -7074237720830721
312
+ -29 4746695836700061 -52 7074237242652715
313
+ -46 -7638977227858808 -52 -7032752658285623
314
+ -37 -6545301239066017 -52 -7074143184949409
315
+ -50 5882778757475151 -52 6222596552576839
316
+ -17 -7441177873324560 -52 -7074237751949111
317
+ -15 -7680832482039989 -52 -7074237752009226
318
+ -13 8030316425662713 -52 7074237752023846
319
+ -45 -4905511974623420 -52 -7041936616337242
320
+ -15 -7774302428725324 -52 -7074237752009458
321
+ -56 -8288956411644484 -56 -8252682909701180
322
+ -40 -7642702660678738 -52 -7073589845084675
323
+ -52 -6831354408208498 -53 -8898598972954509
324
+ -32 -7937933608741855 -52 -7074235315271714
325
+ -51 6396087923721403 -52 5549733840675865
326
+ -38 5180777260480380 -52 7073998803319418
327
+ -20 7699950691972749 -52 7074237751415143
328
+ -20 4938648283903888 -52 7074237751072234
329
+ -31 -6455075629546510 -52 -7074236253764576
330
+ -19 5189855416726743 -52 7074237751573479
331
+ -31 7079281768040026 -52 7074236385871975
332
+ -21 8889886055810120 -52 7074237750966027
333
+ -33 -5328431600805587 -52 -7074230491800830
334
+ -16 -6697514255990588 -52 -7074237751984371
335
+ -13 8030316425677069 -52 7074237752023846
336
+ -45 -7964092628435941 -52 -7054341537665273
337
+ -34 -8826761087529042 -52 -7074228986496928
338
+ -49 -4781199554722326 -52 -6546403301736464
339
+ -30 7450960322085769 -52 7074237103024410
340
+ -27 6284152311108511 -52 7074237655839985
341
+ -40 -5748888131341270 -52 -7073376409803016
342
+ -49 4838920254247035 -52 6552643048786412
343
+ -47 -7580517496876195 -52 -6990634951539118
344
+ -36 7323348550135157 -52 7074195491987464
345
+ -24 6807595373101775 -52 7074237740929388
346
+ -30 -8514118686358328 -52 -7074237184065571
347
+ -36 9006361717026027 -52 7074203389094823
348
+ -55 5513981653051039 -55 5471526515220154
349
+ -49 -6475299391693719 -52 -6683685532125379
350
+ -43 -5945816576787180 -52 -7067575243717524
351
+ -34 8310930260042113 -52 7074228442450567
352
+ -40 7716247959397717 -52 7073596020431727
353
+ -39 -5060554770806041 -52 -7073748501307725
354
+ -39 7305403504638245 -52 7073898841238322
355
+ -56 7483914275442359 -56 7457177606375096
356
+ -30 7146762035990167 -52 7074237075399884
357
+ -39 -7556125040420787 -52 -7073910086715736
358
+ -25 -5810825808894515 -52 -7074237726022545
359
+ -19 -5811467076621487 -52 -7074237751622142
360
+ -57 -5415522076366179 -57 -5412975172869364