use bubble sorting in production code.</p>
<p>Nevertheless, here is a simple implementation of the bubble sort
-algorithm. The code <a href="src/bubble.c">bubble.c</a> generates a
-list of random numbers which are then ordered. The bubble sort
-algorithm is certainly the easiest to implement and therefore the
+algorithm. The code <a href="../../src/sorting/bubble.c">bubble.c</a>
+generates a list of random numbers which are then ordered. The bubble
+sort algorithm is certainly the easiest to implement and therefore the
easiest to parallelize.</p>
<h3 id="par-bubble">Parallel Bubble Sort</h3>
sorted.</li>
</ul>
-<p><a href="src/quicksort.c">quicksort.c</a> implements this
-algorithm.</p>
+<p><a href="../../src/sorting/quicksort.c">quicksort.c</a> implements
+this algorithm.</p>
<p>The merge component of this parallel implementation is the hardest
-to code. The data set <a href="src/multi_lists">multi_lists</a>, which
+to code. The data
+set <a href="../../src/sorting/multi_lists">multi_lists</a>, which
contains three short lists, can be used to practice with.</p>
<h3 id="par-quick">Parallel Quicksort Algorithm</h3>
<h2 id="references">References</h2>
+The examples from this section are bundled in
+<a href="../../src/sorting/sorting.tar.gz">sorting.tar.gz</a>.
+
<ul>
<li><a href="http://www.nr.com/">Numerical Recipes</a> describes many
of the most common algorithms.</li>
all: $(EXECS) $(MPI_EXECS) $(DATA)
clean:
- $(RM) -f *.o $(EXECS) $(DATA)
+ $(RM) -f *.o $(EXECS) $(MPI_EXECS) $(DATA)
# Non-MPI rules
}
// close the file
- fclose (fp);
+ fclose(fp);
return EXIT_SUCCESS;
}
--- /dev/null
+# General Environment
+
+RM = /bin/rm
+DATA_SIZE = 8191 # the 5th Mersenne prime
+DATA = data
+
+# Non-MPI Environment
+
+CC = /usr/bin/gcc
+CFLAGS =
+LD = $(CC)
+LDFLAGS = -lm
+EXECS = bubble quicksort
+
+# Top level targets
+
+all: $(EXECS) $(DATA)
+
+clean:
+ $(RM) -f *.o $(EXECS) $(DATA)
+
+# Lower level rules
+
+data : data.py
+ ./$< $(DATA_SIZE) > $@
+
+$(EXECS:%=%.o) main.o : %.o : %.c main.h
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(EXECS) : % : main.o %.o
+ $(LD) $(LDFLAGS) -o $@ $^
+
+# Interesting Makefile sections
+# 4.12.1 Syntax of Static Pattern Rules
+# 6.3.1 Substitution References
--- /dev/null
+sorting
+=======
+
+Various sorting algorithms.
+
+Manifest
+--------
+
+=========== ===============================================
+README This file.
+Makefile Automate building and cleanup.
+data.py Generate random data for the 'data' file.
+main.c/.h Command line framework for a sorting algorithm.
+bubble.c Bubble sort algorithm for main.c/.h.
+quicksort.c Quicksort algorithm for main.c/.h.
+=========== ===============================================
+
+Build
+-----
+
+Just run
+
+ $ make
+
+which also builds a random data file 'data'.
+
+Usage
+-----
+
+ $ ./qicksort data
+ $ ./bubble data
+
+Timing
+------
+
+Timing 8191 data points on my 571 MHz netbook with
+
+ $ time ./quicksort data > /dev/null
+ $ time ./quicksort data > /dev/null
+
+quicksort takes 0.075 s and bubble takes 3.994s.
+/* Bubble sort algorithm */
-//
-// Bubble sort algorithm
-//
-// Michel Vallieres, 2009
-//
+/* Michel Vallieres, 2009 */
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+#include "main.h"
-void init( double * list, int list_size )
-{
- int i;
-
- for( i=0; i<list_size ; i++ )
- {
- list[i] = (double)rand()/(double)RAND_MAX;
- }
-}
-
-
-void printlist(double * list, int n, int list_size )
-{
- int i;
- for(i=0;i<n;i++)
- printf("%f\t",list[i]);
- printf("\n");
- for(i=n;i>0;i--)
- printf("%f\t",list[list_size-i]);
- printf("\n");
-}
-
-
-
-void sort( double * list, int list_size )
+void sort(int list_size, double *list)
{
double temp;
int i, exchange;
}
}
}
-
-
-double checklist(double list[], int list_size )
-{
- int i;
- double sum;
-
- sum = 0.0;
- for(i = 0; i < list_size; i++ )
- sum = sum + list[i];
- return sum;
-}
-
-
-int main ( int argc, char *argv[] )
-{
- const int MAX_ELEMENTS = 1000000;
- double list[MAX_ELEMENTS];
- int list_size;
-
- /* size of lit */
- list_size = 1000;
-
- /* initial a list of random numbers */
- init( list, list_size );
-
- /* print initial list */
- printf("The list before sorting is:\n");
- printlist( list, 3, list_size );
- printf( "Check: sum of %d elements = %f\n",
- list_size, checklist( list, list_size ) );
-
- /* sort out the list */
- /* via bubble sort algorithm */
- sort( list, list_size );
-
- /* print final list */
- printf("The list after sorting is:\n");
- printlist( list, 3, list_size );
- printf( "Check: sum of %d elements = %f\n",
- list_size, checklist( list, list_size ) );
-}
--- /dev/null
+#!/usr/bin/env python
+
+import random
+import sys
+
+N = int(sys.argv[1])
+data = range(N)
+random.shuffle(data)
+
+print '# %d' % N
+print '\n'.join([str(x) for x in data])
--- /dev/null
+/* Sorting utility */
+
+/* Michel Vallieres, 2009 */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "main.h"
+
+
+void printlist(FILE *stream, int list_size, double *list, int num_shown)
+{
+ int i;
+ for(i=0; i < num_shown; i++)
+ fprintf(stream, "%f\t", list[i]);
+ fprintf(stream, "\n");
+ for(i=num_shown; i > 0 ; i--)
+ fprintf(stream, "%f\t", list[list_size-i]);
+ fprintf(stream, "\n");
+}
+
+double checklist(int list_size, double *list)
+{
+ int i;
+ double sum;
+
+ sum = 0.0;
+ for(i = 0; i < list_size; i++ )
+ sum = sum + list[i];
+ return sum;
+}
+
+int read_data(const char *file_name, int *pList_size, double **pList) {
+ FILE *fp;
+ int i;
+ double x;
+
+ // open the file
+ if ((fp = fopen(file_name, "r")) == NULL)
+ {
+ fprintf(stderr, "error in opening data file %s\n", file_name);
+ return EXIT_FAILURE;
+ }
+
+ // read the size of the data file
+ fscanf(fp, "# %d", pList_size);
+
+ // allocate memory for the data
+ *pList = (double *)malloc(sizeof(double)* *pList_size);
+ if (*pList == NULL)
+ {
+ fprintf(stderr, "could not allocate %d bytes\n",
+ sizeof(double)* *pList_size);
+ return EXIT_FAILURE;
+ }
+
+ // read in the data
+ fprintf(stderr, "reading %d points\n", *pList_size);
+ for (i=0; i < *pList_size ; i++)
+ {
+ fscanf(fp, "%lf", &x);
+ (*pList)[i] = x;
+ }
+
+ // close the file
+ fclose(fp);
+ return EXIT_SUCCESS;
+}
+
+
+int main ( int argc, char *argv[] )
+{
+ int list_size, i;
+ double *list;
+ char *file_name = "data";
+
+ // parse arguments
+ if (argc > 1)
+ file_name = argv[1];
+
+ // setup
+ if (read_data(file_name, &list_size, &list) != EXIT_SUCCESS)
+ return EXIT_FAILURE;
+
+ /* print initial list */
+ fprintf(stderr, "The list before sorting is:\n");
+ printlist(stderr, list_size, list, 3);
+ fprintf(stderr, "Check: sum of %d elements = %f\n",
+ list_size, checklist(list_size, list));
+
+ /* sort the list */
+ sort(list_size, list);
+
+ /* print final list */
+ fprintf(stderr, "The list after sorting is:\n");
+ printlist(stderr, list_size, list, 3);
+ fprintf(stderr, "Check: sum of %d elements = %f\n",
+ list_size, checklist(list_size, list));
+ for (i=0; i < list_size; i++)
+ printf("%f\n", list[i]);
+
+ return EXIT_SUCCESS;
+}
--- /dev/null
+/* sort a list `list` of `list_size` elements in place. */
+void sort(int list_size, double *list);
+++ /dev/null
-256
-0.003231
-0.004162
-0.016301
-0.020023
-0.035421
-0.039280
-0.040864
-0.051939
-0.052529
-0.054058
-0.063096
-0.064171
-0.069755
-0.069906
-0.072329
-0.074161
-0.074530
-0.076995
-0.078232
-0.086056
-0.093480
-0.099640
-0.103171
-0.108809
-0.113281
-0.125468
-0.125475
-0.126075
-0.129790
-0.134902
-0.137232
-0.141603
-0.147660
-0.152390
-0.156679
-0.157807
-0.163131
-0.163968
-0.164102
-0.165974
-0.169607
-0.176211
-0.180372
-0.182556
-0.184622
-0.187533
-0.192214
-0.197551
-0.204329
-0.204655
-0.215825
-0.218257
-0.223656
-0.226107
-0.228968
-0.229137
-0.231428
-0.232262
-0.233892
-0.238280
-0.240062
-0.242887
-0.244413
-0.248044
-0.266666
-0.276235
-0.277775
-0.280042
-0.281059
-0.283315
-0.284293
-0.292517
-0.294160
-0.296032
-0.304295
-0.304956
-0.307458
-0.316867
-0.328777
-0.330337
-0.335223
-0.336351
-0.344943
-0.347116
-0.348893
-0.350360
-0.352458
-0.354049
-0.359095
-0.364784
-0.368664
-0.375207
-0.383188
-0.391690
-0.394383
-0.398437
-0.400229
-0.400944
-0.413984
-0.416501
-0.431953
-0.434513
-0.437638
-0.439560
-0.440105
-0.447034
-0.450918
-0.452576
-0.457702
-0.461420
-0.471483
-0.477397
-0.481936
-0.482491
-0.482950
-0.493583
-0.495444
-0.497259
-0.510686
-0.512535
-0.512932
-0.513401
-0.520210
-0.521563
-0.524287
-0.525995
-0.526745
-0.530808
-0.531606
-0.539760
-0.546107
-0.552485
-0.553970
-0.556444
-0.573319
-0.576971
-0.579430
-0.584489
-0.588640
-0.592540
-0.593892
-0.598481
-0.606969
-0.609106
-0.612640
-0.619596
-0.621823
-0.627158
-0.628871
-0.628910
-0.629480
-0.633072
-0.635712
-0.637552
-0.637640
-0.639458
-0.639979
-0.641081
-0.649707
-0.651132
-0.656564
-0.657304
-0.663227
-0.666880
-0.667724
-0.673936
-0.675476
-0.684219
-0.684445
-0.686670
-0.687387
-0.687861
-0.695984
-0.700620
-0.712087
-0.717297
-0.719269
-0.720952
-0.732149
-0.732654
-0.738534
-0.743811
-0.745071
-0.747803
-0.747809
-0.749771
-0.755581
-0.757294
-0.759735
-0.760249
-0.760475
-0.768230
-0.769914
-0.771358
-0.783099
-0.786002
-0.793470
-0.797798
-0.798440
-0.804177
-0.807725
-0.814767
-0.819677
-0.819695
-0.829201
-0.830012
-0.831038
-0.833239
-0.833243
-0.839112
-0.840188
-0.847684
-0.850920
-0.858676
-0.870540
-0.873271
-0.877614
-0.880075
-0.881062
-0.888949
-0.889956
-0.890233
-0.891529
-0.893372
-0.902208
-0.903366
-0.906804
-0.910972
-0.911647
-0.913027
-0.916195
-0.919026
-0.920128
-0.923069
-0.923970
-0.925377
-0.930810
-0.931835
-0.935004
-0.944318
-0.949327
-0.950104
-0.950252
-0.952230
-0.956468
-0.967405
-0.970634
-0.971466
-0.972775
-0.979434
-0.983596
-0.984752
-0.992228
-0.997799
-0.998925
-0.999994
-4096
-0.000047
-0.000406
-0.000768
-0.000824
-0.001125
-0.001326
-0.002113
-0.002209
-0.002368
-0.002623
-0.002828
-0.003231
-0.003231
-0.003282
-0.003332
-0.003458
-0.003579
-0.003858
-0.003862
-0.004162
-0.004727
-0.004938
-0.005076
-0.005409
-0.005435
-0.005709
-0.005843
-0.005910
-0.006005
-0.006122
-0.006426
-0.006954
-0.006980
-0.007716
-0.007880
-0.008569
-0.008877
-0.009073
-0.009352
-0.009470
-0.009948
-0.010617
-0.010642
-0.011007
-0.011681
-0.011745
-0.011788
-0.011968
-0.012301
-0.012830
-0.013161
-0.013341
-0.013558
-0.013866
-0.013881
-0.013905
-0.014084
-0.014150
-0.014377
-0.014579
-0.014807
-0.015051
-0.015444
-0.015484
-0.015699
-0.016177
-0.016219
-0.016301
-0.016651
-0.017457
-0.017520
-0.017835
-0.017998
-0.018409
-0.018556
-0.018774
-0.018911
-0.018933
-0.018988
-0.019217
-0.019645
-0.020023
-0.020347
-0.020508
-0.020708
-0.020864
-0.021094
-0.021798
-0.022170
-0.022273
-0.022595
-0.022916
-0.023323
-0.023453
-0.023863
-0.024575
-0.024902
-0.025309
-0.025355
-0.025667
-0.025853
-0.026187
-0.026784
-0.027284
-0.028453
-0.028500
-0.028655
-0.028757
-0.029011
-0.029040
-0.029476
-0.029557
-0.029950
-0.030065
-0.030167
-0.030324
-0.030426
-0.030634
-0.030963
-0.031606
-0.031649
-0.031653
-0.032004
-0.032038
-0.032184
-0.032625
-0.032735
-0.032893
-0.032963
-0.033091
-0.033148
-0.034026
-0.034183
-0.034307
-0.034380
-0.034487
-0.034716
-0.035014
-0.035039
-0.035421
-0.035519
-0.035571
-0.035666
-0.035746
-0.035767
-0.035848
-0.036327
-0.036489
-0.036496
-0.036516
-0.036674
-0.036818
-0.037347
-0.037406
-0.037658
-0.037932
-0.038229
-0.038265
-0.039135
-0.039280
-0.039521
-0.039717
-0.039747
-0.040087
-0.040343
-0.040368
-0.040756
-0.040864
-0.041276
-0.042431
-0.043222
-0.043379
-0.043395
-0.043415
-0.043817
-0.043891
-0.043915
-0.044362
-0.044366
-0.044729
-0.044796
-0.044991
-0.045454
-0.046365
-0.046513
-0.046847
-0.047066
-0.047183
-0.047588
-0.047742
-0.048004
-0.048346
-0.048500
-0.048532
-0.048639
-0.048739
-0.048826
-0.049162
-0.049473
-0.049933
-0.050168
-0.050254
-0.050263
-0.050466
-0.050967
-0.051208
-0.051382
-0.051508
-0.051651
-0.051685
-0.051766
-0.051869
-0.051939
-0.052010
-0.052167
-0.052399
-0.052488
-0.052529
-0.052926
-0.052977
-0.053073
-0.053422
-0.053439
-0.053534
-0.053551
-0.053613
-0.053647
-0.054058
-0.054214
-0.054437
-0.054675
-0.055387
-0.055411
-0.055770
-0.055979
-0.056022
-0.056223
-0.056461
-0.056869
-0.056883
-0.057297
-0.057497
-0.058052
-0.058723
-0.058759
-0.058793
-0.058860
-0.059043
-0.059163
-0.059298
-0.059492
-0.059800
-0.060156
-0.060459
-0.060836
-0.061761
-0.062067
-0.062239
-0.062674
-0.062947
-0.063096
-0.063243
-0.063393
-0.063524
-0.063561
-0.063591
-0.063733
-0.064171
-0.064342
-0.064588
-0.064977
-0.065064
-0.065579
-0.065851
-0.065910
-0.066662
-0.067462
-0.067608
-0.067696
-0.068235
-0.068729
-0.068814
-0.069018
-0.069114
-0.069138
-0.069755
-0.069889
-0.069906
-0.069944
-0.069960
-0.070090
-0.070557
-0.070808
-0.071322
-0.071640
-0.072194
-0.072329
-0.072545
-0.073236
-0.073638
-0.073716
-0.073749
-0.073824
-0.074058
-0.074161
-0.074260
-0.074458
-0.074505
-0.074530
-0.075401
-0.075625
-0.076753
-0.076995
-0.077029
-0.077937
-0.077968
-0.078135
-0.078232
-0.078241
-0.078258
-0.078458
-0.079281
-0.079642
-0.080166
-0.080384
-0.080405
-0.080795
-0.081265
-0.081642
-0.081783
-0.081873
-0.082122
-0.082568
-0.082577
-0.083580
-0.083794
-0.084185
-0.084289
-0.084390
-0.084411
-0.085831
-0.085852
-0.086052
-0.086056
-0.086596
-0.086620
-0.086671
-0.086795
-0.087259
-0.087565
-0.087644
-0.087782
-0.087917
-0.088038
-0.088130
-0.088201
-0.088528
-0.088864
-0.089161
-0.089184
-0.089430
-0.089609
-0.089655
-0.089739
-0.089914
-0.090130
-0.090262
-0.090368
-0.091149
-0.091314
-0.091403
-0.091864
-0.092489
-0.092494
-0.092576
-0.092657
-0.092858
-0.093366
-0.093480
-0.093740
-0.093759
-0.093788
-0.093920
-0.094073
-0.094077
-0.094320
-0.094543
-0.094848
-0.094923
-0.095043
-0.095194
-0.095341
-0.096157
-0.096404
-0.096681
-0.097133
-0.097478
-0.097491
-0.097518
-0.097544
-0.097721
-0.098057
-0.098837
-0.098858
-0.098966
-0.099247
-0.099258
-0.099285
-0.099316
-0.099463
-0.099559
-0.099629
-0.099640
-0.099847
-0.100276
-0.100686
-0.100709
-0.100857
-0.101054
-0.101124
-0.101377
-0.101446
-0.101454
-0.101480
-0.101507
-0.101630
-0.101735
-0.101782
-0.101812
-0.101953
-0.102048
-0.102233
-0.102434
-0.102443
-0.102479
-0.102577
-0.102683
-0.103171
-0.103244
-0.103390
-0.104174
-0.104331
-0.105576
-0.106272
-0.106496
-0.106892
-0.107517
-0.107613
-0.107738
-0.107848
-0.108608
-0.108785
-0.108809
-0.108823
-0.108828
-0.109087
-0.109233
-0.109285
-0.109337
-0.109345
-0.109525
-0.109733
-0.109778
-0.110183
-0.110427
-0.111276
-0.112157
-0.112205
-0.112371
-0.112648
-0.112911
-0.112964
-0.112988
-0.112998
-0.113207
-0.113274
-0.113281
-0.113363
-0.113530
-0.114054
-0.114199
-0.114216
-0.114316
-0.114459
-0.114594
-0.114668
-0.115024
-0.115414
-0.115440
-0.115571
-0.115752
-0.116508
-0.116995
-0.117271
-0.118118
-0.118126
-0.118735
-0.119111
-0.119224
-0.119379
-0.119584
-0.119679
-0.119752
-0.119964
-0.119989
-0.120201
-0.120243
-0.120757
-0.120834
-0.121143
-0.121259
-0.122013
-0.122086
-0.122217
-0.122326
-0.122489
-0.122664
-0.122798
-0.123695
-0.123838
-0.123969
-0.124236
-0.125275
-0.125433
-0.125468
-0.125475
-0.126016
-0.126075
-0.126080
-0.126222
-0.126579
-0.126669
-0.126805
-0.126812
-0.127743
-0.128624
-0.129542
-0.129663
-0.129737
-0.129790
-0.129976
-0.130165
-0.130842
-0.130979
-0.131244
-0.131653
-0.131702
-0.132000
-0.132400
-0.132558
-0.133031
-0.133100
-0.133104
-0.133314
-0.133326
-0.133388
-0.133512
-0.133548
-0.133637
-0.134470
-0.134902
-0.135545
-0.135586
-0.135705
-0.135875
-0.136075
-0.136171
-0.136956
-0.136962
-0.136975
-0.137232
-0.137874
-0.138082
-0.138114
-0.138238
-0.138539
-0.138580
-0.138667
-0.138684
-0.138826
-0.138845
-0.139001
-0.139058
-0.139216
-0.139221
-0.139814
-0.140033
-0.140080
-0.140338
-0.140684
-0.141051
-0.141065
-0.141207
-0.141603
-0.141623
-0.141796
-0.142119
-0.142225
-0.142289
-0.142889
-0.142949
-0.143224
-0.143621
-0.143818
-0.143942
-0.143982
-0.144156
-0.144200
-0.144246
-0.144468
-0.144482
-0.144791
-0.144946
-0.145122
-0.145373
-0.146135
-0.146641
-0.147062
-0.147407
-0.147660
-0.148077
-0.148230
-0.148236
-0.148342
-0.148539
-0.149041
-0.149199
-0.149882
-0.149964
-0.150099
-0.150208
-0.151025
-0.151230
-0.152062
-0.152390
-0.152413
-0.152518
-0.152610
-0.152876
-0.152917
-0.153375
-0.153923
-0.154141
-0.154393
-0.154711
-0.154724
-0.154927
-0.155202
-0.155233
-0.155289
-0.155336
-0.156244
-0.156257
-0.156525
-0.156679
-0.156801
-0.157139
-0.157272
-0.157275
-0.157555
-0.157807
-0.157949
-0.158015
-0.158214
-0.158316
-0.158587
-0.158592
-0.158607
-0.159324
-0.160135
-0.160162
-0.160248
-0.160824
-0.160982
-0.161133
-0.161353
-0.161482
-0.161494
-0.161952
-0.162572
-0.162647
-0.162757
-0.162912
-0.163131
-0.163543
-0.163657
-0.163796
-0.163968
-0.164102
-0.164362
-0.164405
-0.164617
-0.164654
-0.164692
-0.164764
-0.165015
-0.165369
-0.165882
-0.165934
-0.165974
-0.166094
-0.166699
-0.166755
-0.166837
-0.166955
-0.166998
-0.167104
-0.167165
-0.167179
-0.167241
-0.167267
-0.167648
-0.168225
-0.168778
-0.168837
-0.168940
-0.169109
-0.169177
-0.169183
-0.169592
-0.169607
-0.169610
-0.169650
-0.169748
-0.169820
-0.170221
-0.170368
-0.170628
-0.170819
-0.170857
-0.170937
-0.171385
-0.172722
-0.173036
-0.173065
-0.173089
-0.173174
-0.173228
-0.173301
-0.173373
-0.173579
-0.173704
-0.174136
-0.174222
-0.174330
-0.174830
-0.174850
-0.175413
-0.175496
-0.175605
-0.176006
-0.176179
-0.176211
-0.176239
-0.176379
-0.176656
-0.176700
-0.177133
-0.178208
-0.178314
-0.178314
-0.178430
-0.178952
-0.178987
-0.179138
-0.179218
-0.180096
-0.180136
-0.180372
-0.180421
-0.180886
-0.181161
-0.182003
-0.182012
-0.182014
-0.182116
-0.182556
-0.183500
-0.183765
-0.183801
-0.184025
-0.184066
-0.184577
-0.184622
-0.184833
-0.185323
-0.185365
-0.185987
-0.186029
-0.186265
-0.186572
-0.186951
-0.186983
-0.187533
-0.187616
-0.187693
-0.188201
-0.188248
-0.188687
-0.188752
-0.189064
-0.189401
-0.189751
-0.190303
-0.190312
-0.190501
-0.190709
-0.190984
-0.191028
-0.191112
-0.191511
-0.191630
-0.191772
-0.192214
-0.192486
-0.192586
-0.192734
-0.193493
-0.193564
-0.193679
-0.194948
-0.195336
-0.195478
-0.195538
-0.195753
-0.195898
-0.196091
-0.196428
-0.196719
-0.197161
-0.197162
-0.197551
-0.198021
-0.198887
-0.198933
-0.198945
-0.199003
-0.199200
-0.199617
-0.199724
-0.199938
-0.200168
-0.200352
-0.200379
-0.200847
-0.200947
-0.201067
-0.201899
-0.202213
-0.202232
-0.202310
-0.202326
-0.202787
-0.202977
-0.203196
-0.203548
-0.203578
-0.204186
-0.204329
-0.204655
-0.205424
-0.205714
-0.205809
-0.205989
-0.205993
-0.206047
-0.206280
-0.206421
-0.207257
-0.207670
-0.207712
-0.207844
-0.208012
-0.208175
-0.208278
-0.209278
-0.209732
-0.210692
-0.210806
-0.210863
-0.210883
-0.210920
-0.211565
-0.211604
-0.211786
-0.212269
-0.212645
-0.213094
-0.213122
-0.213991
-0.214373
-0.214422
-0.214462
-0.214524
-0.214741
-0.214797
-0.215033
-0.215066
-0.215638
-0.215825
-0.216375
-0.216457
-0.216789
-0.216935
-0.217300
-0.217346
-0.217858
-0.218131
-0.218257
-0.219136
-0.219155
-0.219303
-0.219788
-0.219853
-0.220054
-0.220459
-0.220673
-0.220679
-0.221009
-0.221171
-0.221246
-0.221536
-0.221551
-0.221587
-0.221726
-0.221918
-0.221966
-0.222180
-0.222225
-0.222602
-0.222729
-0.222978
-0.223441
-0.223656
-0.224164
-0.224338
-0.224415
-0.224643
-0.225236
-0.225375
-0.225491
-0.226107
-0.226314
-0.226481
-0.226580
-0.226811
-0.226866
-0.227552
-0.227711
-0.227952
-0.228968
-0.229137
-0.229984
-0.230139
-0.230677
-0.230689
-0.230996
-0.231253
-0.231428
-0.231855
-0.232262
-0.232565
-0.232848
-0.232951
-0.233119
-0.233557
-0.233656
-0.233892
-0.233944
-0.234441
-0.234514
-0.234686
-0.234711
-0.235047
-0.235245
-0.235388
-0.235435
-0.235453
-0.236071
-0.236360
-0.236375
-0.236490
-0.236512
-0.236531
-0.237321
-0.237846
-0.238225
-0.238280
-0.238445
-0.238873
-0.239309
-0.239321
-0.239732
-0.240062
-0.240195
-0.240597
-0.240662
-0.240937
-0.241415
-0.242477
-0.242626
-0.242887
-0.243106
-0.243243
-0.243528
-0.243745
-0.243758
-0.243905
-0.244069
-0.244069
-0.244149
-0.244277
-0.244327
-0.244413
-0.244425
-0.244858
-0.245651
-0.246071
-0.246445
-0.246476
-0.246990
-0.247033
-0.247168
-0.247431
-0.247685
-0.247962
-0.248033
-0.248044
-0.248125
-0.248395
-0.248750
-0.248992
-0.249262
-0.249267
-0.250210
-0.251974
-0.252053
-0.252221
-0.252430
-0.252535
-0.252885
-0.253006
-0.253220
-0.253276
-0.253805
-0.253945
-0.254432
-0.254906
-0.255076
-0.255829
-0.256228
-0.256489
-0.256583
-0.256673
-0.256892
-0.256969
-0.257265
-0.257327
-0.257423
-0.257469
-0.257585
-0.257778
-0.257939
-0.258112
-0.258196
-0.258257
-0.258368
-0.258413
-0.258906
-0.259237
-0.259345
-0.260030
-0.260445
-0.260497
-0.260918
-0.260963
-0.261102
-0.261570
-0.261883
-0.261886
-0.262371
-0.262785
-0.263617
-0.263759
-0.264172
-0.264500
-0.264525
-0.264553
-0.264624
-0.264676
-0.264745
-0.264793
-0.265461
-0.265539
-0.265818
-0.266194
-0.266420
-0.266620
-0.266666
-0.266880
-0.267083
-0.267134
-0.267249
-0.267567
-0.267578
-0.267607
-0.267611
-0.268023
-0.268084
-0.268192
-0.268351
-0.268480
-0.268558
-0.268684
-0.269022
-0.269239
-0.270209
-0.270321
-0.270803
-0.271102
-0.271254
-0.271468
-0.272133
-0.272189
-0.272754
-0.272987
-0.273731
-0.273911
-0.274335
-0.274417
-0.274897
-0.275352
-0.275716
-0.275884
-0.275933
-0.276120
-0.276190
-0.276235
-0.276344
-0.277214
-0.277614
-0.277775
-0.277873
-0.277892
-0.278005
-0.278859
-0.279178
-0.280042
-0.280188
-0.280467
-0.280593
-0.280851
-0.281059
-0.281382
-0.281401
-0.281647
-0.281711
-0.282016
-0.282284
-0.282532
-0.282547
-0.282835
-0.283138
-0.283175
-0.283315
-0.283321
-0.283392
-0.283917
-0.284280
-0.284289
-0.284293
-0.284316
-0.284354
-0.284874
-0.285080
-0.285149
-0.285365
-0.285543
-0.285885
-0.285946
-0.286074
-0.286577
-0.286825
-0.287181
-0.287189
-0.287504
-0.287736
-0.287895
-0.287970
-0.288270
-0.288326
-0.288379
-0.288468
-0.288752
-0.288778
-0.288957
-0.289518
-0.290041
-0.290104
-0.290423
-0.290799
-0.290829
-0.291053
-0.291057
-0.291173
-0.291188
-0.291378
-0.291431
-0.291475
-0.292063
-0.292207
-0.292432
-0.292517
-0.292555
-0.292886
-0.292889
-0.293171
-0.293177
-0.293678
-0.293991
-0.294160
-0.294601
-0.294901
-0.295309
-0.296032
-0.296033
-0.296372
-0.296440
-0.296707
-0.296830
-0.296980
-0.297288
-0.297622
-0.297691
-0.297849
-0.297912
-0.297933
-0.297956
-0.298248
-0.298639
-0.298698
-0.299007
-0.299663
-0.299775
-0.300275
-0.301169
-0.301399
-0.301763
-0.302225
-0.302290
-0.302580
-0.302601
-0.304050
-0.304075
-0.304285
-0.304295
-0.304929
-0.304956
-0.305080
-0.305239
-0.305408
-0.305560
-0.305770
-0.305987
-0.306772
-0.306902
-0.307032
-0.307168
-0.307366
-0.307458
-0.307496
-0.307532
-0.307763
-0.307971
-0.308157
-0.308247
-0.308776
-0.309771
-0.309961
-0.309982
-0.310790
-0.310944
-0.311141
-0.311602
-0.311950
-0.312343
-0.312491
-0.312940
-0.312990
-0.313187
-0.313230
-0.313560
-0.313885
-0.314043
-0.314054
-0.314397
-0.315658
-0.315721
-0.316091
-0.316653
-0.316802
-0.316867
-0.316884
-0.316945
-0.317206
-0.317548
-0.317924
-0.318000
-0.318035
-0.318191
-0.319784
-0.320145
-0.320772
-0.320857
-0.320913
-0.321047
-0.321172
-0.321478
-0.321526
-0.321734
-0.321982
-0.322070
-0.322451
-0.322630
-0.322695
-0.322960
-0.323107
-0.323755
-0.323852
-0.323983
-0.324096
-0.324541
-0.324591
-0.324807
-0.325177
-0.325206
-0.325518
-0.325711
-0.325859
-0.326013
-0.326097
-0.326458
-0.326680
-0.326804
-0.326868
-0.327184
-0.327283
-0.327616
-0.327626
-0.327805
-0.328374
-0.328595
-0.328777
-0.329285
-0.329309
-0.329342
-0.329642
-0.329892
-0.330230
-0.330337
-0.330436
-0.330647
-0.331386
-0.331479
-0.331846
-0.331917
-0.332182
-0.332238
-0.332706
-0.332892
-0.333217
-0.333569
-0.333832
-0.333857
-0.333894
-0.334016
-0.334416
-0.334972
-0.335223
-0.335287
-0.335551
-0.335712
-0.336351
-0.336502
-0.337150
-0.337208
-0.338199
-0.338243
-0.338426
-0.338929
-0.339058
-0.339071
-0.339602
-0.339732
-0.339920
-0.340026
-0.340321
-0.340664
-0.341262
-0.341354
-0.341482
-0.341540
-0.341622
-0.342262
-0.342340
-0.342352
-0.342735
-0.342763
-0.342998
-0.343464
-0.343497
-0.343520
-0.343841
-0.343959
-0.344156
-0.344251
-0.344943
-0.345501
-0.345963
-0.347116
-0.347196
-0.347287
-0.347546
-0.347815
-0.347868
-0.348555
-0.348881
-0.348893
-0.349324
-0.349562
-0.349713
-0.349781
-0.350207
-0.350360
-0.350505
-0.350901
-0.351090
-0.351109
-0.351557
-0.351819
-0.351851
-0.352458
-0.352506
-0.352948
-0.354049
-0.354221
-0.354771
-0.355369
-0.355387
-0.355508
-0.355916
-0.356162
-0.356383
-0.357193
-0.358235
-0.358727
-0.358825
-0.358948
-0.359095
-0.359247
-0.359441
-0.359786
-0.359942
-0.359984
-0.360105
-0.360164
-0.360192
-0.360305
-0.360443
-0.360570
-0.360610
-0.360914
-0.361119
-0.361601
-0.361644
-0.361881
-0.361917
-0.362115
-0.362154
-0.363598
-0.363727
-0.364190
-0.364695
-0.364784
-0.364793
-0.366028
-0.366516
-0.366783
-0.366796
-0.367118
-0.367180
-0.367581
-0.368455
-0.368664
-0.369793
-0.369946
-0.370865
-0.373556
-0.374201
-0.374413
-0.374975
-0.375207
-0.375405
-0.375564
-0.376631
-0.377377
-0.377597
-0.377888
-0.377997
-0.378316
-0.378710
-0.378799
-0.378859
-0.378966
-0.379011
-0.379874
-0.380215
-0.380434
-0.380544
-0.380670
-0.380712
-0.381603
-0.381656
-0.381762
-0.381888
-0.382167
-0.382457
-0.382628
-0.382896
-0.382915
-0.383013
-0.383188
-0.383285
-0.383832
-0.384041
-0.384509
-0.384539
-0.384658
-0.385001
-0.385282
-0.385378
-0.385717
-0.385748
-0.386026
-0.386299
-0.386394
-0.386669
-0.387003
-0.387011
-0.387067
-0.387273
-0.387323
-0.387466
-0.387987
-0.387996
-0.388838
-0.389667
-0.389888
-0.390050
-0.390289
-0.390566
-0.390888
-0.391178
-0.391405
-0.391488
-0.391690
-0.391792
-0.392179
-0.392965
-0.393097
-0.393168
-0.393632
-0.393746
-0.393750
-0.393777
-0.393928
-0.393948
-0.394239
-0.394260
-0.394327
-0.394383
-0.394388
-0.394521
-0.394842
-0.395280
-0.395316
-0.395530
-0.395532
-0.395617
-0.395684
-0.395754
-0.395988
-0.395990
-0.396091
-0.396784
-0.396995
-0.397747
-0.397874
-0.398290
-0.398437
-0.398698
-0.398775
-0.399062
-0.399300
-0.399420
-0.399924
-0.400148
-0.400229
-0.400536
-0.400709
-0.400944
-0.400985
-0.401188
-0.401282
-0.401306
-0.401325
-0.401573
-0.401886
-0.402153
-0.402379
-0.402864
-0.403191
-0.403238
-0.403431
-0.403447
-0.403541
-0.404136
-0.404321
-0.404864
-0.404956
-0.405038
-0.405089
-0.405098
-0.405267
-0.405301
-0.405555
-0.405744
-0.405786
-0.405917
-0.406224
-0.406615
-0.406767
-0.407673
-0.407959
-0.408414
-0.408417
-0.408875
-0.408978
-0.409213
-0.409217
-0.409635
-0.409687
-0.410011
-0.410222
-0.410651
-0.410788
-0.410836
-0.411230
-0.411551
-0.412306
-0.412483
-0.413078
-0.413516
-0.413732
-0.413894
-0.413984
-0.414241
-0.414467
-0.415150
-0.415526
-0.415699
-0.416126
-0.416501
-0.416589
-0.416609
-0.416706
-0.416750
-0.417051
-0.417174
-0.417313
-0.417489
-0.417663
-0.417947
-0.418785
-0.418925
-0.419144
-0.419191
-0.419502
-0.419660
-0.420218
-0.420429
-0.420787
-0.421391
-0.421442
-0.421840
-0.421975
-0.423209
-0.423378
-0.423495
-0.423777
-0.423962
-0.423981
-0.424720
-0.424774
-0.424995
-0.425361
-0.425826
-0.425894
-0.426199
-0.426412
-0.426423
-0.426496
-0.426541
-0.426555
-0.426904
-0.427295
-0.427328
-0.427702
-0.427999
-0.428032
-0.428309
-0.428720
-0.429182
-0.429613
-0.429714
-0.429751
-0.430401
-0.430662
-0.431197
-0.431407
-0.431844
-0.431918
-0.431953
-0.432199
-0.432364
-0.432452
-0.432873
-0.433114
-0.433230
-0.433687
-0.433758
-0.434009
-0.434398
-0.434513
-0.434740
-0.435157
-0.435216
-0.436149
-0.436497
-0.436585
-0.437390
-0.437638
-0.437667
-0.437823
-0.437928
-0.437942
-0.438045
-0.438242
-0.438562
-0.438924
-0.438990
-0.439173
-0.439207
-0.439338
-0.439560
-0.440105
-0.440157
-0.440217
-0.440458
-0.440813
-0.442278
-0.442560
-0.442665
-0.442740
-0.442789
-0.442931
-0.443043
-0.443211
-0.443339
-0.443597
-0.443661
-0.444097
-0.444350
-0.444379
-0.445033
-0.445079
-0.445235
-0.445533
-0.445836
-0.446045
-0.446622
-0.446645
-0.446649
-0.446662
-0.446743
-0.446876
-0.447034
-0.447123
-0.447564
-0.447982
-0.448322
-0.448423
-0.448881
-0.449020
-0.449105
-0.449652
-0.449862
-0.450056
-0.450057
-0.450117
-0.450345
-0.450918
-0.451175
-0.451258
-0.451879
-0.452122
-0.452404
-0.452576
-0.452650
-0.452681
-0.452905
-0.453226
-0.453259
-0.453673
-0.454491
-0.454649
-0.454797
-0.455145
-0.455442
-0.455477
-0.455519
-0.455690
-0.455701
-0.456151
-0.456162
-0.456514
-0.456670
-0.456955
-0.457052
-0.457151
-0.457171
-0.457240
-0.457702
-0.457716
-0.458039
-0.458048
-0.458269
-0.458655
-0.459365
-0.459635
-0.459775
-0.459937
-0.460067
-0.460309
-0.460535
-0.460646
-0.460652
-0.460768
-0.461106
-0.461250
-0.461420
-0.461462
-0.461489
-0.461706
-0.461816
-0.461848
-0.461890
-0.461949
-0.462033
-0.462065
-0.462479
-0.462720
-0.462852
-0.463378
-0.463442
-0.463662
-0.464159
-0.464208
-0.464353
-0.464393
-0.464505
-0.465389
-0.465835
-0.466169
-0.466855
-0.467274
-0.467290
-0.467471
-0.467529
-0.467823
-0.468185
-0.468477
-0.468488
-0.468817
-0.469035
-0.469050
-0.469413
-0.469676
-0.470211
-0.470325
-0.470564
-0.470674
-0.471483
-0.471579
-0.471639
-0.472099
-0.472507
-0.472796
-0.473045
-0.473345
-0.473805
-0.473841
-0.473894
-0.474050
-0.474063
-0.474219
-0.474651
-0.474687
-0.475164
-0.475641
-0.475806
-0.475947
-0.476062
-0.476355
-0.476366
-0.476585
-0.476850
-0.477323
-0.477361
-0.477397
-0.477551
-0.477862
-0.477887
-0.477943
-0.477961
-0.477996
-0.478869
-0.479170
-0.479315
-0.479455
-0.479688
-0.479777
-0.480156
-0.480193
-0.480371
-0.480826
-0.480859
-0.480881
-0.481124
-0.481733
-0.481936
-0.482107
-0.482350
-0.482384
-0.482426
-0.482491
-0.482525
-0.482830
-0.482950
-0.483083
-0.483568
-0.483648
-0.483742
-0.484641
-0.484919
-0.485059
-0.485257
-0.485337
-0.485460
-0.485850
-0.485866
-0.486648
-0.486733
-0.486873
-0.487254
-0.487427
-0.487639
-0.487721
-0.487976
-0.488450
-0.488733
-0.488740
-0.489298
-0.489424
-0.489597
-0.489656
-0.489810
-0.490581
-0.490891
-0.491214
-0.491240
-0.491571
-0.492399
-0.492422
-0.493503
-0.493583
-0.493831
-0.494317
-0.494407
-0.495224
-0.495297
-0.495355
-0.495408
-0.495444
-0.495767
-0.495949
-0.495973
-0.495977
-0.496074
-0.496178
-0.496430
-0.496431
-0.496818
-0.497259
-0.497847
-0.497858
-0.498144
-0.498153
-0.498525
-0.499278
-0.499481
-0.499773
-0.499956
-0.500019
-0.500065
-0.500659
-0.500707
-0.500898
-0.501174
-0.501178
-0.501480
-0.501835
-0.501846
-0.502401
-0.503148
-0.503394
-0.503461
-0.504399
-0.504796
-0.504845
-0.504956
-0.505339
-0.506247
-0.506471
-0.506915
-0.507410
-0.507555
-0.507617
-0.507775
-0.508369
-0.508434
-0.508530
-0.508799
-0.508861
-0.509205
-0.510349
-0.510402
-0.510686
-0.511039
-0.511386
-0.511929
-0.512008
-0.512535
-0.512906
-0.512932
-0.512941
-0.513024
-0.513401
-0.513491
-0.514103
-0.514352
-0.514382
-0.514525
-0.514849
-0.514936
-0.515049
-0.515120
-0.515216
-0.515333
-0.515532
-0.515713
-0.515819
-0.515835
-0.515971
-0.516045
-0.516139
-0.516203
-0.517026
-0.517341
-0.517391
-0.517715
-0.517722
-0.517856
-0.518151
-0.518436
-0.518515
-0.518596
-0.519048
-0.519640
-0.519828
-0.519860
-0.520012
-0.520118
-0.520210
-0.520451
-0.520482
-0.521261
-0.521386
-0.521563
-0.521583
-0.521834
-0.522075
-0.522119
-0.522290
-0.522448
-0.522588
-0.522629
-0.522729
-0.523216
-0.523271
-0.523506
-0.523548
-0.523745
-0.524287
-0.524819
-0.524878
-0.524898
-0.525373
-0.525747
-0.525995
-0.526061
-0.526062
-0.526173
-0.526450
-0.526523
-0.526745
-0.526751
-0.526827
-0.526830
-0.526892
-0.527017
-0.527075
-0.527224
-0.528079
-0.528705
-0.528885
-0.528892
-0.529754
-0.529899
-0.529918
-0.529970
-0.530043
-0.530552
-0.530808
-0.530851
-0.530892
-0.530952
-0.531033
-0.531124
-0.531144
-0.531254
-0.531606
-0.532111
-0.532218
-0.532342
-0.532441
-0.532514
-0.532647
-0.532846
-0.532960
-0.533165
-0.533253
-0.533348
-0.533636
-0.533712
-0.534025
-0.534206
-0.534848
-0.535360
-0.536115
-0.536243
-0.536564
-0.536742
-0.537030
-0.537407
-0.537536
-0.537606
-0.537660
-0.538055
-0.538074
-0.538175
-0.538205
-0.538557
-0.538568
-0.539413
-0.539549
-0.539584
-0.539760
-0.540197
-0.540389
-0.541075
-0.541140
-0.541482
-0.541743
-0.542247
-0.542303
-0.543165
-0.544564
-0.544885
-0.545356
-0.545784
-0.546107
-0.546172
-0.546222
-0.546248
-0.546393
-0.547360
-0.547397
-0.547613
-0.547723
-0.548042
-0.548048
-0.548708
-0.548938
-0.549173
-0.549238
-0.549261
-0.549519
-0.550290
-0.550494
-0.550689
-0.551302
-0.551415
-0.551443
-0.551633
-0.551681
-0.551721
-0.552316
-0.552387
-0.552485
-0.552568
-0.552692
-0.552738
-0.552897
-0.552939
-0.553111
-0.553743
-0.553791
-0.553925
-0.553970
-0.554097
-0.554228
-0.554371
-0.554448
-0.554866
-0.554889
-0.555398
-0.555519
-0.556260
-0.556444
-0.556905
-0.556908
-0.557002
-0.557279
-0.557291
-0.557481
-0.557561
-0.557619
-0.558198
-0.558287
-0.558304
-0.558473
-0.558524
-0.558645
-0.559249
-0.559335
-0.559900
-0.560023
-0.560176
-0.560197
-0.560785
-0.560872
-0.561007
-0.561060
-0.561712
-0.561902
-0.561941
-0.562414
-0.562866
-0.563161
-0.563263
-0.563327
-0.563550
-0.563617
-0.563915
-0.564042
-0.564199
-0.564252
-0.564406
-0.564484
-0.564630
-0.565189
-0.565256
-0.565681
-0.565959
-0.566164
-0.566241
-0.566618
-0.566728
-0.566801
-0.566903
-0.567269
-0.567302
-0.567389
-0.567648
-0.567817
-0.567831
-0.567921
-0.568076
-0.568379
-0.568754
-0.569198
-0.569424
-0.569600
-0.570765
-0.571064
-0.571589
-0.571639
-0.571708
-0.571755
-0.572154
-0.572735
-0.572763
-0.573077
-0.573122
-0.573261
-0.573319
-0.573721
-0.574214
-0.574408
-0.574618
-0.574926
-0.575203
-0.575875
-0.576048
-0.576200
-0.576479
-0.576553
-0.576601
-0.576691
-0.576721
-0.576724
-0.576971
-0.577209
-0.577678
-0.577898
-0.578006
-0.578054
-0.578470
-0.578613
-0.578635
-0.578702
-0.578774
-0.578813
-0.578825
-0.578877
-0.579022
-0.579176
-0.579430
-0.579494
-0.579573
-0.579678
-0.579765
-0.579965
-0.580048
-0.580261
-0.580364
-0.580422
-0.580815
-0.580872
-0.581196
-0.581682
-0.581960
-0.582084
-0.582250
-0.582450
-0.582460
-0.582682
-0.583570
-0.584121
-0.584132
-0.584288
-0.584421
-0.584489
-0.584516
-0.584522
-0.584568
-0.584585
-0.584998
-0.585230
-0.585846
-0.586288
-0.586303
-0.586491
-0.586537
-0.587011
-0.587197
-0.587725
-0.587891
-0.588640
-0.588805
-0.588846
-0.589119
-0.589157
-0.589339
-0.589427
-0.589522
-0.589629
-0.589637
-0.590012
-0.590334
-0.590354
-0.590407
-0.590518
-0.590602
-0.590633
-0.590649
-0.590753
-0.591111
-0.591312
-0.591647
-0.592540
-0.592692
-0.592883
-0.593211
-0.593892
-0.594273
-0.594497
-0.594779
-0.594832
-0.594888
-0.595045
-0.595102
-0.595484
-0.595963
-0.596191
-0.596196
-0.596341
-0.596480
-0.596504
-0.596899
-0.596952
-0.596958
-0.597114
-0.597280
-0.598032
-0.598481
-0.598775
-0.599119
-0.599291
-0.599573
-0.599644
-0.599707
-0.600405
-0.600475
-0.600492
-0.600763
-0.601427
-0.601827
-0.602030
-0.602221
-0.602314
-0.603109
-0.603411
-0.603984
-0.604379
-0.604654
-0.605223
-0.605637
-0.605827
-0.605850
-0.606542
-0.606969
-0.607122
-0.607387
-0.607427
-0.607600
-0.608510
-0.608857
-0.608883
-0.609068
-0.609106
-0.609179
-0.609356
-0.609729
-0.609736
-0.610046
-0.611093
-0.611241
-0.611279
-0.611411
-0.611981
-0.612152
-0.612442
-0.612640
-0.613046
-0.613254
-0.613683
-0.613807
-0.614227
-0.614496
-0.614859
-0.614968
-0.615491
-0.615842
-0.615894
-0.615899
-0.615935
-0.616163
-0.616955
-0.617387
-0.617582
-0.618447
-0.618712
-0.618925
-0.618958
-0.619470
-0.619596
-0.619621
-0.619965
-0.620058
-0.620075
-0.621694
-0.621719
-0.621823
-0.621990
-0.622011
-0.622095
-0.622167
-0.622212
-0.622214
-0.622791
-0.622988
-0.623194
-0.623601
-0.623672
-0.623701
-0.624060
-0.624136
-0.624658
-0.625596
-0.625665
-0.625964
-0.626101
-0.626125
-0.626573
-0.627158
-0.627219
-0.627250
-0.627518
-0.627616
-0.627863
-0.627880
-0.628191
-0.628840
-0.628871
-0.628910
-0.629359
-0.629471
-0.629480
-0.630243
-0.630351
-0.630424
-0.630655
-0.630773
-0.632015
-0.633072
-0.633522
-0.633585
-0.633734
-0.633988
-0.634344
-0.634528
-0.635204
-0.635246
-0.635712
-0.636282
-0.636656
-0.636783
-0.636905
-0.636959
-0.637054
-0.637161
-0.637552
-0.637640
-0.637656
-0.637733
-0.637771
-0.637806
-0.637819
-0.637906
-0.638409
-0.638513
-0.638654
-0.638687
-0.638857
-0.639009
-0.639199
-0.639458
-0.639973
-0.639979
-0.640098
-0.640113
-0.640368
-0.640542
-0.640766
-0.640800
-0.641001
-0.641081
-0.641188
-0.642059
-0.642521
-0.642693
-0.643331
-0.643376
-0.643391
-0.643400
-0.644239
-0.644457
-0.644512
-0.644520
-0.644812
-0.645134
-0.645385
-0.645453
-0.645464
-0.645506
-0.645601
-0.645644
-0.645693
-0.645889
-0.646113
-0.646295
-0.646520
-0.646712
-0.646840
-0.647033
-0.647207
-0.647433
-0.647450
-0.647522
-0.647548
-0.647672
-0.648018
-0.648167
-0.648451
-0.648511
-0.648545
-0.649603
-0.649659
-0.649707
-0.649787
-0.650066
-0.650077
-0.650222
-0.650421
-0.650491
-0.650626
-0.650757
-0.650924
-0.651132
-0.651868
-0.652051
-0.652399
-0.652514
-0.652588
-0.652768
-0.652831
-0.653087
-0.653093
-0.653130
-0.653287
-0.653305
-0.653760
-0.653787
-0.653880
-0.654029
-0.654299
-0.655368
-0.655813
-0.655914
-0.656098
-0.656540
-0.656564
-0.656840
-0.656900
-0.657120
-0.657201
-0.657304
-0.657522
-0.657643
-0.658659
-0.658747
-0.658831
-0.659112
-0.659146
-0.659387
-0.659452
-0.659826
-0.659878
-0.659901
-0.660302
-0.660526
-0.660966
-0.661518
-0.661792
-0.661914
-0.662880
-0.663049
-0.663091
-0.663227
-0.663252
-0.663394
-0.663461
-0.664243
-0.664316
-0.664414
-0.664438
-0.664511
-0.665822
-0.665953
-0.666005
-0.666557
-0.666707
-0.666880
-0.667341
-0.667559
-0.667724
-0.667908
-0.667960
-0.668175
-0.668224
-0.668326
-0.668469
-0.669060
-0.669177
-0.669598
-0.669759
-0.669857
-0.669871
-0.669918
-0.670024
-0.670152
-0.670602
-0.670766
-0.670987
-0.671135
-0.671841
-0.672017
-0.672021
-0.672178
-0.672560
-0.672782
-0.673135
-0.673269
-0.673648
-0.673936
-0.673959
-0.673996
-0.674129
-0.674605
-0.674785
-0.674850
-0.674919
-0.674980
-0.675255
-0.675320
-0.675476
-0.675654
-0.675659
-0.675694
-0.675750
-0.675915
-0.676407
-0.676554
-0.676628
-0.676745
-0.677342
-0.677655
-0.677710
-0.677812
-0.678068
-0.678161
-0.678271
-0.678351
-0.678878
-0.679287
-0.679643
-0.679788
-0.679904
-0.680170
-0.680180
-0.680337
-0.680667
-0.681625
-0.681922
-0.683098
-0.683453
-0.683574
-0.683833
-0.684178
-0.684219
-0.684310
-0.684445
-0.684677
-0.684757
-0.684782
-0.684799
-0.684893
-0.685173
-0.685309
-0.685539
-0.685722
-0.685786
-0.685986
-0.686125
-0.686670
-0.686988
-0.687151
-0.687294
-0.687377
-0.687387
-0.687527
-0.687546
-0.687766
-0.687861
-0.688399
-0.688542
-0.688576
-0.689194
-0.689509
-0.689566
-0.690067
-0.690096
-0.690502
-0.690731
-0.690917
-0.691745
-0.692076
-0.692082
-0.692463
-0.692488
-0.692542
-0.693311
-0.693370
-0.693692
-0.694091
-0.694985
-0.695040
-0.695535
-0.695984
-0.696513
-0.696730
-0.697616
-0.697741
-0.697848
-0.698096
-0.698573
-0.698713
-0.699075
-0.699265
-0.699344
-0.699603
-0.699784
-0.699787
-0.700301
-0.700340
-0.700620
-0.700910
-0.702437
-0.702641
-0.702645
-0.702672
-0.703096
-0.703121
-0.703186
-0.703416
-0.703571
-0.703669
-0.703921
-0.704757
-0.705300
-0.705347
-0.705760
-0.706067
-0.706378
-0.706522
-0.706995
-0.707909
-0.708262
-0.708421
-0.708616
-0.708644
-0.710807
-0.711222
-0.711355
-0.711434
-0.711906
-0.712087
-0.712244
-0.712320
-0.712522
-0.713200
-0.714091
-0.714233
-0.714432
-0.714766
-0.715065
-0.715423
-0.716091
-0.716199
-0.716247
-0.716548
-0.717047
-0.717092
-0.717170
-0.717227
-0.717297
-0.717508
-0.717512
-0.717597
-0.717778
-0.717951
-0.718099
-0.718300
-0.718666
-0.718831
-0.718867
-0.719004
-0.719269
-0.719400
-0.719462
-0.720587
-0.720952
-0.721006
-0.721540
-0.721797
-0.721822
-0.722097
-0.722377
-0.723519
-0.723838
-0.723902
-0.723975
-0.724205
-0.724252
-0.724562
-0.724785
-0.725354
-0.725663
-0.725771
-0.726144
-0.726169
-0.726187
-0.726557
-0.726575
-0.726846
-0.726900
-0.727262
-0.727276
-0.727550
-0.727586
-0.727776
-0.728256
-0.728296
-0.728589
-0.728638
-0.728903
-0.729360
-0.729398
-0.729499
-0.729702
-0.729810
-0.730677
-0.730729
-0.730928
-0.731938
-0.731957
-0.732138
-0.732149
-0.732568
-0.732654
-0.732818
-0.733178
-0.733318
-0.733968
-0.734543
-0.734682
-0.734831
-0.735031
-0.735147
-0.735307
-0.735311
-0.735723
-0.735767
-0.736092
-0.736162
-0.736462
-0.736747
-0.736901
-0.737270
-0.737408
-0.737555
-0.737611
-0.737725
-0.737939
-0.738023
-0.738534
-0.738959
-0.739467
-0.739600
-0.739794
-0.740175
-0.740396
-0.740438
-0.740450
-0.741130
-0.741167
-0.741229
-0.742097
-0.742143
-0.742623
-0.742802
-0.742903
-0.743078
-0.743163
-0.743727
-0.743788
-0.743811
-0.744056
-0.744149
-0.744207
-0.744372
-0.744390
-0.744678
-0.744732
-0.744841
-0.745008
-0.745071
-0.745154
-0.745172
-0.745415
-0.746075
-0.746635
-0.746730
-0.747157
-0.747231
-0.747277
-0.747638
-0.747803
-0.747809
-0.747942
-0.748131
-0.748551
-0.748678
-0.748768
-0.748836
-0.748942
-0.749230
-0.749422
-0.749443
-0.749457
-0.749690
-0.749719
-0.749771
-0.750027
-0.750232
-0.750337
-0.750374
-0.750902
-0.751295
-0.751439
-0.751554
-0.751912
-0.752395
-0.752479
-0.752861
-0.752935
-0.752971
-0.753379
-0.753383
-0.755033
-0.755394
-0.755581
-0.755667
-0.755693
-0.755945
-0.756143
-0.756264
-0.756846
-0.757282
-0.757294
-0.757499
-0.757571
-0.757655
-0.758290
-0.758364
-0.758491
-0.758651
-0.758790
-0.758969
-0.759208
-0.759324
-0.759590
-0.759688
-0.759735
-0.759771
-0.760137
-0.760223
-0.760249
-0.760300
-0.760475
-0.760862
-0.761029
-0.761612
-0.761661
-0.761778
-0.762171
-0.762679
-0.762871
-0.762968
-0.763137
-0.763764
-0.763811
-0.764871
-0.764924
-0.764925
-0.765058
-0.765645
-0.765887
-0.765928
-0.766387
-0.766448
-0.766701
-0.766862
-0.767014
-0.767615
-0.768013
-0.768206
-0.768230
-0.768377
-0.768804
-0.769074
-0.769121
-0.769301
-0.769599
-0.769862
-0.769914
-0.770407
-0.770597
-0.770682
-0.770686
-0.770774
-0.771248
-0.771358
-0.771367
-0.771381
-0.771387
-0.771578
-0.771723
-0.772392
-0.772644
-0.772706
-0.773016
-0.773301
-0.773503
-0.773603
-0.774273
-0.774357
-0.774386
-0.774432
-0.774659
-0.775025
-0.775058
-0.775421
-0.775641
-0.775665
-0.775767
-0.775899
-0.776050
-0.776254
-0.776374
-0.776571
-0.776935
-0.777093
-0.777380
-0.777410
-0.777505
-0.777828
-0.778152
-0.778257
-0.778391
-0.778463
-0.778803
-0.779615
-0.780153
-0.780224
-0.780251
-0.780283
-0.780407
-0.780595
-0.780868
-0.780987
-0.781219
-0.782262
-0.782533
-0.782631
-0.782633
-0.783030
-0.783099
-0.783282
-0.783413
-0.783807
-0.784022
-0.784142
-0.784295
-0.784489
-0.784929
-0.785346
-0.785932
-0.786002
-0.786187
-0.786326
-0.786796
-0.787003
-0.787027
-0.787197
-0.787347
-0.787642
-0.787729
-0.787733
-0.787929
-0.788231
-0.788265
-0.788590
-0.789217
-0.789231
-0.789244
-0.789879
-0.790125
-0.790458
-0.790920
-0.790989
-0.791261
-0.791725
-0.791770
-0.792311
-0.792566
-0.792995
-0.793410
-0.793470
-0.793657
-0.793753
-0.793879
-0.794247
-0.794745
-0.794763
-0.794910
-0.795231
-0.795490
-0.795537
-0.796788
-0.797337
-0.797798
-0.798297
-0.798440
-0.798474
-0.798683
-0.798706
-0.799290
-0.799646
-0.799678
-0.799917
-0.800129
-0.800239
-0.800440
-0.800708
-0.800775
-0.801024
-0.801065
-0.801603
-0.801897
-0.802080
-0.802262
-0.802604
-0.802663
-0.803227
-0.803330
-0.803434
-0.803575
-0.803670
-0.804177
-0.804510
-0.804596
-0.804625
-0.804641
-0.804975
-0.805115
-0.805789
-0.805799
-0.806149
-0.806322
-0.806438
-0.806693
-0.806963
-0.807067
-0.807725
-0.807959
-0.808179
-0.808404
-0.808488
-0.808617
-0.808718
-0.809095
-0.809355
-0.809371
-0.809503
-0.809743
-0.809785
-0.810266
-0.810791
-0.811560
-0.811579
-0.811709
-0.812006
-0.812189
-0.812821
-0.812902
-0.812947
-0.812997
-0.813177
-0.813904
-0.814139
-0.814351
-0.814767
-0.814794
-0.814890
-0.814909
-0.814982
-0.815162
-0.815197
-0.815294
-0.815402
-0.815549
-0.815905
-0.815991
-0.816645
-0.816651
-0.816667
-0.817747
-0.818128
-0.818716
-0.818996
-0.819102
-0.819374
-0.819437
-0.819677
-0.819695
-0.819788
-0.820146
-0.820428
-0.820926
-0.821129
-0.821331
-0.821779
-0.821842
-0.822086
-0.822139
-0.822426
-0.822875
-0.822882
-0.823013
-0.823659
-0.824041
-0.824109
-0.824853
-0.825596
-0.825895
-0.826748
-0.826769
-0.827056
-0.827268
-0.827391
-0.827615
-0.827705
-0.828546
-0.828622
-0.828721
-0.828957
-0.828988
-0.829015
-0.829201
-0.829557
-0.829569
-0.829717
-0.829754
-0.829808
-0.829939
-0.830012
-0.830110
-0.830184
-0.830764
-0.831038
-0.831323
-0.831462
-0.832095
-0.832225
-0.832555
-0.832609
-0.833062
-0.833099
-0.833182
-0.833239
-0.833243
-0.834149
-0.834212
-0.834949
-0.835050
-0.835346
-0.835348
-0.835409
-0.835533
-0.836104
-0.836828
-0.837272
-0.837417
-0.837454
-0.837986
-0.838134
-0.839112
-0.839351
-0.839868
-0.840188
-0.840390
-0.840409
-0.840433
-0.840804
-0.840899
-0.841040
-0.841657
-0.842226
-0.842312
-0.842854
-0.843179
-0.843230
-0.843312
-0.843894
-0.843910
-0.844113
-0.844281
-0.844482
-0.844667
-0.845005
-0.845123
-0.845273
-0.845325
-0.845527
-0.845633
-0.846130
-0.846611
-0.846632
-0.846642
-0.846663
-0.847030
-0.847031
-0.847330
-0.847523
-0.847684
-0.847705
-0.847953
-0.848000
-0.848023
-0.848144
-0.848912
-0.848942
-0.849272
-0.849692
-0.849850
-0.849856
-0.850586
-0.850806
-0.850920
-0.851007
-0.851100
-0.851204
-0.851501
-0.851786
-0.852032
-0.852104
-0.852391
-0.852411
-0.852622
-0.852880
-0.853671
-0.853776
-0.853785
-0.853855
-0.853999
-0.854648
-0.854973
-0.855051
-0.855419
-0.855968
-0.856141
-0.856826
-0.857143
-0.857159
-0.857555
-0.857978
-0.858676
-0.858866
-0.858895
-0.859130
-0.859242
-0.859285
-0.859329
-0.859441
-0.859479
-0.859686
-0.859687
-0.860217
-0.860237
-0.860296
-0.860587
-0.860784
-0.860834
-0.861265
-0.861759
-0.861917
-0.862016
-0.862147
-0.862779
-0.862918
-0.863850
-0.863891
-0.864016
-0.864194
-0.864442
-0.864579
-0.864873
-0.865086
-0.865181
-0.865434
-0.865535
-0.865657
-0.865679
-0.865927
-0.866327
-0.866922
-0.866993
-0.867127
-0.867197
-0.867321
-0.867469
-0.867977
-0.868474
-0.868475
-0.868918
-0.868924
-0.869090
-0.869440
-0.870053
-0.870540
-0.871113
-0.871631
-0.871851
-0.872028
-0.872841
-0.872903
-0.873021
-0.873097
-0.873217
-0.873228
-0.873271
-0.873412
-0.873414
-0.873979
-0.874309
-0.875478
-0.875604
-0.875932
-0.876748
-0.877099
-0.877384
-0.877498
-0.877614
-0.878278
-0.878417
-0.878644
-0.879009
-0.879013
-0.879885
-0.880009
-0.880020
-0.880075
-0.880596
-0.880683
-0.880725
-0.880735
-0.881062
-0.881232
-0.881521
-0.881611
-0.882204
-0.882242
-0.882928
-0.883004
-0.883037
-0.883299
-0.883896
-0.884318
-0.884543
-0.885014
-0.885474
-0.886031
-0.886116
-0.886344
-0.886736
-0.886749
-0.887197
-0.887748
-0.887965
-0.888348
-0.888433
-0.888723
-0.888799
-0.888949
-0.889154
-0.889262
-0.889343
-0.889511
-0.889553
-0.889813
-0.889956
-0.890130
-0.890233
-0.890420
-0.890718
-0.891509
-0.891529
-0.891817
-0.892051
-0.892116
-0.892318
-0.892324
-0.892721
-0.892815
-0.893119
-0.893259
-0.893318
-0.893372
-0.893909
-0.894397
-0.894532
-0.894711
-0.895010
-0.895125
-0.895354
-0.895435
-0.895828
-0.896026
-0.896055
-0.896493
-0.896618
-0.896970
-0.896971
-0.897011
-0.897055
-0.897136
-0.897424
-0.897541
-0.897560
-0.897883
-0.897897
-0.898471
-0.898478
-0.898617
-0.898709
-0.898882
-0.899026
-0.899086
-0.899431
-0.899437
-0.899521
-0.899687
-0.900065
-0.900163
-0.900294
-0.900772
-0.900895
-0.900896
-0.901503
-0.901549
-0.902208
-0.902217
-0.903366
-0.903394
-0.903662
-0.904170
-0.904187
-0.904326
-0.904539
-0.904782
-0.904932
-0.904971
-0.905096
-0.905346
-0.905452
-0.906126
-0.906164
-0.906508
-0.906575
-0.906804
-0.906964
-0.907046
-0.907284
-0.907310
-0.907750
-0.908104
-0.908109
-0.908485
-0.909329
-0.909512
-0.909529
-0.909638
-0.909643
-0.909686
-0.909708
-0.910142
-0.910227
-0.910262
-0.910267
-0.910726
-0.910972
-0.911033
-0.911647
-0.912391
-0.912683
-0.913027
-0.913355
-0.914060
-0.914522
-0.914678
-0.915221
-0.916195
-0.916250
-0.916273
-0.916378
-0.916523
-0.916649
-0.916720
-0.916851
-0.917369
-0.917395
-0.917717
-0.917979
-0.918930
-0.918992
-0.919026
-0.919176
-0.919413
-0.919481
-0.919591
-0.919869
-0.920094
-0.920128
-0.920480
-0.920914
-0.921405
-0.921551
-0.921812
-0.921837
-0.922505
-0.922572
-0.922658
-0.923069
-0.923364
-0.923381
-0.923513
-0.923692
-0.923728
-0.923792
-0.923895
-0.923970
-0.924018
-0.924097
-0.924104
-0.924540
-0.925220
-0.925318
-0.925377
-0.925379
-0.925420
-0.925497
-0.925511
-0.925819
-0.925878
-0.926068
-0.926294
-0.926364
-0.926576
-0.926589
-0.926749
-0.927244
-0.927623
-0.927706
-0.927866
-0.928000
-0.928099
-0.928603
-0.928678
-0.930653
-0.930723
-0.930810
-0.930854
-0.930875
-0.931014
-0.931024
-0.931338
-0.931518
-0.931535
-0.931551
-0.931835
-0.931895
-0.932485
-0.932716
-0.933176
-0.933273
-0.933311
-0.933420
-0.934181
-0.934312
-0.934478
-0.934495
-0.935004
-0.935296
-0.935852
-0.936315
-0.936349
-0.936754
-0.936856
-0.937714
-0.937826
-0.937901
-0.938247
-0.938456
-0.938963
-0.939121
-0.939129
-0.939294
-0.939454
-0.939649
-0.939791
-0.939879
-0.939920
-0.940271
-0.940837
-0.940884
-0.941243
-0.941299
-0.941311
-0.941724
-0.942188
-0.942388
-0.942739
-0.943051
-0.943081
-0.943222
-0.943315
-0.943459
-0.943601
-0.943652
-0.943863
-0.944318
-0.944697
-0.945502
-0.945608
-0.945760
-0.946393
-0.946435
-0.946461
-0.946527
-0.946640
-0.946698
-0.946811
-0.946925
-0.947001
-0.947894
-0.948206
-0.948211
-0.948708
-0.948911
-0.949327
-0.949576
-0.949820
-0.950104
-0.950252
-0.950714
-0.950798
-0.950873
-0.950885
-0.950893
-0.950930
-0.950959
-0.951267
-0.951620
-0.951850
-0.952070
-0.952230
-0.952308
-0.952662
-0.953274
-0.953683
-0.954232
-0.954368
-0.955938
-0.956111
-0.956468
-0.956611
-0.957394
-0.957709
-0.958022
-0.958293
-0.958637
-0.958753
-0.958780
-0.958957
-0.959096
-0.959716
-0.960668
-0.960868
-0.961014
-0.961406
-0.961565
-0.961596
-0.961843
-0.961854
-0.962112
-0.962125
-0.962342
-0.962518
-0.962551
-0.962637
-0.962958
-0.963092
-0.963505
-0.963527
-0.964248
-0.965682
-0.965882
-0.966503
-0.966573
-0.966868
-0.967277
-0.967405
-0.967568
-0.967694
-0.967726
-0.967868
-0.968185
-0.968395
-0.968549
-0.968939
-0.969070
-0.969210
-0.969308
-0.969849
-0.970042
-0.970417
-0.970610
-0.970634
-0.970693
-0.971047
-0.971058
-0.971466
-0.971818
-0.972059
-0.972194
-0.972775
-0.973147
-0.974037
-0.974202
-0.974398
-0.974499
-0.974865
-0.974993
-0.975040
-0.975215
-0.975380
-0.975484
-0.975807
-0.975934
-0.976408
-0.976798
-0.976935
-0.977227
-0.978167
-0.978229
-0.979052
-0.979434
-0.979537
-0.979666
-0.979752
-0.980315
-0.980376
-0.981109
-0.981453
-0.981637
-0.981980
-0.983039
-0.983497
-0.983596
-0.984202
-0.984264
-0.984363
-0.984386
-0.984752
-0.984845
-0.984927
-0.984980
-0.985593
-0.985946
-0.986235
-0.986467
-0.986644
-0.986918
-0.987263
-0.987332
-0.987547
-0.987592
-0.988351
-0.988382
-0.988506
-0.988606
-0.988972
-0.989059
-0.989134
-0.989175
-0.989258
-0.989483
-0.989541
-0.990165
-0.991090
-0.991152
-0.991413
-0.991751
-0.991897
-0.992010
-0.992228
-0.992352
-0.992768
-0.993110
-0.993125
-0.993528
-0.993547
-0.993774
-0.994196
-0.994510
-0.994635
-0.995165
-0.995223
-0.995253
-0.995298
-0.995299
-0.995300
-0.995620
-0.995737
-0.995912
-0.996042
-0.996442
-0.997052
-0.997451
-0.997655
-0.997799
-0.997875
-0.997970
-0.998142
-0.998525
-0.998925
-0.999241
-0.999412
-0.999500
-0.999630
-0.999652
-0.999660
-0.999994
-512
-0.001125
-0.003231
-0.003579
-0.004162
-0.005409
-0.005709
-0.006005
-0.014579
-0.016301
-0.020023
-0.032893
-0.035421
-0.036327
-0.039280
-0.040864
-0.049162
-0.051508
-0.051939
-0.052529
-0.053422
-0.054058
-0.063096
-0.063561
-0.064171
-0.069755
-0.069906
-0.070090
-0.072329
-0.072545
-0.074161
-0.074530
-0.076995
-0.078232
-0.086056
-0.087644
-0.091149
-0.093480
-0.093740
-0.093920
-0.098837
-0.099559
-0.099640
-0.103171
-0.107848
-0.108809
-0.109733
-0.111276
-0.113281
-0.114668
-0.119111
-0.121143
-0.121259
-0.125468
-0.125475
-0.126075
-0.129790
-0.131702
-0.134902
-0.136075
-0.137232
-0.138238
-0.139058
-0.141603
-0.147660
-0.151230
-0.152390
-0.152876
-0.154724
-0.156679
-0.157139
-0.157272
-0.157807
-0.162757
-0.163131
-0.163968
-0.164102
-0.165974
-0.169607
-0.169650
-0.169820
-0.176211
-0.178208
-0.180372
-0.180421
-0.181161
-0.182556
-0.184622
-0.186265
-0.187533
-0.187616
-0.188201
-0.189751
-0.191112
-0.192214
-0.197551
-0.198021
-0.200352
-0.202213
-0.203548
-0.204329
-0.204655
-0.207844
-0.210883
-0.215825
-0.218257
-0.221009
-0.221966
-0.223656
-0.225491
-0.226107
-0.228968
-0.229137
-0.230996
-0.231428
-0.232262
-0.233119
-0.233656
-0.233892
-0.238280
-0.240062
-0.242887
-0.244327
-0.244413
-0.248044
-0.257265
-0.257469
-0.258906
-0.260445
-0.260497
-0.261570
-0.265461
-0.266666
-0.273911
-0.276235
-0.277775
-0.280042
-0.281059
-0.283315
-0.284293
-0.288270
-0.288379
-0.288778
-0.290829
-0.291053
-0.292517
-0.293678
-0.294160
-0.296032
-0.297288
-0.301763
-0.304285
-0.304295
-0.304956
-0.305239
-0.305408
-0.307458
-0.308157
-0.311950
-0.313230
-0.315658
-0.316867
-0.324807
-0.326013
-0.328374
-0.328777
-0.329642
-0.330337
-0.331386
-0.331479
-0.334972
-0.335223
-0.336351
-0.338243
-0.341354
-0.344251
-0.344943
-0.347116
-0.348893
-0.350360
-0.352458
-0.354049
-0.357193
-0.359095
-0.360443
-0.361601
-0.361917
-0.362154
-0.363598
-0.364784
-0.368664
-0.375207
-0.380215
-0.382167
-0.382896
-0.383188
-0.383832
-0.385748
-0.391690
-0.394327
-0.394383
-0.394388
-0.394521
-0.398437
-0.400229
-0.400709
-0.400944
-0.401188
-0.410788
-0.413984
-0.416501
-0.426199
-0.427328
-0.431953
-0.434009
-0.434513
-0.436497
-0.437638
-0.439560
-0.440105
-0.442560
-0.447034
-0.449105
-0.450918
-0.452576
-0.457702
-0.457716
-0.461420
-0.463662
-0.471483
-0.473894
-0.476585
-0.477397
-0.481733
-0.481936
-0.482491
-0.482950
-0.487427
-0.492399
-0.492422
-0.493583
-0.495444
-0.495977
-0.496074
-0.497259
-0.498144
-0.498525
-0.503461
-0.510686
-0.512535
-0.512932
-0.513401
-0.517715
-0.518515
-0.520210
-0.521563
-0.524287
-0.525747
-0.525995
-0.526745
-0.529899
-0.530808
-0.531606
-0.532441
-0.532846
-0.532960
-0.539760
-0.546107
-0.547397
-0.548042
-0.552316
-0.552485
-0.553970
-0.555398
-0.556444
-0.557561
-0.567831
-0.573319
-0.576200
-0.576691
-0.576971
-0.578635
-0.579430
-0.583570
-0.584489
-0.588640
-0.589637
-0.592540
-0.593211
-0.593892
-0.595045
-0.596196
-0.598481
-0.603109
-0.606969
-0.608883
-0.609106
-0.609729
-0.612442
-0.612640
-0.618447
-0.618925
-0.618958
-0.619596
-0.621823
-0.622095
-0.625665
-0.625964
-0.627158
-0.628871
-0.628910
-0.629480
-0.633072
-0.635712
-0.637552
-0.637640
-0.638654
-0.639458
-0.639979
-0.641081
-0.642693
-0.645889
-0.647207
-0.649659
-0.649707
-0.651132
-0.653130
-0.653305
-0.655368
-0.656564
-0.657120
-0.657304
-0.658747
-0.658831
-0.659146
-0.663227
-0.666557
-0.666880
-0.667341
-0.667724
-0.673936
-0.674605
-0.675476
-0.675654
-0.677812
-0.684178
-0.684219
-0.684445
-0.684757
-0.685722
-0.685786
-0.685986
-0.686125
-0.686670
-0.687387
-0.687861
-0.692076
-0.695984
-0.697848
-0.699075
-0.700301
-0.700620
-0.706067
-0.707909
-0.712087
-0.717297
-0.718867
-0.719269
-0.719462
-0.720952
-0.721006
-0.724252
-0.727550
-0.729360
-0.730729
-0.732149
-0.732654
-0.737408
-0.738534
-0.738959
-0.740438
-0.743811
-0.745071
-0.747803
-0.747809
-0.749771
-0.755581
-0.757294
-0.759735
-0.760249
-0.760475
-0.761778
-0.764871
-0.768230
-0.769914
-0.771358
-0.774273
-0.774386
-0.775767
-0.778257
-0.780868
-0.782262
-0.783099
-0.783282
-0.786002
-0.793470
-0.793657
-0.797798
-0.798440
-0.801897
-0.804177
-0.807725
-0.809095
-0.809785
-0.814767
-0.814909
-0.818128
-0.819677
-0.819695
-0.826769
-0.827391
-0.828957
-0.829201
-0.829808
-0.829939
-0.830012
-0.831038
-0.833239
-0.833243
-0.836104
-0.836828
-0.838134
-0.839112
-0.840188
-0.843910
-0.847684
-0.848942
-0.850920
-0.857555
-0.858676
-0.861917
-0.864579
-0.865181
-0.865535
-0.868924
-0.870540
-0.873271
-0.873979
-0.877384
-0.877614
-0.878278
-0.879009
-0.880075
-0.881062
-0.883037
-0.885014
-0.888723
-0.888949
-0.889956
-0.890233
-0.891529
-0.893372
-0.897560
-0.902208
-0.903366
-0.904170
-0.904932
-0.906804
-0.908485
-0.909643
-0.910972
-0.911647
-0.913027
-0.916195
-0.916273
-0.918930
-0.919026
-0.919591
-0.920128
-0.920914
-0.923069
-0.923728
-0.923970
-0.925377
-0.926576
-0.930810
-0.931835
-0.931895
-0.932485
-0.934495
-0.935004
-0.943051
-0.944318
-0.949327
-0.950104
-0.950252
-0.952230
-0.956468
-0.958637
-0.967405
-0.970634
-0.971466
-0.972775
-0.979434
-0.983596
-0.984363
-0.984752
-0.984845
-0.986467
-0.992228
-0.997799
-0.998925
-0.999994
+/* Quicksort algorithm */
-//
-// quicksort algorithm
-//
-// Michel Vallieres, 2009
-//
-// ref: http://cprogramminglanguage.net/quicksort-algorithm-c-source-code.aspx
-// Numerical Recipes
-//
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-void init( double * list, int list_size )
-{
- int i;
-
- for( i=0; i<list_size ; i++ )
- {
- list[i] = (double)rand()/(double)RAND_MAX;
- }
-}
-
+/* Michel Vallieres, 2009
+ *
+ * ref: http://cprogramminglanguage.net/quicksort-algorithm-c-source-code.aspx
+ * Numerical Recipes
+ */
void swap(double *x, double *y)
{
- double temp;
- temp = *x;
- *x = *y;
- *y = temp;
+ double temp;
+ temp = *x;
+ *x = *y;
+ *y = temp;
}
-
int choose_pivot(int i,int j )
{
- return((i+j) /2);
+ return((i+j) /2);
}
-
void quicksort( double list[], int m, int n )
{
- int i,j,k;
- double key;
+ int i,j,k;
+ double key;
- if( m < n)
- {
+ if( m < n)
+ {
k = choose_pivot(m,n);
swap(&list[m],&list[k]);
key = list[m];
j = n;
while(i <= j)
- {
- while((i <= n) && (list[i] <= key))
- i++;
- while((j >= m) && (list[j] > key))
- j--;
- if( i < j)
- swap(&list[i],&list[j]);
- }
- // swap two elements
+ {
+ while((i <= n) && (list[i] <= key))
+ i++;
+ while((j >= m) && (list[j] > key))
+ j--;
+ if( i < j)
+ swap(&list[i],&list[j]);
+ }
+ // swap two elements
swap(&list[m],&list[j]);
- // recursively sort the lesser list
+ // recursively sort the lesser list
quicksort(list,m,j-1);
quicksort(list,j+1,n);
- }
-}
-
-
-void printlist(double list[],int n, int list_size)
-{
- int i;
- for(i=0;i<n;i++)
- printf("%f\t",list[i]);
- printf("\n");
- for(i=n;i>0;i--)
- printf("%f\t",list[list_size-i]);
- printf("\n");
-}
-
-
-double checklist(double list[], int list_size )
-{
- int i;
- double sum;
-
- sum = 0.0;
- for(i = 0; i < list_size; i++ )
- sum = sum + list[i];
- return sum;
+ }
}
-
-int main()
+void sort(int list_size, double *list)
{
- const int MAX_ELEMENTS = 1000000;
- double list[MAX_ELEMENTS];
- int i, list_size;
-
- // size of lit
- list_size = 1000;
-
- i = 0;
-
- // generate a list of random numbers
- init( list, list_size );
-
- // print initial list
- printf("The list before sorting is:\n");
- printlist(list,3,list_size);
- printf( "Check: sum of %d elements = %f\n",
- list_size, checklist( list, list_size ) );
-
- // sort the list using quicksort
- quicksort(list,0,list_size-1);
-
- // print the result
- printf("The list after sorting using quicksort algorithm:\n");
- printlist(list,3,list_size);
- printf( "Check: sum of %d elements = %f\n",
- list_size, checklist( list, list_size ) );
-
+ quicksort(list, 0, list_size-1);
}