SG++-Doxygen-Documentation
positive_density.py

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

'''
Created on Sep 4, 2017
@author: franzefn
'''
from argparse import ArgumentParser
import matplotlib.pylab as plt
import numpy as np
import cvxopt
import quadprog
from cvxopt.base import matrix
from pysgpp import (GridType_Bspline, GridType_BsplineBoundary,
GridType_BsplineClenshawCurtis, GridType_Linear,
GridType_LinearBoundary, GridType_LinearClenshawCurtis,
GridType_LinearClenshawCurtisBoundary,
GridType_LinearL0Boundary, GridType_ModBspline,
GridType_ModBsplineClenshawCurtis,
GridType_ModLinearClenshawCurtis,
GridType_ModPolyClenshawCurtis, GridType_Poly,
GridType_PolyBoundary, GridType_PolyClenshawCurtis,
GridType_PolyClenshawCurtisBoundary)
from pysgpp.extensions.datadriven.uq.dists import J, Normal
from pysgpp.extensions.datadriven.uq.dists.SGDEdist import SGDEdist
from pysgpp.extensions.datadriven.uq.operations.sparse_grid import (createGrid,
dehierarchize)
from pysgpp.extensions.datadriven.uq.plot.colors import insert_legend
from pysgpp.extensions.datadriven.uq.plot.plot1d import plotDensity1d, plotSG1d
from pysgpp.extensions.datadriven.uq.plot.plot2d import plotDensity2d, plotSG2d
from pysgpp.pysgpp_swig import (DataMatrix, DataVector, DensitySystemMatrix,
Grid,
MakePositiveCandidateSearchAlgorithm_Intersections,
MakePositiveInterpolationAlgorithm_InterpolateBoundaries1d,
RegularGridConfiguration,
createOperationLaplace,
createOperationLaplaceExplicit,
createOperationLTwoDotProduct,
createOperationMakePositive,
createOperationMultipleEval,
createOperationMultipleEvalNaive)
multipleEvalNaiveGridTypes = [GridType_Bspline,
GridType_BsplineClenshawCurtis,
GridType_BsplineBoundary,
GridType_ModBsplineClenshawCurtis,
GridType_ModBspline,
GridType_LinearClenshawCurtis,
GridType_LinearClenshawCurtisBoundary,
GridType_ModLinearClenshawCurtis,
GridType_PolyClenshawCurtis,
GridType_PolyClenshawCurtisBoundary,
GridType_ModPolyClenshawCurtis]
def getSamples():
return [[2.82323528526134293060e-01, 4.44821979348490936790e-01], \
[6.59563641710053216727e-01, 5.18168023604723249065e-01], \
[4.66204974971183350174e-01, 4.95399047706179262995e-01], \
[6.03526748539960355977e-01, 2.43268593292003454387e-01], \
[5.62533284596697602531e-01, 4.13446014803317773989e-01], \
[4.63253051381150471322e-01, 5.27242448822871967451e-01], \
[4.63228561454141485321e-01, 4.79068206886379688303e-01], \
[6.15016438560158529292e-01, 7.65841887254424591447e-01], \
[3.27390132759550089858e-01, 6.03578470511489939554e-01], \
[5.35401593038080436671e-01, 5.09572598797057851883e-01], \
[5.79763581036643715905e-01, 4.88509624749233817287e-01], \
[4.65176953338734489041e-01, 4.03396701047219141678e-01], \
[5.52854915372480326674e-01, 4.43624000760940717658e-01], \
[5.60710066030899234590e-01, 5.66610999883632948659e-01], \
[4.74441318074539153393e-01, 4.48279077549398552449e-01], \
[5.79704674489956550687e-01, 4.00429209403681540813e-01], \
[3.27418832211618604511e-01, 2.64694071058703350730e-01], \
[4.68272041096344959765e-01, 5.00686521541746643038e-01], \
[4.49396918966004310647e-01, 4.00441220113194606967e-01], \
[6.03754938081578762521e-01, 4.55931072222370947777e-01], \
[5.54996201469469818690e-01, 5.93871279984109601280e-01], \
[3.99711447601519165307e-01, 5.87033198350718321556e-01], \
[3.55432928275846271582e-01, 4.71746827190755335657e-01], \
[4.03990862343044987437e-01, 4.97874665282332817817e-01], \
[6.22513676177041563875e-01, 5.55383787785616034327e-01], \
[6.06734863458273654402e-01, 4.48026905189891244685e-01], \
[3.44689894316432154930e-01, 5.51499335564391124365e-01], \
[6.76901723651494480194e-01, 6.09192043743277511503e-01], \
[5.29252594074292481707e-01, 4.53921891869377369666e-01], \
[6.21287272061460837946e-01, 4.67386131667262283429e-01], \
[4.73474737535302225844e-01, 3.31366215716122680668e-01], \
[4.22058515319797489251e-01, 5.85655288984127553320e-01], \
[6.09157879244109023986e-01, 5.01029785281102313377e-01], \
[4.08589882279565885792e-01, 5.76247323139115308344e-01], \
[5.27615405966234463087e-01, 4.88837230398926847474e-01], \
[5.05141336533592610891e-01, 5.29409262848938855228e-01], \
[5.83778799053734198665e-01, 5.69872955233921119067e-01], \
[3.80508858545986206057e-01, 5.33938511026411433136e-01], \
[4.26989163363941104379e-01, 4.99783224537833747902e-01], \
[2.77657079118135974305e-01, 4.48032704403153514416e-01], \
[5.64447645543315279504e-01, 6.13323413563593433651e-01], \
[5.41492740515424397785e-01, 6.40342091101794630426e-01], \
[4.82003121732528960752e-01, 5.99363609581597511777e-01], \
[6.54269883937702245724e-01, 6.36467895969205832429e-01], \
[4.13590985767662233652e-01, 3.94731815928818730033e-01], \
[5.31066662541306078182e-01, 5.59649085735584139734e-01], \
[4.89172644290206848350e-01, 3.17628608093783459942e-01], \
[6.00813427026992252777e-01, 6.91555157222830896302e-01], \
[5.20366674074399515604e-01, 5.25855130987863517156e-01], \
[5.15689487911333621639e-01, 4.18563819379177304292e-01], \
[5.93054938632196937398e-01, 3.58492937309348502772e-01], \
[6.05703007289590589224e-01, 3.83423415212446272449e-01], \
[4.22073773434940346938e-01, 6.92815098137713025750e-01], \
[4.93668205111681746011e-01, 4.52106280723475362215e-01], \
[5.57959981775731583831e-01, 4.53986342751327820455e-01], \
[6.38690202622400393651e-01, 4.87626280731206285246e-01], \
[5.63926911955586529501e-01, 5.50628075675901773600e-01], \
[4.28419599266742279209e-01, 2.32220711641033195072e-01], \
[6.37011600755025386711e-01, 6.24416097625345223321e-01], \
[6.40698172583570979555e-01, 5.28949168799838220778e-01], \
[4.01058572553777969993e-01, 4.37153522488303469817e-01], \
[3.73896274277693285715e-01, 6.90767775324495514333e-01], \
[6.38058190548314252410e-01, 4.66687865441837324010e-01], \
[4.33023911535159733432e-01, 3.26636094281103184223e-01], \
[4.62289005103504346827e-01, 6.07633578587638556456e-01], \
[4.77886506906070041012e-01, 4.05849058561468079009e-01], \
[6.02295588810253246237e-01, 4.28194167430882177694e-01], \
[6.89709581384214232003e-01, 3.85921610515795376894e-01], \
[5.33266128300712294319e-01, 3.95018231831404831311e-01], \
[4.97476952515490677964e-01, 5.32720205768360433041e-01], \
[5.06149062612369693426e-01, 4.42412846325333952713e-01], \
[5.54130095992678817218e-01, 5.97398353157845174444e-01], \
[5.37221220469097593408e-01, 4.39531195018293852073e-01], \
[5.37806062213799673799e-01, 4.80398865977266775751e-01], \
[6.63708601639204420763e-01, 4.61699106866552466677e-01], \
[5.81883517852758824773e-01, 5.11205932552821873394e-01], \
[5.99611268489227300371e-01, 6.03548755490235899757e-01], \
[6.01750864907763638456e-01, 3.96395693885778666044e-01], \
[5.02338110870414356057e-01, 4.45566382355120860215e-01], \
[6.16089539610101155631e-01, 4.39002190195454500277e-01], \
[5.18329759739195705670e-01, 3.02503597582994332438e-01], \
[6.95709753576134848352e-01, 3.92430421318656519336e-01], \
[6.38230477821175590236e-01, 5.80589438908979960097e-01], \
[4.75970947731648441614e-01, 5.71461565104856683561e-01], \
[4.95443335163394449339e-01, 5.63078029391573475770e-01], \
[6.91745911035581806381e-01, 4.98786989511684097920e-01], \
[5.14125769230070583937e-01, 4.82871890303890938245e-01], \
[5.78016208854188029420e-01, 5.60769660778909218024e-01], \
[6.10301708480958993164e-01, 5.45145744677789423349e-01], \
[5.82137698464616826222e-01, 5.58503940193971093464e-01], \
[5.68058862628295746511e-01, 4.80240352723810048907e-01], \
[4.71527404574930919523e-01, 7.31342887685912046436e-01], \
[6.22772896559283695161e-01, 6.15645963635931270375e-01], \
[5.21292548068389649529e-01, 3.58782562009150152171e-01], \
[4.73149250437063351171e-01, 6.06326723658032085140e-01], \
[6.34180649160485665483e-01, 4.95869459348795282860e-01], \
[6.15766903775958218681e-01, 5.72648267311623770937e-01], \
[4.71433906780624412125e-01, 5.86185227339111269984e-01], \
[5.07811477158390700559e-01, 4.99500481520775807542e-01], \
[5.42849052556897415656e-01, 3.99798187192303255966e-01], \
[6.92168241070195700004e-01, 4.83591804674389391661e-01], \
[4.71783782194571899016e-01, 4.89029261166165740704e-01], \
[5.74441513033019823808e-01, 5.48225572377734504670e-01], \
[5.06710461951665691593e-01, 5.52121262781411936693e-01], \
[4.89985868466716323333e-01, 5.26362454168844862146e-01], \
[4.76858839864762018568e-01, 5.06916724203052004860e-01], \
[3.56536411381774165363e-01, 3.91219885371895614856e-01], \
[5.13934056226800328737e-01, 5.23903766031397322145e-01], \
[5.64146056220679814608e-01, 4.82009611935206860878e-01], \
[5.63827164341078934662e-01, 4.73148843799598095572e-01], \
[5.53512771303100059583e-01, 4.57202254696707888204e-01], \
[5.74514498307719501113e-01, 3.01318888253176431213e-01], \
[5.04009129109944442604e-01, 5.43756105495633690339e-01], \
[4.66183042865357000206e-01, 4.53545234212080539127e-01], \
[5.20430715530373122490e-01, 5.01693420804508294353e-01], \
[3.88836958384834285862e-01, 4.67744980700718515632e-01], \
[4.38752515609421744891e-01, 3.83947377373001941248e-01], \
[3.63890424394998857061e-01, 4.46353368010112938613e-01], \
[3.82132735531495959513e-01, 7.02813478934167901180e-01], \
[4.52911983635449821861e-01, 4.27068771320536721969e-01], \
[5.62191262852993589583e-01, 3.18264356484957822158e-01], \
[3.52358233197298198469e-01, 4.23583917344959037798e-01], \
[5.15597485152648471463e-01, 4.95243499945933141060e-01], \
[5.16530293954029828818e-01, 3.91083185867766081056e-01], \
[6.38221366394860711857e-01, 4.48729117608363980985e-01], \
[5.73935620428330017795e-01, 5.36395415525092622566e-01], \
[2.34401568021975148515e-01, 5.33322391008283380742e-01], \
[4.22010857326075350393e-01, 5.79421745817609634699e-01], \
[4.31236342467519628840e-01, 5.93266156324380622422e-01], \
[4.56698039073483663675e-01, 4.20854798245542838231e-01], \
[5.51915396637212007924e-01, 5.81926783364762223449e-01], \
[6.23008990816110608257e-01, 5.68016305531502840864e-01], \
[4.86590975884576115718e-01, 7.16394961865632340370e-01], \
[5.59779157275577810005e-01, 5.59479951379460604954e-01], \
[4.98229109776320622238e-01, 5.56349366038764725495e-01], \
[5.67495098496492822449e-01, 4.91711608705192038116e-01], \
[5.59538485367874649512e-01, 6.30342068509558206557e-01], \
[6.01799733176666906687e-01, 4.94794965344383996797e-01], \
[4.17451168993407395469e-01, 5.48038941315700078860e-01], \
[5.06789068477994320006e-01, 4.99232977299898239565e-01], \
[5.27580635066292824575e-01, 4.78432494426922871877e-01], \
[4.06591460914112301506e-01, 3.70734530153121910612e-01], \
[5.44557383574737707832e-01, 4.77048176618953378991e-01], \
[6.65742591222906021642e-01, 4.58781340001268078677e-01], \
[5.27759502691557358389e-01, 6.13973633056682288611e-01], \
[4.20017654572513221556e-01, 4.79942188031884264809e-01], \
[3.74662108261738513448e-01, 4.18907055291505903138e-01], \
[4.22245263081797439497e-01, 4.32969937174081886955e-01], \
[6.69075692425577184252e-01, 5.58627661603355196718e-01], \
[6.73678291056714173557e-01, 6.10512326341617894698e-01], \
[4.96451534243161962667e-01, 3.84288927280498404659e-01], \
[5.78877039600533827013e-01, 5.12938877871353282600e-01], \
[5.10289904882543332576e-01, 5.47864444800510219657e-01], \
[4.62832366316394017147e-01, 6.14131254309285723458e-01], \
[3.54034871053762856263e-01, 4.55366068283777680747e-01], \
[4.48639445719949347957e-01, 4.55465732770615916447e-01], \
[3.55222624574980772039e-01, 4.19831990945003008520e-01], \
[4.97921275249971984067e-01, 5.25698691452226141152e-01], \
[4.63508460330944727090e-01, 5.22830137591500765382e-01], \
[5.43192763680991341779e-01, 5.95456854504520127769e-01], \
[6.26366657853331565420e-01, 5.37269223586259836445e-01], \
[4.42359617127272841675e-01, 6.57713096773060224010e-01], \
[5.08472008616995818642e-01, 5.03624706525210408259e-01], \
[3.49474728777999843476e-01, 2.96348187559314912853e-01], \
[3.34017187884417920962e-01, 4.04182881384369752098e-01], \
[7.56061193969690625849e-01, 4.50740731513627146398e-01], \
[2.44890055252364846616e-01, 3.42269504379038802533e-01], \
[4.06063553623982553820e-01, 5.69603806342837470922e-01], \
[5.76641745210400014088e-01, 4.18001547823896313361e-01], \
[5.42702663759809023070e-01, 5.29813508320097881210e-01], \
[5.71312222705502636977e-01, 7.06047436650011794868e-01], \
[5.10410118694303638343e-01, 5.05234533810221542183e-01], \
[6.09053574841533107431e-01, 5.72101754893720837458e-01], \
[5.40258832899807694972e-01, 4.12999735871979523072e-01], \
[5.02070907188769677276e-01, 5.02536790513801068236e-01], \
[5.26487943563228144583e-01, 3.72229136054290310476e-01], \
[5.85645835684025728440e-01, 4.99613126441276256262e-01], \
[4.31409996953127761188e-01, 6.05511165526086303501e-01], \
[5.42295292825123231850e-01, 4.54044803096795235309e-01], \
[6.03207145905520825124e-01, 2.99644997579124883202e-01], \
[3.67272823936060865968e-01, 5.43768939640276061098e-01], \
[4.66991164519568957569e-01, 6.42153053679254126607e-01], \
[4.92441799843590266583e-01, 5.74675877077314489760e-01], \
[5.62904814939317543754e-01, 2.53101582504432043308e-01], \
[4.46894739716844457966e-01, 3.61893324552099104885e-01], \
[4.33240492727525849936e-01, 4.73906018886606217322e-01], \
[3.16720676874108431065e-01, 6.96703418827466225416e-01], \
[3.52472576438936424648e-01, 5.08967991273674091879e-01], \
[5.39544538605886914162e-01, 4.20411062963345183441e-01], \
[5.30580576089384137184e-01, 3.71013034545012443388e-01], \
[5.71505038645329532798e-01, 4.82012265858213495573e-01], \
[5.08072067407084992929e-01, 4.91772568305330726179e-01], \
[6.29012956511017296002e-01, 5.43316538025798045908e-01], \
[6.21033119341908079747e-01, 5.09532119265924232643e-01], \
[4.57399508812247779233e-01, 7.83071244421002843339e-01], \
[3.64877999198933267166e-01, 2.93622477553766136893e-01], \
[4.73197037119788888049e-01, 1.76017156534430174730e-01], \
[4.99148812668887498223e-01, 4.42451778245321558636e-01], \
[5.73835205714163354429e-01, 6.36188127703045114281e-01], \
[5.14415967984224953291e-01, 3.94787059359308634132e-01], \
[5.98463300452947266628e-01, 4.52776601750019602743e-01], \
[5.86667757335171846655e-01, 6.38736961247790557827e-01], \
[5.85829458251251433687e-01, 4.46911718441089289566e-01], \
[5.60230466513083835700e-01, 6.12071956263377514595e-01], \
[3.68210069421677221868e-01, 5.70330113113991954421e-01], \
[3.42880864741272772811e-01, 3.83173641795270192301e-01], \
[4.53770306362469122430e-01, 5.79358885628654896038e-01], \
[4.20218529679580787839e-01, 4.76366280790096574549e-01], \
[4.96041468851574351984e-01, 5.76952610573550628281e-01], \
[6.26335773171742604681e-01, 6.03371259383763569595e-01], \
[4.31576951682476561700e-01, 3.99947018351854977070e-01], \
[3.85574886389643267659e-01, 3.83247264902042528156e-01], \
[5.02176155470650198431e-01, 4.29936754280557109631e-01], \
[5.15816920676933410306e-01, 6.55787194296590714160e-01], \
[5.28747587784108796782e-01, 5.00562965857515362877e-01], \
[5.19260125532933991543e-01, 5.13528742384992353820e-01], \
[5.00558138614846770409e-01, 2.91424682929092182526e-01], \
[5.91406752818173897523e-01, 3.00465954588633010758e-01], \
[4.40894565845795616266e-01, 4.66290417423352032689e-01], \
[4.76503172006657538251e-01, 4.62166136689261153325e-01], \
[4.31097602055488693384e-01, 4.72901426753047138263e-01], \
[6.13262204352000406260e-01, 5.67167300775533345103e-01], \
[4.99118606890458671455e-01, 6.18252820116466650369e-01], \
[4.15414071500950665694e-01, 3.67862346153773001056e-01], \
[5.76163095994329466087e-01, 4.41796917312664738642e-01], \
[6.33902226195186102586e-01, 5.16458401597194360910e-01], \
[2.20960674458201000725e-01, 5.79475154847235662814e-01], \
[6.38625292655956244836e-01, 6.14026552506694356381e-01], \
[2.47439382842239652405e-01, 5.07241602589663775902e-01], \
[5.55805948533402260914e-01, 6.87105793402274400705e-01], \
[5.67511519000864161910e-01, 5.39243320084448418683e-01], \
[6.09144324397696612650e-01, 4.54554077795741917623e-01], \
[6.15556708753834835868e-01, 5.49568008339409330709e-01], \
[4.09512886583833946030e-01, 4.42180396993778201953e-01], \
[3.36198084372488437133e-01, 5.58628586819683525810e-01], \
[4.52706940186996864561e-01, 7.24911071963657338557e-01], \
[4.79758274485977520563e-01, 4.83355659772464252288e-01], \
[6.03159546771484644800e-01, 5.01297659017088226285e-01], \
[4.40607533050531630092e-01, 5.23133390654039631684e-01], \
[5.13904824031050866395e-01, 4.92051316412889017116e-01], \
[3.48101950803277659929e-01, 4.96914235005659232769e-01], \
[5.01863243911560452659e-01, 4.10923036811280062430e-01], \
[4.38753431330995646853e-01, 4.66030592445363045506e-01], \
[5.00723563593606701971e-01, 6.00677777803259371758e-01], \
[4.94012761300644698270e-01, 7.11116592888453635801e-01], \
[6.28670681744008419400e-01, 4.96914187827123543517e-01], \
[5.77886316953041601074e-01, 4.72193496850487504091e-01], \
[3.64573173095259717158e-01, 5.64211542022866163748e-01], \
[6.26015777339162582393e-01, 7.18941372936092948365e-01], \
[7.06576557450855347042e-01, 5.37115332462707151251e-01], \
[5.02348024935275971892e-01, 4.95545488636584097186e-01], \
[6.72581859580880569993e-01, 5.49553225912887022275e-01], \
[5.20496419156133982575e-01, 5.13733394474496285476e-01], \
[4.57241117468064117713e-01, 6.50401291243286383548e-01], \
[5.63470392784673368425e-01, 5.21702593683155524396e-01], \
[4.14784263749753689954e-01, 4.65905610364224009867e-01], \
[4.51884284890087195574e-01, 6.16544643249907320381e-01], \
[4.72331615428121853739e-01, 5.95342126921208358858e-01], \
[4.64768188743320709300e-01, 6.34007304171575136742e-01], \
[6.49929893577523398740e-01, 4.89051540892011693540e-01], \
[6.40160262017223646858e-01, 5.65841506889876666442e-01], \
[2.86759639274365152328e-01, 2.47598355551993887236e-01], \
[5.75365901383811273462e-01, 5.80301450776809613075e-01], \
[6.45714232394306586471e-01, 4.23167874616792727416e-01], \
[4.04118212661033426869e-01, 6.04926382580318056092e-01], \
[4.95082896805820515951e-01, 5.14061723972686346329e-01], \
[5.43251387221075243694e-01, 5.16256185971387893119e-01], \
[5.58493859685879612265e-01, 5.84750836008630425766e-01], \
[5.94010438524628536783e-01, 5.69586105456286184712e-01], \
[4.51548290335013757790e-01, 5.60412218670692241496e-01], \
[4.89643484154439367906e-01, 4.66791808072996861068e-01], \
[3.34107785371743626346e-01, 2.29686311843964097168e-01], \
[4.96245389541624559726e-01, 6.05141673092112641896e-01], \
[4.33896500781114413670e-01, 6.09015597867428315482e-01], \
[5.29170099278943317778e-01, 5.91441938824789015250e-01], \
[5.99667847910288154267e-01, 4.10163790035011133206e-01], \
[4.82812712433858148842e-01, 6.78549046944508016388e-01], \
[5.50786814967667348597e-01, 3.82893782290483541964e-01], \
[5.09077161422802459967e-01, 5.30757179651897059713e-01], \
[4.82344298263428894469e-01, 4.25002502700869588814e-01], \
[4.05577988447620496615e-01, 4.35789044754351262423e-01], \
[3.90358212044006280816e-01, 4.45939543141330330123e-01], \
[4.09713116278330902187e-01, 4.63391377534048742870e-01], \
[4.73357839553688930501e-01, 3.83216300853277791472e-01], \
[4.38678957884589715288e-01, 4.84930403600143888898e-01], \
[5.06806656955314349666e-01, 5.64557465388137447171e-01], \
[5.62931827382073368682e-01, 5.16442590800013312524e-01], \
[5.49372603392246139364e-01, 4.57612622585903405792e-01], \
[6.57860598839662968906e-01, 3.73702263643812537808e-01], \
[5.31866316169358421817e-01, 5.46633513865759645967e-01], \
[6.37633790052994253728e-01, 5.54185114103629694604e-01], \
[4.15175812473087824106e-01, 3.70435961746397202088e-01], \
[5.13276988458131300241e-01, 5.61486443235535759300e-01], \
[3.15458866624696909753e-01, 3.63112743728578546420e-01], \
[6.67720676994525530468e-01, 4.78085630961942398276e-01], \
[6.15903627329358549503e-01, 5.80818985212707361576e-01], \
[4.55103300501962737545e-01, 4.07408260873026006887e-01], \
[4.80476646987983591064e-01, 7.24506393252495328738e-01], \
[3.67592498053986305173e-01, 5.14521930732628640648e-01], \
[2.82299967051669264961e-01, 4.85775183252041664606e-01], \
[5.24271724637888292264e-01, 4.63344918271363259699e-01], \
[5.87867361609482830254e-01, 6.62698600345525523636e-01], \
[6.34647729016257877710e-01, 2.64473716945087145014e-01], \
[4.59739653523103586341e-01, 5.31438600683785455914e-01], \
[5.09509375772260408866e-01, 5.70838482598964636061e-01], \
[6.07685892354336565369e-01, 5.49067889502232842069e-01], \
[4.73557326058787086964e-01, 5.15732863771976579592e-01], \
[3.56132536322021353570e-01, 5.70862753911207998492e-01], \
[6.70517275066690454643e-01, 4.93461918837379720504e-01], \
[5.49727499306390532396e-01, 6.11056629310288368373e-01], \
[6.21160269274245280258e-01, 4.05631674072662040675e-01], \
[4.45432601178899267858e-01, 4.23178842050428993815e-01], \
[4.46464664932599952785e-01, 6.16937909733852318794e-01], \
[4.15710138005969787045e-01, 7.17870379505014644117e-01], \
[4.18708651460611258610e-01, 6.15580460603601609115e-01], \
[4.47203033736916499841e-01, 6.72675074322066191002e-01], \
[3.70559775524738732599e-01, 4.01037544724849315259e-01], \
[4.10719386238793560118e-01, 3.09728750564337573792e-01], \
[5.28612100290532960223e-01, 5.39693168718548887952e-01], \
[6.48577578375992391813e-01, 4.65940110020357456388e-01], \
[5.66061880624347257829e-01, 3.99557773478394995248e-01], \
[6.37331987608374839205e-01, 6.03885688413282939457e-01], \
[5.57502359842264372247e-01, 7.26469375240116344017e-01], \
[6.38263840004702709408e-01, 4.19253443412916482202e-01], \
[5.43068260920964052119e-01, 5.25467040736798840506e-01], \
[6.74865963153002401675e-01, 5.83372904717977536215e-01], \
[3.94143622227357715015e-01, 6.31280544505497087648e-01], \
[5.49356038548151071055e-01, 4.95721101948969733453e-01], \
[4.04948827679169176541e-01, 3.25176351339588332046e-01], \
[4.53922054460662138808e-01, 3.94545445944285089190e-01], \
[4.20402534084631018807e-01, 4.92800591898942097480e-01], \
[5.58302225508232163875e-01, 6.51619860842617804053e-01], \
[3.69797771191133828328e-01, 4.13120776016572710532e-01], \
[3.36660668021505071756e-01, 4.08191667708686478644e-01], \
[3.99278495977753833390e-01, 4.60919149706127129207e-01], \
[4.91696567163098063880e-01, 5.26083761127478233277e-01], \
[2.84236059348199121555e-01, 3.91391134784578431649e-01], \
[4.71082421236209636373e-01, 3.87045091579742872590e-01], \
[4.67043247020378859968e-01, 3.45495704303324546736e-01], \
[5.55617100703695854236e-01, 4.02618891870753170537e-01], \
[5.10215816523445386821e-01, 4.84578409902436835210e-01], \
[5.63124242779090122824e-01, 4.70910358134329520841e-01], \
[3.86883670506122101518e-01, 4.21466815520252335858e-01], \
[4.42489524493569763575e-01, 3.56479770132254125681e-01], \
[4.29576200275663788730e-01, 4.81868801222945675189e-01], \
[5.16132600743201996885e-01, 5.23746822249464449861e-01], \
[5.72075998797904272664e-01, 5.22481145341158637052e-01], \
[4.63563555421804995849e-01, 4.29056455150805760024e-01], \
[3.56549405747756842366e-01, 5.60009170627828289923e-01], \
[5.64975478188366131427e-01, 4.45318776533236038162e-01], \
[6.23410722907411951610e-01, 5.50538978543324453163e-01], \
[5.58546945371486858178e-01, 5.20216497255418075518e-01], \
[4.31248046341083879351e-01, 4.25601540487264895507e-01], \
[4.50274756177613866281e-01, 5.12781448411971707557e-01], \
[3.41166612124787382854e-01, 3.95472834662120575899e-01], \
[5.04525895581273142732e-01, 4.24654753526811590270e-01], \
[5.23086851081142389930e-01, 4.79837653521961282621e-01], \
[4.62436634885723396593e-01, 5.96245048423728385423e-01], \
[3.86844860019958436403e-01, 4.99078434119866798380e-01], \
[5.04819523452246010642e-01, 6.39532256309030766595e-01], \
[5.92071109601403522404e-01, 3.38769954879249213242e-01], \
[5.02912088457095451943e-01, 5.54999025468041584652e-01], \
[4.28185962585340140762e-01, 4.14152698948049902139e-01], \
[6.84472981658677204209e-01, 6.23528672444143228226e-01], \
[4.18129768306481408580e-01, 6.22366010525804314035e-01], \
[6.10713847097499873406e-01, 4.89595004965756253057e-01], \
[4.66442969598476253612e-01, 4.73697081107705419978e-01], \
[4.73510438074558670518e-01, 4.83397203702028321892e-01], \
[5.60873289144718900623e-01, 2.07634311114496206141e-01], \
[4.69623527063944556925e-01, 5.49585022320058680378e-01], \
[4.19193854603237270329e-01, 4.18699766051738919703e-01], \
[6.44507381707071558274e-01, 5.13298347283283495912e-01], \
[5.01114465587657820222e-01, 5.41817777154608659629e-01], \
[5.92647960497276082847e-01, 2.44788214405423310005e-01], \
[7.59628850128313604095e-01, 3.06981704567211077794e-01], \
[6.00629983153728841394e-01, 3.62903884558825384765e-01], \
[4.66801627683394504409e-01, 5.01481859547299624325e-01], \
[5.32922094395725354232e-01, 6.07987050225014202809e-01], \
[7.08162190515856937445e-01, 3.84571732747907846228e-01], \
[5.43117393653515634355e-01, 2.92173483743872752783e-01], \
[2.86183396569022752143e-01, 5.29076746562621491599e-01], \
[4.06273963862077980291e-01, 5.26562379968132709962e-01], \
[5.60386123386667267532e-01, 5.40868743855847933233e-01], \
[5.27403146300688074888e-01, 5.46461078096388885861e-01], \
[6.16839121895394359996e-01, 6.24130929676627421721e-01], \
[2.87531696754575571973e-01, 4.42174041594830258273e-01], \
[5.07295598045451212599e-01, 4.90169671411083140988e-01], \
[5.00554972364617212222e-01, 2.09636124343439977924e-01], \
[6.71805437354723422594e-01, 5.28273517405856485318e-01], \
[4.66444410025889877325e-01, 6.81507608440521273074e-01], \
[3.96375930680882837542e-01, 3.08687748333178690885e-01], \
[7.14296954377469095476e-01, 5.50017281507158672937e-01], \
[3.48752585640754730889e-01, 5.17407779404832068870e-01], \
[7.18310628040954246565e-01, 5.11132613143585379234e-01], \
[6.63494346816498770103e-01, 5.26836749139487192650e-01], \
[5.77006569738717667306e-01, 5.18892362725782763100e-01], \
[4.01233643828104502571e-01, 4.78832601939565616345e-01], \
[5.86399310005019658298e-01, 2.40164928940056421336e-01], \
[6.19530500951089968531e-01, 6.27573289120293087429e-01], \
[5.78398402069640771295e-01, 4.83748148711805880939e-01], \
[6.07132834634710349953e-01, 3.78679453928062847989e-01], \
[4.98479376347620906085e-01, 5.15989826470430346106e-01], \
[4.73639806510457561650e-01, 4.85724501437427069739e-01], \
[6.61436369460494666406e-01, 5.93472583183511259719e-01], \
[4.25183088639936646036e-01, 3.76984069343787087103e-01], \
[5.67478427442904886924e-01, 5.08420002635815770908e-01], \
[3.66208129061215137412e-01, 4.31322009346383983264e-01], \
[5.18977300635865224088e-01, 4.83287325882427176715e-01], \
[3.99914753015494062183e-01, 4.27735496641997614553e-01], \
[5.22570511936814030562e-01, 4.37172999772519721429e-01], \
[5.47014724978245991949e-01, 3.93017708433251899969e-01], \
[6.09688794246066700921e-01, 4.71483054510238586143e-01], \
[3.18963035530739902335e-01, 6.04663321982874646388e-01], \
[6.38506539822411123275e-01, 3.34774351381818213724e-01], \
[4.62165388276272182111e-01, 5.60328303591690057850e-01], \
[4.73748522967129326311e-01, 5.66865978574868645268e-01], \
[4.60608575486144977695e-01, 5.91951249767024734183e-01], \
[3.56795978607195807264e-01, 4.89867949897991428188e-01], \
[4.56985042912428085504e-01, 4.17442709850835314001e-01], \
[5.63760837980672446790e-01, 5.01829767652252067833e-01], \
[4.96380105951781669393e-01, 5.12606422497419167428e-01], \
[4.83895198582426189216e-01, 6.74473457378041985066e-01], \
[5.13124202076753466173e-01, 6.48357723785744077816e-01], \
[4.52735237446655780502e-01, 6.32148339153784544209e-01], \
[5.22715000424861075956e-01, 7.14420712715930439352e-01], \
[5.97338072112415630066e-01, 6.28297373075173082313e-01], \
[3.87233425040386602944e-01, 2.34517396438552294669e-01], \
[3.45123892508290119885e-01, 3.95039366217439014140e-01], \
[6.91145355247707371404e-01, 4.63640132575023733441e-01], \
[4.80156890645610845425e-01, 5.31353943341984047422e-01], \
[5.46557184755507519114e-01, 5.76312678971086622681e-01], \
[5.61924894312307410260e-01, 5.16843399004573433864e-01], \
[3.84351285499613393171e-01, 3.33666316275563479277e-01], \
[5.05658352031917224245e-01, 5.68605031938984817330e-01], \
[4.86244786647343663066e-01, 5.98291917629925396049e-01], \
[4.49104298644191934908e-01, 5.01919778229144686321e-01], \
[6.36736587078052806987e-01, 6.01212565257703390742e-01], \
[5.24925055573933097008e-01, 5.89948268615745785581e-01], \
[5.99932228482533247416e-01, 5.32509794245431655746e-01], \
[5.19640790593189128010e-01, 6.62982929925691522044e-01], \
[3.66582139449851740487e-01, 5.37274495575846167128e-01], \
[6.09918774687348896890e-01, 5.27007197990331688331e-01], \
[5.11131314868001562779e-01, 5.42149286459544965666e-01], \
[4.51332621842253256528e-01, 4.10261889590947892437e-01], \
[5.25432035308129319340e-01, 4.40980538941056265934e-01], \
[5.10782570354401777024e-01, 6.89196997953414713933e-01], \
[3.72796682100508813829e-01, 5.34036752347764043236e-01], \
[6.24355424479441367680e-01, 4.40166108058185623353e-01], \
[5.55484834866897148054e-01, 5.34919267683017674031e-01], \
[4.30498706701502142913e-01, 5.61363499341958172018e-01], \
[4.45135565508272268431e-01, 4.87333213848993862527e-01], \
[4.68675390550098935893e-01, 4.86760775777794918451e-01], \
[5.96627754459173598178e-01, 5.10379819347190344381e-01], \
[3.94255117703739998980e-01, 4.88615562867927011315e-01], \
[5.89587201543967709405e-01, 5.34475852587176780695e-01], \
[5.03626765739604076444e-01, 5.50160213631938566081e-01], \
[3.57485837376316561986e-01, 5.79103989155809628642e-01], \
[1.59440489587252653969e-01, 5.26551628096946111590e-01], \
[5.15843940326542904629e-01, 5.69685153891051343500e-01], \
[4.00928893966079114008e-01, 5.32969821431146906221e-01], \
[5.75419467810026841192e-01, 4.22944947887880617898e-01], \
[5.09812678370093363966e-01, 4.93884105439540754823e-01], \
[6.19702405604076078660e-01, 5.80454158049948376608e-01], \
[5.22440101516369770351e-01, 5.57513496266312968963e-01], \
[5.53990799047409110401e-01, 5.38571225276326837061e-01], \
[5.31900005225104610673e-01, 3.98942396887246530923e-01], \
[3.94398463897551176949e-01, 5.25040374391018471734e-01], \
[6.03772399521409930401e-01, 6.38632945282166852863e-01], \
[4.44455340804045639924e-01, 5.03015962700646857009e-01], \
[5.67579419590754419289e-01, 4.75496135979508571801e-01], \
[4.67922900417953202545e-01, 6.01405538292233865505e-01], \
[3.42272064824079458312e-01, 7.44541048774698732693e-01], \
[4.02828417355757917306e-01, 4.04709381955081604065e-01], \
[6.20314054277921633762e-01, 3.26130922978849158156e-01], \
[5.07795752066301120387e-01, 3.97069711652706436311e-01], \
[4.98114393841135538743e-01, 5.83399698179854708791e-01], \
[6.10627294802999154300e-01, 3.76293343887116382707e-01], \
[4.99204441742503890467e-01, 4.67404887173026084568e-01], \
[5.78208197124999601080e-01, 3.78874214064077452502e-01], \
[4.87625689579829157960e-01, 3.60727872690940032374e-01], \
[5.79300197496014357412e-01, 5.05656887340071858894e-01], \
[4.48256897225880801550e-01, 5.70132348088610796388e-01], \
[4.77692335764947295651e-01, 4.25251694092913690159e-01], \
[5.94153761235350130754e-01, 6.01855818121283969724e-01], \
[5.49680122932775017119e-01, 4.66766541896735998041e-01], \
[3.25483148152356127625e-01, 5.49246137351986130071e-01], \
[4.40412667760292420027e-01, 3.76953438076887081820e-01], \
[5.03066278192428217864e-01, 5.96378339452582784119e-01], \
[4.80290574361600164366e-01, 4.60872964814752705820e-01], \
[5.56364375072162742342e-01, 5.03158757147391888509e-01], \
[5.23345003210317849529e-01, 7.22513255009030519460e-01], \
[3.57106947476807490283e-01, 5.80641500955607181567e-01], \
[6.91358966513041073298e-01, 5.46572363037836961297e-01], \
[4.55401840252709577683e-01, 4.11716336702808494152e-01], \
[3.83554983069844701582e-01, 4.38024659213133382707e-01], \
[4.81351314903997795636e-01, 5.74177416626954095769e-01], \
[5.15226491756262339194e-01, 5.45334708889477992599e-01], \
[5.40628603893087089638e-01, 5.88185305819967085839e-01], \
[4.50864087923326051222e-01, 5.98513900014567279406e-01], \
[5.47297098509046398007e-01, 5.66132659917806924099e-01], \
[5.28530896157364482590e-01, 6.67649425327306644817e-01], \
[4.39556893739878773442e-01, 7.68771929361243944179e-01], \
[3.86833312725837930035e-01, 5.64966391684143864893e-01], \
[4.15588290176066355031e-01, 4.92864828557251277719e-01], \
[3.90522916832082123140e-01, 7.06193946021074658859e-01], \
[5.40930538076876854525e-01, 5.63779596779997671518e-01], \
[3.94401084386677647231e-01, 6.17633039099027225660e-01], \
[6.32543281234084653342e-01, 5.53544779417408983058e-01], \
[5.17022295811143783872e-01, 4.90972058285805590394e-01], \
[4.60445366735713457196e-01, 4.88182354173622767846e-01], \
[5.22988764730550781401e-01, 5.55683261878273992984e-01], \
[6.19273639731729774738e-01, 7.20881123450243688211e-01], \
[4.84056897782844441913e-01, 5.09101932194817474731e-01], \
[4.28005202632197712109e-01, 4.42101073505514419182e-01], \
[4.62310849867871354046e-01, 4.65463819224925579032e-01], \
[6.16180784245477619621e-01, 5.32656493053192847675e-01], \
[6.82362393572710002054e-01, 6.51472299938162358046e-01], \
[6.05650503716342769600e-01, 3.45523166247531765549e-01], \
[4.44098454651745799815e-01, 5.96937884415202790755e-01], \
[5.97585573360833732792e-01, 5.70556168124258911156e-01], \
[5.95689671009654753142e-01, 7.16384123713500353681e-01], \
[5.92543924550815948038e-01, 6.18976298349089959494e-01], \
[4.21252305171927909910e-01, 3.00837502747972274086e-01], \
[5.09122120243195364075e-01, 4.88171420380944631745e-01], \
[4.49470767220893518967e-01, 5.33174111016315621647e-01], \
[4.37953546167110241427e-01, 2.96341461428635877251e-01], \
[4.92854897160699245706e-01, 5.07226950382165031606e-01], \
[5.31435693853255730623e-01, 4.81729768391355284152e-01], \
[4.66639521665308476539e-01, 5.14591295392095471328e-01], \
[4.27313711667585027776e-01, 4.69336641340974802805e-01], \
[6.85757666208705707334e-01, 5.24734938468697564851e-01], \
[4.28081837491669503493e-01, 4.55374236566962742323e-01], \
[4.92420744478654637266e-01, 4.10718156176252069400e-01], \
[5.78576920467550825933e-01, 6.17820865568420307667e-01], \
[3.68922638961396320845e-01, 3.31187872900831681289e-01], \
[5.03142617953857729240e-01, 5.69886515080880062811e-01], \
[4.92017565993147998338e-01, 5.74794879020163684835e-01], \
[2.98881371434510212381e-01, 5.62621023870080172458e-01], \
[4.13932218013501718179e-01, 5.96096083363089057627e-01], \
[5.34454518865373984227e-01, 4.19198619387652238188e-01], \
[5.01352178345727761410e-01, 5.45789327123441081469e-01], \
[4.84194026734294569181e-01, 4.49988767246017995483e-01], \
[3.68053431698619926138e-01, 5.14457884828155354029e-01], \
[3.73375686678944496144e-01, 4.74692165944244015563e-01], \
[5.39772075754843982942e-01, 5.63238153567629185048e-01], \
[5.91624646841928725216e-01, 5.20526720406522036555e-01], \
[4.17886547395471819044e-01, 5.78604412605420725946e-01], \
[4.77952118102065226513e-01, 6.56168781491479613521e-01], \
[3.48561886758705419265e-01, 4.96392719602599730155e-01], \
[6.15510388851051803982e-01, 4.57085240662943315115e-01], \
[3.44889654964257941216e-01, 4.67431671504426937691e-01], \
[4.22173221095856754381e-01, 6.15455560912542054552e-01], \
[5.68185559018029917588e-01, 6.20292369531208698241e-01], \
[4.31389179834929414881e-01, 6.18357669370438345346e-01], \
[4.10458940662767890473e-01, 5.87021757613162775691e-01], \
[4.78725720550392641606e-01, 5.82251867117956400932e-01], \
[6.53155078652677856255e-01, 4.03772227993722643280e-01], \
[4.80783684061253380193e-01, 6.31643609657913995825e-01], \
[4.36670143010123690264e-01, 5.15817220682214472305e-01], \
[5.43990417827223238234e-01, 5.97412887627226441012e-01], \
[4.47728344772682695929e-01, 6.68506538337462208332e-01], \
[3.35197537838736181470e-01, 4.71518570827705707504e-01], \
[5.08449374449877256055e-01, 4.25672741465823400997e-01], \
[4.28466324093453532207e-01, 4.82129516244957312399e-01], \
[6.01132770105392233440e-01, 6.70914709171448686575e-01], \
[4.69493389605998845404e-01, 4.71106712847312203429e-01], \
[3.01849106454715965242e-01, 5.41041405813775244660e-01], \
[5.93933478204220266505e-01, 4.92093374018965634686e-01], \
[4.21389904575758311722e-01, 6.24669450652993618611e-01], \
[4.58655792137208306869e-01, 5.08318701974851516745e-01], \
[3.64347799492068580296e-01, 3.50008572252482053067e-01], \
[5.85963579280534996307e-01, 6.51852113053098758400e-01], \
[5.11355800785292857746e-01, 3.57845589380129447399e-01], \
[4.57471176250439204303e-01, 6.01167746529005508904e-01], \
[3.18339741499573003480e-01, 6.45149956986602379772e-01], \
[3.41434561093634625362e-01, 4.54957604144358540577e-01], \
[5.40188167063629154363e-01, 5.84277854633536430917e-01], \
[5.46739694861518188418e-01, 6.63732336021909619106e-01], \
[6.62755466450112851184e-01, 4.68356855823469142575e-01], \
[5.24456406812864095457e-01, 2.85385283113035626013e-01], \
[5.25917648739742005226e-01, 5.31865314178732839778e-01], \
[5.00597357822493260748e-01, 5.20014191160624195120e-01], \
[5.23655672836067287435e-01, 4.01955198279088765645e-01], \
[5.39291951424189397457e-01, 6.89867752630618835674e-01], \
[5.38329431611118125467e-01, 4.09378149922675294015e-01], \
[5.43726928979585411028e-01, 5.67823802405882482880e-01], \
[5.53001693267672345122e-01, 6.67628465784462443722e-01], \
[5.86343472143898147841e-01, 4.98378205640519156283e-01], \
[7.10054662182226681288e-01, 5.89786689774921213392e-01], \
[5.10570548416046099405e-01, 6.43246671552458293419e-01], \
[6.02020332307897865221e-01, 6.34465011686650370848e-01], \
[5.80371517654179713830e-01, 6.82341206575277303692e-01], \
[2.55183372766833116430e-01, 4.20285563519170124458e-01], \
[5.07953061350685852737e-01, 4.83871308943942757264e-01], \
[4.03027727024656112764e-01, 5.48648386554172806662e-01], \
[4.26899618572043948461e-01, 5.31492321826456892708e-01], \
[4.84511580570441580118e-01, 7.45599008572350396840e-01], \
[4.38024726311490530950e-01, 6.22901862460166766411e-01], \
[6.18311826071260339788e-01, 4.49371497957649856936e-01], \
[3.71190165326318211036e-01, 6.10479603919226065933e-01], \
[6.20903554431484261400e-01, 5.95264773487894527371e-01], \
[6.23715798624822626017e-01, 4.17901869143080861857e-01], \
[5.41076344204455272902e-01, 6.36362093443634591061e-01], \
[4.74500598390444450203e-01, 5.84012243100072270252e-01], \
[5.05744018339405077000e-01, 6.74266788043303089140e-01], \
[5.55765768140952798326e-01, 5.69529068833959151164e-01], \
[4.34419625788129537547e-01, 3.85952143157285876285e-01], \
[4.23396964324653679590e-01, 4.83859314745063329166e-01], \
[6.37210370309407414524e-01, 5.03837308794625959862e-01], \
[5.45514528537405785080e-01, 6.63362674815151320828e-01], \
[7.39609779970554326312e-01, 6.68808594992264415779e-01], \
[2.21109004037429390799e-01, 4.53693432422059228504e-01], \
[5.38812356391120683696e-01, 6.77625026378462336218e-01], \
[5.29923707938779964266e-01, 7.22698885267590740433e-01], \
[6.16998146267244029772e-01, 4.64638865684204982465e-01], \
[5.26437081102851922587e-01, 5.19787467965409755166e-01], \
[4.67026678382779281140e-01, 5.45273677881347396124e-01], \
[5.85691137577825648997e-01, 4.50261568164034620132e-01], \
[4.77217042306056604684e-01, 5.87180184125516424487e-01], \
[5.92002617200129810371e-01, 5.63403454460978725393e-01], \
[4.60038867635632509057e-01, 3.12650567019465475127e-01], \
[4.69813536646264628960e-01, 4.23863377179250377935e-01], \
[3.97497364328863733718e-01, 3.02957161340129066396e-01], \
[4.23972087707645439725e-01, 4.96534248155000745850e-01], \
[5.39480566540436523582e-01, 4.73832009292224964891e-01], \
[4.99009292318932873300e-01, 3.84581726485490493772e-01], \
[3.95661443663134160253e-01, 4.40896815723683999089e-01], \
[4.22886505320713146361e-01, 6.41264229961158505056e-01], \
[4.46130522245086313937e-01, 3.44195404940764393409e-01], \
[6.15295268198016054306e-01, 6.47907903077654334645e-01], \
[5.14455531944915445131e-01, 4.30094791952224941856e-01], \
[5.18116065693479899146e-01, 5.40211781091492482254e-01], \
[4.35478724463777222553e-01, 4.44664235592942935771e-01], \
[5.51925211264096549080e-01, 4.55284492728028344910e-01], \
[3.70586050377475439976e-01, 5.08485528170962375327e-01], \
[3.77153554812595659396e-01, 6.50239647579104573794e-01], \
[4.20973098770974329952e-01, 4.92758502925036812048e-01], \
[3.38437410542981931272e-01, 4.64461074082606839575e-01], \
[5.58857769418738881129e-01, 4.17968311038478534947e-01], \
[4.32465312123815226464e-01, 6.61019447258609615936e-01], \
[4.89318163390010218983e-01, 5.81384912594813174636e-01], \
[5.72621910116759558207e-01, 4.24210797667121275456e-01], \
[4.46271408063435182090e-01, 3.29894130961032649996e-01], \
[7.81814127703920336288e-01, 4.12419456942412165912e-01], \
[5.03789214866615542299e-01, 4.23026361832366915028e-01], \
[5.21403882114300554207e-01, 4.82701704971195688643e-01], \
[5.03778690068370504918e-01, 5.43210599994505383137e-01], \
[5.92841661044696044414e-01, 5.78445056339933150191e-01], \
[4.65604914942473246953e-01, 7.10396003986398127950e-01], \
[4.60727613458417839531e-01, 5.35320294194095214202e-01], \
[1.37642918134533498442e-01, 5.06721420073215855773e-01], \
[7.66751967133159295642e-01, 4.82032235979630130362e-01], \
[4.85753931396445293167e-01, 6.05300017757602781820e-01], \
[5.43518185949645959987e-01, 3.83713359982644497403e-01], \
[6.99025910477636180929e-01, 5.93960029532509814487e-01], \
[4.27477364497658718356e-01, 5.89949321077727795171e-01], \
[4.13933250234798211231e-01, 5.50410816471476271872e-01], \
[5.96177483119481044227e-01, 2.94374478283728202577e-01], \
[4.98394834099081307510e-01, 4.19255766163762477738e-01], \
[5.32218915209579090941e-01, 4.34707244830558947601e-01], \
[6.92086766977496270492e-01, 3.75008947124729430378e-01], \
[4.78242225526504971533e-01, 4.34880361561258643732e-01], \
[6.15715006148981114364e-01, 4.66143651966558214550e-01], \
[5.46638331519019193827e-01, 5.51808829992597393854e-01], \
[4.79000894913108654638e-01, 3.19675553364030640147e-01], \
[4.06960478597419794689e-01, 5.74617911452962593089e-01], \
[5.96177940030753084066e-01, 4.95112922111594688790e-01], \
[4.48410510003424633840e-01, 4.25108918311262073964e-01], \
[5.96704477990009474198e-01, 4.06066986475364044562e-01], \
[4.14619376599013489404e-01, 4.62690758516300204573e-01], \
[4.77696505260666037795e-01, 4.04386853811155466687e-01], \
[5.04634732521916262726e-01, 4.81366781671020760314e-01], \
[4.54193472755498151017e-01, 2.64018552431421527071e-01], \
[3.74437201796847918267e-01, 6.32590111634973362165e-01], \
[4.46871691237110790773e-01, 5.68848916451605290945e-01], \
[3.80669441708761491228e-01, 4.69572615530538139961e-01], \
[6.08955364104242335976e-01, 3.04217197503575009776e-01], \
[5.98915418782218988980e-01, 4.73842194888331624814e-01], \
[5.78447370268319160935e-01, 4.68644905636397546278e-01], \
[5.51486235230952526187e-01, 4.33887388379933458538e-01], \
[5.65899843784825051785e-01, 4.74386185143715499724e-01], \
[4.16048304014977776699e-01, 5.00085855901955089742e-01], \
[4.39717398825781036198e-01, 3.95602108942843921913e-01], \
[3.36472437494309661865e-01, 6.31876018572673392448e-01], \
[4.66039026008791712474e-01, 4.97279917562864715030e-01], \
[3.57986366606809269797e-01, 5.10147578804519996609e-01], \
[6.09148228600301155922e-01, 4.70296479927805100019e-01], \
[3.22819947887973968115e-01, 3.68035892381436136045e-01], \
[5.14413313506845382150e-01, 4.58786079922727130231e-01], \
[5.29898263902049637686e-01, 3.96477026919691888374e-01], \
[5.09341394411353398652e-01, 5.27587784741906373753e-01], \
[3.83357765602250710746e-01, 5.00136755768606722228e-01], \
[3.56039930721699426908e-01, 3.36184449059521772707e-01], \
[4.07998819168302107041e-01, 4.84715680358626666013e-01], \
[5.34000599847052392910e-01, 4.52482727883613322639e-01], \
[4.65369231123054283294e-01, 5.10699601974094807844e-01], \
[4.49840837461705556066e-01, 5.14757508008339526029e-01], \
[4.25054050545161377084e-01, 4.99993425865483398507e-01], \
[4.11247106950246243962e-01, 5.87605442354759754942e-01], \
[3.99396207823983662166e-01, 3.70381925099628916964e-01], \
[5.86435108943415439597e-01, 2.25414568848404717194e-01], \
[4.66116610314162904682e-01, 5.62078568429662084327e-01], \
[6.62206975488600524393e-01, 4.61596036129736431164e-01], \
[6.13252755857157660913e-01, 4.27891707376906127447e-01], \
[5.37304376499337821294e-01, 3.45132192797247605576e-01], \
[4.85813514464981499597e-01, 5.40147915113104559737e-01], \
[7.45814362988501455831e-01, 5.81451293784067568815e-01], \
[4.62276648304203230389e-01, 3.40488029021211224823e-01], \
[3.20186768577634117694e-01, 8.10647257389290554208e-01], \
[4.29635916512322579841e-01, 4.16945642921743131470e-01], \
[4.24244943628199921992e-01, 4.79597955580366774875e-01], \
[3.39768178186519276274e-01, 4.60200975897827102568e-01], \
[5.51178516190079514914e-01, 6.27390170081974618554e-01], \
[5.80682806507316739975e-01, 5.78139130284090474454e-01], \
[4.72760252008954662273e-01, 5.39385934868878424986e-01], \
[5.76258286695326860105e-01, 5.54819649118707181046e-01], \
[4.66242991410796558949e-01, 7.00670369961674976977e-01], \
[5.69782070014676955694e-01, 5.01915618325195156402e-01], \
[6.15495241920526181545e-01, 5.66986486707196757351e-01], \
[5.64982875333970846476e-01, 6.27371548747195473261e-01], \
[5.31727517017306694491e-01, 5.03229917896156786483e-01], \
[6.13167846208324318624e-01, 5.95945151373998283084e-01], \
[5.87434247795120212388e-01, 5.42026646061066430526e-01], \
[4.75272596427637639138e-01, 4.90165111534786646086e-01], \
[3.68931315099309098393e-01, 4.12486307855828293611e-01], \
[6.20507497144343167506e-01, 6.93352660805580445214e-01], \
[6.39294994728640153525e-01, 4.94659919691876781567e-01], \
[4.02043507385773601914e-01, 6.71305613997413841432e-01], \
[5.22697778966122128530e-01, 5.21661556577861507122e-01], \
[3.53911380544009834814e-01, 4.54393133315914465875e-01], \
[5.62490683319461615142e-01, 3.59911777354150475006e-01], \
[6.91472827803956580084e-01, 5.68301752445123709023e-01], \
[5.35875472921310769259e-01, 5.26726525103310305731e-01], \
[5.52829151266300278245e-01, 5.61265119966659287165e-01], \
[5.96796888870080755041e-01, 5.78794822549548060309e-01], \
[5.76945436110144038722e-01, 5.48127233041602490715e-01], \
[2.85209584611355149164e-01, 5.07016596472997127520e-01], \
[3.26000644402749450990e-01, 6.37389328708671043522e-01], \
[3.43418129143308825668e-01, 5.44538966392076217993e-01], \
[4.05169044233279262990e-01, 6.19552556672839260798e-01], \
[4.37062985399566950040e-01, 5.57243445003400172943e-01], \
[5.61660667449274453311e-01, 5.19154865260106346270e-01], \
[5.54471453466855779268e-01, 5.40980808567386506347e-01], \
[6.64799398916726569375e-01, 3.57987235684767979293e-01], \
[4.67280596407086745714e-01, 5.48620300570930474748e-01], \
[4.89404730209621885439e-01, 5.21102832802098570042e-01], \
[4.93303258662853294503e-01, 5.37711507217415118909e-01], \
[4.83773254908907879290e-01, 3.63240153062789450367e-01], \
[5.91428220469527254899e-01, 6.28735124552540880494e-01], \
[4.17555396745937223990e-01, 4.83130887924887619800e-01], \
[4.83404677100715385318e-01, 6.68084614769383966504e-01], \
[5.00966051895138764216e-01, 4.70030031089552435830e-01], \
[5.74253485786466066898e-01, 4.67262841924776906044e-01], \
[5.22948451255199953103e-01, 5.59778901736491252272e-01], \
[4.94397223405570573895e-01, 3.72771175445750002631e-01], \
[6.71072280569977253073e-01, 5.14966293412005504671e-01], \
[5.73519739465557121250e-01, 4.53087741724333137316e-01], \
[3.36322238323480793287e-01, 6.32537884617807133480e-01], \
[3.00317259540539560625e-01, 5.33200583302151920329e-01], \
[5.84335695621161055335e-01, 3.78764982666977778614e-01], \
[4.84895488057239365531e-01, 3.95914755967644915735e-01], \
[4.61607133464748242702e-01, 4.80598625717116090250e-01], \
[5.53861107742167124712e-01, 6.02718287450119682980e-01], \
[5.01375800573193974863e-01, 4.38792699549606035614e-01], \
[4.94811849332340902841e-01, 5.00599937519021875865e-01], \
[4.86424021884938329041e-01, 4.76675651336135597358e-01], \
[4.72487544660013580877e-01, 4.56454549852971180890e-01], \
[5.93062762755124595060e-01, 6.45261684634491516910e-01], \
[7.00216833126060089754e-01, 5.07128666876169087452e-01], \
[3.50323057853994535016e-01, 4.13969024967570431439e-01], \
[5.88945742978277841928e-01, 7.94008041538321496233e-01], \
[4.78430183399679465062e-01, 4.48344348263659153719e-01], \
[3.35227770222195797789e-01, 4.73007066605536319326e-01], \
[4.50067592102151525779e-01, 4.10182718608432861362e-01], \
[4.50201651356918364222e-01, 6.99683796908654120905e-01], \
[6.00499769236015334961e-01, 4.64415200452968468525e-01], \
[5.20297321855791583545e-01, 5.48050266617337245023e-01], \
[4.35082801226731652466e-01, 5.08640644356024962391e-01], \
[4.84608496764687479708e-01, 4.27630699568408156885e-01], \
[2.61264212153166197616e-01, 4.43318938674477025508e-01], \
[3.97121548376309307926e-01, 5.29359564161431372931e-01], \
[3.21806219850749641864e-01, 3.66106042390657970831e-01], \
[5.90268607503574016526e-01, 2.94752423674155827893e-01], \
[4.66705440416082806276e-01, 5.28676116723679312415e-01], \
[4.18400240228433195622e-01, 6.09208182444610835127e-01], \
[4.17422473545837668940e-01, 5.39826843995538263599e-01], \
[5.03770037775481349662e-01, 4.16731904974894096227e-01], \
[7.52394712344015892391e-01, 4.46978652538338849798e-01], \
[3.74984784616902211418e-01, 6.20057497393082912573e-01], \
[5.12591460510054441890e-01, 5.21651535045365100096e-01], \
[7.05557368028142506411e-01, 3.48410459627322477427e-01], \
[5.28246054180013913104e-01, 4.62249071988039827996e-01], \
[4.46367075832736937002e-01, 5.00094756408537177705e-01], \
[4.22457355038798054725e-01, 6.38548724903891473659e-01], \
[3.74220286116073164173e-01, 6.05667675783822967439e-01], \
[4.33612096871278496213e-01, 5.64574192524026852169e-01], \
[3.80669785240405678106e-01, 4.50102943546230260807e-01], \
[5.94514887223459576049e-01, 4.74064692880357185789e-01], \
[2.90377023406341971956e-01, 4.39888667399021826565e-01], \
[6.32986127204559601012e-01, 3.89589602629077547125e-01], \
[4.76690449547524486285e-01, 5.18963146375717165881e-01], \
[5.17705080351005153538e-01, 5.43992240893429346293e-01], \
[6.10521877260667866771e-01, 4.35404420892845922531e-01], \
[5.21562616007224422177e-01, 4.40646494455184001282e-01], \
[7.40483939683700409518e-01, 5.64639977542016335832e-01], \
[4.78334822603458609258e-01, 3.91782326453883833484e-01], \
[4.42880159271458406778e-01, 3.91553703728565682951e-01], \
[5.53385704205828443669e-01, 5.24911737030022917949e-01], \
[5.37186277050013871737e-01, 5.01949659918017543347e-01], \
[5.51822263943720026091e-01, 4.19146167827174342957e-01], \
[4.87328223831268225741e-01, 3.99044871951897694995e-01], \
[3.98599782202883112792e-01, 4.75908757055150288817e-01], \
[5.12677928201225596716e-01, 3.43224229088936516607e-01], \
[4.71419972872555270715e-01, 3.41795324856455473572e-01], \
[6.08844369605983537497e-01, 5.09947654450088827538e-01], \
[5.74310789932567455907e-01, 2.81222827418807330702e-01], \
[3.84625586293631860357e-01, 6.94205223297199580657e-01], \
[4.01564762243857509283e-01, 3.42628586810956980990e-01], \
[5.66093819211102466937e-01, 5.30005161510796019009e-01], \
[5.56087923292663210972e-01, 5.29637066963864477920e-01], \
[3.74085819029282395931e-01, 5.67347173756379996590e-01], \
[4.60526970388492051800e-01, 5.08134622985605077794e-01], \
[5.90066298044324866190e-01, 4.71400590703630273381e-01], \
[5.50325973026136172628e-01, 4.28299796156240142331e-01], \
[4.31531933045738225196e-01, 3.98483818401725420344e-01], \
[4.46590293269455873570e-01, 5.71221363521023262066e-01], \
[3.36732469976669945844e-01, 2.78951124064129529767e-01], \
[5.31856564124636221891e-01, 6.97591451665458106568e-01], \
[5.56710832442359970784e-01, 5.02785027250385430087e-01], \
[5.51653357687510004226e-01, 5.02172295578895311330e-01], \
[6.32533475666223532485e-01, 4.85446773636944717278e-01], \
[7.26187732622398995908e-01, 5.26293737926135540839e-01], \
[4.90563321781255445853e-01, 5.42460757908752366774e-01], \
[3.29780692962922894473e-01, 6.46911913651239456335e-01], \
[3.73211216431956427364e-01, 5.39531152984178308252e-01], \
[6.71953994964559653269e-01, 6.45670942067711695067e-01], \
[4.72358058492052090838e-01, 4.45024556015460426295e-01], \
[5.96503021931566124181e-01, 4.33544119524873039495e-01], \
[5.27120908793078823962e-01, 3.75814217118905169457e-01], \
[5.67674836248539427253e-01, 5.71621059421279609225e-01], \
[5.45405889066694515854e-01, 5.89050171652798160160e-01], \
[4.88308203959856190757e-01, 6.03305606708134600780e-01], \
[6.00429345981966955392e-01, 3.86967126945751471734e-01], \
[6.35532529407628943297e-01, 5.73778665836572443482e-01], \
[6.27793426016365785358e-01, 5.02539842821055016131e-01], \
[4.74235226784666341615e-01, 7.42536767895713767373e-01], \
[6.57579866474450769331e-01, 4.03780738741062017461e-01], \
[5.04191645593167869777e-01, 5.08129211185145868157e-01], \
[4.48869764389093983681e-01, 4.32036295408029680232e-01], \
[3.41206226930592770863e-01, 4.17214704607352271371e-01], \
[2.58584825417205399489e-01, 5.85129900036461148005e-01], \
[5.58419453448125269190e-01, 5.95709055020715583240e-01], \
[5.44897279904160924957e-01, 5.00442494317657526892e-01], \
[4.68738196699171216775e-01, 4.05691722571063229097e-01], \
[6.32665157285533963361e-01, 4.35147891855444224340e-01], \
[7.05022897481506150008e-01, 4.36957564819460908545e-01], \
[4.95895127028880222664e-01, 5.09223907300597522507e-01], \
[3.37764112829063711807e-01, 4.56460086585714630569e-01], \
[4.20744332402292253725e-01, 4.20859949078575490411e-01], \
[4.90580688558680866329e-01, 7.48531545931841790775e-01], \
[3.42835459731608449552e-01, 4.95879733158533564374e-01], \
[6.48657285598686739192e-01, 5.26992712584969713596e-01], \
[3.99945552984382168837e-01, 5.58762600677277565531e-01], \
[4.06410356293418040252e-01, 4.20378535738292535839e-01], \
[1.49921174167795212551e-01, 4.16602639256878459761e-01], \
[4.61060513287259055026e-01, 5.29286651369373917220e-01], \
[4.01935684927805403355e-01, 5.39368748478292969750e-01], \
[4.69183632138874373574e-01, 6.41474742834394873192e-01], \
[4.97773238959356767452e-01, 6.00630286832356974358e-01], \
[5.49755822663244408943e-01, 4.26854072728175548690e-01], \
[3.97041302855960176466e-01, 3.79827504660550374638e-01], \
[6.28279382587286661099e-01, 5.36976583470000101705e-01], \
[5.42225330451121201314e-01, 4.32824243056860569201e-01], \
[5.12612564610402277054e-01, 5.79678420802207883256e-01], \
[6.15747620190215783076e-01, 5.00794539303920260842e-01], \
[5.55248407469314253504e-01, 4.45930961402612069389e-01], \
[4.45934678819137619854e-01, 4.56332631793337384352e-01], \
[3.62612895771244059251e-01, 5.17196029361217557430e-01], \
[7.54295518122295449714e-01, 5.11817597381690303493e-01], \
[4.98516482237919111853e-01, 3.92688239736903865751e-01], \
[3.05576532404981171531e-01, 5.66552221794315635783e-01], \
[4.29183552439163840120e-01, 5.34329839004257678425e-01], \
[6.97206969677617416359e-01, 5.45176932204889497235e-01], \
[2.99261637115406875509e-01, 4.12176544857733473393e-01], \
[4.44714621088024231188e-01, 5.95436328287025418149e-01], \
[4.90214089759763604892e-01, 4.96410655117653865087e-01], \
[5.72162624360779359378e-01, 5.84267009682075899590e-01], \
[4.42578143527593836914e-01, 4.10736953151776718052e-01], \
[4.63951767167387563173e-01, 4.78834096643430351392e-01], \
[5.86288920497779919572e-01, 5.19865169891990164253e-01], \
[6.49626202432702415379e-01, 4.27369044805422093614e-01], \
[5.81527982617973449031e-01, 6.37203029446574809036e-01], \
[4.47920349651047600137e-01, 5.10192351374709751610e-01], \
[4.93983963535339298812e-01, 4.70157483353311034247e-01], \
[3.77318422440110157190e-01, 4.49399367184877496229e-01], \
[2.87235875424742159723e-01, 4.11505373575116628615e-01], \
[5.50179531968435719946e-01, 4.86309925524349262460e-01], \
[3.85758603421205881201e-01, 5.83407249683705275700e-01], \
[4.45075980793802616908e-01, 3.73253663139675895266e-01], \
[3.60219279746184950497e-01, 4.44854354423687814446e-01], \
[3.21958978012039875871e-01, 5.39017728018995945227e-01], \
[3.64004013897022971058e-01, 5.16350368845544305252e-01], \
[5.51386377146754091960e-01, 6.49409736892533118180e-01], \
[6.40517857968303072624e-01, 3.85049932685995577319e-01], \
[4.93026417348534473639e-01, 4.15299168293124798534e-01], \
[4.64327748385072014425e-01, 5.70109800337194161379e-01], \
[5.26705722680008925352e-01, 5.29415335882622795083e-01], \
[5.66492949780148746797e-01, 5.68104390324680519342e-01], \
[4.48683208050216497664e-01, 6.21586039499156584043e-01], \
[5.80045217314679839582e-01, 5.00652180643269439919e-01], \
[6.64991003406614877846e-01, 6.30381959071834141461e-01], \
[5.72011831046905117049e-01, 5.45415947326243655269e-01], \
[6.88049771152750677672e-01, 4.80255046474790669997e-01], \
[5.39236452848186220699e-01, 5.33942123691799275242e-01], \
[4.86293068623146196305e-01, 4.68700794611687621138e-01], \
[5.28005184697102669666e-01, 5.31301302982344569870e-01], \
[4.01421685706922548587e-01, 4.94541378666363551364e-01], \
[5.52325956476094948044e-01, 4.65395701328421340648e-01], \
[6.21535502708351561552e-01, 4.69082146802636212879e-01], \
[5.02965358805561257860e-01, 4.55344383051408396756e-01], \
[6.40474724347427470938e-01, 3.86375447696196805403e-01], \
[5.41980253541221812519e-01, 6.33432820720432498973e-01], \
[4.73500828663969697274e-01, 3.23112421026107932143e-01], \
[5.18288916786893372191e-01, 3.40838814304430637314e-01], \
[5.63666103965494880157e-01, 3.52379553324429051209e-01], \
[3.91040090543047613725e-01, 3.92554929161510468560e-01], \
[4.70338218536363039668e-01, 5.06578474607386697315e-01], \
[6.41081419981162081712e-01, 5.27872722571091079757e-01], \
[4.63690662287753685433e-01, 4.73095367222673091057e-01], \
[5.95758303411160095031e-01, 5.64117791121399370091e-01], \
[4.94565618777793758465e-01, 6.26462635105242027223e-01], \
[5.61982917773352963486e-01, 6.78013486732686354586e-01], \
[5.39809245663532277781e-01, 5.60868819781139116287e-01], \
[3.79665377877196452694e-01, 5.59432177402899188934e-01], \
[6.19122830169800408839e-01, 4.71964203259209513774e-01], \
[2.65778590824863658604e-01, 4.09319552178121659480e-01], \
[4.58601081528966558754e-01, 4.28610441748039083798e-01], \
[4.27357610007736365976e-01, 5.17314029293535981857e-01], \
[5.37381922283553969955e-01, 4.89058706456846736810e-01], \
[5.73026144283665161971e-01, 4.93579584315165409425e-01], \
[4.85603639796837849296e-01, 5.40907566700687736372e-01], \
[5.26664926005695588351e-01, 5.24238146476593058765e-01], \
[4.04730400586538086039e-01, 4.61683640017666763189e-01], \
[4.97672714642487246106e-01, 4.36633088437039740271e-01], \
[4.76177608895407611378e-01, 3.43441000913482230583e-01], \
[6.25223743090656869370e-01, 4.02703877758036621337e-01], \
[4.81743501193899303914e-01, 5.59495984153994929677e-01], \
[5.47709188447576766912e-01, 5.40400806857994742138e-01], \
[4.05781923995805038352e-01, 6.07974930374977962089e-01], \
[4.77014547650079612229e-01, 6.82997035364976912142e-01], \
[4.47306617339698009417e-01, 4.01976281775054511414e-01], \
[4.31866196980101535452e-01, 4.80036080038968970829e-01], \
[5.59784505544124955101e-01, 3.89653339995100711501e-01], \
[3.69255018141233848361e-01, 5.65033344971756723574e-01], \
[5.74768055187542037388e-01, 5.66830756966039572831e-01], \
[4.50289694499269366190e-01, 4.34381824324567733520e-01], \
[5.88111386384680412398e-01, 3.41013638040327915490e-01], \
[6.82673389524956819585e-01, 5.72422172471643064817e-01], \
[4.66783249143066014675e-01, 7.61466451739039262847e-01], \
[4.89598011977145419760e-01, 3.78784451965257062955e-01], \
[3.73197100303855000547e-01, 6.19562739874333301415e-01], \
[4.00550098625487349668e-01, 5.87784979624894399208e-01], \
[3.49267829106193694599e-01, 4.98573225989105639488e-01], \
[5.62488007322521577080e-01, 5.51361362935091969817e-01], \
[4.01358784366038279234e-01, 6.17134088036450090264e-01], \
[4.13022710165810214011e-01, 3.30168982468085014936e-01], \
[4.64686246389388879496e-01, 4.67906452780505632827e-01], \
[5.51991766853311194296e-01, 4.37705763014801241262e-01], \
[3.88102610313420248733e-01, 3.83832234823609286245e-01], \
[3.98737528640876526254e-01, 5.37444369976832647673e-01], \
[5.95328375175443347267e-01, 5.73431423038284870941e-01], \
[3.88257497550217323123e-01, 5.14059858486109133580e-01], \
[5.04863140527336495822e-01, 4.51446458435778519291e-01], \
[6.50265146807304184051e-01, 4.97782757622688531995e-01], \
[4.59280355521878014269e-01, 3.57802042670019915249e-01], \
[3.54394444075298409302e-01, 5.46100202971736670143e-01], \
[7.37412852658540396433e-01, 4.92660349856638535293e-01], \
[4.76657325437819634484e-01, 3.61396895660130113015e-01], \
[6.41492925325354845789e-01, 4.16953750816718815564e-01], \
[4.80866463579334491030e-01, 4.68369788378654172689e-01], \
[6.11865961032596272773e-01, 5.09582969454834944223e-01], \
[4.44827028399928714464e-01, 6.17326138336828589281e-01], \
[3.80508802213145536086e-01, 4.28587677359055563286e-01], \
[5.60075969674214801941e-01, 5.42736346706122918526e-01], \
[5.99355966896555125700e-01, 4.96673975483510166118e-01], \
[4.03259510059256920389e-01, 4.77701048005833683874e-01], \
[6.86264916278657488569e-01, 3.92872315673204075548e-01], \
[5.59938065113621763480e-01, 3.44857178221207760771e-01], \
[4.62755221970736430048e-01, 5.49344080836453474426e-01], \
[5.15243864211035407230e-01, 4.94415406474638607914e-01], \
[5.70059649609089613698e-01, 4.53297955862518253678e-01], \
[4.26286288659527723421e-01, 5.18763418144311816427e-01], \
[4.96943189810205743218e-01, 5.67516579489903860711e-01], \
[3.84680437156342813765e-01, 4.89137684250132764863e-01], \
[4.68588192437881356778e-01, 4.62113207143274307143e-01], \
[6.12957578334281660837e-01, 4.49838986476400526371e-01], \
[5.97615180788182653870e-01, 4.92699340479273995008e-01], \
[4.47282354674083393320e-01, 5.77007470669912869710e-01], \
[5.86833157036939501161e-01, 4.92517923056862427789e-01], \
[3.10556918879802801303e-01, 4.95004141718429213626e-01]]
def loadMatrixFromOperation(numGridPoints, op):
alpha = DataVector(numGridPoints)
alpha.setAll(0.0)
result = DataVector(numGridPoints)
ans = np.ndarray((numGridPoints, numGridPoints))
for i in range(numGridPoints):
alpha[i] = 1.0
op.mult(alpha, result)
ans[:, i] = result.array()
alpha[i] = 0.0
return ans
def computeMassMatrix(grid):
return A, loadMatrixFromOperation(grid.getSize(), A)
def computeInterpolationMatrix(grid):
gridStorage = grid.getStorage()
numDims = gridStorage.getDimension()
grid_points = np.ndarray((gridStorage.getSize(),
numDims))
x = DataVector(numDims)
for i in range(gridStorage.getSize()):
gridStorage.getCoordinates(gridStorage.getPoint(i), x)
grid_points[i, :] = x.array()
grid_points_vec = DataMatrix(grid_points)
if grid.getType() in multipleEvalNaiveGridTypes:
B_op = createOperationMultipleEvalNaive(grid, grid_points_vec)
else:
# use standard approach
B_op = createOperationMultipleEval(grid, grid_points_vec)
return loadMatrixFromOperation(grid.getSize(), B_op)
def computeRegularizationMatrix(grid):
m = DataMatrix(grid.getStorage().getSize(), grid.getStorage().getSize())
C_matrix = loadMatrixFromOperation(grid.getSize(), C)
m.sub(DataMatrix(C_matrix))
print(m)
return C, C_matrix
def cvxopt_solve_qp(P, q, G=None, h=None, A=None, b=None):
# G = G.T
P = .5 * (P + P.T) # make sure P is symmetric
args = [matrix(P), matrix(q)]
if G is not None:
args.extend([matrix(G), matrix(h)])
if A is not None:
args.extend([matrix(A), matrix(b)])
sol = cvxopt.solvers.qp(*args)
if 'optimal' not in sol['status']:
return None
print(sol)
print("P", P)
print("G", G)
print("G", matrix(G))
alpha = np.array(sol['x']).reshape((P.shape[1],))
print(np.dot(G, alpha))
print("q", q)
return np.array(sol['x']).reshape((P.shape[1],))
def quadprog_solve_qp(P, q, G=None, h=None, A=None, b=None):
qp_G = .5 * (P + P.T) # make sure P is symmetric
qp_a = -q
if A is not None:
qp_C = -np.vstack([A, G]).T
qp_b = -np.hstack([b, h])
meq = A.shape[0]
else: # no equality constraint
qp_C = -G.T
qp_b = -h
meq = 0
print("qp_G", qp_G)
print("qp_a", qp_a)
print("qp_C", qp_C)
print("qp_b", qp_b)
x, f, _, iterations, _, _ = quadprog.solve_qp(qp_G, qp_a, qp_C, qp_b, meq)
print(iterations, f)
return x
def solve(trainSamples, gridType, level, lmbd, solver="cvxopt"):
# ------------------------------------------------------------
# load grid
numDims = trainSamples.shape[1]
gridConfig = RegularGridConfiguration()
gridConfig.dim_ = numDims
gridConfig.level_ = level
gridConfig.maxDegree_ = 7
gridConfig.type_ = Grid.stringToGridType(gridType)
grid = Grid.createGrid(gridConfig)
gridStorage = grid.getStorage()
grid.getGenerator().regular(level)
print(("gridStorage:", gridStorage.getSize()))
print(("numDims:", numDims))
print(("trainSamples.shape[0]:", trainSamples.shape[0]))
# ------------------------------------------------------------
# prepare matrices for least squares
A_op, A = computeMassMatrix(grid)
C_op, C = computeRegularizationMatrix(grid)
trainSamples_matrix = DataMatrix(trainSamples)
if grid.getType() in multipleEvalNaiveGridTypes:
B_op = createOperationMultipleEvalNaive(grid, trainSamples_matrix)
else:
# use standard approach
B_op = createOperationMultipleEval(grid, trainSamples_matrix)
sle = DensitySystemMatrix(A_op, B_op, C_op, lmbd, trainSamples.shape[0])
b = DataVector(gridStorage.getSize())
sle.generateb(b)
b = b.array()
# ------------------------------------------------------------------------
# prepare matrices for quadratic programming
M = A + lmbd * C
P = np.dot(M.T, M)
ew, v = np.linalg.eig(C)
# print(C)
print("Eigenvalues:", ew)
if (any(ew <= 0.0)):
print("Negative Eigenvalue found !!!")
q = np.dot(b, M).reshape((b.shape[0],))
G = computeInterpolationMatrix(grid)
print(G)
h = np.zeros((grid.getSize(),)).T
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]
# solve
if solver == "quadprog":
x = quadprog_solve_qp(P, q, G, h)
else:
x = cvxopt_solve_qp(P, q, G, h)
print("residual")
print(np.dot(M, -x) - b)
print(np.dot(G, -x))
print(x)
# ------------------------------------------------------------
return grid, -x
if __name__ == "__main__":
# parse the input arguments
parser = ArgumentParser(description='Get a program and run it with input')
parser.add_argument('--version', action='version', version='%(prog)s 1.0')
parser.add_argument('--numDims', default=2, type=int, help="dimensionality")
parser.add_argument('--gridType', default="linear", type=str, help="define which sparse grid should be used (poly, polyClenshawcCurtis, polyBoundary, modPoly, modPolyClenshawCurtis, ...)")
parser.add_argument('--level', default=3, type=int, help="level of regular sparse grid")
parser.add_argument('--lmbd', default=0.0, type=float, help="regularization parameter")
parser.add_argument('--solver', default="cvxopt", type=str, help="define which solver should be used for quadratic programming")
parser.add_argument('--makePositive', default=False, action='store_true', help='make density positive')
args = parser.parse_args()
# ------------------------------------------------------------
# load density
mean = 0.5
var = 0.1
np.random.seed(1234567)
if args.numDims == 1:
U = Normal(mean, var, 0, 1)
trainSamples = np.array([U.rvs(1000)]).T
testSamples = np.array([U.rvs(1000)]).T
else :
U = J([Normal(mean, var, 0, 1) for _ in range(args.numDims)])
trainSamples = U.rvs(1000)
testSamples = U.rvs(1000)
# trainSamples = np.array(getSamples())
# ------------------------------------------------------------
# solve the optimization problem
print("SGDE...", end=' ')
dist_sgde = SGDEdist.byLearnerSGDEConfig(trainSamples,
config={"grid_level": args.level,
"grid_type": args.gridType,
"refinement_numSteps": 0,
"refinement_numPoints": 10,
"solver_threshold": 1e-15,
"solver_verbose": True,
"regularization_type": "Laplace",
"crossValidation_lambda": args.lmbd,
"crossValidation_enable": False,
"crossValidation_silent": True,
"sgde_makePositive": args.makePositive,
"sgde_makePositive_candidateSearchAlgorithm": "intersections",
"sgde_makePositive_interpolationAlgorithm": "interpolateBoundaries1d",
"sgde_makePositive_generateConsistentGrid": False,
"sgde_makePositive_verbose": False,
"sgde_unitIntegrand": False}, bounds=U.getBounds())
nodalValues = dehierarchize(dist_sgde.grid, dist_sgde.alpha)
print("is positive? %s (min=%f)" % ("Yes" if np.all(nodalValues >= 0) else "Nope",
np.min(nodalValues)))
print("-" * 80)
print("SGDE pos...")
grid, alpha = solve(trainSamples, args.gridType, args.level, args.lmbd,
solver=args.solver)
print(("alpha:", alpha))
nodalValues = dehierarchize(grid, alpha)
# print nodalValues
print("is positive? %s (min=%f)" % ("Yes" if np.all(nodalValues >= 0) else "Nope",
np.min(nodalValues)))
if args.makePositive:
alpha_vec = DataVector(alpha)
createOperationMakePositive(MakePositiveCandidateSearchAlgorithm_Intersections,
MakePositiveInterpolationAlgorithm_InterpolateBoundaries1d,
False, False).makePositive(grid, alpha_vec)
alpha = alpha_vec.array()
dist_sgde_pos = SGDEdist(grid, alpha,
trainData=trainSamples,
bounds=U.getBounds())
print("cross entropy: %f, %f" % (dist_sgde.crossEntropy(testSamples),
dist_sgde_pos.crossEntropy(testSamples)))
if args.numDims == 1:
fig = plt.figure()
plotDensity1d(U, label=r"analytic")
# plotDensity1d(dist_sgde, label=r"SGDE")
plotSG1d(dist_sgde.grid, dist_sgde.alpha, label=r"SGDE",
show_grid_points=True)
plotSG1d(dist_sgde_pos.grid, dist_sgde_pos.alpha, label=r"SGDE pos",
show_grid_points=True)
# plotDensity1d(dist_sgde_pos, label=r"SGDE pos")
insert_legend(fig, loc="right", ncol=1)
elif args.numDims == 2:
fig = plt.figure()
plt.title("analytic")
fig = plt.figure()
plotSG2d(dist_sgde.grid, dist_sgde.alpha, addContour=True,
show_negative=True, show_grid_points=True)
# plotDensity2d(dist_sgde)
plt.title(r"SGDE (\#gp=%i, vol=%g)" % (dist_sgde.grid.getSize(),
dist_sgde.vol))
fig = plt.figure()
plotSG2d(dist_sgde_pos.grid, dist_sgde_pos.alpha, addContour=True,
show_negative=True, show_grid_points=True)
# plotDensity2d(dist_sgde_pos)
plt.title(r"SGDE pos (\#gp=%i, vol=%g)" % (dist_sgde_pos.grid.getSize(),
dist_sgde_pos.vol))
if args.numDims < 3:
plt.show()