diff --git a/tests/expected-results/shi_tomashi.txt b/tests/expected-results/shi_tomashi.txt new file mode 100644 index 0000000..b205981 --- /dev/null +++ b/tests/expected-results/shi_tomashi.txt @@ -0,0 +1,1000 @@ +3.440000000000000000e+02 7.690000000000000000e+02 +5.300000000000000000e+02 1.326000000000000000e+03 +8.800000000000000000e+01 8.310000000000000000e+02 +1.508000000000000000e+03 8.200000000000000000e+02 +4.800000000000000000e+02 7.880000000000000000e+02 +1.295000000000000000e+03 8.410000000000000000e+02 +1.141000000000000000e+03 8.130000000000000000e+02 +3.940000000000000000e+02 7.340000000000000000e+02 +7.680000000000000000e+02 8.190000000000000000e+02 +2.710000000000000000e+02 1.186000000000000000e+03 +7.920000000000000000e+02 7.700000000000000000e+02 +8.550000000000000000e+02 7.600000000000000000e+02 +7.120000000000000000e+02 8.060000000000000000e+02 +1.313000000000000000e+03 8.380000000000000000e+02 +8.850000000000000000e+02 7.880000000000000000e+02 +2.180000000000000000e+02 7.580000000000000000e+02 +9.770000000000000000e+02 8.430000000000000000e+02 +1.564000000000000000e+03 1.016000000000000000e+03 +1.192000000000000000e+03 8.200000000000000000e+02 +1.254000000000000000e+03 8.170000000000000000e+02 +1.536000000000000000e+03 1.140000000000000000e+03 +1.148000000000000000e+03 1.038000000000000000e+03 +1.184000000000000000e+03 1.092000000000000000e+03 +3.730000000000000000e+02 1.271000000000000000e+03 +8.300000000000000000e+01 7.650000000000000000e+02 +5.170000000000000000e+02 1.101000000000000000e+03 +1.301000000000000000e+03 8.220000000000000000e+02 +6.820000000000000000e+02 8.080000000000000000e+02 +7.620000000000000000e+02 8.280000000000000000e+02 +8.250000000000000000e+02 7.960000000000000000e+02 +7.960000000000000000e+02 7.570000000000000000e+02 +7.410000000000000000e+02 7.690000000000000000e+02 +2.009000000000000000e+03 1.051000000000000000e+03 +4.400000000000000000e+01 7.600000000000000000e+02 +1.205000000000000000e+03 8.200000000000000000e+02 +1.168000000000000000e+03 1.095000000000000000e+03 +1.710000000000000000e+02 8.160000000000000000e+02 +1.790000000000000000e+03 9.280000000000000000e+02 +7.090000000000000000e+02 8.190000000000000000e+02 +1.702000000000000000e+03 1.031000000000000000e+03 +1.429000000000000000e+03 8.050000000000000000e+02 +5.700000000000000000e+02 7.540000000000000000e+02 +1.095000000000000000e+03 1.137000000000000000e+03 +1.222000000000000000e+03 8.210000000000000000e+02 +6.120000000000000000e+02 1.348000000000000000e+03 +8.660000000000000000e+02 8.080000000000000000e+02 +1.115000000000000000e+03 8.160000000000000000e+02 +3.560000000000000000e+02 8.120000000000000000e+02 +1.325000000000000000e+03 8.250000000000000000e+02 +4.120000000000000000e+02 7.910000000000000000e+02 +1.725000000000000000e+03 1.070000000000000000e+03 +6.580000000000000000e+02 6.520000000000000000e+02 +1.743000000000000000e+03 1.254000000000000000e+03 +1.710000000000000000e+03 8.420000000000000000e+02 +1.116000000000000000e+03 7.780000000000000000e+02 +1.365000000000000000e+03 7.980000000000000000e+02 +6.420000000000000000e+02 7.250000000000000000e+02 +3.650000000000000000e+02 7.940000000000000000e+02 +7.290000000000000000e+02 7.250000000000000000e+02 +1.214000000000000000e+03 7.900000000000000000e+02 +7.640000000000000000e+02 7.670000000000000000e+02 +1.453000000000000000e+03 9.380000000000000000e+02 +8.100000000000000000e+02 7.720000000000000000e+02 +1.148000000000000000e+03 7.750000000000000000e+02 +5.260000000000000000e+02 8.350000000000000000e+02 +1.912000000000000000e+03 1.021000000000000000e+03 +6.690000000000000000e+02 6.520000000000000000e+02 +1.576000000000000000e+03 8.290000000000000000e+02 +1.366000000000000000e+03 8.150000000000000000e+02 +6.040000000000000000e+02 7.900000000000000000e+02 +6.780000000000000000e+02 7.300000000000000000e+02 +1.328000000000000000e+03 8.430000000000000000e+02 +1.954000000000000000e+03 1.023000000000000000e+03 +1.443000000000000000e+03 8.170000000000000000e+02 +1.507000000000000000e+03 8.350000000000000000e+02 +7.060000000000000000e+02 7.910000000000000000e+02 +6.130000000000000000e+02 7.380000000000000000e+02 +5.500000000000000000e+02 8.280000000000000000e+02 +9.270000000000000000e+02 7.690000000000000000e+02 +1.853000000000000000e+03 8.620000000000000000e+02 +6.230000000000000000e+02 1.095000000000000000e+03 +6.220000000000000000e+02 8.110000000000000000e+02 +9.500000000000000000e+02 8.030000000000000000e+02 +1.059000000000000000e+03 7.920000000000000000e+02 +1.429000000000000000e+03 8.170000000000000000e+02 +1.008000000000000000e+03 8.020000000000000000e+02 +1.999000000000000000e+03 1.088000000000000000e+03 +1.100000000000000000e+03 1.092000000000000000e+03 +3.650000000000000000e+02 7.830000000000000000e+02 +4.100000000000000000e+02 1.222000000000000000e+03 +1.955000000000000000e+03 1.047000000000000000e+03 +1.001000000000000000e+03 8.430000000000000000e+02 +8.360000000000000000e+02 7.980000000000000000e+02 +1.537000000000000000e+03 1.112000000000000000e+03 +1.432000000000000000e+03 1.257000000000000000e+03 +1.081000000000000000e+03 7.980000000000000000e+02 +6.320000000000000000e+02 7.870000000000000000e+02 +9.710000000000000000e+02 8.110000000000000000e+02 +9.570000000000000000e+02 8.130000000000000000e+02 +1.339000000000000000e+03 8.430000000000000000e+02 +1.275000000000000000e+03 7.860000000000000000e+02 +1.177000000000000000e+03 1.075000000000000000e+03 +1.161000000000000000e+03 8.330000000000000000e+02 +1.129000000000000000e+03 7.890000000000000000e+02 +1.929000000000000000e+03 1.273000000000000000e+03 +1.514000000000000000e+03 9.850000000000000000e+02 +3.390000000000000000e+02 8.070000000000000000e+02 +1.851000000000000000e+03 9.070000000000000000e+02 +4.180000000000000000e+02 7.260000000000000000e+02 +1.701000000000000000e+03 8.520000000000000000e+02 +1.290000000000000000e+03 8.280000000000000000e+02 +1.254000000000000000e+03 8.370000000000000000e+02 +1.130000000000000000e+02 7.860000000000000000e+02 +1.798000000000000000e+03 8.840000000000000000e+02 +1.976000000000000000e+03 1.043000000000000000e+03 +7.560000000000000000e+02 8.190000000000000000e+02 +1.846000000000000000e+03 8.190000000000000000e+02 +1.188000000000000000e+03 1.081000000000000000e+03 +4.500000000000000000e+01 7.890000000000000000e+02 +5.320000000000000000e+02 8.190000000000000000e+02 +6.150000000000000000e+02 1.361000000000000000e+03 +1.785000000000000000e+03 8.850000000000000000e+02 +6.970000000000000000e+02 7.190000000000000000e+02 +1.500000000000000000e+02 8.200000000000000000e+02 +7.210000000000000000e+02 8.340000000000000000e+02 +1.827000000000000000e+03 8.730000000000000000e+02 +1.610000000000000000e+02 8.160000000000000000e+02 +2.039000000000000000e+03 1.255000000000000000e+03 +1.768000000000000000e+03 9.020000000000000000e+02 +9.910000000000000000e+02 8.020000000000000000e+02 +3.840000000000000000e+02 7.310000000000000000e+02 +9.190000000000000000e+02 7.880000000000000000e+02 +1.144000000000000000e+03 1.089000000000000000e+03 +1.740000000000000000e+03 1.050000000000000000e+03 +9.630000000000000000e+02 8.030000000000000000e+02 +1.740000000000000000e+03 1.063000000000000000e+03 +4.310000000000000000e+02 7.710000000000000000e+02 +1.733000000000000000e+03 9.940000000000000000e+02 +1.785000000000000000e+03 8.500000000000000000e+02 +1.504000000000000000e+03 1.110000000000000000e+03 +1.972000000000000000e+03 1.032000000000000000e+03 +1.283000000000000000e+03 1.336000000000000000e+03 +9.750000000000000000e+02 8.280000000000000000e+02 +1.498000000000000000e+03 1.025000000000000000e+03 +9.220000000000000000e+02 8.010000000000000000e+02 +1.503000000000000000e+03 1.242000000000000000e+03 +1.397000000000000000e+03 1.316000000000000000e+03 +1.088000000000000000e+03 1.060000000000000000e+03 +8.000000000000000000e+01 7.880000000000000000e+02 +1.926000000000000000e+03 1.038000000000000000e+03 +8.510000000000000000e+02 8.000000000000000000e+02 +1.783000000000000000e+03 8.950000000000000000e+02 +1.554000000000000000e+03 1.262000000000000000e+03 +1.016000000000000000e+03 8.110000000000000000e+02 +1.016000000000000000e+03 8.380000000000000000e+02 +1.066000000000000000e+03 1.306000000000000000e+03 +1.057000000000000000e+03 8.360000000000000000e+02 +1.163000000000000000e+03 8.510000000000000000e+02 +1.801000000000000000e+03 9.760000000000000000e+02 +9.200000000000000000e+01 7.880000000000000000e+02 +1.667000000000000000e+03 8.400000000000000000e+02 +9.570000000000000000e+02 8.280000000000000000e+02 +1.854000000000000000e+03 8.290000000000000000e+02 +8.520000000000000000e+02 8.340000000000000000e+02 +1.139000000000000000e+03 1.194000000000000000e+03 +6.740000000000000000e+02 7.040000000000000000e+02 +6.550000000000000000e+02 7.740000000000000000e+02 +1.746000000000000000e+03 1.084000000000000000e+03 +1.250000000000000000e+02 8.300000000000000000e+02 +8.980000000000000000e+02 5.040000000000000000e+02 +5.150000000000000000e+02 7.940000000000000000e+02 +1.047000000000000000e+03 7.930000000000000000e+02 +2.240000000000000000e+02 8.250000000000000000e+02 +1.781000000000000000e+03 9.720000000000000000e+02 +1.732000000000000000e+03 9.780000000000000000e+02 +4.420000000000000000e+02 8.060000000000000000e+02 +1.237000000000000000e+03 8.170000000000000000e+02 +3.370000000000000000e+02 1.171000000000000000e+03 +1.069000000000000000e+03 1.061000000000000000e+03 +1.808000000000000000e+03 8.460000000000000000e+02 +1.159000000000000000e+03 8.040000000000000000e+02 +1.595000000000000000e+03 8.320000000000000000e+02 +1.971000000000000000e+03 1.239000000000000000e+03 +1.576000000000000000e+03 8.000000000000000000e+02 +6.710000000000000000e+02 8.230000000000000000e+02 +1.753000000000000000e+03 9.790000000000000000e+02 +1.369000000000000000e+03 1.022000000000000000e+03 +1.813000000000000000e+03 8.960000000000000000e+02 +3.420000000000000000e+02 7.900000000000000000e+02 +1.307000000000000000e+03 1.362000000000000000e+03 +1.829000000000000000e+03 1.007000000000000000e+03 +8.820000000000000000e+02 8.080000000000000000e+02 +9.410000000000000000e+02 1.320000000000000000e+03 +1.428000000000000000e+03 1.231000000000000000e+03 +3.790000000000000000e+02 1.120000000000000000e+03 +5.250000000000000000e+02 5.430000000000000000e+02 +1.292000000000000000e+03 7.780000000000000000e+02 +1.160000000000000000e+03 1.324000000000000000e+03 +1.002000000000000000e+03 8.270000000000000000e+02 +1.607000000000000000e+03 8.150000000000000000e+02 +5.700000000000000000e+01 8.200000000000000000e+02 +1.734000000000000000e+03 1.004000000000000000e+03 +1.610000000000000000e+03 1.314000000000000000e+03 +1.600000000000000000e+01 7.600000000000000000e+02 +8.930000000000000000e+02 8.340000000000000000e+02 +1.969000000000000000e+03 1.059000000000000000e+03 +9.790000000000000000e+02 8.020000000000000000e+02 +3.620000000000000000e+02 7.680000000000000000e+02 +1.157000000000000000e+03 1.100000000000000000e+03 +7.230000000000000000e+02 7.990000000000000000e+02 +1.591000000000000000e+03 1.310000000000000000e+03 +1.180000000000000000e+03 8.150000000000000000e+02 +1.502000000000000000e+03 1.204000000000000000e+03 +1.714000000000000000e+03 1.063000000000000000e+03 +1.059000000000000000e+03 8.130000000000000000e+02 +1.227000000000000000e+03 1.249000000000000000e+03 +1.442000000000000000e+03 8.730000000000000000e+02 +4.470000000000000000e+02 1.298000000000000000e+03 +1.123000000000000000e+03 1.087000000000000000e+03 +3.730000000000000000e+02 5.960000000000000000e+02 +1.842000000000000000e+03 8.870000000000000000e+02 +1.424000000000000000e+03 1.022000000000000000e+03 +7.380000000000000000e+02 8.040000000000000000e+02 +1.452000000000000000e+03 8.320000000000000000e+02 +1.542000000000000000e+03 8.100000000000000000e+02 +6.800000000000000000e+02 8.340000000000000000e+02 +9.450000000000000000e+02 8.440000000000000000e+02 +4.460000000000000000e+02 7.910000000000000000e+02 +6.460000000000000000e+02 8.220000000000000000e+02 +2.004000000000000000e+03 9.410000000000000000e+02 +1.747000000000000000e+03 9.710000000000000000e+02 +1.768000000000000000e+03 1.087000000000000000e+03 +1.926000000000000000e+03 1.162000000000000000e+03 +1.946000000000000000e+03 1.012000000000000000e+03 +7.110000000000000000e+02 8.360000000000000000e+02 +7.150000000000000000e+02 7.010000000000000000e+02 +1.771000000000000000e+03 1.061000000000000000e+03 +1.381000000000000000e+03 1.023000000000000000e+03 +1.395000000000000000e+03 1.154000000000000000e+03 +6.980000000000000000e+02 7.850000000000000000e+02 +1.897000000000000000e+03 1.069000000000000000e+03 +1.161000000000000000e+03 1.070000000000000000e+03 +1.205000000000000000e+03 1.071000000000000000e+03 +1.482000000000000000e+03 1.219000000000000000e+03 +1.525000000000000000e+03 1.148000000000000000e+03 +1.718000000000000000e+03 1.078000000000000000e+03 +6.800000000000000000e+02 7.840000000000000000e+02 +7.770000000000000000e+02 7.740000000000000000e+02 +5.420000000000000000e+02 1.125000000000000000e+03 +2.550000000000000000e+02 8.280000000000000000e+02 +4.290000000000000000e+02 7.260000000000000000e+02 +1.267000000000000000e+03 8.450000000000000000e+02 +1.807000000000000000e+03 8.780000000000000000e+02 +6.250000000000000000e+02 7.640000000000000000e+02 +1.833000000000000000e+03 8.430000000000000000e+02 +9.370000000000000000e+02 7.910000000000000000e+02 +5.780000000000000000e+02 7.870000000000000000e+02 +4.060000000000000000e+02 1.280000000000000000e+03 +1.521000000000000000e+03 1.194000000000000000e+03 +1.378000000000000000e+03 8.310000000000000000e+02 +1.623000000000000000e+03 8.210000000000000000e+02 +1.772000000000000000e+03 1.051000000000000000e+03 +7.540000000000000000e+02 7.770000000000000000e+02 +1.452000000000000000e+03 1.162000000000000000e+03 +1.697000000000000000e+03 8.190000000000000000e+02 +1.944000000000000000e+03 1.047000000000000000e+03 +5.670000000000000000e+02 7.670000000000000000e+02 +1.988000000000000000e+03 1.199000000000000000e+03 +8.730000000000000000e+02 8.340000000000000000e+02 +1.467000000000000000e+03 8.200000000000000000e+02 +1.768000000000000000e+03 8.790000000000000000e+02 +1.234000000000000000e+03 1.353000000000000000e+03 +3.190000000000000000e+02 1.035000000000000000e+03 +7.470000000000000000e+02 8.260000000000000000e+02 +7.910000000000000000e+02 1.140000000000000000e+03 +1.759000000000000000e+03 1.117000000000000000e+03 +1.756000000000000000e+03 9.970000000000000000e+02 +7.840000000000000000e+02 8.280000000000000000e+02 +6.940000000000000000e+02 1.186000000000000000e+03 +1.460000000000000000e+02 8.350000000000000000e+02 +7.250000000000000000e+02 8.170000000000000000e+02 +2.680000000000000000e+02 7.880000000000000000e+02 +2.190000000000000000e+02 6.460000000000000000e+02 +1.418000000000000000e+03 1.252000000000000000e+03 +1.702000000000000000e+03 1.010000000000000000e+03 +3.140000000000000000e+02 7.950000000000000000e+02 +3.930000000000000000e+02 1.286000000000000000e+03 +1.564000000000000000e+03 8.280000000000000000e+02 +1.846000000000000000e+03 1.063000000000000000e+03 +1.516000000000000000e+03 1.114000000000000000e+03 +1.135000000000000000e+03 1.082000000000000000e+03 +8.430000000000000000e+02 7.880000000000000000e+02 +1.598000000000000000e+03 8.200000000000000000e+02 +1.745000000000000000e+03 1.216000000000000000e+03 +1.626000000000000000e+03 7.930000000000000000e+02 +1.284000000000000000e+03 1.297000000000000000e+03 +1.645000000000000000e+03 1.276000000000000000e+03 +4.120000000000000000e+02 7.090000000000000000e+02 +2.690000000000000000e+02 8.240000000000000000e+02 +8.030000000000000000e+02 7.960000000000000000e+02 +4.210000000000000000e+02 8.110000000000000000e+02 +1.780000000000000000e+03 9.180000000000000000e+02 +1.072000000000000000e+03 8.140000000000000000e+02 +2.800000000000000000e+01 8.170000000000000000e+02 +1.531000000000000000e+03 1.123000000000000000e+03 +1.127000000000000000e+03 8.350000000000000000e+02 +3.550000000000000000e+02 1.240000000000000000e+03 +1.997000000000000000e+03 1.020000000000000000e+03 +1.020000000000000000e+03 8.010000000000000000e+02 +1.682000000000000000e+03 8.590000000000000000e+02 +1.802000000000000000e+03 9.230000000000000000e+02 +4.520000000000000000e+02 1.237000000000000000e+03 +1.730000000000000000e+03 1.362000000000000000e+03 +1.906000000000000000e+03 1.056000000000000000e+03 +1.821000000000000000e+03 9.840000000000000000e+02 +1.550000000000000000e+02 8.300000000000000000e+02 +1.086000000000000000e+03 1.111000000000000000e+03 +1.822000000000000000e+03 8.860000000000000000e+02 +1.868000000000000000e+03 1.127000000000000000e+03 +5.470000000000000000e+02 7.700000000000000000e+02 +1.503000000000000000e+03 1.064000000000000000e+03 +1.111000000000000000e+03 1.153000000000000000e+03 +1.180000000000000000e+03 8.020000000000000000e+02 +6.610000000000000000e+02 7.370000000000000000e+02 +1.396000000000000000e+03 1.018000000000000000e+03 +1.517000000000000000e+03 1.183000000000000000e+03 +4.900000000000000000e+01 7.750000000000000000e+02 +6.510000000000000000e+02 7.390000000000000000e+02 +1.773000000000000000e+03 9.620000000000000000e+02 +1.527000000000000000e+03 1.111000000000000000e+03 +7.360000000000000000e+02 7.560000000000000000e+02 +6.400000000000000000e+02 7.400000000000000000e+02 +4.320000000000000000e+02 8.040000000000000000e+02 +1.816000000000000000e+03 8.730000000000000000e+02 +6.180000000000000000e+02 7.900000000000000000e+02 +4.290000000000000000e+02 8.490000000000000000e+02 +1.854000000000000000e+03 8.390000000000000000e+02 +1.771000000000000000e+03 1.098000000000000000e+03 +1.199000000000000000e+03 1.081000000000000000e+03 +1.920000000000000000e+03 9.650000000000000000e+02 +1.074000000000000000e+03 1.226000000000000000e+03 +1.064000000000000000e+03 8.020000000000000000e+02 +1.431000000000000000e+03 8.910000000000000000e+02 +9.920000000000000000e+02 1.211000000000000000e+03 +5.460000000000000000e+02 5.340000000000000000e+02 +9.790000000000000000e+02 1.126000000000000000e+03 +1.767000000000000000e+03 8.390000000000000000e+02 +1.439000000000000000e+03 1.321000000000000000e+03 +1.928000000000000000e+03 1.049000000000000000e+03 +9.410000000000000000e+02 1.310000000000000000e+03 +1.461000000000000000e+03 1.194000000000000000e+03 +1.131000000000000000e+03 8.130000000000000000e+02 +1.216000000000000000e+03 1.186000000000000000e+03 +1.275000000000000000e+03 1.306000000000000000e+03 +1.925000000000000000e+03 1.062000000000000000e+03 +1.109000000000000000e+03 1.319000000000000000e+03 +9.140000000000000000e+02 8.270000000000000000e+02 +1.231000000000000000e+03 7.850000000000000000e+02 +1.360000000000000000e+02 8.210000000000000000e+02 +5.000000000000000000e+00 7.920000000000000000e+02 +2.370000000000000000e+02 8.320000000000000000e+02 +4.210000000000000000e+02 1.254000000000000000e+03 +1.603000000000000000e+03 1.205000000000000000e+03 +4.640000000000000000e+02 8.430000000000000000e+02 +1.540000000000000000e+03 1.150000000000000000e+03 +4.870000000000000000e+02 7.970000000000000000e+02 +2.690000000000000000e+02 1.262000000000000000e+03 +1.461000000000000000e+03 1.334000000000000000e+03 +1.184000000000000000e+03 1.187000000000000000e+03 +1.835000000000000000e+03 1.276000000000000000e+03 +1.719000000000000000e+03 1.089000000000000000e+03 +4.920000000000000000e+02 1.297000000000000000e+03 +1.389000000000000000e+03 8.060000000000000000e+02 +1.366000000000000000e+03 8.300000000000000000e+02 +1.283000000000000000e+03 8.610000000000000000e+02 +1.408000000000000000e+03 8.290000000000000000e+02 +3.750000000000000000e+02 1.217000000000000000e+03 +1.262000000000000000e+03 1.280000000000000000e+03 +1.853000000000000000e+03 9.260000000000000000e+02 +5.720000000000000000e+02 1.344000000000000000e+03 +7.700000000000000000e+02 7.420000000000000000e+02 +1.927000000000000000e+03 1.228000000000000000e+03 +1.424000000000000000e+03 1.338000000000000000e+03 +6.510000000000000000e+02 7.850000000000000000e+02 +1.104000000000000000e+03 8.350000000000000000e+02 +1.244000000000000000e+03 1.358000000000000000e+03 +6.850000000000000000e+02 7.190000000000000000e+02 +5.630000000000000000e+02 8.060000000000000000e+02 +3.680000000000000000e+02 1.249000000000000000e+03 +1.027000000000000000e+03 8.430000000000000000e+02 +1.212000000000000000e+03 1.331000000000000000e+03 +3.200000000000000000e+02 1.068000000000000000e+03 +6.700000000000000000e+01 7.890000000000000000e+02 +1.422000000000000000e+03 1.269000000000000000e+03 +1.852000000000000000e+03 1.157000000000000000e+03 +2.031000000000000000e+03 1.054000000000000000e+03 +1.463000000000000000e+03 1.355000000000000000e+03 +1.255000000000000000e+03 1.351000000000000000e+03 +1.994000000000000000e+03 1.078000000000000000e+03 +1.984000000000000000e+03 1.249000000000000000e+03 +2.041000000000000000e+03 9.140000000000000000e+02 +4.230000000000000000e+02 1.232000000000000000e+03 +1.500000000000000000e+01 7.960000000000000000e+02 +4.120000000000000000e+02 8.040000000000000000e+02 +3.930000000000000000e+02 1.173000000000000000e+03 +1.448000000000000000e+03 1.339000000000000000e+03 +1.897000000000000000e+03 1.004000000000000000e+03 +1.057000000000000000e+03 1.295000000000000000e+03 +6.670000000000000000e+02 7.290000000000000000e+02 +2.030000000000000000e+02 7.810000000000000000e+02 +2.040000000000000000e+02 7.910000000000000000e+02 +1.795000000000000000e+03 8.420000000000000000e+02 +1.359000000000000000e+03 8.470000000000000000e+02 +1.191000000000000000e+03 1.169000000000000000e+03 +1.131000000000000000e+03 8.230000000000000000e+02 +1.576000000000000000e+03 1.352000000000000000e+03 +9.440000000000000000e+02 8.170000000000000000e+02 +1.328000000000000000e+03 1.245000000000000000e+03 +1.089000000000000000e+03 8.100000000000000000e+02 +1.981000000000000000e+03 1.171000000000000000e+03 +7.560000000000000000e+02 7.990000000000000000e+02 +3.230000000000000000e+02 1.164000000000000000e+03 +9.980000000000000000e+02 8.120000000000000000e+02 +1.558000000000000000e+03 1.062000000000000000e+03 +4.470000000000000000e+02 7.770000000000000000e+02 +2.510000000000000000e+02 7.880000000000000000e+02 +1.929000000000000000e+03 1.198000000000000000e+03 +1.949000000000000000e+03 8.590000000000000000e+02 +1.478000000000000000e+03 1.197000000000000000e+03 +1.432000000000000000e+03 1.160000000000000000e+03 +1.758000000000000000e+03 8.780000000000000000e+02 +1.317000000000000000e+03 1.352000000000000000e+03 +1.484000000000000000e+03 8.020000000000000000e+02 +5.490000000000000000e+02 7.820000000000000000e+02 +9.430000000000000000e+02 8.310000000000000000e+02 +1.614000000000000000e+03 1.328000000000000000e+03 +1.091000000000000000e+03 1.306000000000000000e+03 +1.819000000000000000e+03 1.082000000000000000e+03 +1.549000000000000000e+03 1.303000000000000000e+03 +4.100000000000000000e+02 7.380000000000000000e+02 +1.918000000000000000e+03 1.261000000000000000e+03 +9.670000000000000000e+02 8.420000000000000000e+02 +6.750000000000000000e+02 8.000000000000000000e+02 +8.850000000000000000e+02 1.247000000000000000e+03 +1.416000000000000000e+03 1.213000000000000000e+03 +1.338000000000000000e+03 1.335000000000000000e+03 +3.210000000000000000e+02 1.126000000000000000e+03 +1.480000000000000000e+03 1.320000000000000000e+03 +1.379000000000000000e+03 1.356000000000000000e+03 +1.749000000000000000e+03 1.072000000000000000e+03 +1.769000000000000000e+03 1.118000000000000000e+03 +1.871000000000000000e+03 9.040000000000000000e+02 +9.850000000000000000e+02 8.320000000000000000e+02 +1.294000000000000000e+03 7.960000000000000000e+02 +7.790000000000000000e+02 7.630000000000000000e+02 +3.770000000000000000e+02 7.700000000000000000e+02 +1.010000000000000000e+02 7.620000000000000000e+02 +8.020000000000000000e+02 5.180000000000000000e+02 +1.914000000000000000e+03 1.191000000000000000e+03 +1.520000000000000000e+02 7.900000000000000000e+02 +8.410000000000000000e+02 1.190000000000000000e+03 +1.891000000000000000e+03 1.211000000000000000e+03 +1.232000000000000000e+03 1.327000000000000000e+03 +4.150000000000000000e+02 7.510000000000000000e+02 +2.400000000000000000e+01 7.900000000000000000e+02 +1.556000000000000000e+03 1.023000000000000000e+03 +5.650000000000000000e+02 1.117000000000000000e+03 +1.560000000000000000e+03 1.180000000000000000e+03 +7.740000000000000000e+02 7.990000000000000000e+02 +9.850000000000000000e+02 8.160000000000000000e+02 +1.970000000000000000e+03 1.210000000000000000e+03 +1.140000000000000000e+03 1.291000000000000000e+03 +1.058000000000000000e+03 1.354000000000000000e+03 +4.640000000000000000e+02 5.610000000000000000e+02 +5.580000000000000000e+02 5.360000000000000000e+02 +9.440000000000000000e+02 1.243000000000000000e+03 +4.460000000000000000e+02 5.670000000000000000e+02 +1.042000000000000000e+03 1.322000000000000000e+03 +1.471000000000000000e+03 8.080000000000000000e+02 +1.795000000000000000e+03 1.358000000000000000e+03 +9.660000000000000000e+02 1.052000000000000000e+03 +4.320000000000000000e+02 7.910000000000000000e+02 +8.600000000000000000e+02 7.760000000000000000e+02 +1.984000000000000000e+03 1.025000000000000000e+03 +1.932000000000000000e+03 1.350000000000000000e+03 +1.142000000000000000e+03 8.290000000000000000e+02 +7.450000000000000000e+02 7.430000000000000000e+02 +1.717000000000000000e+03 1.229000000000000000e+03 +1.068000000000000000e+03 1.328000000000000000e+03 +4.320000000000000000e+02 1.267000000000000000e+03 +1.244000000000000000e+03 1.254000000000000000e+03 +1.502000000000000000e+03 1.224000000000000000e+03 +9.900000000000000000e+02 1.351000000000000000e+03 +9.310000000000000000e+02 1.333000000000000000e+03 +1.528000000000000000e+03 1.171000000000000000e+03 +4.300000000000000000e+02 7.520000000000000000e+02 +1.547000000000000000e+03 8.360000000000000000e+02 +9.680000000000000000e+02 1.151000000000000000e+03 +1.190000000000000000e+03 1.157000000000000000e+03 +1.296000000000000000e+03 1.336000000000000000e+03 +2.010000000000000000e+03 9.230000000000000000e+02 +1.551000000000000000e+03 1.123000000000000000e+03 +9.420000000000000000e+02 1.347000000000000000e+03 +2.810000000000000000e+02 1.256000000000000000e+03 +5.780000000000000000e+02 5.310000000000000000e+02 +3.990000000000000000e+02 1.216000000000000000e+03 +7.770000000000000000e+02 1.181000000000000000e+03 +7.850000000000000000e+02 8.180000000000000000e+02 +1.315000000000000000e+03 1.193000000000000000e+03 +1.248000000000000000e+03 1.319000000000000000e+03 +1.390000000000000000e+03 1.289000000000000000e+03 +2.800000000000000000e+02 1.027000000000000000e+03 +1.685000000000000000e+03 1.351000000000000000e+03 +1.550000000000000000e+03 1.102000000000000000e+03 +1.201000000000000000e+03 1.052000000000000000e+03 +5.180000000000000000e+02 1.253000000000000000e+03 +1.920000000000000000e+03 1.008000000000000000e+03 +1.896000000000000000e+03 1.294000000000000000e+03 +1.769000000000000000e+03 1.284000000000000000e+03 +4.880000000000000000e+02 1.112000000000000000e+03 +1.417000000000000000e+03 1.169000000000000000e+03 +1.741000000000000000e+03 1.094000000000000000e+03 +1.442000000000000000e+03 1.167000000000000000e+03 +1.509000000000000000e+03 1.000000000000000000e+03 +3.430000000000000000e+02 1.184000000000000000e+03 +1.670000000000000000e+02 7.820000000000000000e+02 +8.350000000000000000e+02 1.212000000000000000e+03 +2.001000000000000000e+03 1.153000000000000000e+03 +1.671000000000000000e+03 1.337000000000000000e+03 +3.300000000000000000e+01 8.080000000000000000e+02 +1.337000000000000000e+03 1.260000000000000000e+03 +3.460000000000000000e+02 1.197000000000000000e+03 +1.624000000000000000e+03 1.337000000000000000e+03 +7.060000000000000000e+02 7.380000000000000000e+02 +1.166000000000000000e+03 1.081000000000000000e+03 +1.918000000000000000e+03 1.051000000000000000e+03 +5.020000000000000000e+02 5.460000000000000000e+02 +5.370000000000000000e+02 8.280000000000000000e+02 +3.530000000000000000e+02 7.830000000000000000e+02 +1.350000000000000000e+03 1.265000000000000000e+03 +1.065000000000000000e+03 1.100000000000000000e+03 +1.172000000000000000e+03 1.192000000000000000e+03 +9.110000000000000000e+02 8.390000000000000000e+02 +2.860000000000000000e+02 6.270000000000000000e+02 +1.927000000000000000e+03 1.182000000000000000e+03 +1.955000000000000000e+03 1.066000000000000000e+03 +1.859000000000000000e+03 8.500000000000000000e+02 +1.820000000000000000e+03 1.028000000000000000e+03 +1.818000000000000000e+03 9.240000000000000000e+02 +1.273000000000000000e+03 8.260000000000000000e+02 +8.440000000000000000e+02 7.730000000000000000e+02 +1.706000000000000000e+03 8.120000000000000000e+02 +2.590000000000000000e+02 1.190000000000000000e+03 +1.308000000000000000e+03 1.252000000000000000e+03 +1.016000000000000000e+03 1.326000000000000000e+03 +1.539000000000000000e+03 1.335000000000000000e+03 +1.889000000000000000e+03 1.304000000000000000e+03 +9.550000000000000000e+02 1.187000000000000000e+03 +2.750000000000000000e+02 6.280000000000000000e+02 +5.910000000000000000e+02 5.280000000000000000e+02 +8.930000000000000000e+02 7.770000000000000000e+02 +1.160000000000000000e+03 1.185000000000000000e+03 +1.730000000000000000e+03 1.271000000000000000e+03 +1.624000000000000000e+03 1.350000000000000000e+03 +5.700000000000000000e+01 8.070000000000000000e+02 +7.310000000000000000e+02 1.293000000000000000e+03 +1.889000000000000000e+03 1.284000000000000000e+03 +7.330000000000000000e+02 8.250000000000000000e+02 +1.090000000000000000e+03 1.080000000000000000e+03 +1.110000000000000000e+03 1.249000000000000000e+03 +1.662000000000000000e+03 1.357000000000000000e+03 +1.501000000000000000e+03 1.353000000000000000e+03 +1.240000000000000000e+03 8.350000000000000000e+02 +1.524000000000000000e+03 1.002000000000000000e+03 +1.706000000000000000e+03 1.354000000000000000e+03 +1.885000000000000000e+03 1.197000000000000000e+03 +1.983000000000000000e+03 1.141000000000000000e+03 +1.045000000000000000e+03 1.181000000000000000e+03 +9.760000000000000000e+02 1.318000000000000000e+03 +1.042000000000000000e+03 8.130000000000000000e+02 +1.228000000000000000e+03 8.440000000000000000e+02 +1.543000000000000000e+03 1.346000000000000000e+03 +1.240000000000000000e+03 8.470000000000000000e+02 +2.380000000000000000e+02 7.770000000000000000e+02 +1.152000000000000000e+03 1.192000000000000000e+03 +1.110000000000000000e+03 1.308000000000000000e+03 +1.434000000000000000e+03 1.275000000000000000e+03 +1.538000000000000000e+03 1.323000000000000000e+03 +1.966000000000000000e+03 1.045000000000000000e+03 +1.909000000000000000e+03 1.318000000000000000e+03 +1.481000000000000000e+03 9.470000000000000000e+02 +1.334000000000000000e+03 1.296000000000000000e+03 +1.327000000000000000e+03 1.343000000000000000e+03 +1.092000000000000000e+03 1.226000000000000000e+03 +1.572000000000000000e+03 8.150000000000000000e+02 +1.225000000000000000e+03 1.271000000000000000e+03 +1.512000000000000000e+03 1.280000000000000000e+03 +7.170000000000000000e+02 1.323000000000000000e+03 +6.550000000000000000e+02 7.250000000000000000e+02 +1.783000000000000000e+03 9.910000000000000000e+02 +1.350000000000000000e+03 1.227000000000000000e+03 +1.906000000000000000e+03 1.039000000000000000e+03 +1.211000000000000000e+03 8.040000000000000000e+02 +1.595000000000000000e+03 1.280000000000000000e+03 +1.108000000000000000e+03 1.276000000000000000e+03 +1.110000000000000000e+03 1.093000000000000000e+03 +1.613000000000000000e+03 1.193000000000000000e+03 +1.782000000000000000e+03 1.304000000000000000e+03 +7.110000000000000000e+02 7.790000000000000000e+02 +1.486000000000000000e+03 1.068000000000000000e+03 +5.210000000000000000e+02 8.170000000000000000e+02 +8.560000000000000000e+02 1.055000000000000000e+03 +1.028000000000000000e+03 1.290000000000000000e+03 +6.950000000000000000e+02 7.380000000000000000e+02 +1.432000000000000000e+03 1.304000000000000000e+03 +1.636000000000000000e+03 1.078000000000000000e+03 +1.572000000000000000e+03 1.256000000000000000e+03 +5.870000000000000000e+02 7.670000000000000000e+02 +2.050000000000000000e+02 6.500000000000000000e+02 +1.876000000000000000e+03 1.013000000000000000e+03 +1.231000000000000000e+03 8.090000000000000000e+02 +7.290000000000000000e+02 1.132000000000000000e+03 +1.592000000000000000e+03 1.266000000000000000e+03 +7.420000000000000000e+02 1.328000000000000000e+03 +1.073000000000000000e+03 1.113000000000000000e+03 +1.083000000000000000e+03 1.264000000000000000e+03 +1.262000000000000000e+03 1.310000000000000000e+03 +1.425000000000000000e+03 1.351000000000000000e+03 +1.164000000000000000e+03 8.130000000000000000e+02 +4.000000000000000000e+02 7.510000000000000000e+02 +1.949000000000000000e+03 1.239000000000000000e+03 +1.786000000000000000e+03 1.065000000000000000e+03 +1.873000000000000000e+03 1.196000000000000000e+03 +1.758000000000000000e+03 8.970000000000000000e+02 +1.648000000000000000e+03 1.261000000000000000e+03 +1.511000000000000000e+03 1.302000000000000000e+03 +4.220000000000000000e+02 7.420000000000000000e+02 +1.080000000000000000e+03 1.156000000000000000e+03 +1.872000000000000000e+03 8.670000000000000000e+02 +9.810000000000000000e+02 1.147000000000000000e+03 +1.275000000000000000e+03 8.010000000000000000e+02 +7.410000000000000000e+02 9.960000000000000000e+02 +1.156000000000000000e+03 1.205000000000000000e+03 +1.010000000000000000e+02 7.820000000000000000e+02 +2.040000000000000000e+03 1.336000000000000000e+03 +1.716000000000000000e+03 1.359000000000000000e+03 +1.920000000000000000e+03 1.315000000000000000e+03 +9.890000000000000000e+02 1.133000000000000000e+03 +8.830000000000000000e+02 1.211000000000000000e+03 +1.492000000000000000e+03 1.359000000000000000e+03 +7.410000000000000000e+02 1.193000000000000000e+03 +1.802000000000000000e+03 9.880000000000000000e+02 +8.810000000000000000e+02 7.770000000000000000e+02 +1.195000000000000000e+03 1.213000000000000000e+03 +1.915000000000000000e+03 1.276000000000000000e+03 +1.497000000000000000e+03 8.970000000000000000e+02 +1.569000000000000000e+03 1.340000000000000000e+03 +5.560000000000000000e+02 1.138000000000000000e+03 +7.620000000000000000e+02 1.326000000000000000e+03 +1.599000000000000000e+03 1.355000000000000000e+03 +2.820000000000000000e+02 1.110000000000000000e+03 +1.262000000000000000e+03 7.680000000000000000e+02 +5.910000000000000000e+02 1.130000000000000000e+03 +1.057000000000000000e+03 1.332000000000000000e+03 +7.330000000000000000e+02 7.750000000000000000e+02 +1.713000000000000000e+03 1.252000000000000000e+03 +1.280000000000000000e+03 1.230000000000000000e+03 +1.301000000000000000e+03 1.354000000000000000e+03 +1.481000000000000000e+03 1.266000000000000000e+03 +1.412000000000000000e+03 1.358000000000000000e+03 +7.530000000000000000e+02 1.275000000000000000e+03 +1.943000000000000000e+03 1.291000000000000000e+03 +1.031000000000000000e+03 1.235000000000000000e+03 +9.120000000000000000e+02 1.193000000000000000e+03 +1.400000000000000000e+03 1.361000000000000000e+03 +1.455000000000000000e+03 1.279000000000000000e+03 +4.220000000000000000e+02 1.116000000000000000e+03 +2.037000000000000000e+03 7.710000000000000000e+02 +1.003000000000000000e+03 1.287000000000000000e+03 +1.126000000000000000e+03 5.110000000000000000e+02 +2.060000000000000000e+02 8.350000000000000000e+02 +1.806000000000000000e+03 1.043000000000000000e+03 +1.472000000000000000e+03 1.337000000000000000e+03 +4.060000000000000000e+02 1.239000000000000000e+03 +1.330000000000000000e+02 8.380000000000000000e+02 +3.930000000000000000e+02 1.250000000000000000e+03 +1.833000000000000000e+03 1.237000000000000000e+03 +1.601000000000000000e+03 1.074000000000000000e+03 +2.000000000000000000e+03 1.268000000000000000e+03 +1.908000000000000000e+03 1.285000000000000000e+03 +1.933000000000000000e+03 1.309000000000000000e+03 +1.533000000000000000e+03 1.016000000000000000e+03 +1.761000000000000000e+03 1.221000000000000000e+03 +1.753000000000000000e+03 1.361000000000000000e+03 +1.945000000000000000e+03 1.194000000000000000e+03 +9.290000000000000000e+02 1.247000000000000000e+03 +9.050000000000000000e+02 1.024000000000000000e+03 +1.140000000000000000e+03 1.362000000000000000e+03 +1.563000000000000000e+03 1.247000000000000000e+03 +1.724000000000000000e+03 1.282000000000000000e+03 +1.134000000000000000e+03 1.142000000000000000e+03 +1.109000000000000000e+03 1.040000000000000000e+03 +1.482000000000000000e+03 1.307000000000000000e+03 +7.800000000000000000e+02 8.090000000000000000e+02 +4.800000000000000000e+02 8.140000000000000000e+02 +4.570000000000000000e+02 7.980000000000000000e+02 +1.923000000000000000e+03 1.288000000000000000e+03 +1.178000000000000000e+03 1.361000000000000000e+03 +1.138000000000000000e+03 1.100000000000000000e+03 +2.400000000000000000e+02 8.020000000000000000e+02 +1.314000000000000000e+03 1.274000000000000000e+03 +1.427000000000000000e+03 1.198000000000000000e+03 +1.936000000000000000e+03 1.030000000000000000e+03 +1.132000000000000000e+03 1.297000000000000000e+03 +1.742000000000000000e+03 1.353000000000000000e+03 +1.740000000000000000e+03 1.277000000000000000e+03 +1.409000000000000000e+03 1.231000000000000000e+03 +8.530000000000000000e+02 1.353000000000000000e+03 +4.190000000000000000e+02 1.244000000000000000e+03 +1.072000000000000000e+03 1.354000000000000000e+03 +7.370000000000000000e+02 1.245000000000000000e+03 +7.560000000000000000e+02 1.295000000000000000e+03 +1.935000000000000000e+03 1.061000000000000000e+03 +9.840000000000000000e+02 1.271000000000000000e+03 +1.814000000000000000e+03 8.010000000000000000e+02 +7.010000000000000000e+02 8.340000000000000000e+02 +1.746000000000000000e+03 9.920000000000000000e+02 +1.190000000000000000e+02 8.140000000000000000e+02 +1.018000000000000000e+03 1.351000000000000000e+03 +1.817000000000000000e+03 8.290000000000000000e+02 +2.032000000000000000e+03 9.500000000000000000e+02 +1.376000000000000000e+03 8.030000000000000000e+02 +1.878000000000000000e+03 1.253000000000000000e+03 +1.901000000000000000e+03 1.232000000000000000e+03 +9.560000000000000000e+02 1.289000000000000000e+03 +9.230000000000000000e+02 1.198000000000000000e+03 +9.610000000000000000e+02 1.318000000000000000e+03 +1.601000000000000000e+03 1.300000000000000000e+03 +1.329000000000000000e+03 1.306000000000000000e+03 +9.420000000000000000e+02 1.361000000000000000e+03 +1.591000000000000000e+03 1.298000000000000000e+03 +1.735000000000000000e+03 1.286000000000000000e+03 +1.897000000000000000e+03 1.222000000000000000e+03 +6.880000000000000000e+02 9.940000000000000000e+02 +1.714000000000000000e+03 1.341000000000000000e+03 +7.480000000000000000e+02 8.110000000000000000e+02 +3.790000000000000000e+02 8.150000000000000000e+02 +1.925000000000000000e+03 1.298000000000000000e+03 +8.310000000000000000e+02 8.100000000000000000e+02 +1.071000000000000000e+03 8.540000000000000000e+02 +1.552000000000000000e+03 1.051000000000000000e+03 +1.385000000000000000e+03 1.273000000000000000e+03 +7.400000000000000000e+02 1.363000000000000000e+03 +3.840000000000000000e+02 7.510000000000000000e+02 +1.961000000000000000e+03 1.036000000000000000e+03 +4.330000000000000000e+02 5.730000000000000000e+02 +4.850000000000000000e+02 1.221000000000000000e+03 +1.491000000000000000e+03 1.204000000000000000e+03 +1.518000000000000000e+03 1.101000000000000000e+03 +1.719000000000000000e+03 1.218000000000000000e+03 +1.259000000000000000e+03 1.252000000000000000e+03 +1.073000000000000000e+03 7.900000000000000000e+02 +1.258000000000000000e+03 1.266000000000000000e+03 +9.900000000000000000e+02 1.331000000000000000e+03 +1.883000000000000000e+03 1.315000000000000000e+03 +1.626000000000000000e+03 1.160000000000000000e+03 +1.747000000000000000e+03 1.111000000000000000e+03 +4.170000000000000000e+02 1.192000000000000000e+03 +1.797000000000000000e+03 1.104000000000000000e+03 +1.100000000000000000e+03 1.212000000000000000e+03 +1.630000000000000000e+02 7.660000000000000000e+02 +1.324000000000000000e+03 1.296000000000000000e+03 +1.558000000000000000e+03 1.272000000000000000e+03 +1.923000000000000000e+03 1.081000000000000000e+03 +2.660000000000000000e+02 6.330000000000000000e+02 +1.239000000000000000e+03 1.295000000000000000e+03 +1.522000000000000000e+03 1.299000000000000000e+03 +2.017000000000000000e+03 1.035000000000000000e+03 +1.430000000000000000e+03 1.242000000000000000e+03 +1.138000000000000000e+03 1.155000000000000000e+03 +5.560000000000000000e+02 1.346000000000000000e+03 +1.015000000000000000e+03 1.152000000000000000e+03 +1.208000000000000000e+03 1.351000000000000000e+03 +1.197000000000000000e+03 1.319000000000000000e+03 +1.912000000000000000e+03 1.344000000000000000e+03 +1.443000000000000000e+03 1.235000000000000000e+03 +1.099000000000000000e+03 1.169000000000000000e+03 +5.990000000000000000e+02 8.000000000000000000e+02 +6.630000000000000000e+02 1.042000000000000000e+03 +1.507000000000000000e+03 1.331000000000000000e+03 +1.526000000000000000e+03 8.040000000000000000e+02 +6.720000000000000000e+02 8.120000000000000000e+02 +2.230000000000000000e+02 7.930000000000000000e+02 +1.628000000000000000e+03 1.322000000000000000e+03 +1.943000000000000000e+03 1.172000000000000000e+03 +5.690000000000000000e+02 1.132000000000000000e+03 +3.280000000000000000e+02 7.940000000000000000e+02 +1.028000000000000000e+03 1.303000000000000000e+03 +1.518000000000000000e+03 1.163000000000000000e+03 +1.393000000000000000e+03 8.310000000000000000e+02 +1.639000000000000000e+03 1.147000000000000000e+03 +1.200000000000000000e+03 1.200000000000000000e+03 +1.681000000000000000e+03 1.316000000000000000e+03 +1.172000000000000000e+03 8.390000000000000000e+02 +1.209000000000000000e+03 1.259000000000000000e+03 +1.953000000000000000e+03 1.270000000000000000e+03 +1.216000000000000000e+03 8.320000000000000000e+02 +1.694000000000000000e+03 1.112000000000000000e+03 +1.209000000000000000e+03 5.230000000000000000e+02 +1.578000000000000000e+03 8.420000000000000000e+02 +1.001000000000000000e+03 1.328000000000000000e+03 +1.457000000000000000e+03 1.320000000000000000e+03 +1.856000000000000000e+03 1.336000000000000000e+03 +1.537000000000000000e+03 1.102000000000000000e+03 +1.861000000000000000e+03 1.221000000000000000e+03 +1.158000000000000000e+03 5.140000000000000000e+02 +1.410000000000000000e+03 1.263000000000000000e+03 +1.150000000000000000e+03 1.358000000000000000e+03 +1.693000000000000000e+03 1.334000000000000000e+03 +1.282000000000000000e+03 8.450000000000000000e+02 +1.487000000000000000e+03 1.167000000000000000e+03 +1.104000000000000000e+03 1.345000000000000000e+03 +1.196000000000000000e+03 1.339000000000000000e+03 +1.282000000000000000e+03 1.347000000000000000e+03 +1.471000000000000000e+03 1.214000000000000000e+03 +9.370000000000000000e+02 1.058000000000000000e+03 +1.777000000000000000e+03 1.018000000000000000e+03 +8.930000000000000000e+02 1.239000000000000000e+03 +6.220000000000000000e+02 1.339000000000000000e+03 +1.321000000000000000e+03 9.750000000000000000e+02 +1.582000000000000000e+03 1.184000000000000000e+03 +1.557000000000000000e+03 1.008000000000000000e+03 +1.751000000000000000e+03 1.271000000000000000e+03 +1.500000000000000000e+03 8.270000000000000000e+02 +1.494000000000000000e+03 1.308000000000000000e+03 +1.338000000000000000e+03 1.209000000000000000e+03 +8.660000000000000000e+02 1.354000000000000000e+03 +5.150000000000000000e+02 8.340000000000000000e+02 +1.133000000000000000e+03 1.205000000000000000e+03 +8.120000000000000000e+02 1.218000000000000000e+03 +1.870000000000000000e+03 1.244000000000000000e+03 +3.200000000000000000e+02 1.057000000000000000e+03 +1.463000000000000000e+03 1.311000000000000000e+03 +1.922000000000000000e+03 1.018000000000000000e+03 +1.149000000000000000e+03 1.214000000000000000e+03 +9.860000000000000000e+02 7.790000000000000000e+02 +1.151000000000000000e+03 1.172000000000000000e+03 +1.395000000000000000e+03 1.272000000000000000e+03 +5.870000000000000000e+02 1.213000000000000000e+03 +7.270000000000000000e+02 1.329000000000000000e+03 +1.676000000000000000e+03 1.346000000000000000e+03 +2.007000000000000000e+03 1.332000000000000000e+03 +3.840000000000000000e+02 1.257000000000000000e+03 +8.810000000000000000e+02 5.090000000000000000e+02 +9.080000000000000000e+02 1.298000000000000000e+03 +1.163000000000000000e+03 7.940000000000000000e+02 +1.753000000000000000e+03 1.288000000000000000e+03 +1.028000000000000000e+03 1.322000000000000000e+03 +1.504000000000000000e+03 1.342000000000000000e+03 +4.250000000000000000e+02 5.790000000000000000e+02 +1.584000000000000000e+03 8.190000000000000000e+02 +1.222000000000000000e+03 1.290000000000000000e+03 +1.639000000000000000e+03 1.345000000000000000e+03 +5.010000000000000000e+02 1.290000000000000000e+03 +1.129000000000000000e+03 1.074000000000000000e+03 +1.180000000000000000e+03 8.260000000000000000e+02 +1.327000000000000000e+03 1.360000000000000000e+03 +1.971000000000000000e+03 1.317000000000000000e+03 +5.020000000000000000e+02 7.830000000000000000e+02 +5.950000000000000000e+02 1.361000000000000000e+03 +1.627000000000000000e+03 1.361000000000000000e+03 +1.114000000000000000e+03 1.168000000000000000e+03 +1.888000000000000000e+03 1.338000000000000000e+03 +1.874000000000000000e+03 1.292000000000000000e+03 +1.416000000000000000e+03 8.090000000000000000e+02 +1.338000000000000000e+03 1.237000000000000000e+03 +9.830000000000000000e+02 1.362000000000000000e+03 +7.740000000000000000e+02 8.290000000000000000e+02 +7.340000000000000000e+02 9.870000000000000000e+02 +1.125000000000000000e+03 1.247000000000000000e+03 +1.581000000000000000e+03 1.274000000000000000e+03 +1.235000000000000000e+03 1.277000000000000000e+03 +8.320000000000000000e+02 1.127000000000000000e+03 +8.700000000000000000e+02 1.276000000000000000e+03 +2.890000000000000000e+02 1.248000000000000000e+03 +1.101000000000000000e+03 1.359000000000000000e+03 +6.110000000000000000e+02 1.033000000000000000e+03 +9.620000000000000000e+02 1.122000000000000000e+03 +4.140000000000000000e+02 7.660000000000000000e+02 +1.851000000000000000e+03 8.960000000000000000e+02 +1.465000000000000000e+03 1.136000000000000000e+03 +1.877000000000000000e+03 1.352000000000000000e+03 +1.650000000000000000e+03 1.355000000000000000e+03 +1.761000000000000000e+03 1.058000000000000000e+03 +1.624000000000000000e+03 1.123000000000000000e+03 +1.834000000000000000e+03 1.286000000000000000e+03 +4.930000000000000000e+02 1.270000000000000000e+03 +1.790000000000000000e+03 1.289000000000000000e+03 +1.843000000000000000e+03 1.239000000000000000e+03 +1.058000000000000000e+03 1.091000000000000000e+03 +1.409000000000000000e+03 1.301000000000000000e+03 +3.570000000000000000e+02 1.144000000000000000e+03 +1.627000000000000000e+03 1.289000000000000000e+03 +1.832000000000000000e+03 1.257000000000000000e+03 +1.049000000000000000e+03 1.196000000000000000e+03 +1.613000000000000000e+03 1.078000000000000000e+03 +1.477000000000000000e+03 7.820000000000000000e+02 +1.349000000000000000e+03 8.400000000000000000e+02 +1.319000000000000000e+03 8.510000000000000000e+02 +1.135000000000000000e+03 1.121000000000000000e+03 +2.026000000000000000e+03 1.068000000000000000e+03 +1.182000000000000000e+03 1.282000000000000000e+03 +8.950000000000000000e+02 1.285000000000000000e+03 +1.051000000000000000e+03 1.230000000000000000e+03 +1.541000000000000000e+03 1.270000000000000000e+03 +1.243000000000000000e+03 1.284000000000000000e+03 +1.851000000000000000e+03 1.138000000000000000e+03 +1.073000000000000000e+03 1.260000000000000000e+03 +8.680000000000000000e+02 1.317000000000000000e+03 +1.375000000000000000e+03 1.342000000000000000e+03 +1.044000000000000000e+03 1.298000000000000000e+03 +5.770000000000000000e+02 1.113000000000000000e+03 +1.089000000000000000e+03 8.310000000000000000e+02 +2.810000000000000000e+02 1.098000000000000000e+03 +1.827000000000000000e+03 1.181000000000000000e+03 +1.036000000000000000e+03 1.189000000000000000e+03 +2.006000000000000000e+03 1.032000000000000000e+03 +1.981000000000000000e+03 1.226000000000000000e+03 +1.082000000000000000e+03 1.311000000000000000e+03 +7.000000000000000000e+02 1.161000000000000000e+03 +1.748000000000000000e+03 1.243000000000000000e+03 +1.857000000000000000e+03 1.207000000000000000e+03 +1.434000000000000000e+03 1.211000000000000000e+03 +1.972000000000000000e+03 1.357000000000000000e+03 +1.481000000000000000e+03 1.331000000000000000e+03 +6.490000000000000000e+02 1.363000000000000000e+03 +1.523000000000000000e+03 1.321000000000000000e+03 +9.820000000000000000e+02 1.290000000000000000e+03 +1.362000000000000000e+03 1.149000000000000000e+03 +1.493000000000000000e+03 1.106000000000000000e+03 +1.215000000000000000e+03 1.244000000000000000e+03 +1.240000000000000000e+03 1.238000000000000000e+03 +3.220000000000000000e+02 1.137000000000000000e+03 +1.086000000000000000e+03 1.326000000000000000e+03 +7.070000000000000000e+02 1.112000000000000000e+03 +1.333000000000000000e+03 1.272000000000000000e+03 +1.946000000000000000e+03 1.155000000000000000e+03 +7.090000000000000000e+02 1.301000000000000000e+03 +1.078000000000000000e+03 1.104000000000000000e+03 +9.950000000000000000e+02 1.294000000000000000e+03 +7.430000000000000000e+02 8.370000000000000000e+02 +1.126000000000000000e+03 1.332000000000000000e+03 +6.320000000000000000e+02 8.250000000000000000e+02 +9.620000000000000000e+02 1.214000000000000000e+03 +1.401000000000000000e+03 1.215000000000000000e+03 +8.040000000000000000e+02 8.100000000000000000e+02 +7.410000000000000000e+02 1.256000000000000000e+03 +1.455000000000000000e+03 1.239000000000000000e+03 +1.456000000000000000e+03 1.185000000000000000e+03 +1.179000000000000000e+03 1.145000000000000000e+03 +1.053000000000000000e+03 1.079000000000000000e+03 +1.649000000000000000e+03 1.066000000000000000e+03 +2.810000000000000000e+02 1.083000000000000000e+03 +1.506000000000000000e+03 1.131000000000000000e+03 +1.027000000000000000e+03 1.172000000000000000e+03 +1.042000000000000000e+03 8.440000000000000000e+02 +7.730000000000000000e+02 1.297000000000000000e+03 +1.296000000000000000e+03 1.318000000000000000e+03 +3.710000000000000000e+02 1.259000000000000000e+03 +1.759000000000000000e+03 9.700000000000000000e+02 +1.856000000000000000e+03 8.850000000000000000e+02 +4.960000000000000000e+02 8.310000000000000000e+02 +1.760000000000000000e+03 1.260000000000000000e+03 +3.220000000000000000e+02 1.089000000000000000e+03 +1.907000000000000000e+03 1.298000000000000000e+03 +1.046000000000000000e+03 5.080000000000000000e+02 +7.650000000000000000e+02 1.272000000000000000e+03 +1.350000000000000000e+03 1.203000000000000000e+03 +1.506000000000000000e+03 1.165000000000000000e+03 +1.140000000000000000e+03 1.224000000000000000e+03 +1.216000000000000000e+03 1.311000000000000000e+03 +1.809000000000000000e+03 1.029000000000000000e+03 +1.812000000000000000e+03 1.111000000000000000e+03 +7.050000000000000000e+02 1.080000000000000000e+03 +1.649000000000000000e+03 1.331000000000000000e+03 +3.480000000000000000e+02 7.980000000000000000e+02 +7.830000000000000000e+02 5.200000000000000000e+02 +8.060000000000000000e+02 1.287000000000000000e+03 +1.366000000000000000e+03 9.450000000000000000e+02 +4.760000000000000000e+02 1.280000000000000000e+03 +9.700000000000000000e+02 1.228000000000000000e+03 +7.260000000000000000e+02 1.149000000000000000e+03 +1.798000000000000000e+03 8.180000000000000000e+02 +9.770000000000000000e+02 1.063000000000000000e+03 +1.857000000000000000e+03 8.190000000000000000e+02 +9.830000000000000000e+02 1.106000000000000000e+03 +7.560000000000000000e+02 1.312000000000000000e+03 +1.210000000000000000e+03 1.277000000000000000e+03 +1.429000000000000000e+03 9.470000000000000000e+02 +1.190000000000000000e+03 1.253000000000000000e+03 diff --git a/tests/test_generators.py b/tests/test_generators.py index 7dc3c21..bb48efc 100644 --- a/tests/test_generators.py +++ b/tests/test_generators.py @@ -27,6 +27,8 @@ __license__ = "GPLv3" import unittest import itertools +import cv2 +import numpy as np from stegano.lsbset import generators @@ -166,6 +168,41 @@ class TestGenerators(unittest.TestCase): tuple(int(line) for line in f), ) + def test_shi_tomashi(self): + """ Test the Shi Tomashi generator + """ + + # The expected results are only for tests/sample-files/Montenach.png file and + # the below mentioned shi-tomashi configuration. + # If the values below are changed, + # please ensure the tests/expected-results/shi_tomashi.txt + # is also appropriately modified + # Using the shi_tomashi_reconfigure static method + + image = cv2.imread("tests/sample-files/Montenach.png") + gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + corners = cv2.goodFeaturesToTrack(gray, 1000, 0.001, 10) + corners = np.int0(corners) + corners = corners.reshape(corners.shape[0], -1) + test_file = np.loadtxt("tests/expected-results/shi_tomashi.txt") + test_file_reshaped = test_file.reshape(test_file.shape[0], test_file.shape[1]) + self.assertIsNone(np.testing.assert_array_equal(corners, test_file_reshaped)) + + @staticmethod + def shi_tomashi_reconfigure(file_name: str, + corners: int = 1000, + quality: float = 0.001, + min_distance: int = 10): + """ + Method to update/reconfigure Shi-Tomashi for various images and configuration + """ + image = cv2.imread(file_name) + gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) + corners = cv2.goodFeaturesToTrack(gray, corners, quality, min_distance) + corners = np.int0(corners) + corners = corners.reshape(corners.shape[0], -1) + np.savetxt('tests/expected-results/shi_tomashi.txt', corners) + if __name__ == "__main__": unittest.main() diff --git a/tests/test_lsbset.py b/tests/test_lsbset.py index 0823478..6aea35c 100644 --- a/tests/test_lsbset.py +++ b/tests/test_lsbset.py @@ -68,6 +68,18 @@ class TestLSBSet(unittest.TestCase): self.assertEqual(message, clear_message) + def test_hide_and_reveal_with_shi_tomashi(self): + messages_to_hide = ["foo bar"] + for message in messages_to_hide: + secret = lsbset.hide( + "./tests/sample-files/Lenna.png", message, generators.shi_tomashi("./tests/sample-files/Lenna.png") + ) + secret.save("./image.png") + + clear_message = lsbset.reveal("./image.png", generators.shi_tomashi("./tests/sample-files/Lenna.png")) + + self.assertEqual(message, clear_message) + def test_hide_and_reveal_with_shift(self): messages_to_hide = ["a", "foo", "Hello World!", ":Python:"] for message in messages_to_hide: