SG++-Doxygen-Documentation
positive_density.py

This example can be found under datadriven/examples/positive_density.py.

1 '''
2 Created on Sep 4, 2017
3 
4 @author: franzefn
5 '''
6 from argparse import ArgumentParser
7 
8 import matplotlib.pylab as plt
9 import numpy as np
10 
11 import cvxopt
12 import quadprog
13 from cvxopt.base import matrix
14 from pysgpp import (GridType_Bspline, GridType_BsplineBoundary,
15  GridType_BsplineClenshawCurtis, GridType_Linear,
16  GridType_LinearBoundary, GridType_LinearClenshawCurtis,
17  GridType_LinearClenshawCurtisBoundary,
18  GridType_LinearL0Boundary, GridType_ModBspline,
19  GridType_ModBsplineClenshawCurtis,
20  GridType_ModLinearClenshawCurtis,
21  GridType_ModPolyClenshawCurtis, GridType_Poly,
22  GridType_PolyBoundary, GridType_PolyClenshawCurtis,
23  GridType_PolyClenshawCurtisBoundary)
24 from pysgpp.extensions.datadriven.uq.dists import J, Normal
25 from pysgpp.extensions.datadriven.uq.dists.SGDEdist import SGDEdist
26 from pysgpp.extensions.datadriven.uq.operations.sparse_grid import (createGrid,
27  dehierarchize)
28 from pysgpp.extensions.datadriven.uq.plot.colors import insert_legend
29 from pysgpp.extensions.datadriven.uq.plot.plot1d import plotDensity1d, plotSG1d
30 from pysgpp.extensions.datadriven.uq.plot.plot2d import plotDensity2d, plotSG2d
31 from pysgpp.pysgpp_swig import (DataMatrix, DataVector, DensitySystemMatrix,
32  Grid,
33  MakePositiveCandidateSearchAlgorithm_Intersections,
34  MakePositiveInterpolationAlgorithm_InterpolateBoundaries1d,
35  RegularGridConfiguration,
36  createOperationLaplace,
37  createOperationLaplaceExplicit,
38  createOperationLTwoDotProduct,
39  createOperationMakePositive,
40  createOperationMultipleEval,
41  createOperationMultipleEvalNaive)
42 
43 multipleEvalNaiveGridTypes = [GridType_Bspline,
44  GridType_BsplineClenshawCurtis,
45  GridType_BsplineBoundary,
46  GridType_ModBsplineClenshawCurtis,
47  GridType_ModBspline,
48  GridType_LinearClenshawCurtis,
49  GridType_LinearClenshawCurtisBoundary,
50  GridType_ModLinearClenshawCurtis,
51  GridType_PolyClenshawCurtis,
52  GridType_PolyClenshawCurtisBoundary,
53  GridType_ModPolyClenshawCurtis]
54 
55 
56 def getSamples():
57  return [[2.82323528526134293060e-01, 4.44821979348490936790e-01], \
58  [6.59563641710053216727e-01, 5.18168023604723249065e-01], \
59  [4.66204974971183350174e-01, 4.95399047706179262995e-01], \
60  [6.03526748539960355977e-01, 2.43268593292003454387e-01], \
61  [5.62533284596697602531e-01, 4.13446014803317773989e-01], \
62  [4.63253051381150471322e-01, 5.27242448822871967451e-01], \
63  [4.63228561454141485321e-01, 4.79068206886379688303e-01], \
64  [6.15016438560158529292e-01, 7.65841887254424591447e-01], \
65  [3.27390132759550089858e-01, 6.03578470511489939554e-01], \
66  [5.35401593038080436671e-01, 5.09572598797057851883e-01], \
67  [5.79763581036643715905e-01, 4.88509624749233817287e-01], \
68  [4.65176953338734489041e-01, 4.03396701047219141678e-01], \
69  [5.52854915372480326674e-01, 4.43624000760940717658e-01], \
70  [5.60710066030899234590e-01, 5.66610999883632948659e-01], \
71  [4.74441318074539153393e-01, 4.48279077549398552449e-01], \
72  [5.79704674489956550687e-01, 4.00429209403681540813e-01], \
73  [3.27418832211618604511e-01, 2.64694071058703350730e-01], \
74  [4.68272041096344959765e-01, 5.00686521541746643038e-01], \
75  [4.49396918966004310647e-01, 4.00441220113194606967e-01], \
76  [6.03754938081578762521e-01, 4.55931072222370947777e-01], \
77  [5.54996201469469818690e-01, 5.93871279984109601280e-01], \
78  [3.99711447601519165307e-01, 5.87033198350718321556e-01], \
79  [3.55432928275846271582e-01, 4.71746827190755335657e-01], \
80  [4.03990862343044987437e-01, 4.97874665282332817817e-01], \
81  [6.22513676177041563875e-01, 5.55383787785616034327e-01], \
82  [6.06734863458273654402e-01, 4.48026905189891244685e-01], \
83  [3.44689894316432154930e-01, 5.51499335564391124365e-01], \
84  [6.76901723651494480194e-01, 6.09192043743277511503e-01], \
85  [5.29252594074292481707e-01, 4.53921891869377369666e-01], \
86  [6.21287272061460837946e-01, 4.67386131667262283429e-01], \
87  [4.73474737535302225844e-01, 3.31366215716122680668e-01], \
88  [4.22058515319797489251e-01, 5.85655288984127553320e-01], \
89  [6.09157879244109023986e-01, 5.01029785281102313377e-01], \
90  [4.08589882279565885792e-01, 5.76247323139115308344e-01], \
91  [5.27615405966234463087e-01, 4.88837230398926847474e-01], \
92  [5.05141336533592610891e-01, 5.29409262848938855228e-01], \
93  [5.83778799053734198665e-01, 5.69872955233921119067e-01], \
94  [3.80508858545986206057e-01, 5.33938511026411433136e-01], \
95  [4.26989163363941104379e-01, 4.99783224537833747902e-01], \
96  [2.77657079118135974305e-01, 4.48032704403153514416e-01], \
97  [5.64447645543315279504e-01, 6.13323413563593433651e-01], \
98  [5.41492740515424397785e-01, 6.40342091101794630426e-01], \
99  [4.82003121732528960752e-01, 5.99363609581597511777e-01], \
100  [6.54269883937702245724e-01, 6.36467895969205832429e-01], \
101  [4.13590985767662233652e-01, 3.94731815928818730033e-01], \
102  [5.31066662541306078182e-01, 5.59649085735584139734e-01], \
103  [4.89172644290206848350e-01, 3.17628608093783459942e-01], \
104  [6.00813427026992252777e-01, 6.91555157222830896302e-01], \
105  [5.20366674074399515604e-01, 5.25855130987863517156e-01], \
106  [5.15689487911333621639e-01, 4.18563819379177304292e-01], \
107  [5.93054938632196937398e-01, 3.58492937309348502772e-01], \
108  [6.05703007289590589224e-01, 3.83423415212446272449e-01], \
109  [4.22073773434940346938e-01, 6.92815098137713025750e-01], \
110  [4.93668205111681746011e-01, 4.52106280723475362215e-01], \
111  [5.57959981775731583831e-01, 4.53986342751327820455e-01], \
112  [6.38690202622400393651e-01, 4.87626280731206285246e-01], \
113  [5.63926911955586529501e-01, 5.50628075675901773600e-01], \
114  [4.28419599266742279209e-01, 2.32220711641033195072e-01], \
115  [6.37011600755025386711e-01, 6.24416097625345223321e-01], \
116  [6.40698172583570979555e-01, 5.28949168799838220778e-01], \
117  [4.01058572553777969993e-01, 4.37153522488303469817e-01], \
118  [3.73896274277693285715e-01, 6.90767775324495514333e-01], \
119  [6.38058190548314252410e-01, 4.66687865441837324010e-01], \
120  [4.33023911535159733432e-01, 3.26636094281103184223e-01], \
121  [4.62289005103504346827e-01, 6.07633578587638556456e-01], \
122  [4.77886506906070041012e-01, 4.05849058561468079009e-01], \
123  [6.02295588810253246237e-01, 4.28194167430882177694e-01], \
124  [6.89709581384214232003e-01, 3.85921610515795376894e-01], \
125  [5.33266128300712294319e-01, 3.95018231831404831311e-01], \
126  [4.97476952515490677964e-01, 5.32720205768360433041e-01], \
127  [5.06149062612369693426e-01, 4.42412846325333952713e-01], \
128  [5.54130095992678817218e-01, 5.97398353157845174444e-01], \
129  [5.37221220469097593408e-01, 4.39531195018293852073e-01], \
130  [5.37806062213799673799e-01, 4.80398865977266775751e-01], \
131  [6.63708601639204420763e-01, 4.61699106866552466677e-01], \
132  [5.81883517852758824773e-01, 5.11205932552821873394e-01], \
133  [5.99611268489227300371e-01, 6.03548755490235899757e-01], \
134  [6.01750864907763638456e-01, 3.96395693885778666044e-01], \
135  [5.02338110870414356057e-01, 4.45566382355120860215e-01], \
136  [6.16089539610101155631e-01, 4.39002190195454500277e-01], \
137  [5.18329759739195705670e-01, 3.02503597582994332438e-01], \
138  [6.95709753576134848352e-01, 3.92430421318656519336e-01], \
139  [6.38230477821175590236e-01, 5.80589438908979960097e-01], \
140  [4.75970947731648441614e-01, 5.71461565104856683561e-01], \
141  [4.95443335163394449339e-01, 5.63078029391573475770e-01], \
142  [6.91745911035581806381e-01, 4.98786989511684097920e-01], \
143  [5.14125769230070583937e-01, 4.82871890303890938245e-01], \
144  [5.78016208854188029420e-01, 5.60769660778909218024e-01], \
145  [6.10301708480958993164e-01, 5.45145744677789423349e-01], \
146  [5.82137698464616826222e-01, 5.58503940193971093464e-01], \
147  [5.68058862628295746511e-01, 4.80240352723810048907e-01], \
148  [4.71527404574930919523e-01, 7.31342887685912046436e-01], \
149  [6.22772896559283695161e-01, 6.15645963635931270375e-01], \
150  [5.21292548068389649529e-01, 3.58782562009150152171e-01], \
151  [4.73149250437063351171e-01, 6.06326723658032085140e-01], \
152  [6.34180649160485665483e-01, 4.95869459348795282860e-01], \
153  [6.15766903775958218681e-01, 5.72648267311623770937e-01], \
154  [4.71433906780624412125e-01, 5.86185227339111269984e-01], \
155  [5.07811477158390700559e-01, 4.99500481520775807542e-01], \
156  [5.42849052556897415656e-01, 3.99798187192303255966e-01], \
157  [6.92168241070195700004e-01, 4.83591804674389391661e-01], \
158  [4.71783782194571899016e-01, 4.89029261166165740704e-01], \
159  [5.74441513033019823808e-01, 5.48225572377734504670e-01], \
160  [5.06710461951665691593e-01, 5.52121262781411936693e-01], \
161  [4.89985868466716323333e-01, 5.26362454168844862146e-01], \
162  [4.76858839864762018568e-01, 5.06916724203052004860e-01], \
163  [3.56536411381774165363e-01, 3.91219885371895614856e-01], \
164  [5.13934056226800328737e-01, 5.23903766031397322145e-01], \
165  [5.64146056220679814608e-01, 4.82009611935206860878e-01], \
166  [5.63827164341078934662e-01, 4.73148843799598095572e-01], \
167  [5.53512771303100059583e-01, 4.57202254696707888204e-01], \
168  [5.74514498307719501113e-01, 3.01318888253176431213e-01], \
169  [5.04009129109944442604e-01, 5.43756105495633690339e-01], \
170  [4.66183042865357000206e-01, 4.53545234212080539127e-01], \
171  [5.20430715530373122490e-01, 5.01693420804508294353e-01], \
172  [3.88836958384834285862e-01, 4.67744980700718515632e-01], \
173  [4.38752515609421744891e-01, 3.83947377373001941248e-01], \
174  [3.63890424394998857061e-01, 4.46353368010112938613e-01], \
175  [3.82132735531495959513e-01, 7.02813478934167901180e-01], \
176  [4.52911983635449821861e-01, 4.27068771320536721969e-01], \
177  [5.62191262852993589583e-01, 3.18264356484957822158e-01], \
178  [3.52358233197298198469e-01, 4.23583917344959037798e-01], \
179  [5.15597485152648471463e-01, 4.95243499945933141060e-01], \
180  [5.16530293954029828818e-01, 3.91083185867766081056e-01], \
181  [6.38221366394860711857e-01, 4.48729117608363980985e-01], \
182  [5.73935620428330017795e-01, 5.36395415525092622566e-01], \
183  [2.34401568021975148515e-01, 5.33322391008283380742e-01], \
184  [4.22010857326075350393e-01, 5.79421745817609634699e-01], \
185  [4.31236342467519628840e-01, 5.93266156324380622422e-01], \
186  [4.56698039073483663675e-01, 4.20854798245542838231e-01], \
187  [5.51915396637212007924e-01, 5.81926783364762223449e-01], \
188  [6.23008990816110608257e-01, 5.68016305531502840864e-01], \
189  [4.86590975884576115718e-01, 7.16394961865632340370e-01], \
190  [5.59779157275577810005e-01, 5.59479951379460604954e-01], \
191  [4.98229109776320622238e-01, 5.56349366038764725495e-01], \
192  [5.67495098496492822449e-01, 4.91711608705192038116e-01], \
193  [5.59538485367874649512e-01, 6.30342068509558206557e-01], \
194  [6.01799733176666906687e-01, 4.94794965344383996797e-01], \
195  [4.17451168993407395469e-01, 5.48038941315700078860e-01], \
196  [5.06789068477994320006e-01, 4.99232977299898239565e-01], \
197  [5.27580635066292824575e-01, 4.78432494426922871877e-01], \
198  [4.06591460914112301506e-01, 3.70734530153121910612e-01], \
199  [5.44557383574737707832e-01, 4.77048176618953378991e-01], \
200  [6.65742591222906021642e-01, 4.58781340001268078677e-01], \
201  [5.27759502691557358389e-01, 6.13973633056682288611e-01], \
202  [4.20017654572513221556e-01, 4.79942188031884264809e-01], \
203  [3.74662108261738513448e-01, 4.18907055291505903138e-01], \
204  [4.22245263081797439497e-01, 4.32969937174081886955e-01], \
205  [6.69075692425577184252e-01, 5.58627661603355196718e-01], \
206  [6.73678291056714173557e-01, 6.10512326341617894698e-01], \
207  [4.96451534243161962667e-01, 3.84288927280498404659e-01], \
208  [5.78877039600533827013e-01, 5.12938877871353282600e-01], \
209  [5.10289904882543332576e-01, 5.47864444800510219657e-01], \
210  [4.62832366316394017147e-01, 6.14131254309285723458e-01], \
211  [3.54034871053762856263e-01, 4.55366068283777680747e-01], \
212  [4.48639445719949347957e-01, 4.55465732770615916447e-01], \
213  [3.55222624574980772039e-01, 4.19831990945003008520e-01], \
214  [4.97921275249971984067e-01, 5.25698691452226141152e-01], \
215  [4.63508460330944727090e-01, 5.22830137591500765382e-01], \
216  [5.43192763680991341779e-01, 5.95456854504520127769e-01], \
217  [6.26366657853331565420e-01, 5.37269223586259836445e-01], \
218  [4.42359617127272841675e-01, 6.57713096773060224010e-01], \
219  [5.08472008616995818642e-01, 5.03624706525210408259e-01], \
220  [3.49474728777999843476e-01, 2.96348187559314912853e-01], \
221  [3.34017187884417920962e-01, 4.04182881384369752098e-01], \
222  [7.56061193969690625849e-01, 4.50740731513627146398e-01], \
223  [2.44890055252364846616e-01, 3.42269504379038802533e-01], \
224  [4.06063553623982553820e-01, 5.69603806342837470922e-01], \
225  [5.76641745210400014088e-01, 4.18001547823896313361e-01], \
226  [5.42702663759809023070e-01, 5.29813508320097881210e-01], \
227  [5.71312222705502636977e-01, 7.06047436650011794868e-01], \
228  [5.10410118694303638343e-01, 5.05234533810221542183e-01], \
229  [6.09053574841533107431e-01, 5.72101754893720837458e-01], \
230  [5.40258832899807694972e-01, 4.12999735871979523072e-01], \
231  [5.02070907188769677276e-01, 5.02536790513801068236e-01], \
232  [5.26487943563228144583e-01, 3.72229136054290310476e-01], \
233  [5.85645835684025728440e-01, 4.99613126441276256262e-01], \
234  [4.31409996953127761188e-01, 6.05511165526086303501e-01], \
235  [5.42295292825123231850e-01, 4.54044803096795235309e-01], \
236  [6.03207145905520825124e-01, 2.99644997579124883202e-01], \
237  [3.67272823936060865968e-01, 5.43768939640276061098e-01], \
238  [4.66991164519568957569e-01, 6.42153053679254126607e-01], \
239  [4.92441799843590266583e-01, 5.74675877077314489760e-01], \
240  [5.62904814939317543754e-01, 2.53101582504432043308e-01], \
241  [4.46894739716844457966e-01, 3.61893324552099104885e-01], \
242  [4.33240492727525849936e-01, 4.73906018886606217322e-01], \
243  [3.16720676874108431065e-01, 6.96703418827466225416e-01], \
244  [3.52472576438936424648e-01, 5.08967991273674091879e-01], \
245  [5.39544538605886914162e-01, 4.20411062963345183441e-01], \
246  [5.30580576089384137184e-01, 3.71013034545012443388e-01], \
247  [5.71505038645329532798e-01, 4.82012265858213495573e-01], \
248  [5.08072067407084992929e-01, 4.91772568305330726179e-01], \
249  [6.29012956511017296002e-01, 5.43316538025798045908e-01], \
250  [6.21033119341908079747e-01, 5.09532119265924232643e-01], \
251  [4.57399508812247779233e-01, 7.83071244421002843339e-01], \
252  [3.64877999198933267166e-01, 2.93622477553766136893e-01], \
253  [4.73197037119788888049e-01, 1.76017156534430174730e-01], \
254  [4.99148812668887498223e-01, 4.42451778245321558636e-01], \
255  [5.73835205714163354429e-01, 6.36188127703045114281e-01], \
256  [5.14415967984224953291e-01, 3.94787059359308634132e-01], \
257  [5.98463300452947266628e-01, 4.52776601750019602743e-01], \
258  [5.86667757335171846655e-01, 6.38736961247790557827e-01], \
259  [5.85829458251251433687e-01, 4.46911718441089289566e-01], \
260  [5.60230466513083835700e-01, 6.12071956263377514595e-01], \
261  [3.68210069421677221868e-01, 5.70330113113991954421e-01], \
262  [3.42880864741272772811e-01, 3.83173641795270192301e-01], \
263  [4.53770306362469122430e-01, 5.79358885628654896038e-01], \
264  [4.20218529679580787839e-01, 4.76366280790096574549e-01], \
265  [4.96041468851574351984e-01, 5.76952610573550628281e-01], \
266  [6.26335773171742604681e-01, 6.03371259383763569595e-01], \
267  [4.31576951682476561700e-01, 3.99947018351854977070e-01], \
268  [3.85574886389643267659e-01, 3.83247264902042528156e-01], \
269  [5.02176155470650198431e-01, 4.29936754280557109631e-01], \
270  [5.15816920676933410306e-01, 6.55787194296590714160e-01], \
271  [5.28747587784108796782e-01, 5.00562965857515362877e-01], \
272  [5.19260125532933991543e-01, 5.13528742384992353820e-01], \
273  [5.00558138614846770409e-01, 2.91424682929092182526e-01], \
274  [5.91406752818173897523e-01, 3.00465954588633010758e-01], \
275  [4.40894565845795616266e-01, 4.66290417423352032689e-01], \
276  [4.76503172006657538251e-01, 4.62166136689261153325e-01], \
277  [4.31097602055488693384e-01, 4.72901426753047138263e-01], \
278  [6.13262204352000406260e-01, 5.67167300775533345103e-01], \
279  [4.99118606890458671455e-01, 6.18252820116466650369e-01], \
280  [4.15414071500950665694e-01, 3.67862346153773001056e-01], \
281  [5.76163095994329466087e-01, 4.41796917312664738642e-01], \
282  [6.33902226195186102586e-01, 5.16458401597194360910e-01], \
283  [2.20960674458201000725e-01, 5.79475154847235662814e-01], \
284  [6.38625292655956244836e-01, 6.14026552506694356381e-01], \
285  [2.47439382842239652405e-01, 5.07241602589663775902e-01], \
286  [5.55805948533402260914e-01, 6.87105793402274400705e-01], \
287  [5.67511519000864161910e-01, 5.39243320084448418683e-01], \
288  [6.09144324397696612650e-01, 4.54554077795741917623e-01], \
289  [6.15556708753834835868e-01, 5.49568008339409330709e-01], \
290  [4.09512886583833946030e-01, 4.42180396993778201953e-01], \
291  [3.36198084372488437133e-01, 5.58628586819683525810e-01], \
292  [4.52706940186996864561e-01, 7.24911071963657338557e-01], \
293  [4.79758274485977520563e-01, 4.83355659772464252288e-01], \
294  [6.03159546771484644800e-01, 5.01297659017088226285e-01], \
295  [4.40607533050531630092e-01, 5.23133390654039631684e-01], \
296  [5.13904824031050866395e-01, 4.92051316412889017116e-01], \
297  [3.48101950803277659929e-01, 4.96914235005659232769e-01], \
298  [5.01863243911560452659e-01, 4.10923036811280062430e-01], \
299  [4.38753431330995646853e-01, 4.66030592445363045506e-01], \
300  [5.00723563593606701971e-01, 6.00677777803259371758e-01], \
301  [4.94012761300644698270e-01, 7.11116592888453635801e-01], \
302  [6.28670681744008419400e-01, 4.96914187827123543517e-01], \
303  [5.77886316953041601074e-01, 4.72193496850487504091e-01], \
304  [3.64573173095259717158e-01, 5.64211542022866163748e-01], \
305  [6.26015777339162582393e-01, 7.18941372936092948365e-01], \
306  [7.06576557450855347042e-01, 5.37115332462707151251e-01], \
307  [5.02348024935275971892e-01, 4.95545488636584097186e-01], \
308  [6.72581859580880569993e-01, 5.49553225912887022275e-01], \
309  [5.20496419156133982575e-01, 5.13733394474496285476e-01], \
310  [4.57241117468064117713e-01, 6.50401291243286383548e-01], \
311  [5.63470392784673368425e-01, 5.21702593683155524396e-01], \
312  [4.14784263749753689954e-01, 4.65905610364224009867e-01], \
313  [4.51884284890087195574e-01, 6.16544643249907320381e-01], \
314  [4.72331615428121853739e-01, 5.95342126921208358858e-01], \
315  [4.64768188743320709300e-01, 6.34007304171575136742e-01], \
316  [6.49929893577523398740e-01, 4.89051540892011693540e-01], \
317  [6.40160262017223646858e-01, 5.65841506889876666442e-01], \
318  [2.86759639274365152328e-01, 2.47598355551993887236e-01], \
319  [5.75365901383811273462e-01, 5.80301450776809613075e-01], \
320  [6.45714232394306586471e-01, 4.23167874616792727416e-01], \
321  [4.04118212661033426869e-01, 6.04926382580318056092e-01], \
322  [4.95082896805820515951e-01, 5.14061723972686346329e-01], \
323  [5.43251387221075243694e-01, 5.16256185971387893119e-01], \
324  [5.58493859685879612265e-01, 5.84750836008630425766e-01], \
325  [5.94010438524628536783e-01, 5.69586105456286184712e-01], \
326  [4.51548290335013757790e-01, 5.60412218670692241496e-01], \
327  [4.89643484154439367906e-01, 4.66791808072996861068e-01], \
328  [3.34107785371743626346e-01, 2.29686311843964097168e-01], \
329  [4.96245389541624559726e-01, 6.05141673092112641896e-01], \
330  [4.33896500781114413670e-01, 6.09015597867428315482e-01], \
331  [5.29170099278943317778e-01, 5.91441938824789015250e-01], \
332  [5.99667847910288154267e-01, 4.10163790035011133206e-01], \
333  [4.82812712433858148842e-01, 6.78549046944508016388e-01], \
334  [5.50786814967667348597e-01, 3.82893782290483541964e-01], \
335  [5.09077161422802459967e-01, 5.30757179651897059713e-01], \
336  [4.82344298263428894469e-01, 4.25002502700869588814e-01], \
337  [4.05577988447620496615e-01, 4.35789044754351262423e-01], \
338  [3.90358212044006280816e-01, 4.45939543141330330123e-01], \
339  [4.09713116278330902187e-01, 4.63391377534048742870e-01], \
340  [4.73357839553688930501e-01, 3.83216300853277791472e-01], \
341  [4.38678957884589715288e-01, 4.84930403600143888898e-01], \
342  [5.06806656955314349666e-01, 5.64557465388137447171e-01], \
343  [5.62931827382073368682e-01, 5.16442590800013312524e-01], \
344  [5.49372603392246139364e-01, 4.57612622585903405792e-01], \
345  [6.57860598839662968906e-01, 3.73702263643812537808e-01], \
346  [5.31866316169358421817e-01, 5.46633513865759645967e-01], \
347  [6.37633790052994253728e-01, 5.54185114103629694604e-01], \
348  [4.15175812473087824106e-01, 3.70435961746397202088e-01], \
349  [5.13276988458131300241e-01, 5.61486443235535759300e-01], \
350  [3.15458866624696909753e-01, 3.63112743728578546420e-01], \
351  [6.67720676994525530468e-01, 4.78085630961942398276e-01], \
352  [6.15903627329358549503e-01, 5.80818985212707361576e-01], \
353  [4.55103300501962737545e-01, 4.07408260873026006887e-01], \
354  [4.80476646987983591064e-01, 7.24506393252495328738e-01], \
355  [3.67592498053986305173e-01, 5.14521930732628640648e-01], \
356  [2.82299967051669264961e-01, 4.85775183252041664606e-01], \
357  [5.24271724637888292264e-01, 4.63344918271363259699e-01], \
358  [5.87867361609482830254e-01, 6.62698600345525523636e-01], \
359  [6.34647729016257877710e-01, 2.64473716945087145014e-01], \
360  [4.59739653523103586341e-01, 5.31438600683785455914e-01], \
361  [5.09509375772260408866e-01, 5.70838482598964636061e-01], \
362  [6.07685892354336565369e-01, 5.49067889502232842069e-01], \
363  [4.73557326058787086964e-01, 5.15732863771976579592e-01], \
364  [3.56132536322021353570e-01, 5.70862753911207998492e-01], \
365  [6.70517275066690454643e-01, 4.93461918837379720504e-01], \
366  [5.49727499306390532396e-01, 6.11056629310288368373e-01], \
367  [6.21160269274245280258e-01, 4.05631674072662040675e-01], \
368  [4.45432601178899267858e-01, 4.23178842050428993815e-01], \
369  [4.46464664932599952785e-01, 6.16937909733852318794e-01], \
370  [4.15710138005969787045e-01, 7.17870379505014644117e-01], \
371  [4.18708651460611258610e-01, 6.15580460603601609115e-01], \
372  [4.47203033736916499841e-01, 6.72675074322066191002e-01], \
373  [3.70559775524738732599e-01, 4.01037544724849315259e-01], \
374  [4.10719386238793560118e-01, 3.09728750564337573792e-01], \
375  [5.28612100290532960223e-01, 5.39693168718548887952e-01], \
376  [6.48577578375992391813e-01, 4.65940110020357456388e-01], \
377  [5.66061880624347257829e-01, 3.99557773478394995248e-01], \
378  [6.37331987608374839205e-01, 6.03885688413282939457e-01], \
379  [5.57502359842264372247e-01, 7.26469375240116344017e-01], \
380  [6.38263840004702709408e-01, 4.19253443412916482202e-01], \
381  [5.43068260920964052119e-01, 5.25467040736798840506e-01], \
382  [6.74865963153002401675e-01, 5.83372904717977536215e-01], \
383  [3.94143622227357715015e-01, 6.31280544505497087648e-01], \
384  [5.49356038548151071055e-01, 4.95721101948969733453e-01], \
385  [4.04948827679169176541e-01, 3.25176351339588332046e-01], \
386  [4.53922054460662138808e-01, 3.94545445944285089190e-01], \
387  [4.20402534084631018807e-01, 4.92800591898942097480e-01], \
388  [5.58302225508232163875e-01, 6.51619860842617804053e-01], \
389  [3.69797771191133828328e-01, 4.13120776016572710532e-01], \
390  [3.36660668021505071756e-01, 4.08191667708686478644e-01], \
391  [3.99278495977753833390e-01, 4.60919149706127129207e-01], \
392  [4.91696567163098063880e-01, 5.26083761127478233277e-01], \
393  [2.84236059348199121555e-01, 3.91391134784578431649e-01], \
394  [4.71082421236209636373e-01, 3.87045091579742872590e-01], \
395  [4.67043247020378859968e-01, 3.45495704303324546736e-01], \
396  [5.55617100703695854236e-01, 4.02618891870753170537e-01], \
397  [5.10215816523445386821e-01, 4.84578409902436835210e-01], \
398  [5.63124242779090122824e-01, 4.70910358134329520841e-01], \
399  [3.86883670506122101518e-01, 4.21466815520252335858e-01], \
400  [4.42489524493569763575e-01, 3.56479770132254125681e-01], \
401  [4.29576200275663788730e-01, 4.81868801222945675189e-01], \
402  [5.16132600743201996885e-01, 5.23746822249464449861e-01], \
403  [5.72075998797904272664e-01, 5.22481145341158637052e-01], \
404  [4.63563555421804995849e-01, 4.29056455150805760024e-01], \
405  [3.56549405747756842366e-01, 5.60009170627828289923e-01], \
406  [5.64975478188366131427e-01, 4.45318776533236038162e-01], \
407  [6.23410722907411951610e-01, 5.50538978543324453163e-01], \
408  [5.58546945371486858178e-01, 5.20216497255418075518e-01], \
409  [4.31248046341083879351e-01, 4.25601540487264895507e-01], \
410  [4.50274756177613866281e-01, 5.12781448411971707557e-01], \
411  [3.41166612124787382854e-01, 3.95472834662120575899e-01], \
412  [5.04525895581273142732e-01, 4.24654753526811590270e-01], \
413  [5.23086851081142389930e-01, 4.79837653521961282621e-01], \
414  [4.62436634885723396593e-01, 5.96245048423728385423e-01], \
415  [3.86844860019958436403e-01, 4.99078434119866798380e-01], \
416  [5.04819523452246010642e-01, 6.39532256309030766595e-01], \
417  [5.92071109601403522404e-01, 3.38769954879249213242e-01], \
418  [5.02912088457095451943e-01, 5.54999025468041584652e-01], \
419  [4.28185962585340140762e-01, 4.14152698948049902139e-01], \
420  [6.84472981658677204209e-01, 6.23528672444143228226e-01], \
421  [4.18129768306481408580e-01, 6.22366010525804314035e-01], \
422  [6.10713847097499873406e-01, 4.89595004965756253057e-01], \
423  [4.66442969598476253612e-01, 4.73697081107705419978e-01], \
424  [4.73510438074558670518e-01, 4.83397203702028321892e-01], \
425  [5.60873289144718900623e-01, 2.07634311114496206141e-01], \
426  [4.69623527063944556925e-01, 5.49585022320058680378e-01], \
427  [4.19193854603237270329e-01, 4.18699766051738919703e-01], \
428  [6.44507381707071558274e-01, 5.13298347283283495912e-01], \
429  [5.01114465587657820222e-01, 5.41817777154608659629e-01], \
430  [5.92647960497276082847e-01, 2.44788214405423310005e-01], \
431  [7.59628850128313604095e-01, 3.06981704567211077794e-01], \
432  [6.00629983153728841394e-01, 3.62903884558825384765e-01], \
433  [4.66801627683394504409e-01, 5.01481859547299624325e-01], \
434  [5.32922094395725354232e-01, 6.07987050225014202809e-01], \
435  [7.08162190515856937445e-01, 3.84571732747907846228e-01], \
436  [5.43117393653515634355e-01, 2.92173483743872752783e-01], \
437  [2.86183396569022752143e-01, 5.29076746562621491599e-01], \
438  [4.06273963862077980291e-01, 5.26562379968132709962e-01], \
439  [5.60386123386667267532e-01, 5.40868743855847933233e-01], \
440  [5.27403146300688074888e-01, 5.46461078096388885861e-01], \
441  [6.16839121895394359996e-01, 6.24130929676627421721e-01], \
442  [2.87531696754575571973e-01, 4.42174041594830258273e-01], \
443  [5.07295598045451212599e-01, 4.90169671411083140988e-01], \
444  [5.00554972364617212222e-01, 2.09636124343439977924e-01], \
445  [6.71805437354723422594e-01, 5.28273517405856485318e-01], \
446  [4.66444410025889877325e-01, 6.81507608440521273074e-01], \
447  [3.96375930680882837542e-01, 3.08687748333178690885e-01], \
448  [7.14296954377469095476e-01, 5.50017281507158672937e-01], \
449  [3.48752585640754730889e-01, 5.17407779404832068870e-01], \
450  [7.18310628040954246565e-01, 5.11132613143585379234e-01], \
451  [6.63494346816498770103e-01, 5.26836749139487192650e-01], \
452  [5.77006569738717667306e-01, 5.18892362725782763100e-01], \
453  [4.01233643828104502571e-01, 4.78832601939565616345e-01], \
454  [5.86399310005019658298e-01, 2.40164928940056421336e-01], \
455  [6.19530500951089968531e-01, 6.27573289120293087429e-01], \
456  [5.78398402069640771295e-01, 4.83748148711805880939e-01], \
457  [6.07132834634710349953e-01, 3.78679453928062847989e-01], \
458  [4.98479376347620906085e-01, 5.15989826470430346106e-01], \
459  [4.73639806510457561650e-01, 4.85724501437427069739e-01], \
460  [6.61436369460494666406e-01, 5.93472583183511259719e-01], \
461  [4.25183088639936646036e-01, 3.76984069343787087103e-01], \
462  [5.67478427442904886924e-01, 5.08420002635815770908e-01], \
463  [3.66208129061215137412e-01, 4.31322009346383983264e-01], \
464  [5.18977300635865224088e-01, 4.83287325882427176715e-01], \
465  [3.99914753015494062183e-01, 4.27735496641997614553e-01], \
466  [5.22570511936814030562e-01, 4.37172999772519721429e-01], \
467  [5.47014724978245991949e-01, 3.93017708433251899969e-01], \
468  [6.09688794246066700921e-01, 4.71483054510238586143e-01], \
469  [3.18963035530739902335e-01, 6.04663321982874646388e-01], \
470  [6.38506539822411123275e-01, 3.34774351381818213724e-01], \
471  [4.62165388276272182111e-01, 5.60328303591690057850e-01], \
472  [4.73748522967129326311e-01, 5.66865978574868645268e-01], \
473  [4.60608575486144977695e-01, 5.91951249767024734183e-01], \
474  [3.56795978607195807264e-01, 4.89867949897991428188e-01], \
475  [4.56985042912428085504e-01, 4.17442709850835314001e-01], \
476  [5.63760837980672446790e-01, 5.01829767652252067833e-01], \
477  [4.96380105951781669393e-01, 5.12606422497419167428e-01], \
478  [4.83895198582426189216e-01, 6.74473457378041985066e-01], \
479  [5.13124202076753466173e-01, 6.48357723785744077816e-01], \
480  [4.52735237446655780502e-01, 6.32148339153784544209e-01], \
481  [5.22715000424861075956e-01, 7.14420712715930439352e-01], \
482  [5.97338072112415630066e-01, 6.28297373075173082313e-01], \
483  [3.87233425040386602944e-01, 2.34517396438552294669e-01], \
484  [3.45123892508290119885e-01, 3.95039366217439014140e-01], \
485  [6.91145355247707371404e-01, 4.63640132575023733441e-01], \
486  [4.80156890645610845425e-01, 5.31353943341984047422e-01], \
487  [5.46557184755507519114e-01, 5.76312678971086622681e-01], \
488  [5.61924894312307410260e-01, 5.16843399004573433864e-01], \
489  [3.84351285499613393171e-01, 3.33666316275563479277e-01], \
490  [5.05658352031917224245e-01, 5.68605031938984817330e-01], \
491  [4.86244786647343663066e-01, 5.98291917629925396049e-01], \
492  [4.49104298644191934908e-01, 5.01919778229144686321e-01], \
493  [6.36736587078052806987e-01, 6.01212565257703390742e-01], \
494  [5.24925055573933097008e-01, 5.89948268615745785581e-01], \
495  [5.99932228482533247416e-01, 5.32509794245431655746e-01], \
496  [5.19640790593189128010e-01, 6.62982929925691522044e-01], \
497  [3.66582139449851740487e-01, 5.37274495575846167128e-01], \
498  [6.09918774687348896890e-01, 5.27007197990331688331e-01], \
499  [5.11131314868001562779e-01, 5.42149286459544965666e-01], \
500  [4.51332621842253256528e-01, 4.10261889590947892437e-01], \
501  [5.25432035308129319340e-01, 4.40980538941056265934e-01], \
502  [5.10782570354401777024e-01, 6.89196997953414713933e-01], \
503  [3.72796682100508813829e-01, 5.34036752347764043236e-01], \
504  [6.24355424479441367680e-01, 4.40166108058185623353e-01], \
505  [5.55484834866897148054e-01, 5.34919267683017674031e-01], \
506  [4.30498706701502142913e-01, 5.61363499341958172018e-01], \
507  [4.45135565508272268431e-01, 4.87333213848993862527e-01], \
508  [4.68675390550098935893e-01, 4.86760775777794918451e-01], \
509  [5.96627754459173598178e-01, 5.10379819347190344381e-01], \
510  [3.94255117703739998980e-01, 4.88615562867927011315e-01], \
511  [5.89587201543967709405e-01, 5.34475852587176780695e-01], \
512  [5.03626765739604076444e-01, 5.50160213631938566081e-01], \
513  [3.57485837376316561986e-01, 5.79103989155809628642e-01], \
514  [1.59440489587252653969e-01, 5.26551628096946111590e-01], \
515  [5.15843940326542904629e-01, 5.69685153891051343500e-01], \
516  [4.00928893966079114008e-01, 5.32969821431146906221e-01], \
517  [5.75419467810026841192e-01, 4.22944947887880617898e-01], \
518  [5.09812678370093363966e-01, 4.93884105439540754823e-01], \
519  [6.19702405604076078660e-01, 5.80454158049948376608e-01], \
520  [5.22440101516369770351e-01, 5.57513496266312968963e-01], \
521  [5.53990799047409110401e-01, 5.38571225276326837061e-01], \
522  [5.31900005225104610673e-01, 3.98942396887246530923e-01], \
523  [3.94398463897551176949e-01, 5.25040374391018471734e-01], \
524  [6.03772399521409930401e-01, 6.38632945282166852863e-01], \
525  [4.44455340804045639924e-01, 5.03015962700646857009e-01], \
526  [5.67579419590754419289e-01, 4.75496135979508571801e-01], \
527  [4.67922900417953202545e-01, 6.01405538292233865505e-01], \
528  [3.42272064824079458312e-01, 7.44541048774698732693e-01], \
529  [4.02828417355757917306e-01, 4.04709381955081604065e-01], \
530  [6.20314054277921633762e-01, 3.26130922978849158156e-01], \
531  [5.07795752066301120387e-01, 3.97069711652706436311e-01], \
532  [4.98114393841135538743e-01, 5.83399698179854708791e-01], \
533  [6.10627294802999154300e-01, 3.76293343887116382707e-01], \
534  [4.99204441742503890467e-01, 4.67404887173026084568e-01], \
535  [5.78208197124999601080e-01, 3.78874214064077452502e-01], \
536  [4.87625689579829157960e-01, 3.60727872690940032374e-01], \
537  [5.79300197496014357412e-01, 5.05656887340071858894e-01], \
538  [4.48256897225880801550e-01, 5.70132348088610796388e-01], \
539  [4.77692335764947295651e-01, 4.25251694092913690159e-01], \
540  [5.94153761235350130754e-01, 6.01855818121283969724e-01], \
541  [5.49680122932775017119e-01, 4.66766541896735998041e-01], \
542  [3.25483148152356127625e-01, 5.49246137351986130071e-01], \
543  [4.40412667760292420027e-01, 3.76953438076887081820e-01], \
544  [5.03066278192428217864e-01, 5.96378339452582784119e-01], \
545  [4.80290574361600164366e-01, 4.60872964814752705820e-01], \
546  [5.56364375072162742342e-01, 5.03158757147391888509e-01], \
547  [5.23345003210317849529e-01, 7.22513255009030519460e-01], \
548  [3.57106947476807490283e-01, 5.80641500955607181567e-01], \
549  [6.91358966513041073298e-01, 5.46572363037836961297e-01], \
550  [4.55401840252709577683e-01, 4.11716336702808494152e-01], \
551  [3.83554983069844701582e-01, 4.38024659213133382707e-01], \
552  [4.81351314903997795636e-01, 5.74177416626954095769e-01], \
553  [5.15226491756262339194e-01, 5.45334708889477992599e-01], \
554  [5.40628603893087089638e-01, 5.88185305819967085839e-01], \
555  [4.50864087923326051222e-01, 5.98513900014567279406e-01], \
556  [5.47297098509046398007e-01, 5.66132659917806924099e-01], \
557  [5.28530896157364482590e-01, 6.67649425327306644817e-01], \
558  [4.39556893739878773442e-01, 7.68771929361243944179e-01], \
559  [3.86833312725837930035e-01, 5.64966391684143864893e-01], \
560  [4.15588290176066355031e-01, 4.92864828557251277719e-01], \
561  [3.90522916832082123140e-01, 7.06193946021074658859e-01], \
562  [5.40930538076876854525e-01, 5.63779596779997671518e-01], \
563  [3.94401084386677647231e-01, 6.17633039099027225660e-01], \
564  [6.32543281234084653342e-01, 5.53544779417408983058e-01], \
565  [5.17022295811143783872e-01, 4.90972058285805590394e-01], \
566  [4.60445366735713457196e-01, 4.88182354173622767846e-01], \
567  [5.22988764730550781401e-01, 5.55683261878273992984e-01], \
568  [6.19273639731729774738e-01, 7.20881123450243688211e-01], \
569  [4.84056897782844441913e-01, 5.09101932194817474731e-01], \
570  [4.28005202632197712109e-01, 4.42101073505514419182e-01], \
571  [4.62310849867871354046e-01, 4.65463819224925579032e-01], \
572  [6.16180784245477619621e-01, 5.32656493053192847675e-01], \
573  [6.82362393572710002054e-01, 6.51472299938162358046e-01], \
574  [6.05650503716342769600e-01, 3.45523166247531765549e-01], \
575  [4.44098454651745799815e-01, 5.96937884415202790755e-01], \
576  [5.97585573360833732792e-01, 5.70556168124258911156e-01], \
577  [5.95689671009654753142e-01, 7.16384123713500353681e-01], \
578  [5.92543924550815948038e-01, 6.18976298349089959494e-01], \
579  [4.21252305171927909910e-01, 3.00837502747972274086e-01], \
580  [5.09122120243195364075e-01, 4.88171420380944631745e-01], \
581  [4.49470767220893518967e-01, 5.33174111016315621647e-01], \
582  [4.37953546167110241427e-01, 2.96341461428635877251e-01], \
583  [4.92854897160699245706e-01, 5.07226950382165031606e-01], \
584  [5.31435693853255730623e-01, 4.81729768391355284152e-01], \
585  [4.66639521665308476539e-01, 5.14591295392095471328e-01], \
586  [4.27313711667585027776e-01, 4.69336641340974802805e-01], \
587  [6.85757666208705707334e-01, 5.24734938468697564851e-01], \
588  [4.28081837491669503493e-01, 4.55374236566962742323e-01], \
589  [4.92420744478654637266e-01, 4.10718156176252069400e-01], \
590  [5.78576920467550825933e-01, 6.17820865568420307667e-01], \
591  [3.68922638961396320845e-01, 3.31187872900831681289e-01], \
592  [5.03142617953857729240e-01, 5.69886515080880062811e-01], \
593  [4.92017565993147998338e-01, 5.74794879020163684835e-01], \
594  [2.98881371434510212381e-01, 5.62621023870080172458e-01], \
595  [4.13932218013501718179e-01, 5.96096083363089057627e-01], \
596  [5.34454518865373984227e-01, 4.19198619387652238188e-01], \
597  [5.01352178345727761410e-01, 5.45789327123441081469e-01], \
598  [4.84194026734294569181e-01, 4.49988767246017995483e-01], \
599  [3.68053431698619926138e-01, 5.14457884828155354029e-01], \
600  [3.73375686678944496144e-01, 4.74692165944244015563e-01], \
601  [5.39772075754843982942e-01, 5.63238153567629185048e-01], \
602  [5.91624646841928725216e-01, 5.20526720406522036555e-01], \
603  [4.17886547395471819044e-01, 5.78604412605420725946e-01], \
604  [4.77952118102065226513e-01, 6.56168781491479613521e-01], \
605  [3.48561886758705419265e-01, 4.96392719602599730155e-01], \
606  [6.15510388851051803982e-01, 4.57085240662943315115e-01], \
607  [3.44889654964257941216e-01, 4.67431671504426937691e-01], \
608  [4.22173221095856754381e-01, 6.15455560912542054552e-01], \
609  [5.68185559018029917588e-01, 6.20292369531208698241e-01], \
610  [4.31389179834929414881e-01, 6.18357669370438345346e-01], \
611  [4.10458940662767890473e-01, 5.87021757613162775691e-01], \
612  [4.78725720550392641606e-01, 5.82251867117956400932e-01], \
613  [6.53155078652677856255e-01, 4.03772227993722643280e-01], \
614  [4.80783684061253380193e-01, 6.31643609657913995825e-01], \
615  [4.36670143010123690264e-01, 5.15817220682214472305e-01], \
616  [5.43990417827223238234e-01, 5.97412887627226441012e-01], \
617  [4.47728344772682695929e-01, 6.68506538337462208332e-01], \
618  [3.35197537838736181470e-01, 4.71518570827705707504e-01], \
619  [5.08449374449877256055e-01, 4.25672741465823400997e-01], \
620  [4.28466324093453532207e-01, 4.82129516244957312399e-01], \
621  [6.01132770105392233440e-01, 6.70914709171448686575e-01], \
622  [4.69493389605998845404e-01, 4.71106712847312203429e-01], \
623  [3.01849106454715965242e-01, 5.41041405813775244660e-01], \
624  [5.93933478204220266505e-01, 4.92093374018965634686e-01], \
625  [4.21389904575758311722e-01, 6.24669450652993618611e-01], \
626  [4.58655792137208306869e-01, 5.08318701974851516745e-01], \
627  [3.64347799492068580296e-01, 3.50008572252482053067e-01], \
628  [5.85963579280534996307e-01, 6.51852113053098758400e-01], \
629  [5.11355800785292857746e-01, 3.57845589380129447399e-01], \
630  [4.57471176250439204303e-01, 6.01167746529005508904e-01], \
631  [3.18339741499573003480e-01, 6.45149956986602379772e-01], \
632  [3.41434561093634625362e-01, 4.54957604144358540577e-01], \
633  [5.40188167063629154363e-01, 5.84277854633536430917e-01], \
634  [5.46739694861518188418e-01, 6.63732336021909619106e-01], \
635  [6.62755466450112851184e-01, 4.68356855823469142575e-01], \
636  [5.24456406812864095457e-01, 2.85385283113035626013e-01], \
637  [5.25917648739742005226e-01, 5.31865314178732839778e-01], \
638  [5.00597357822493260748e-01, 5.20014191160624195120e-01], \
639  [5.23655672836067287435e-01, 4.01955198279088765645e-01], \
640  [5.39291951424189397457e-01, 6.89867752630618835674e-01], \
641  [5.38329431611118125467e-01, 4.09378149922675294015e-01], \
642  [5.43726928979585411028e-01, 5.67823802405882482880e-01], \
643  [5.53001693267672345122e-01, 6.67628465784462443722e-01], \
644  [5.86343472143898147841e-01, 4.98378205640519156283e-01], \
645  [7.10054662182226681288e-01, 5.89786689774921213392e-01], \
646  [5.10570548416046099405e-01, 6.43246671552458293419e-01], \
647  [6.02020332307897865221e-01, 6.34465011686650370848e-01], \
648  [5.80371517654179713830e-01, 6.82341206575277303692e-01], \
649  [2.55183372766833116430e-01, 4.20285563519170124458e-01], \
650  [5.07953061350685852737e-01, 4.83871308943942757264e-01], \
651  [4.03027727024656112764e-01, 5.48648386554172806662e-01], \
652  [4.26899618572043948461e-01, 5.31492321826456892708e-01], \
653  [4.84511580570441580118e-01, 7.45599008572350396840e-01], \
654  [4.38024726311490530950e-01, 6.22901862460166766411e-01], \
655  [6.18311826071260339788e-01, 4.49371497957649856936e-01], \
656  [3.71190165326318211036e-01, 6.10479603919226065933e-01], \
657  [6.20903554431484261400e-01, 5.95264773487894527371e-01], \
658  [6.23715798624822626017e-01, 4.17901869143080861857e-01], \
659  [5.41076344204455272902e-01, 6.36362093443634591061e-01], \
660  [4.74500598390444450203e-01, 5.84012243100072270252e-01], \
661  [5.05744018339405077000e-01, 6.74266788043303089140e-01], \
662  [5.55765768140952798326e-01, 5.69529068833959151164e-01], \
663  [4.34419625788129537547e-01, 3.85952143157285876285e-01], \
664  [4.23396964324653679590e-01, 4.83859314745063329166e-01], \
665  [6.37210370309407414524e-01, 5.03837308794625959862e-01], \
666  [5.45514528537405785080e-01, 6.63362674815151320828e-01], \
667  [7.39609779970554326312e-01, 6.68808594992264415779e-01], \
668  [2.21109004037429390799e-01, 4.53693432422059228504e-01], \
669  [5.38812356391120683696e-01, 6.77625026378462336218e-01], \
670  [5.29923707938779964266e-01, 7.22698885267590740433e-01], \
671  [6.16998146267244029772e-01, 4.64638865684204982465e-01], \
672  [5.26437081102851922587e-01, 5.19787467965409755166e-01], \
673  [4.67026678382779281140e-01, 5.45273677881347396124e-01], \
674  [5.85691137577825648997e-01, 4.50261568164034620132e-01], \
675  [4.77217042306056604684e-01, 5.87180184125516424487e-01], \
676  [5.92002617200129810371e-01, 5.63403454460978725393e-01], \
677  [4.60038867635632509057e-01, 3.12650567019465475127e-01], \
678  [4.69813536646264628960e-01, 4.23863377179250377935e-01], \
679  [3.97497364328863733718e-01, 3.02957161340129066396e-01], \
680  [4.23972087707645439725e-01, 4.96534248155000745850e-01], \
681  [5.39480566540436523582e-01, 4.73832009292224964891e-01], \
682  [4.99009292318932873300e-01, 3.84581726485490493772e-01], \
683  [3.95661443663134160253e-01, 4.40896815723683999089e-01], \
684  [4.22886505320713146361e-01, 6.41264229961158505056e-01], \
685  [4.46130522245086313937e-01, 3.44195404940764393409e-01], \
686  [6.15295268198016054306e-01, 6.47907903077654334645e-01], \
687  [5.14455531944915445131e-01, 4.30094791952224941856e-01], \
688  [5.18116065693479899146e-01, 5.40211781091492482254e-01], \
689  [4.35478724463777222553e-01, 4.44664235592942935771e-01], \
690  [5.51925211264096549080e-01, 4.55284492728028344910e-01], \
691  [3.70586050377475439976e-01, 5.08485528170962375327e-01], \
692  [3.77153554812595659396e-01, 6.50239647579104573794e-01], \
693  [4.20973098770974329952e-01, 4.92758502925036812048e-01], \
694  [3.38437410542981931272e-01, 4.64461074082606839575e-01], \
695  [5.58857769418738881129e-01, 4.17968311038478534947e-01], \
696  [4.32465312123815226464e-01, 6.61019447258609615936e-01], \
697  [4.89318163390010218983e-01, 5.81384912594813174636e-01], \
698  [5.72621910116759558207e-01, 4.24210797667121275456e-01], \
699  [4.46271408063435182090e-01, 3.29894130961032649996e-01], \
700  [7.81814127703920336288e-01, 4.12419456942412165912e-01], \
701  [5.03789214866615542299e-01, 4.23026361832366915028e-01], \
702  [5.21403882114300554207e-01, 4.82701704971195688643e-01], \
703  [5.03778690068370504918e-01, 5.43210599994505383137e-01], \
704  [5.92841661044696044414e-01, 5.78445056339933150191e-01], \
705  [4.65604914942473246953e-01, 7.10396003986398127950e-01], \
706  [4.60727613458417839531e-01, 5.35320294194095214202e-01], \
707  [1.37642918134533498442e-01, 5.06721420073215855773e-01], \
708  [7.66751967133159295642e-01, 4.82032235979630130362e-01], \
709  [4.85753931396445293167e-01, 6.05300017757602781820e-01], \
710  [5.43518185949645959987e-01, 3.83713359982644497403e-01], \
711  [6.99025910477636180929e-01, 5.93960029532509814487e-01], \
712  [4.27477364497658718356e-01, 5.89949321077727795171e-01], \
713  [4.13933250234798211231e-01, 5.50410816471476271872e-01], \
714  [5.96177483119481044227e-01, 2.94374478283728202577e-01], \
715  [4.98394834099081307510e-01, 4.19255766163762477738e-01], \
716  [5.32218915209579090941e-01, 4.34707244830558947601e-01], \
717  [6.92086766977496270492e-01, 3.75008947124729430378e-01], \
718  [4.78242225526504971533e-01, 4.34880361561258643732e-01], \
719  [6.15715006148981114364e-01, 4.66143651966558214550e-01], \
720  [5.46638331519019193827e-01, 5.51808829992597393854e-01], \
721  [4.79000894913108654638e-01, 3.19675553364030640147e-01], \
722  [4.06960478597419794689e-01, 5.74617911452962593089e-01], \
723  [5.96177940030753084066e-01, 4.95112922111594688790e-01], \
724  [4.48410510003424633840e-01, 4.25108918311262073964e-01], \
725  [5.96704477990009474198e-01, 4.06066986475364044562e-01], \
726  [4.14619376599013489404e-01, 4.62690758516300204573e-01], \
727  [4.77696505260666037795e-01, 4.04386853811155466687e-01], \
728  [5.04634732521916262726e-01, 4.81366781671020760314e-01], \
729  [4.54193472755498151017e-01, 2.64018552431421527071e-01], \
730  [3.74437201796847918267e-01, 6.32590111634973362165e-01], \
731  [4.46871691237110790773e-01, 5.68848916451605290945e-01], \
732  [3.80669441708761491228e-01, 4.69572615530538139961e-01], \
733  [6.08955364104242335976e-01, 3.04217197503575009776e-01], \
734  [5.98915418782218988980e-01, 4.73842194888331624814e-01], \
735  [5.78447370268319160935e-01, 4.68644905636397546278e-01], \
736  [5.51486235230952526187e-01, 4.33887388379933458538e-01], \
737  [5.65899843784825051785e-01, 4.74386185143715499724e-01], \
738  [4.16048304014977776699e-01, 5.00085855901955089742e-01], \
739  [4.39717398825781036198e-01, 3.95602108942843921913e-01], \
740  [3.36472437494309661865e-01, 6.31876018572673392448e-01], \
741  [4.66039026008791712474e-01, 4.97279917562864715030e-01], \
742  [3.57986366606809269797e-01, 5.10147578804519996609e-01], \
743  [6.09148228600301155922e-01, 4.70296479927805100019e-01], \
744  [3.22819947887973968115e-01, 3.68035892381436136045e-01], \
745  [5.14413313506845382150e-01, 4.58786079922727130231e-01], \
746  [5.29898263902049637686e-01, 3.96477026919691888374e-01], \
747  [5.09341394411353398652e-01, 5.27587784741906373753e-01], \
748  [3.83357765602250710746e-01, 5.00136755768606722228e-01], \
749  [3.56039930721699426908e-01, 3.36184449059521772707e-01], \
750  [4.07998819168302107041e-01, 4.84715680358626666013e-01], \
751  [5.34000599847052392910e-01, 4.52482727883613322639e-01], \
752  [4.65369231123054283294e-01, 5.10699601974094807844e-01], \
753  [4.49840837461705556066e-01, 5.14757508008339526029e-01], \
754  [4.25054050545161377084e-01, 4.99993425865483398507e-01], \
755  [4.11247106950246243962e-01, 5.87605442354759754942e-01], \
756  [3.99396207823983662166e-01, 3.70381925099628916964e-01], \
757  [5.86435108943415439597e-01, 2.25414568848404717194e-01], \
758  [4.66116610314162904682e-01, 5.62078568429662084327e-01], \
759  [6.62206975488600524393e-01, 4.61596036129736431164e-01], \
760  [6.13252755857157660913e-01, 4.27891707376906127447e-01], \
761  [5.37304376499337821294e-01, 3.45132192797247605576e-01], \
762  [4.85813514464981499597e-01, 5.40147915113104559737e-01], \
763  [7.45814362988501455831e-01, 5.81451293784067568815e-01], \
764  [4.62276648304203230389e-01, 3.40488029021211224823e-01], \
765  [3.20186768577634117694e-01, 8.10647257389290554208e-01], \
766  [4.29635916512322579841e-01, 4.16945642921743131470e-01], \
767  [4.24244943628199921992e-01, 4.79597955580366774875e-01], \
768  [3.39768178186519276274e-01, 4.60200975897827102568e-01], \
769  [5.51178516190079514914e-01, 6.27390170081974618554e-01], \
770  [5.80682806507316739975e-01, 5.78139130284090474454e-01], \
771  [4.72760252008954662273e-01, 5.39385934868878424986e-01], \
772  [5.76258286695326860105e-01, 5.54819649118707181046e-01], \
773  [4.66242991410796558949e-01, 7.00670369961674976977e-01], \
774  [5.69782070014676955694e-01, 5.01915618325195156402e-01], \
775  [6.15495241920526181545e-01, 5.66986486707196757351e-01], \
776  [5.64982875333970846476e-01, 6.27371548747195473261e-01], \
777  [5.31727517017306694491e-01, 5.03229917896156786483e-01], \
778  [6.13167846208324318624e-01, 5.95945151373998283084e-01], \
779  [5.87434247795120212388e-01, 5.42026646061066430526e-01], \
780  [4.75272596427637639138e-01, 4.90165111534786646086e-01], \
781  [3.68931315099309098393e-01, 4.12486307855828293611e-01], \
782  [6.20507497144343167506e-01, 6.93352660805580445214e-01], \
783  [6.39294994728640153525e-01, 4.94659919691876781567e-01], \
784  [4.02043507385773601914e-01, 6.71305613997413841432e-01], \
785  [5.22697778966122128530e-01, 5.21661556577861507122e-01], \
786  [3.53911380544009834814e-01, 4.54393133315914465875e-01], \
787  [5.62490683319461615142e-01, 3.59911777354150475006e-01], \
788  [6.91472827803956580084e-01, 5.68301752445123709023e-01], \
789  [5.35875472921310769259e-01, 5.26726525103310305731e-01], \
790  [5.52829151266300278245e-01, 5.61265119966659287165e-01], \
791  [5.96796888870080755041e-01, 5.78794822549548060309e-01], \
792  [5.76945436110144038722e-01, 5.48127233041602490715e-01], \
793  [2.85209584611355149164e-01, 5.07016596472997127520e-01], \
794  [3.26000644402749450990e-01, 6.37389328708671043522e-01], \
795  [3.43418129143308825668e-01, 5.44538966392076217993e-01], \
796  [4.05169044233279262990e-01, 6.19552556672839260798e-01], \
797  [4.37062985399566950040e-01, 5.57243445003400172943e-01], \
798  [5.61660667449274453311e-01, 5.19154865260106346270e-01], \
799  [5.54471453466855779268e-01, 5.40980808567386506347e-01], \
800  [6.64799398916726569375e-01, 3.57987235684767979293e-01], \
801  [4.67280596407086745714e-01, 5.48620300570930474748e-01], \
802  [4.89404730209621885439e-01, 5.21102832802098570042e-01], \
803  [4.93303258662853294503e-01, 5.37711507217415118909e-01], \
804  [4.83773254908907879290e-01, 3.63240153062789450367e-01], \
805  [5.91428220469527254899e-01, 6.28735124552540880494e-01], \
806  [4.17555396745937223990e-01, 4.83130887924887619800e-01], \
807  [4.83404677100715385318e-01, 6.68084614769383966504e-01], \
808  [5.00966051895138764216e-01, 4.70030031089552435830e-01], \
809  [5.74253485786466066898e-01, 4.67262841924776906044e-01], \
810  [5.22948451255199953103e-01, 5.59778901736491252272e-01], \
811  [4.94397223405570573895e-01, 3.72771175445750002631e-01], \
812  [6.71072280569977253073e-01, 5.14966293412005504671e-01], \
813  [5.73519739465557121250e-01, 4.53087741724333137316e-01], \
814  [3.36322238323480793287e-01, 6.32537884617807133480e-01], \
815  [3.00317259540539560625e-01, 5.33200583302151920329e-01], \
816  [5.84335695621161055335e-01, 3.78764982666977778614e-01], \
817  [4.84895488057239365531e-01, 3.95914755967644915735e-01], \
818  [4.61607133464748242702e-01, 4.80598625717116090250e-01], \
819  [5.53861107742167124712e-01, 6.02718287450119682980e-01], \
820  [5.01375800573193974863e-01, 4.38792699549606035614e-01], \
821  [4.94811849332340902841e-01, 5.00599937519021875865e-01], \
822  [4.86424021884938329041e-01, 4.76675651336135597358e-01], \
823  [4.72487544660013580877e-01, 4.56454549852971180890e-01], \
824  [5.93062762755124595060e-01, 6.45261684634491516910e-01], \
825  [7.00216833126060089754e-01, 5.07128666876169087452e-01], \
826  [3.50323057853994535016e-01, 4.13969024967570431439e-01], \
827  [5.88945742978277841928e-01, 7.94008041538321496233e-01], \
828  [4.78430183399679465062e-01, 4.48344348263659153719e-01], \
829  [3.35227770222195797789e-01, 4.73007066605536319326e-01], \
830  [4.50067592102151525779e-01, 4.10182718608432861362e-01], \
831  [4.50201651356918364222e-01, 6.99683796908654120905e-01], \
832  [6.00499769236015334961e-01, 4.64415200452968468525e-01], \
833  [5.20297321855791583545e-01, 5.48050266617337245023e-01], \
834  [4.35082801226731652466e-01, 5.08640644356024962391e-01], \
835  [4.84608496764687479708e-01, 4.27630699568408156885e-01], \
836  [2.61264212153166197616e-01, 4.43318938674477025508e-01], \
837  [3.97121548376309307926e-01, 5.29359564161431372931e-01], \
838  [3.21806219850749641864e-01, 3.66106042390657970831e-01], \
839  [5.90268607503574016526e-01, 2.94752423674155827893e-01], \
840  [4.66705440416082806276e-01, 5.28676116723679312415e-01], \
841  [4.18400240228433195622e-01, 6.09208182444610835127e-01], \
842  [4.17422473545837668940e-01, 5.39826843995538263599e-01], \
843  [5.03770037775481349662e-01, 4.16731904974894096227e-01], \
844  [7.52394712344015892391e-01, 4.46978652538338849798e-01], \
845  [3.74984784616902211418e-01, 6.20057497393082912573e-01], \
846  [5.12591460510054441890e-01, 5.21651535045365100096e-01], \
847  [7.05557368028142506411e-01, 3.48410459627322477427e-01], \
848  [5.28246054180013913104e-01, 4.62249071988039827996e-01], \
849  [4.46367075832736937002e-01, 5.00094756408537177705e-01], \
850  [4.22457355038798054725e-01, 6.38548724903891473659e-01], \
851  [3.74220286116073164173e-01, 6.05667675783822967439e-01], \
852  [4.33612096871278496213e-01, 5.64574192524026852169e-01], \
853  [3.80669785240405678106e-01, 4.50102943546230260807e-01], \
854  [5.94514887223459576049e-01, 4.74064692880357185789e-01], \
855  [2.90377023406341971956e-01, 4.39888667399021826565e-01], \
856  [6.32986127204559601012e-01, 3.89589602629077547125e-01], \
857  [4.76690449547524486285e-01, 5.18963146375717165881e-01], \
858  [5.17705080351005153538e-01, 5.43992240893429346293e-01], \
859  [6.10521877260667866771e-01, 4.35404420892845922531e-01], \
860  [5.21562616007224422177e-01, 4.40646494455184001282e-01], \
861  [7.40483939683700409518e-01, 5.64639977542016335832e-01], \
862  [4.78334822603458609258e-01, 3.91782326453883833484e-01], \
863  [4.42880159271458406778e-01, 3.91553703728565682951e-01], \
864  [5.53385704205828443669e-01, 5.24911737030022917949e-01], \
865  [5.37186277050013871737e-01, 5.01949659918017543347e-01], \
866  [5.51822263943720026091e-01, 4.19146167827174342957e-01], \
867  [4.87328223831268225741e-01, 3.99044871951897694995e-01], \
868  [3.98599782202883112792e-01, 4.75908757055150288817e-01], \
869  [5.12677928201225596716e-01, 3.43224229088936516607e-01], \
870  [4.71419972872555270715e-01, 3.41795324856455473572e-01], \
871  [6.08844369605983537497e-01, 5.09947654450088827538e-01], \
872  [5.74310789932567455907e-01, 2.81222827418807330702e-01], \
873  [3.84625586293631860357e-01, 6.94205223297199580657e-01], \
874  [4.01564762243857509283e-01, 3.42628586810956980990e-01], \
875  [5.66093819211102466937e-01, 5.30005161510796019009e-01], \
876  [5.56087923292663210972e-01, 5.29637066963864477920e-01], \
877  [3.74085819029282395931e-01, 5.67347173756379996590e-01], \
878  [4.60526970388492051800e-01, 5.08134622985605077794e-01], \
879  [5.90066298044324866190e-01, 4.71400590703630273381e-01], \
880  [5.50325973026136172628e-01, 4.28299796156240142331e-01], \
881  [4.31531933045738225196e-01, 3.98483818401725420344e-01], \
882  [4.46590293269455873570e-01, 5.71221363521023262066e-01], \
883  [3.36732469976669945844e-01, 2.78951124064129529767e-01], \
884  [5.31856564124636221891e-01, 6.97591451665458106568e-01], \
885  [5.56710832442359970784e-01, 5.02785027250385430087e-01], \
886  [5.51653357687510004226e-01, 5.02172295578895311330e-01], \
887  [6.32533475666223532485e-01, 4.85446773636944717278e-01], \
888  [7.26187732622398995908e-01, 5.26293737926135540839e-01], \
889  [4.90563321781255445853e-01, 5.42460757908752366774e-01], \
890  [3.29780692962922894473e-01, 6.46911913651239456335e-01], \
891  [3.73211216431956427364e-01, 5.39531152984178308252e-01], \
892  [6.71953994964559653269e-01, 6.45670942067711695067e-01], \
893  [4.72358058492052090838e-01, 4.45024556015460426295e-01], \
894  [5.96503021931566124181e-01, 4.33544119524873039495e-01], \
895  [5.27120908793078823962e-01, 3.75814217118905169457e-01], \
896  [5.67674836248539427253e-01, 5.71621059421279609225e-01], \
897  [5.45405889066694515854e-01, 5.89050171652798160160e-01], \
898  [4.88308203959856190757e-01, 6.03305606708134600780e-01], \
899  [6.00429345981966955392e-01, 3.86967126945751471734e-01], \
900  [6.35532529407628943297e-01, 5.73778665836572443482e-01], \
901  [6.27793426016365785358e-01, 5.02539842821055016131e-01], \
902  [4.74235226784666341615e-01, 7.42536767895713767373e-01], \
903  [6.57579866474450769331e-01, 4.03780738741062017461e-01], \
904  [5.04191645593167869777e-01, 5.08129211185145868157e-01], \
905  [4.48869764389093983681e-01, 4.32036295408029680232e-01], \
906  [3.41206226930592770863e-01, 4.17214704607352271371e-01], \
907  [2.58584825417205399489e-01, 5.85129900036461148005e-01], \
908  [5.58419453448125269190e-01, 5.95709055020715583240e-01], \
909  [5.44897279904160924957e-01, 5.00442494317657526892e-01], \
910  [4.68738196699171216775e-01, 4.05691722571063229097e-01], \
911  [6.32665157285533963361e-01, 4.35147891855444224340e-01], \
912  [7.05022897481506150008e-01, 4.36957564819460908545e-01], \
913  [4.95895127028880222664e-01, 5.09223907300597522507e-01], \
914  [3.37764112829063711807e-01, 4.56460086585714630569e-01], \
915  [4.20744332402292253725e-01, 4.20859949078575490411e-01], \
916  [4.90580688558680866329e-01, 7.48531545931841790775e-01], \
917  [3.42835459731608449552e-01, 4.95879733158533564374e-01], \
918  [6.48657285598686739192e-01, 5.26992712584969713596e-01], \
919  [3.99945552984382168837e-01, 5.58762600677277565531e-01], \
920  [4.06410356293418040252e-01, 4.20378535738292535839e-01], \
921  [1.49921174167795212551e-01, 4.16602639256878459761e-01], \
922  [4.61060513287259055026e-01, 5.29286651369373917220e-01], \
923  [4.01935684927805403355e-01, 5.39368748478292969750e-01], \
924  [4.69183632138874373574e-01, 6.41474742834394873192e-01], \
925  [4.97773238959356767452e-01, 6.00630286832356974358e-01], \
926  [5.49755822663244408943e-01, 4.26854072728175548690e-01], \
927  [3.97041302855960176466e-01, 3.79827504660550374638e-01], \
928  [6.28279382587286661099e-01, 5.36976583470000101705e-01], \
929  [5.42225330451121201314e-01, 4.32824243056860569201e-01], \
930  [5.12612564610402277054e-01, 5.79678420802207883256e-01], \
931  [6.15747620190215783076e-01, 5.00794539303920260842e-01], \
932  [5.55248407469314253504e-01, 4.45930961402612069389e-01], \
933  [4.45934678819137619854e-01, 4.56332631793337384352e-01], \
934  [3.62612895771244059251e-01, 5.17196029361217557430e-01], \
935  [7.54295518122295449714e-01, 5.11817597381690303493e-01], \
936  [4.98516482237919111853e-01, 3.92688239736903865751e-01], \
937  [3.05576532404981171531e-01, 5.66552221794315635783e-01], \
938  [4.29183552439163840120e-01, 5.34329839004257678425e-01], \
939  [6.97206969677617416359e-01, 5.45176932204889497235e-01], \
940  [2.99261637115406875509e-01, 4.12176544857733473393e-01], \
941  [4.44714621088024231188e-01, 5.95436328287025418149e-01], \
942  [4.90214089759763604892e-01, 4.96410655117653865087e-01], \
943  [5.72162624360779359378e-01, 5.84267009682075899590e-01], \
944  [4.42578143527593836914e-01, 4.10736953151776718052e-01], \
945  [4.63951767167387563173e-01, 4.78834096643430351392e-01], \
946  [5.86288920497779919572e-01, 5.19865169891990164253e-01], \
947  [6.49626202432702415379e-01, 4.27369044805422093614e-01], \
948  [5.81527982617973449031e-01, 6.37203029446574809036e-01], \
949  [4.47920349651047600137e-01, 5.10192351374709751610e-01], \
950  [4.93983963535339298812e-01, 4.70157483353311034247e-01], \
951  [3.77318422440110157190e-01, 4.49399367184877496229e-01], \
952  [2.87235875424742159723e-01, 4.11505373575116628615e-01], \
953  [5.50179531968435719946e-01, 4.86309925524349262460e-01], \
954  [3.85758603421205881201e-01, 5.83407249683705275700e-01], \
955  [4.45075980793802616908e-01, 3.73253663139675895266e-01], \
956  [3.60219279746184950497e-01, 4.44854354423687814446e-01], \
957  [3.21958978012039875871e-01, 5.39017728018995945227e-01], \
958  [3.64004013897022971058e-01, 5.16350368845544305252e-01], \
959  [5.51386377146754091960e-01, 6.49409736892533118180e-01], \
960  [6.40517857968303072624e-01, 3.85049932685995577319e-01], \
961  [4.93026417348534473639e-01, 4.15299168293124798534e-01], \
962  [4.64327748385072014425e-01, 5.70109800337194161379e-01], \
963  [5.26705722680008925352e-01, 5.29415335882622795083e-01], \
964  [5.66492949780148746797e-01, 5.68104390324680519342e-01], \
965  [4.48683208050216497664e-01, 6.21586039499156584043e-01], \
966  [5.80045217314679839582e-01, 5.00652180643269439919e-01], \
967  [6.64991003406614877846e-01, 6.30381959071834141461e-01], \
968  [5.72011831046905117049e-01, 5.45415947326243655269e-01], \
969  [6.88049771152750677672e-01, 4.80255046474790669997e-01], \
970  [5.39236452848186220699e-01, 5.33942123691799275242e-01], \
971  [4.86293068623146196305e-01, 4.68700794611687621138e-01], \
972  [5.28005184697102669666e-01, 5.31301302982344569870e-01], \
973  [4.01421685706922548587e-01, 4.94541378666363551364e-01], \
974  [5.52325956476094948044e-01, 4.65395701328421340648e-01], \
975  [6.21535502708351561552e-01, 4.69082146802636212879e-01], \
976  [5.02965358805561257860e-01, 4.55344383051408396756e-01], \
977  [6.40474724347427470938e-01, 3.86375447696196805403e-01], \
978  [5.41980253541221812519e-01, 6.33432820720432498973e-01], \
979  [4.73500828663969697274e-01, 3.23112421026107932143e-01], \
980  [5.18288916786893372191e-01, 3.40838814304430637314e-01], \
981  [5.63666103965494880157e-01, 3.52379553324429051209e-01], \
982  [3.91040090543047613725e-01, 3.92554929161510468560e-01], \
983  [4.70338218536363039668e-01, 5.06578474607386697315e-01], \
984  [6.41081419981162081712e-01, 5.27872722571091079757e-01], \
985  [4.63690662287753685433e-01, 4.73095367222673091057e-01], \
986  [5.95758303411160095031e-01, 5.64117791121399370091e-01], \
987  [4.94565618777793758465e-01, 6.26462635105242027223e-01], \
988  [5.61982917773352963486e-01, 6.78013486732686354586e-01], \
989  [5.39809245663532277781e-01, 5.60868819781139116287e-01], \
990  [3.79665377877196452694e-01, 5.59432177402899188934e-01], \
991  [6.19122830169800408839e-01, 4.71964203259209513774e-01], \
992  [2.65778590824863658604e-01, 4.09319552178121659480e-01], \
993  [4.58601081528966558754e-01, 4.28610441748039083798e-01], \
994  [4.27357610007736365976e-01, 5.17314029293535981857e-01], \
995  [5.37381922283553969955e-01, 4.89058706456846736810e-01], \
996  [5.73026144283665161971e-01, 4.93579584315165409425e-01], \
997  [4.85603639796837849296e-01, 5.40907566700687736372e-01], \
998  [5.26664926005695588351e-01, 5.24238146476593058765e-01], \
999  [4.04730400586538086039e-01, 4.61683640017666763189e-01], \
1000  [4.97672714642487246106e-01, 4.36633088437039740271e-01], \
1001  [4.76177608895407611378e-01, 3.43441000913482230583e-01], \
1002  [6.25223743090656869370e-01, 4.02703877758036621337e-01], \
1003  [4.81743501193899303914e-01, 5.59495984153994929677e-01], \
1004  [5.47709188447576766912e-01, 5.40400806857994742138e-01], \
1005  [4.05781923995805038352e-01, 6.07974930374977962089e-01], \
1006  [4.77014547650079612229e-01, 6.82997035364976912142e-01], \
1007  [4.47306617339698009417e-01, 4.01976281775054511414e-01], \
1008  [4.31866196980101535452e-01, 4.80036080038968970829e-01], \
1009  [5.59784505544124955101e-01, 3.89653339995100711501e-01], \
1010  [3.69255018141233848361e-01, 5.65033344971756723574e-01], \
1011  [5.74768055187542037388e-01, 5.66830756966039572831e-01], \
1012  [4.50289694499269366190e-01, 4.34381824324567733520e-01], \
1013  [5.88111386384680412398e-01, 3.41013638040327915490e-01], \
1014  [6.82673389524956819585e-01, 5.72422172471643064817e-01], \
1015  [4.66783249143066014675e-01, 7.61466451739039262847e-01], \
1016  [4.89598011977145419760e-01, 3.78784451965257062955e-01], \
1017  [3.73197100303855000547e-01, 6.19562739874333301415e-01], \
1018  [4.00550098625487349668e-01, 5.87784979624894399208e-01], \
1019  [3.49267829106193694599e-01, 4.98573225989105639488e-01], \
1020  [5.62488007322521577080e-01, 5.51361362935091969817e-01], \
1021  [4.01358784366038279234e-01, 6.17134088036450090264e-01], \
1022  [4.13022710165810214011e-01, 3.30168982468085014936e-01], \
1023  [4.64686246389388879496e-01, 4.67906452780505632827e-01], \
1024  [5.51991766853311194296e-01, 4.37705763014801241262e-01], \
1025  [3.88102610313420248733e-01, 3.83832234823609286245e-01], \
1026  [3.98737528640876526254e-01, 5.37444369976832647673e-01], \
1027  [5.95328375175443347267e-01, 5.73431423038284870941e-01], \
1028  [3.88257497550217323123e-01, 5.14059858486109133580e-01], \
1029  [5.04863140527336495822e-01, 4.51446458435778519291e-01], \
1030  [6.50265146807304184051e-01, 4.97782757622688531995e-01], \
1031  [4.59280355521878014269e-01, 3.57802042670019915249e-01], \
1032  [3.54394444075298409302e-01, 5.46100202971736670143e-01], \
1033  [7.37412852658540396433e-01, 4.92660349856638535293e-01], \
1034  [4.76657325437819634484e-01, 3.61396895660130113015e-01], \
1035  [6.41492925325354845789e-01, 4.16953750816718815564e-01], \
1036  [4.80866463579334491030e-01, 4.68369788378654172689e-01], \
1037  [6.11865961032596272773e-01, 5.09582969454834944223e-01], \
1038  [4.44827028399928714464e-01, 6.17326138336828589281e-01], \
1039  [3.80508802213145536086e-01, 4.28587677359055563286e-01], \
1040  [5.60075969674214801941e-01, 5.42736346706122918526e-01], \
1041  [5.99355966896555125700e-01, 4.96673975483510166118e-01], \
1042  [4.03259510059256920389e-01, 4.77701048005833683874e-01], \
1043  [6.86264916278657488569e-01, 3.92872315673204075548e-01], \
1044  [5.59938065113621763480e-01, 3.44857178221207760771e-01], \
1045  [4.62755221970736430048e-01, 5.49344080836453474426e-01], \
1046  [5.15243864211035407230e-01, 4.94415406474638607914e-01], \
1047  [5.70059649609089613698e-01, 4.53297955862518253678e-01], \
1048  [4.26286288659527723421e-01, 5.18763418144311816427e-01], \
1049  [4.96943189810205743218e-01, 5.67516579489903860711e-01], \
1050  [3.84680437156342813765e-01, 4.89137684250132764863e-01], \
1051  [4.68588192437881356778e-01, 4.62113207143274307143e-01], \
1052  [6.12957578334281660837e-01, 4.49838986476400526371e-01], \
1053  [5.97615180788182653870e-01, 4.92699340479273995008e-01], \
1054  [4.47282354674083393320e-01, 5.77007470669912869710e-01], \
1055  [5.86833157036939501161e-01, 4.92517923056862427789e-01], \
1056  [3.10556918879802801303e-01, 4.95004141718429213626e-01]]
1057 
1058 
1059 def loadMatrixFromOperation(numGridPoints, op):
1060  alpha = DataVector(numGridPoints)
1061  alpha.setAll(0.0)
1062 
1063  result = DataVector(numGridPoints)
1064  ans = np.ndarray((numGridPoints, numGridPoints))
1065  for i in range(numGridPoints):
1066  alpha[i] = 1.0
1067  op.mult(alpha, result)
1068  ans[:, i] = result.array()
1069  alpha[i] = 0.0
1070 
1071  return ans
1072 
1073 
1074 def computeMassMatrix(grid):
1076  return A, loadMatrixFromOperation(grid.getSize(), A)
1077 
1078 
1079 def computeInterpolationMatrix(grid):
1080  gridStorage = grid.getStorage()
1081  numDims = gridStorage.getDimension()
1082  grid_points = np.ndarray((gridStorage.getSize(),
1083  numDims))
1084  x = DataVector(numDims)
1085  for i in range(gridStorage.getSize()):
1086  gridStorage.getCoordinates(gridStorage.getPoint(i), x)
1087  grid_points[i, :] = x.array()
1088  grid_points_vec = DataMatrix(grid_points)
1089 
1090  if grid.getType() in multipleEvalNaiveGridTypes:
1091  B_op = createOperationMultipleEvalNaive(grid, grid_points_vec)
1092  else:
1093  # use standard approach
1094  B_op = createOperationMultipleEval(grid, grid_points_vec)
1095 
1096  return loadMatrixFromOperation(grid.getSize(), B_op)
1097 
1098 
1099 def computeRegularizationMatrix(grid):
1100  C = createOperationLaplace(grid)
1101  m = DataMatrix(grid.getStorage().getSize(), grid.getStorage().getSize())
1102  C_test = createOperationLaplaceExplicit(m, grid)
1103  C_matrix = loadMatrixFromOperation(grid.getSize(), C)
1104  m.sub(DataMatrix(C_matrix))
1105  print(m)
1106  return C, C_matrix
1107 
1108 
1109 def cvxopt_solve_qp(P, q, G=None, h=None, A=None, b=None):
1110  # G = G.T
1111  P = .5 * (P + P.T) # make sure P is symmetric
1112  args = [matrix(P), matrix(q)]
1113  if G is not None:
1114  args.extend([matrix(G), matrix(h)])
1115  if A is not None:
1116  args.extend([matrix(A), matrix(b)])
1117  sol = cvxopt.solvers.qp(*args)
1118  if 'optimal' not in sol['status']:
1119  return None
1120  print(sol)
1121  print("P", P)
1122  print("G", G)
1123  print("G", matrix(G))
1124  alpha = np.array(sol['x']).reshape((P.shape[1],))
1125  print(np.dot(G, alpha))
1126  print("q", q)
1127  return np.array(sol['x']).reshape((P.shape[1],))
1128 
1129 
1130 def quadprog_solve_qp(P, q, G=None, h=None, A=None, b=None):
1131  qp_G = .5 * (P + P.T) # make sure P is symmetric
1132  qp_a = -q
1133  if A is not None:
1134  qp_C = -np.vstack([A, G]).T
1135  qp_b = -np.hstack([b, h])
1136  meq = A.shape[0]
1137  else: # no equality constraint
1138  qp_C = -G.T
1139  qp_b = -h
1140  meq = 0
1141  print("qp_G", qp_G)
1142  print("qp_a", qp_a)
1143  print("qp_C", qp_C)
1144  print("qp_b", qp_b)
1145  x, f, _, iterations, _, _ = quadprog.solve_qp(qp_G, qp_a, qp_C, qp_b, meq)
1146 
1147  print(iterations, f)
1148  return x
1149 
1150 
1151 def solve(trainSamples, gridType, level, lmbd, solver="cvxopt"):
1152  # ------------------------------------------------------------
1153  # load grid
1154  numDims = trainSamples.shape[1]
1155  gridConfig = RegularGridConfiguration()
1156  gridConfig.dim_ = numDims
1157  gridConfig.level_ = level
1158  gridConfig.maxDegree_ = 7
1159  gridConfig.type_ = Grid.stringToGridType(gridType)
1160 
1161  grid = Grid.createGrid(gridConfig)
1162  gridStorage = grid.getStorage()
1163  grid.getGenerator().regular(level)
1164  print(("gridStorage:", gridStorage.getSize()))
1165  print(("numDims:", numDims))
1166  print(("trainSamples.shape[0]:", trainSamples.shape[0]))
1167 
1168  # ------------------------------------------------------------
1169  # prepare matrices for least squares
1170  A_op, A = computeMassMatrix(grid)
1171  C_op, C = computeRegularizationMatrix(grid)
1172 
1173  trainSamples_matrix = DataMatrix(trainSamples)
1174 
1175  if grid.getType() in multipleEvalNaiveGridTypes:
1176  B_op = createOperationMultipleEvalNaive(grid, trainSamples_matrix)
1177  else:
1178  # use standard approach
1179  B_op = createOperationMultipleEval(grid, trainSamples_matrix)
1180 
1181  sle = DensitySystemMatrix(A_op, B_op, C_op, lmbd, trainSamples.shape[0])
1182  b = DataVector(gridStorage.getSize())
1183  sle.generateb(b)
1184  b = b.array()
1185 
1186  # ------------------------------------------------------------------------
1187  # prepare matrices for quadratic programming
1188  M = A + lmbd * C
1189  P = np.dot(M.T, M)
1190  ew, v = np.linalg.eig(C)
1191  # print(C)
1192  print("Eigenvalues:", ew)
1193  if (any(ew <= 0.0)):
1194  print("Negative Eigenvalue found !!!")
1195  q = np.dot(b, M).reshape((b.shape[0],))
1196  G = computeInterpolationMatrix(grid)
1197  print(G)
1198  h = np.zeros((grid.getSize(),)).T
1199  alpha = [18.903209 , -9.10141713, -9.01883182, 0.10914204, -1.17484387, -0.27891415, 0.15920611, -9.38665655, -9.00823174, -0.03247397, -2.24949755, -1.57653802, -0.09309876, 5.13592933, 4.54897953, 4.66893825, 4.31965063]
1200  # solve
1201  if solver == "quadprog":
1202  x = quadprog_solve_qp(P, q, G, h)
1203  else:
1204  x = cvxopt_solve_qp(P, q, G, h)
1205  print("residual")
1206  print(np.dot(M, -x) - b)
1207  print(np.dot(G, -x))
1208  print(x)
1209 
1210  # ------------------------------------------------------------
1211  return grid, -x
1212 
1213 
1214 
1215 
1216 if __name__ == "__main__":
1217  # parse the input arguments
1218  parser = ArgumentParser(description='Get a program and run it with input')
1219  parser.add_argument('--version', action='version', version='%(prog)s 1.0')
1220  parser.add_argument('--numDims', default=2, type=int, help="dimensionality")
1221  parser.add_argument('--gridType', default="linear", type=str, help="define which sparse grid should be used (poly, polyClenshawcCurtis, polyBoundary, modPoly, modPolyClenshawCurtis, ...)")
1222  parser.add_argument('--level', default=3, type=int, help="level of regular sparse grid")
1223  parser.add_argument('--lmbd', default=0.0, type=float, help="regularization parameter")
1224  parser.add_argument('--solver', default="cvxopt", type=str, help="define which solver should be used for quadratic programming")
1225  parser.add_argument('--makePositive', default=False, action='store_true', help='make density positive')
1226  args = parser.parse_args()
1227 
1228  # ------------------------------------------------------------
1229  # load density
1230  mean = 0.5
1231  var = 0.1
1232  np.random.seed(1234567)
1233 
1234  if args.numDims == 1:
1235  U = Normal(mean, var, 0, 1)
1236  trainSamples = np.array([U.rvs(1000)]).T
1237  testSamples = np.array([U.rvs(1000)]).T
1238  else :
1239  U = J([Normal(mean, var, 0, 1) for _ in range(args.numDims)])
1240  trainSamples = U.rvs(1000)
1241  testSamples = U.rvs(1000)
1242  # trainSamples = np.array(getSamples())
1243  # ------------------------------------------------------------
1244  # solve the optimization problem
1245  print("SGDE...", end=' ')
1246  dist_sgde = SGDEdist.byLearnerSGDEConfig(trainSamples,
1247  config={"grid_level": args.level,
1248  "grid_type": args.gridType,
1249  "refinement_numSteps": 0,
1250  "refinement_numPoints": 10,
1251  "solver_threshold": 1e-15,
1252  "solver_verbose": True,
1253  "regularization_type": "Laplace",
1254  "crossValidation_lambda": args.lmbd,
1255  "crossValidation_enable": False,
1256  "crossValidation_silent": True,
1257  "sgde_makePositive": args.makePositive,
1258  "sgde_makePositive_candidateSearchAlgorithm": "intersections",
1259  "sgde_makePositive_interpolationAlgorithm": "interpolateBoundaries1d",
1260  "sgde_makePositive_generateConsistentGrid": False,
1261  "sgde_makePositive_verbose": False,
1262  "sgde_unitIntegrand": False}, bounds=U.getBounds())
1263  nodalValues = dehierarchize(dist_sgde.grid, dist_sgde.alpha)
1264  print("is positive? %s (min=%f)" % ("Yes" if np.all(nodalValues >= 0) else "Nope",
1265  np.min(nodalValues)))
1266  print("-" * 80)
1267  print("SGDE pos...")
1268  grid, alpha = solve(trainSamples, args.gridType, args.level, args.lmbd,
1269  solver=args.solver)
1270  print(("alpha:", alpha))
1271  nodalValues = dehierarchize(grid, alpha)
1272  # print nodalValues
1273  print("is positive? %s (min=%f)" % ("Yes" if np.all(nodalValues >= 0) else "Nope",
1274  np.min(nodalValues)))
1275  if args.makePositive:
1276  alpha_vec = DataVector(alpha)
1277  createOperationMakePositive(MakePositiveCandidateSearchAlgorithm_Intersections,
1278  MakePositiveInterpolationAlgorithm_InterpolateBoundaries1d,
1279  False, False).makePositive(grid, alpha_vec)
1280  alpha = alpha_vec.array()
1281 
1282  dist_sgde_pos = SGDEdist(grid, alpha,
1283  trainData=trainSamples,
1284  bounds=U.getBounds())
1285 
1286  print("cross entropy: %f, %f" % (dist_sgde.crossEntropy(testSamples),
1287  dist_sgde_pos.crossEntropy(testSamples)))
1288 
1289  if args.numDims == 1:
1290  fig = plt.figure()
1291  plotDensity1d(U, label=r"analytic")
1292 # plotDensity1d(dist_sgde, label=r"SGDE")
1293  plotSG1d(dist_sgde.grid, dist_sgde.alpha, label=r"SGDE",
1294  show_grid_points=True)
1295  plotSG1d(dist_sgde_pos.grid, dist_sgde_pos.alpha, label=r"SGDE pos",
1296  show_grid_points=True)
1297 # plotDensity1d(dist_sgde_pos, label=r"SGDE pos")
1298  insert_legend(fig, loc="right", ncol=1)
1299  elif args.numDims == 2:
1300  fig = plt.figure()
1301  plotDensity2d(U)
1302  plt.title("analytic")
1303  fig = plt.figure()
1304  plotSG2d(dist_sgde.grid, dist_sgde.alpha, addContour=True,
1305  show_negative=True, show_grid_points=True)
1306 # plotDensity2d(dist_sgde)
1307  plt.title(r"SGDE (\#gp=%i, vol=%g)" % (dist_sgde.grid.getSize(),
1308  dist_sgde.vol))
1309  fig = plt.figure()
1310  plotSG2d(dist_sgde_pos.grid, dist_sgde_pos.alpha, addContour=True,
1311  show_negative=True, show_grid_points=True)
1312 # plotDensity2d(dist_sgde_pos)
1313  plt.title(r"SGDE pos (\#gp=%i, vol=%g)" % (dist_sgde_pos.grid.getSize(),
1314  dist_sgde_pos.vol))
1315 
1316  if args.numDims < 3:
1317  plt.show()