From 8ba85123908e78623dc42a4cbdfb6bda4ab2a003 Mon Sep 17 00:00:00 2001 From: kra568 <kra568@login1.head.smc.salomon.it4i.cz> Date: Fri, 20 Sep 2019 15:17:25 +0200 Subject: [PATCH] [WIP] commit before merge --- .gitlab-ci.yml | 36 +- data/HE21+T1.xyz | 2002 ------------------ run_devsandbox_queue.sh | 17 + run_test.sh | 2 + src/Coordinates/coordinates.cpp | 2 + src/DataSet/DataSet.cpp | 28 +- src/DataSet/DataSet.h | 28 + src/ErrorFunction/ErrorFunctions.cpp | 117 +- src/ErrorFunction/ErrorFunctions.h | 55 +- src/LearningMethods/GradientDescentBB.cpp | 8 +- src/LearningMethods/LazyLearning.cpp | 93 + src/LearningMethods/LazyLearning.h | 60 + src/LearningMethods/LevenbergMarquardt.cpp | 23 +- src/LearningMethods/ParticleSwarm.cpp | 2 - src/Network/ACSFNeuralNetwork.cpp | 68 +- src/Network/ACSFNeuralNetwork.h | 12 + src/Reader/Reader.cpp | 4 +- src/Reader/XYZReader.cpp | 35 +- src/Reader/XYZReader.h | 1 + src/examples/CMakeLists.txt | 82 +- src/examples/acsf.cpp | 310 ++- src/examples/dev_sandbox.cpp | 3 +- src/examples/net_test_1.cpp | 2 +- src/examples/net_test_2.cpp | 2 +- src/examples/net_test_3.cpp | 2 +- src/examples/net_test_harmonic_oscilator.cpp | 2 +- src/examples/net_test_ode_1.cpp | 2 +- src/examples/net_test_pde_1.cpp | 2 +- src/examples/network_serialization.cpp | 2 +- src/examples/seminar.cpp | 3 +- src/examples/x2_fitting.cpp | 2 +- 31 files changed, 756 insertions(+), 2251 deletions(-) delete mode 100644 data/HE21+T1.xyz create mode 100755 run_devsandbox_queue.sh create mode 100755 run_test.sh create mode 100644 src/LearningMethods/LazyLearning.cpp create mode 100644 src/LearningMethods/LazyLearning.h diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ecbcae4e..207f13ad 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,24 +27,24 @@ win_visual_studio_static_local_deps: # Windows 10 with dependencies # downloaded (and compiled) locally # compiled by VisualStudio 2015 -#win_visual_studio_2015_static_local_deps: -# tags: -# - Win -# -# image: windows:latest -# -# stage: build -# -# before_script: -# - rmdir /s /q build external_dependencies/* -# - set DEPENDENCIES_LINK_TYPE=static -# - set clean_after=yes -# - set BUILD_LIB=yes -# - set BUILD_EXAMPLES=yes -# - set BUILD_TESTS=yes -# -# script: -# - call build_scripts\windows\win_VS2015_build_x64_release.bat +win_visual_studio_2015_static_local_deps: + tags: + - Win + + image: windows:latest + + stage: build + + before_script: + - rmdir /s /q build external_dependencies/* + - set DEPENDENCIES_LINK_TYPE=static + - set clean_after=yes + - set BUILD_LIB=yes + - set BUILD_EXAMPLES=yes + - set BUILD_TESTS=yes + + script: + - call build_scripts\windows\win_VS2015_build_x64_release.bat # Latest Ubuntu with dependencies # in system directories, Boost diff --git a/data/HE21+T1.xyz b/data/HE21+T1.xyz deleted file mode 100644 index 35b655f9..00000000 --- a/data/HE21+T1.xyz +++ /dev/null @@ -1,2002 +0,0 @@ - 148488 - 21 - -0.11342169573665700 - He 1.0258969505574900 -1.1545469814788600 1.3631440686429499 - He -1.2173234434674101 -1.0044351731788901 1.2062880631941200 - He 3.4551824625253902 -1.2984875027617200 1.5318859515460701 - He 1.0192360653959600 1.4208035461442401 3.7314301724060499 - He 1.4391021479464201 1.1718104418262401 -1.2120127143009700 - He 1.0495286658464600 -3.8025701102838600 -0.92252261364606403 - He 0.73321668536203100 -3.5305630971436601 3.9826565135306100 - He -4.6381745606527200 -2.8870044193894300 2.8138356585621702 - He -4.1187560649880801 2.2578976008498799 1.3964787914516601 - He 7.0442722643035998 1.0785776086222700 2.6540655756536302 - He 6.6346921865520700 -2.9745562546105599 -1.1955462161618799 - He -6.2969055436458898 -1.0275666803087899 -2.4817753814579100 - He -3.9924902192014500 -6.1051309370553302 -1.9587326127842699 - He 6.5611120019837204 2.2997069034261899 -2.7716594634445602 - He -1.8510415014302000 -2.0998716620136699 -5.5021445554252804 - He -2.9811873023937800 3.0061932029892899 -3.9174311141430800 - He 3.7005866686058200 -1.5894670492634499 -5.4859092067927504 - He -2.5879440861143501 -0.63144280198504699 7.8766891362315903 - He 4.3346630411810301 5.4262117846132503 1.1759507906266400 - He -0.79014679667302201 6.0465553479991199 1.2692173600903399E-002 - He -6.1147800571898001 6.4880216162789903 -1.2502530117900199 - 21 - -0.11341845825949499 - He 1.0273168270749500 -1.1535398398063199 1.3611504872074900 - He -1.2147684220668800 -1.0075630067131400 1.2120181112344699 - He 3.4493438008167301 -1.2973005497012600 1.5399434531288501 - He 1.0183392885980300 1.4259846550584601 3.7412762339974899 - He 1.4375588894720199 1.1663059747736100 -1.2143921497118699 - He 1.0559398169043701 -3.7909765872458201 -0.92962769019661096 - He 0.72718424580326402 -3.5244992175164400 3.9887023983660299 - He -4.6351856037195001 -2.8893272491872901 2.8061359538663999 - He -4.1139263559503298 2.2464241101507598 1.3904929668541599 - He 7.0390871676633999 1.0902070674715401 2.6503797205968298 - He 6.6437761710522301 -2.9661366892080800 -1.2082467653572500 - He -6.2940435465072104 -1.0377997171344200 -2.4844250466158502 - He -3.9871895392088899 -6.1176921221146303 -1.9549800538242299 - He 6.5716642241422996 2.2961400302502799 -2.7665699123978400 - He -1.8599469040515499 -2.0988818905704498 -5.5044171829034596 - He -2.9925055901711701 3.0056012958099001 -3.9122504007473902 - He 3.7020387868480502 -1.5863415702064600 -5.4853946204476598 - He -2.5802918825511298 -0.62301251907284505 7.8747469159445300 - He 4.3374047416299097 5.4184353797445999 1.1709630164211999 - He -0.80544827465096902 6.0457082295810700 1.7847191241350070E-002 - He -6.1078755783681098 6.4887805455157199 -1.2456563815517501 - 21 - -0.11341639345187000 - He 1.0220116079676200 -1.1446354477989999 1.3589066246430599 - He -1.2220576367555600 -1.0131625279150500 1.2076101202622200 - He 3.4422793746657798 -1.2947486607244800 1.5404692320538700 - He 1.0129774310064199 1.4351631541798600 3.7417174020025001 - He 1.4323461906919199 1.1681224467147300 -1.2135725316800601 - He 1.0513822970268001 -3.7978603952909702 -0.92205381552417798 - He 0.73097573887316503 -3.5073511379750402 3.9920912095051202 - He -4.6336176049413504 -2.8873631809555902 2.8104442489624302 - He -4.1117663842910401 2.2465289963310799 1.4002248551290299 - He 7.0433088895443401 1.0913282328158100 2.6472067453852102 - He 6.6470687987252504 -2.9711748272419198 -1.2135965540898399 - He -6.2979346707035200 -1.0432557923815799 -2.4894477205392098 - He -3.9841403230232002 -6.1186991641972703 -1.9619178331457701 - He 6.5858654913744603 2.2953435292771101 -2.7612700413490798 - He -1.8511628503265800 -2.0990714851316499 -5.5141000084072198 - He -2.9867877297887402 2.9987128978232001 -3.9217060817735798 - He 3.7112662136578400 -1.5857730564682200 -5.4781773694408002 - He -2.5897480981883798 -0.61418702151712901 7.8770806985976796 - He 4.3423993936531797 5.4145159613347298 1.1679840390697700 - He -0.81051125579060901 6.0453398774924496 1.8232741971298840E-002 - He -6.1196859530923300 6.4783728806763801 -1.2439188215519701 - 21 - -0.11341583455586100 - He 1.0278480347710499 -1.1394526679910999 1.3529969723203299 - He -1.2249475121547999 -1.0108551789120199 1.2123498021723800 - He 3.4408582137686299 -1.2907974480827100 1.5408419704001299 - He 1.0156844173522801 1.4368906938733099 3.7387294343492998 - He 1.4404592331287500 1.1670292844254699 -1.2130173360425101 - He 1.0585810693337800 -3.7986981708879202 -0.92419070788562196 - He 0.72799035460693295 -3.4943118434637599 3.9939248485167602 - He -4.6231995174121501 -2.8886931197924399 2.8171898483083702 - He -4.1193073290284996 2.2450214267348798 1.3959578404836199 - He 7.0356338179241700 1.0914529148672800 2.6474151963711501 - He 6.6418288774773799 -2.9720351581174298 -1.2135537414129500 - He -6.2954374649119504 -1.0456861802093700 -2.4933367823722699 - He -3.9871246298181102 -6.1180029722051001 -1.9592504741007100 - He 6.5792012116678702 2.2982266041144599 -2.7778451579289101 - He -1.8490043594943999 -2.0976186624019100 -5.5125039463777501 - He -2.9893278386058699 2.9950637213959999 -3.9095178988189101 - He 3.7126039761723000 -1.5934601638846799 -5.4846782789903497 - He -2.5867485114227602 -0.62669870729618604 7.8745887715262102 - He 4.3386995839698503 5.4219255531984301 1.1728151588085400 - He -0.81244323251371697 6.0388646577591203 2.9117825363159669E-002 - He -6.1187324145106601 6.4765872062124501 -1.2396069695343701 - 21 - -0.11341626925817200 - He 1.0317660404394600 -1.1464767140232901 1.3628814149504200 - He -1.2193238765271599 -1.0085075719952701 1.2136222432092301 - He 3.4410235737745398 -1.2980456881447400 1.5549494572342499 - He 1.0111381916565201 1.4294008596296299 3.7308948125731698 - He 1.4460424251937500 1.1611542731977900 -1.2107104426520900 - He 1.0507641217284200 -3.8042052535867601 -0.91224365350646597 - He 0.72979110475713604 -3.5030553806192501 3.9986244103775901 - He -4.6291191631494000 -2.8773767904985501 2.8077959051433798 - He -4.1275631897973399 2.2588115407056599 1.3918851848949301 - He 7.0330297723482804 1.0827387543501401 2.6489259451309302 - He 6.6483500387201504 -2.9710555211486600 -1.2147422441286200 - He -6.2904768204105999 -1.0465944825449500 -2.4866490075399699 - He -3.9806627592865800 -6.1080413291151103 -1.9584206563958300 - He 6.5857033823727198 2.2992181206954498 -2.7853951076514099 - He -1.8469622724003600 -2.0855328759328802 -5.5273325835357703 - He -2.9913244620479298 2.9806344066046200 -3.9111788016244100 - He 3.7123689663030501 -1.5908044337220100 -5.4846654948620097 - He -2.5920453207633600 -0.63080353596717798 7.8711617818247097 - He 4.3480322539421996 5.4219805927890903 1.1725169984959301 - He -0.81030277820345997 6.0400719425593099 2.2861642622589069E-002 - He -6.1223279846488996 6.4763049945065196 -1.2408617812036600 - 21 - -0.11341359419670800 - He 1.0326301892695700 -1.1501319122717899 1.3561175639199201 - He -1.2245726932984500 -1.0137609385280399 1.2117888888079100 - He 3.4449122968420700 -1.3010419550173800 1.5391906941040301 - He 1.0092339332092799 1.4317505719041299 3.7308087691279601 - He 1.4531771726665701 1.1708734267242999 -1.2095078767651499 - He 1.0434907583694299 -3.7948847027213399 -0.91939803016529198 - He 0.73739531635668298 -3.5037751731096800 4.0018183937518303 - He -4.6200513662699096 -2.8698723672941799 2.8188293799215698 - He -4.1243346805786603 2.2598856470392801 1.3947723881130900 - He 7.0291570429919403 1.0906846145199001 2.6517365789159402 - He 6.6621307127702902 -2.9760165255003401 -1.2078740870028799 - He -6.2913913547582201 -1.0343209830066100 -2.4921887487346601 - He -3.9718160420480801 -6.1087993718133600 -1.9597500113879400 - He 6.5863462276632001 2.2998974222168802 -2.7885694330825799 - He -1.8487540244758800 -2.0910727225322199 -5.5307833948616301 - He -3.0026804362502002 2.9904075944296702 -3.9169938463196301 - He 3.6960336300262999 -1.5909501929198600 -5.4894050719154004 - He -2.5871242947848501 -0.64661459862756498 7.8773443229592104 - He 4.3426258148208303 5.4206639676891699 1.1821971514489900 - He -0.81640059817769095 6.0325212899347598 3.2743539408433747E-002 - He -6.1117263848957899 6.4663908483615300 -1.2455691803630100 - 21 - -0.11341056608534600 - He 1.0359183070605200 -1.1570909055958900 1.3536109412005100 - He -1.2174219004070601 -1.0068241832308600 1.2135949874640599 - He 3.4453841269083898 -1.3050770369097100 1.5480881050702600 - He 0.99225268092459695 1.4378944388603101 3.7329914454788300 - He 1.4499144538675801 1.1635603566192101 -1.2101316583202899 - He 1.0473335773922501 -3.7920686188537598 -0.92405743576371302 - He 0.74825289022818697 -3.5049372323979302 3.9965007816735700 - He -4.6216288721651200 -2.8752037861907800 2.8178931047629598 - He -4.1181739714862697 2.2552900202165298 1.3902775502262299 - He 7.0204990000091598 1.0940894460852000 2.6576969624909199 - He 6.6715369661233499 -2.9727129775655001 -1.2024920870455500 - He -6.2949498773176300 -1.0343228274452001 -2.4991668357755699 - He -3.9607038913712298 -6.1015980313951701 -1.9559406858255199 - He 6.5768069737718999 2.3009000453785999 -2.7936521543427699 - He -1.8413985322363000 -2.0822725223617100 -5.5343244133058196 - He -3.0089405268759402 3.0020398556977099 -3.9121685121758900 - He 3.6907990999181499 -1.5915338864774500 -5.4858902303245802 - He -2.5958534969829201 -0.65296059041697596 7.8742905437841104 - He 4.3476694396688798 5.4340082449330902 1.1776821320633999 - He -0.81948087593387997 6.0207442690201001 3.8323219167608343E-002 - He -6.1161119301510602 6.4573337379904601 -1.2443949004050701 - 21 - -0.11340294885832500 - He 1.0388257179835700 -1.1735078067082600 1.3562830295952100 - He -1.2237735574170900 -1.0038830268545200 1.2116541846303099 - He 3.4573824780179101 -1.2971711513983599 1.5421793395569201 - He 0.98905478851097595 1.4317764090062199 3.7449709813601402 - He 1.4507367900509001 1.1711385212706100 -1.2134279620837600 - He 1.0508182361894900 -3.7941894140640802 -0.92729957886213099 - He 0.74597567386678798 -3.5022142599568400 3.9997207845847300 - He -4.6309835552756899 -2.8802707578464100 2.8156240450058201 - He -4.1150689850652098 2.2573876857060200 1.3935794026232700 - He 7.0160740903886403 1.0886281642098601 2.6473732304622799 - He 6.6725536084915502 -2.9859951083302101 -1.1970597792225299 - He -6.2855676662528603 -1.0368277297841400 -2.5057055074323298 - He -3.9603486686804801 -6.0990495450238802 -1.9455527392940299 - He 6.5737290097160397 2.2931845810940898 -2.7942068952991601 - He -1.8461391622063099 -2.0978863297994699 -5.5418259211151204 - He -3.0136049866418602 3.0163268562024701 -3.9137840915422299 - He 3.6938392437712100 -1.5913576004213701 -5.4816896010130201 - He -2.6092602884404399 -0.65116157135860198 7.8687294269252099 - He 4.3495013755452501 5.4471701952290701 1.1750864474921501 - He -0.80900120168526002 6.0218220063464800 3.1891552891830731E-002 - He -6.1250142771270397 6.4681115057380003 -1.2370906464287701 - 21 - -0.11340744334595000 - He 1.0328890213262600 -1.1787088092523601 1.3498367659703800 - He -1.2212587552546199 -0.99733674789535798 1.2167640805191400 - He 3.4545070891762002 -1.2977726789893600 1.5514077029143700 - He 0.99411333285508297 1.4223472239037700 3.7376778834518598 - He 1.4605772431602999 1.1771322879865000 -1.2005318842058801 - He 1.0579035544255200 -3.7953801272478400 -0.93311168669474898 - He 0.74266657361840605 -3.5207800275184198 3.9893910525203600 - He -4.6310937831960697 -2.8721669121406399 2.8210025661991902 - He -4.1113359548608601 2.2593776983829499 1.3936917223767999 - He 7.0152554032356003 1.0929247784983100 2.6446229688332101 - He 6.6674476830812104 -2.9871158828874900 -1.1877535946115501 - He -6.2873431852109896 -1.0264782883774899 -2.5105052770678000 - He -3.9688610285907999 -6.1057178008838600 -1.9413308546584900 - He 6.5771407470640204 2.2887152536593600 -2.7940271886928398 - He -1.8371313693464399 -2.1095885378669799 -5.5428113165613997 - He -3.0111799067668201 3.0174198884407102 -3.9125035083810800 - He 3.7048301571915800 -1.5803150568257001 -5.4765963328576301 - He -2.6193149219868901 -0.64754296660886501 7.8597762354003997 - He 4.3420532147630402 5.4481050981391501 1.1824912130449501 - He -0.81675956395055604 6.0188368977127196 2.4695747131935359E-002 - He -6.1264202442535796 6.4707847810755696 -1.2371305254444500 - 21 - -0.11340216857178700 - He 1.0409485759212000 -1.1855873861576700 1.3476218537555200 - He -1.2126763137673400 -0.99860195410918495 1.2143038729596900 - He 3.4476561729970601 -1.3010705158452001 1.5574979897999299 - He 0.99077438092381398 1.4226882407721899 3.7425870023522099 - He 1.4550797032723799 1.1718257751868100 -1.1905910987419499 - He 1.0565646144798100 -3.7941051178532201 -0.93238064045497204 - He 0.74190169879917700 -3.5158130463642099 3.9928159099574199 - He -4.6353827525884403 -2.8765116753513000 2.8278330790556501 - He -4.1115894924622101 2.2644408147266000 1.3822360635347199 - He 7.0133350414915698 1.0962377904556599 2.6352875350396601 - He 6.6638520641422199 -2.9918920135551801 -1.1874589115830101 - He -6.2825273585888599 -1.0184131767059299 -2.5082954809852400 - He -3.9680366448866198 -6.0995055986634101 -1.9511812984860200 - He 6.5833518154649404 2.2882015653893300 -2.7958072106894400 - He -1.8390120853385099 -2.1079841535685699 -5.5488532659212497 - He -3.0108802987639200 3.0171126613312902 -3.9291788646917198 - He 3.7082894388875900 -1.5854704463299201 -5.4711266217626502 - He -2.6255033691108700 -0.64169669290138598 7.8619032378860796 - He 4.3389620840488003 5.4439916788153697 1.1929215731365601 - He -0.81499632656704601 6.0208777249147198 3.2632785414035761E-002 - He -6.1184469269942996 6.4667453806672803 -1.2367307427074401 - 21 - -0.11339339303111400 - He 1.0412340891837899 -1.1948006628197201 1.3494402669212500 - He -1.2230875627779001 -0.99127905876406597 1.2238159525646000 - He 3.4461035190468499 -1.3089635181878501 1.5595811012233800 - He 0.98117412822763295 1.4089076033045200 3.7387644320558300 - He 1.4618392839934999 1.1809789472617300 -1.2026700739117000 - He 1.0480835046268000 -3.7947352116141899 -0.94592326949207695 - He 0.73429376852956696 -3.4992760113832899 3.9837253314674501 - He -4.6474485839224897 -2.8706251420821900 2.8406508567930100 - He -4.1246856344904401 2.2597035270416401 1.3910456301016301 - He 7.0214320430163699 1.1035849648239699 2.6485868467014000 - He 6.6470600923481102 -3.0008011529519898 -1.1875437627254100 - He -6.2708698964563201 -1.0161951975126000 -2.5196731748010399 - He -3.9649041625248902 -6.1075977127748704 -1.9566782047812099 - He 6.5945868311158096 2.2865685849334398 -2.8056025497379200 - He -1.8436091660539600 -2.1031082568369301 -5.5428724164900602 - He -3.0098809280790300 3.0149316088375300 -3.9321146009908299 - He 3.7123034917519502 -1.5844994839974100 -5.4617059430107702 - He -2.6346515386729901 -0.65196283178536796 7.8715406949329996 - He 4.3623301489499804 5.4445600126221203 1.2018921917096601 - He -0.80690994424804696 6.0229527372456397 2.5950560580116189E-002 - He -6.1020776136650596 6.4761263880415401 -1.2458563493749200 - 21 - -0.11338513851705000 - He 1.0379669894725501 -1.2035947608930000 1.3533884203235200 - He -1.2196991427404500 -0.97547953615357896 1.2249271869754099 - He 3.4433841704513801 -1.3092708304892100 1.5672698131324301 - He 0.97286002310921205 1.4101301352799900 3.7564012916285399 - He 1.4594733190688201 1.1757459393638501 -1.2019731252496300 - He 1.0555006693960600 -3.7869711730433400 -0.94881970811056404 - He 0.73179729390252402 -3.4986594804077500 3.9753517814464998 - He -4.6734679069010800 -2.8785945989697699 2.8387600374518001 - He -4.1196495330723497 2.2555934919730798 1.3934382649592501 - He 7.0207553088881198 1.1049240763917501 2.6320021448045701 - He 6.6400942848925704 -2.9949187626443501 -1.1920191444001100 - He -6.2624747991999197 -1.0235911264247199 -2.5161315757399501 - He -3.9492773033732398 -6.1096136126345097 -1.9661190228641101 - He 6.6004077085657000 2.2935954242455501 -2.7976490259086102 - He -1.8454848384364499 -2.1076580957358999 -5.5281589944693597 - He -3.0056478424517801 3.0137400900445899 -3.9238413716799299 - He 3.6989292942451102 -1.5862999025274001 -5.4695788983821796 - He -2.6343070646717801 -0.65680815805398696 7.8630687812268496 - He 4.3736222401546003 5.4520468112001899 1.2000118433868601 - He -0.80309914867743903 6.0307004119948804 2.3826573052630990E-002 - He -6.1056875553224303 6.4694027295740204 -1.2377754846036599 - 21 - -0.11335808070975600 - He 1.0388107232505801 -1.1940831343173799 1.3640759423289499 - He -1.2363715878030801 -0.97402289613726001 1.2358412470871900 - He 3.4526328751082001 -1.3070207698295300 1.5808876694778700 - He 0.97410556454829600 1.4036403655044301 3.7569487661553800 - He 1.4581730875926100 1.1777466762510900 -1.1912416963089101 - He 1.0683861745184899 -3.7761141139884900 -0.94038184474260200 - He 0.74307366105562100 -3.5012063341777901 3.9678132877227701 - He -4.6708968790796401 -2.8871086208185601 2.8299469076561699 - He -4.1242880094971399 2.2602044920699700 1.3928069782768500 - He 7.0184672542577902 1.1095460981579199 2.6372812521866398 - He 6.6363731599477704 -2.9988201237208099 -1.1953942326406799 - He -6.2687589070282197 -1.0218112042543701 -2.5206450871963102 - He -3.9583688627831002 -6.1179695770333504 -1.9695982378609200 - He 6.5955059356525698 2.2938823116248499 -2.8092450890036300 - He -1.8381606539573001 -2.1020515349774000 -5.5199195478228100 - He -3.0181818143151702 3.0123915507285699 -3.9167687008436198 - He 3.6956482681802898 -1.5848434108776599 -5.4804067496241897 - He -2.6479308538631998 -0.65740260748861101 7.8544222218335404 - He 4.3812167632768197 5.4517554121376799 1.2001391328212601 - He -0.78868939252416503 6.0187582656746796 9.8008178887761550E-003 - He -6.0999138227075598 6.4692662656529496 -1.2430515397834201 - 21 - -0.11338426150567500 - He 1.0279910837948301 -1.1911304779903200 1.3671304355827500 - He -1.2162751717942399 -0.97868036725617202 1.2323277797867500 - He 3.4625396417950300 -1.3021483689673701 1.5944254113142200 - He 0.98256302037184495 1.4079612225819900 3.7558777965191199 - He 1.4539540450451200 1.1764140438373800 -1.1793368774229300 - He 1.0727400577280799 -3.7565271371021698 -0.94829886024196597 - He 0.73434863294229002 -3.5097988106453899 3.9680755584887799 - He -4.6496366792519801 -2.8961458291510001 2.8478499829248500 - He -4.1278255748229498 2.2722905186688198 1.3855036681844499 - He 7.0235555510058800 1.1041799551062501 2.6387829095147901 - He 6.6316569398349596 -3.0029073295089801 -1.1995491448850799 - He -6.2655984472388599 -1.0148724842931001 -2.5236955950061799 - He -3.9662949332089901 -6.1084121800659501 -1.9645528611815899 - He 6.5969306088610802 2.2817542004078901 -2.8075177018023698 - He -1.8293342070519101 -2.0926547951232499 -5.5215069435812802 - He -3.0402423327348900 3.0114370042951299 -3.9127169903700398 - He 3.6965308789550799 -1.5815775514553700 -5.4816067539516800 - He -2.6473205595993798 -0.64981205816724696 7.8489043969233698 - He 4.3872091786137402 5.4420457351343297 1.2015504327407600 - He -0.80658653703982497 6.0060659463561299 8.8701895700155596E-003 - He -6.0945931022914603 6.4728713889515896 -1.2566436764108100 - 21 - -0.11338049281062999 - He 1.0296853525405900 -1.1774038266411999 1.3624492244896300 - He -1.2191467365435000 -0.97221532782418396 1.2298712893011099 - He 3.4640844323861502 -1.2891919452345499 1.5986010753226700 - He 1.0031205426784500 1.4037538868540200 3.7497866397019699 - He 1.4402864362990799 1.1678047335118800 -1.1845727547837801 - He 1.0951941746016101 -3.7457921501801401 -0.94394718318035797 - He 0.72347244751000395 -3.5081253925785800 3.9572329329675102 - He -4.6575616090401102 -2.8924979968082098 2.8475665133160000 - He -4.1300165763365202 2.2859486387276600 1.3953753381833200 - He 7.0320665383969301 1.1026383222192599 2.6239587834662199 - He 6.6390122142450601 -3.0201314132899499 -1.2011952233451499 - He -6.2685616342623200 -1.0176695698231699 -2.5382723472143298 - He -3.9613621743741301 -6.1195754812704504 -1.9650405661886801 - He 6.5845942855616197 2.2762751252332998 -2.7989296224498701 - He -1.8298670658612399 -2.1010465975420498 -5.5209348961077103 - He -3.0273978343482799 3.0013633424923900 -3.9008145940175898 - He 3.6845573532457001 -1.5906937898910001 -5.4890757372036001 - He -2.6494769175590198 -0.64546126159810002 7.8493400159817304 - He 4.3914345971075797 5.4420357000566399 1.2061932937513800 - He -0.80915874794767295 6.0143945393626499 1.7324353931202869E-002 - He -6.0988559062378904 6.4767554444872397 -1.2465480164684799 - 21 - -0.11337403926130600 - He 1.0353965766277500 -1.1727952356514999 1.3508586174617401 - He -1.2068263950314699 -0.97183260078931100 1.2326908417452100 - He 3.4722696519592602 -1.2834591965197399 1.5957223351722400 - He 0.98572424239908296 1.3932556200665500 3.7481567018692101 - He 1.4282563502049499 1.1561201532308101 -1.1891107570989801 - He 1.0931643538704601 -3.7404478965428298 -0.93855607428730203 - He 0.72381639615395499 -3.5113711768726699 3.9431535009870600 - He -4.6645149438494302 -2.8889024482484298 2.8426972564492798 - He -4.1320818604237299 2.2855401022459900 1.3912866233320300 - He 7.0396834842012304 1.1015881673945100 2.6127331937543099 - He 6.6429813454654001 -3.0178650173865802 -1.1960331332315799 - He -6.2822725413174600 -1.0078034943554199 -2.5305414720090500 - He -3.9577483057350999 -6.1233865698760797 -1.9417672993894299 - He 6.5804203879683998 2.2764056925549201 -2.7807729878359302 - He -1.8262727043042200 -2.1087736510035602 -5.5233284770798603 - He -3.0172496316622799 3.0008001351224398 -3.9027226428819501 - He 3.6786904618046399 -1.6050487324377201 -5.4868235119672404 - He -2.6485757909169299 -0.63923615895625896 7.8435201698015602 - He 4.3846279432194599 5.4437474954855301 1.2048811627886000 - He -0.81100180054092397 6.0372222437742202 2.2594929221663500E-002 - He -6.0916461711022798 6.4709337158866802 -1.2423087619509601 - 21 - -0.11337826808568700 - He 1.0399150721096899 -1.1747424813723599 1.3633560098367199 - He -1.2085035418497201 -0.97812461010893204 1.2264979096601301 - He 3.4694659706463500 -1.2712792364757901 1.5923592453250000 - He 0.98252808709699802 1.3981008373659201 3.7415385090145099 - He 1.4424637712668200 1.1633029063842300 -1.1804168918698901 - He 1.1027442469688800 -3.7603950909766302 -0.94570356485432505 - He 0.71764196616895404 -3.5111926098091999 3.9473168808301300 - He -4.6747815124569296 -2.8984714507997902 2.8452235551027600 - He -4.1417166839178696 2.2700143356081801 1.4006743116338900 - He 7.0297339073226697 1.1185424068186200 2.6080229362115501 - He 6.6376253416443101 -3.0171863816527802 -1.1971713590872399 - He -6.3017101682105601 -1.0195138840684801 -2.5243324634602700 - He -3.9437204408196500 -6.1135626813904702 -1.9307383738302999 - He 6.5790874375943700 2.2839342282666801 -2.7808324133872602 - He -1.8317786437832599 -2.1129082761953399 -5.5274683428115203 - He -3.0222528415811198 2.9986476381341700 -3.9061000567168400 - He 3.6873106991398799 -1.6037687912858900 -5.4877434969211798 - He -2.6309957549387399 -0.63868835457722395 7.8355041901101998 - He 4.3849566645148599 5.4488711048477301 1.2024794458310100 - He -0.80676315869438497 6.0307874948532003 1.9259589462334178E-002 - He -6.0829558726310404 6.4862721985728804 -1.2403643832682600 - 21 - -0.11336131687117600 - He 1.0361998325377300 -1.1786753743975600 1.3584645338069701 - He -1.2070380238951499 -0.97536869028457795 1.2175124555077399 - He 3.4825644155551001 -1.2811796772776400 1.5898665074818601 - He 0.97938195362927405 1.4088400327726400 3.7452514497978502 - He 1.4335652533670500 1.1570289288737801 -1.1779873404802801 - He 1.0927746819961199 -3.7589369206776100 -0.94470757294271901 - He 0.72137159086953095 -3.5146649233924099 3.9500271324867202 - He -4.6722428337616000 -2.8928378043708598 2.8546175078988298 - He -4.1480985313868999 2.2792324503388302 1.4023048627336101 - He 7.0163379706363402 1.1022385346865700 2.6070099808037899 - He 6.6377360182128697 -3.0162038428691802 -1.2086979692733499 - He -6.2973101341577102 -1.0207363341514000 -2.5079389478249801 - He -3.9428994577734202 -6.1031169049118201 -1.9329303786588099 - He 6.5789128425307997 2.2838436657095000 -2.7960080352632102 - He -1.8211037660282601 -2.1142763677991798 -5.5279109498162304 - He -3.0306088251991898 3.0128363470424402 -3.8992624592020602 - He 3.6690998099679599 -1.5983857106838699 -5.4844235958562901 - He -2.6311855174544201 -0.64381980039260200 7.8357170193511099 - He 4.3914178709460900 5.4457608645024500 1.1987809481236800 - He -0.79565851377398900 6.0233783880129197 1.4500877943447101E-002 - He -6.0634809305691402 6.4830782561852001 -1.2293993169080899 - 21 - -0.11336445569422100 - He 1.0380588396988200 -1.1823456834672199 1.3598551071024301 - He -1.2053619567986500 -0.97278054750700205 1.2195393677158799 - He 3.4691164548851399 -1.2757232226329100 1.5963462401375801 - He 0.96500697797890200 1.4181078592788501 3.7481236740823300 - He 1.4247363721938000 1.1597665662543299 -1.1689987851985499 - He 1.0977414553749500 -3.7552687549504999 -0.94852921896102105 - He 0.73415486484921200 -3.5211174222989499 3.9447504624600600 - He -4.6726047252105500 -2.8830755147100602 2.8621072421019602 - He -4.1558282666156696 2.2867668174922802 1.3925597389853199 - He 7.0113141454255903 1.1148227058910400 2.5995672810517201 - He 6.6390562680659597 -3.0095785611912400 -1.1974841238499301 - He -6.2911649686335798 -1.0166499339493300 -2.5191748270152901 - He -3.9527469801527699 -6.1072170392191998 -1.9436790455137301 - He 6.5702067044594203 2.2755941440611100 -2.8164691661077401 - He -1.8163845099987801 -2.1242847422248698 -5.5203139527317999 - He -3.0373129796317100 3.0185679525310798 -3.9064592865003198 - He 3.6753191859907601 -1.6060575782097899 -5.4703536627280398 - He -2.6271256615856502 -0.65937223398097200 7.8444850786324096 - He 4.4015495380508298 5.4329892561540900 1.1909550863714100 - He -0.78822062254393699 6.0254573196897603 5.1736446379481750E-003 - He -6.0445300639427897 6.4860771430070301 -1.2147779046697200 - 21 - -0.11337074520739900 - He 1.0376463329398300 -1.1766160216285599 1.3621674534154400 - He -1.2113774889036799 -0.97983226526202005 1.2223876261211899 - He 3.4639623593206101 -1.2763126869668000 1.6021020336681999 - He 0.96810414906686404 1.4143107746000900 3.7522775496337299 - He 1.4308699228583599 1.1598712147673000 -1.1805638765134900 - He 1.0993137063687799 -3.7443650555857899 -0.94243964772614797 - He 0.73841456061386701 -3.5197593486501302 3.9429086966477098 - He -4.6705898096215002 -2.8930481110657098 2.8580234826090800 - He -4.1595023755855598 2.3010707497370100 1.3945540298074499 - He 7.0117427420161800 1.1150819472898199 2.5992162814236699 - He 6.6462981669044296 -3.0172322167536700 -1.1999496562574501 - He -6.2841321754957402 -1.0170970390699701 -2.5110204206751701 - He -3.9621310666490901 -6.1087669164828400 -1.9497465322123300 - He 6.5672660316964198 2.2829072559357302 -2.8251116507350602 - He -1.8171937220503100 -2.1267896251105300 -5.5202178843342002 - He -3.0413468416573002 3.0217087233573201 -3.9119168091986101 - He 3.6778505014817600 -1.6025662459798800 -5.4632759176401997 - He -2.6099829372972301 -0.65841968163999098 7.8468517990414002 - He 4.3952383051215200 5.4315321725710097 1.1946990333864900 - He -0.79556337984396996 6.0250238813185302 1.0669151606407259E-002 - He -6.0463234709405800 6.4810117537952197 -1.2138171284984300 - 21 - -0.11335875180866900 - He 1.0357569433270899 -1.1817470594092800 1.3555893001963899 - He -1.2006439684544701 -0.98221352076882296 1.2346861429281999 - He 3.4554888210773802 -1.2796832820609101 1.6062867321960399 - He 0.96734775401549999 1.4208511343983801 3.7614541492195701 - He 1.4439033485722299 1.1643359264992199 -1.1651862910936499 - He 1.1088895831252901 -3.7514315923461998 -0.94579751428429804 - He 0.73760513091944402 -3.5201952868590500 3.9520913830296198 - He -4.6759486755048298 -2.8965893113271401 2.8665969286590798 - He -4.1570469613673602 2.3029111389708699 1.3926303423761099 - He 7.0237096643225101 1.1215376042739400 2.5793281421193002 - He 6.6648884026148698 -2.9989305614579398 -1.2063064297029400 - He -6.2890425726450303 -1.0246759140013100 -2.5148035228671599 - He -3.9738648953270101 -6.0937299240680902 -1.9578357555185399 - He 6.5660234885608997 2.2910150595159502 -2.8340454589342001 - He -1.8194514721868300 -2.1182765239331598 -5.5206175176034300 - He -3.0526609696908200 3.0225828352690600 -3.9217896785894499 - He 3.6776547531915500 -1.6191365735763401 -5.4644310773381104 - He -2.6209812521297202 -0.66461745460305099 7.8474949900379398 - He 4.4018544713087202 5.4177772295480002 1.1956917095265500 - He -0.79357047644556600 6.0220517337909598 2.7426003009311251E-002 - He -6.0443375477589703 6.4871342100949203 -1.2250127389790699 - 21 - -0.11335672219744400 - He 1.0487012578770700 -1.1834818411000800 1.3624488625871201 - He -1.2063476990038899 -0.98589845781632601 1.2219552256501300 - He 3.4705340273925702 -1.2689833442596199 1.6104795129850700 - He 0.94649989433442905 1.4383743542123200 3.7667196419662399 - He 1.4294910201466600 1.1719722753090100 -1.1699435047550399 - He 1.0953169642284299 -3.7653152668418501 -0.95831149761039303 - He 0.72804588120016700 -3.5318972128314798 3.9604729254519602 - He -4.6818945597256603 -2.8968812944601701 2.8527068435577099 - He -4.1547487064071600 2.3020451688903001 1.4039563363101699 - He 7.0380900385289999 1.1151714126083301 2.5653628356706601 - He 6.6657884895120700 -3.0061303161927500 -1.1965301209979400 - He -6.2740323922509198 -1.0239331493723101 -2.5111622801736502 - He -3.9588642012241002 -6.1003948115786404 -1.9628706975166501 - He 6.5797313243762900 2.3033703794224900 -2.8342307894827101 - He -1.8271968949419000 -2.1098359825394901 -5.5310856062154903 - He -3.0612738207543200 3.0256766971691600 -3.9204765619106001 - He 3.6815621259463902 -1.6159929813757099 -5.4706125451936600 - He -2.6096744184789800 -0.67153247129485205 7.8613296069046399 - He 4.4035292207078003 5.4002363067029897 1.2004401676153900 - He -0.79395836881616200 6.0185989915244100 2.7434911618726059E-002 - He -6.0493964417903001 6.5036645396170698 -1.2254800143013500 - 21 - -0.11336410002514900 - He 1.0499989185831200 -1.1882082407659000 1.3689657004441900 - He -1.2141940142689400 -0.98864511373125996 1.2247581663764799 - He 3.4629115630726002 -1.2849055752020100 1.6025197670617399 - He 0.94942697875335202 1.4497576938918799 3.7581964325253900 - He 1.4475286898779700 1.1714098636381700 -1.1587871145763300 - He 1.0852697313949400 -3.7531405489487502 -0.95551234638701599 - He 0.73232114929096304 -3.5294303977242598 3.9619924876191002 - He -4.6769750705044402 -2.9022966625187401 2.8319517945027100 - He -4.1478501662749903 2.3034315991276300 1.4049995989288899 - He 7.0300450844378597 1.1046707742655200 2.5500767170864700 - He 6.6348498113217298 -2.9970219591294400 -1.1941959059914899 - He -6.2680921015380999 -1.0370737393490801 -2.5098768030310001 - He -3.9453935751642302 -6.0942258018183102 -1.9645998152330100 - He 6.5767910016350903 2.2990333316249600 -2.8169738451323698 - He -1.8218559684719300 -2.0911189054790600 -5.5268512752368197 - He -3.0680217390787101 3.0218624662931202 -3.9184497611738198 - He 3.6810112172940399 -1.6146086436931599 -5.4830834144002703 - He -2.6176149113287202 -0.67148226772209896 7.8608168555786699 - He 4.3999576802149001 5.4019814903638501 1.2156923329768199 - He -0.78365637389666398 6.0219663735874303 2.3471115415772001E-002 - He -6.0382207555576004 6.5058056247786604 -1.2225617531036601 - 21 - -0.11336732662723600 - He 1.0425889096015899 -1.1884664432623799 1.3697982571944300 - He -1.1975767914548801 -0.99912826922959996 1.2213747915423101 - He 3.4493443097584899 -1.2822977980259500 1.6030430572981500 - He 0.95066637656694297 1.4363595599865500 3.7628167520745799 - He 1.4416694455357699 1.1558444420699900 -1.1582600614970799 - He 1.0866388767828501 -3.7655300669334100 -0.94099859599916003 - He 0.72122855515799200 -3.5235513141899300 3.9611112516773801 - He -4.6668333724452697 -2.8983914631678900 2.8332646855237198 - He -4.1498915874368603 2.2997938003823699 1.4053740217385400 - He 7.0392084938615698 1.1016927976184201 2.5554865237779500 - He 6.6394959221949499 -2.9945536385955802 -1.2041139169648900 - He -6.2770986813441603 -1.0327937950332700 -2.5162407339664901 - He -3.9639082614335499 -6.0976176307180996 -1.9673134875384599 - He 6.5700670203502103 2.3077182927048101 -2.8098639312923699 - He -1.8170709522232600 -2.0956034542128399 -5.5202173132551504 - He -3.0513763751228100 3.0214448702809200 -3.9226111820051099 - He 3.6843444679347499 -1.6117394889066501 -5.4783957920867303 - He -2.6105274373749401 -0.66082076669939904 7.8645517093879800 - He 4.3857199085523000 5.4267966856884504 1.2014996708561001 - He -0.78269216282090004 6.0297085770266898 2.4564450395578401E-002 - He -6.0265174964410297 6.4872530424125099 -1.2312497592852101 - 21 - -0.11338070377360500 - He 1.0429205470105700 -1.1780845159968101 1.3706509918798899 - He -1.2176358573620600 -0.99724096434732401 1.2310308721649601 - He 3.4428712013657798 -1.2881328307375599 1.6110003534915800 - He 0.95008269107538701 1.4514891045140199 3.7562650391374999 - He 1.4389888121302901 1.1606829009939199 -1.1616567182915600 - He 1.0744352168853499 -3.7678423669458998 -0.93566917749033995 - He 0.72243871231920298 -3.5267919381513901 3.9695172968742498 - He -4.6736075325691102 -2.8921953448756801 2.8348809517911500 - He -4.1421635757797901 2.3024337828704500 1.4095322097840299 - He 7.0332626608288900 1.1071733492198601 2.5528690518402701 - He 6.6501757467812297 -3.0096877146661098 -1.2179382227481701 - He -6.2827952765397299 -1.0399034446835400 -2.5247091645646900 - He -3.9554301224145001 -6.0944012249306097 -1.9583034900016700 - He 6.5808421206202503 2.3094786238500600 -2.8264205028185398 - He -1.8010989638029400 -2.0988488484729100 -5.5283542846370901 - He -3.0572027547317302 3.0025379268063501 -3.9122921668845398 - He 3.6954621988316099 -1.6141759361109900 -5.4826448732479998 - He -2.5900256501424499 -0.66709625258105498 7.8608976616511503 - He 4.3805246509875699 5.4335601797341297 1.2080787714404999 - He -0.78446468807045200 6.0425513985004304 1.4220342094418789E-002 - He -6.0385506526533996 6.4828698726430298 -1.2266808093777299 - 21 - -0.11337111226131200 - He 1.0436665487782100 -1.1793717514947100 1.3824022546578201 - He -1.2236979739549101 -1.0133498907283400 1.2230542943456399 - He 3.4284483229716098 -1.2844377200799399 1.6235208725703600 - He 0.94678402249635596 1.4289935580954101 3.7760301557660898 - He 1.4521848313200201 1.1575764988984201 -1.1519273178960800 - He 1.0572090379144801 -3.7746085408438499 -0.94624979311716195 - He 0.72925665218332703 -3.5138756931628801 3.9819753194252301 - He -4.6703435356627399 -2.8996250601234599 2.8254556936521800 - He -4.1414878053983601 2.2884492609926999 1.4028734250455701 - He 7.0347098441981597 1.1038090459129200 2.5534283772627200 - He 6.6456863232919297 -3.0154462521617802 -1.2205068161910000 - He -6.2883149788708099 -1.0187876499757400 -2.5222828809204199 - He -3.9562178491715398 -6.0863423069347196 -1.9636027919835199 - He 6.6128105685185101 2.3369679091089899 -2.8275173120161901 - He -1.8132663011019901 -2.0961139399740700 -5.5429016001152798 - He -3.0800185385065402 3.0173600957745599 -3.9138550638714600 - He 3.6879064662583398 -1.6199041282627300 -5.4831066699865803 - He -2.5850847647284798 -0.66780453679889196 7.8633949355236901 - He 4.3809219642035497 5.4402164472979404 1.2102460475409000 - He -0.77322826592770999 6.0489150639080496 1.2883260826443879E-002 - He -6.0351587825286099 6.4795080541827499 -1.2258002158905299 - 21 - -0.11336359811228700 - He 1.0513834090010701 -1.1898116557672200 1.3973084090947001 - He -1.2183922333658199 -1.0070968981562201 1.2157755997464601 - He 3.4349789585549400 -1.2760350761730901 1.6176779832165999 - He 0.94187759021764905 1.4334134181572700 3.7744820728064798 - He 1.4611750287508700 1.1555189895645801 -1.1419727343786901 - He 1.0665620352463201 -3.7814094009964299 -0.96203543787946399 - He 0.73188422370741002 -3.5365488137528001 3.9828705919303200 - He -4.6898323921025602 -2.9010263852658902 2.8337572232930999 - He -4.1666610419460604 2.2798053315023599 1.4069980170630301 - He 7.0503818524583597 1.1017037098150999 2.5538249886961601 - He 6.6415570310995404 -3.0169947305529901 -1.2064290986481301 - He -6.2806423851938300 -1.0102946021192700 -2.5143871121526802 - He -3.9543254353741100 -6.0797850539866296 -1.9684117142771200 - He 6.6115719198745602 2.3326473790949200 -2.8236463246380401 - He -1.8046780062383001 -2.1123300273938299 -5.5452937832603197 - He -3.0892338206295600 3.0033659544821401 -3.9049220246736498 - He 3.6795529722596201 -1.5894783196632201 -5.4904159380066204 - He -2.5761989480777001 -0.66656456709410805 7.8532950621731104 - He 4.3839679594715903 5.4528873907127702 1.2171964906154300 - He -0.77888611862982204 6.0442035034151500 1.2055401878026400E-002 - He -6.0414301442385900 6.4867095721895396 -1.2331503450631500 - 21 - -0.11335471183328399 - He 1.0494350985924501 -1.1652519959306100 1.3853215828986700 - He -1.2127203472750501 -0.99401392199956995 1.2062624743020800 - He 3.4291696802339300 -1.2718668557583801 1.6230632220617900 - He 0.93906571438353903 1.4362190939555901 3.7819963926122999 - He 1.4542255241213300 1.1596590509019700 -1.1390168803233400 - He 1.0760073217210799 -3.7936394733492600 -0.95047630262324800 - He 0.72354592713529897 -3.5168452397979602 3.9945778601248398 - He -4.7006476806649697 -2.9052300683201899 2.8337109604565600 - He -4.1648376087635404 2.2646120516821200 1.4058602755017799 - He 7.0239917297662604 1.0869831263237999 2.5464300296122100 - He 6.6457323985769801 -3.0209147485833401 -1.2152410831187199 - He -6.2847791821088697 -1.0174124975699901 -2.5045567891807998 - He -3.9716377803151399 -6.1019325513478400 -1.9502442427535300 - He 6.6186937366907701 2.3181628535276100 -2.8399894235076601 - He -1.7877785661511900 -2.0979458399756901 -5.5378534417863099 - He -3.0902000024282001 3.0094396434770800 -3.9325417155078601 - He 3.6937615286133401 -1.5868819727518799 -5.4819445605465900 - He -2.5625310039587101 -0.65902164497831806 7.8509049693234800 - He 4.3820817727145300 5.4527823865649996 1.2398948105761500 - He -0.77753475911496905 6.0410711991729604 -2.4578468690573362E-003 - He -6.0407606177689201 6.4944494777418704 -1.2291112732734399 - 21 - -0.11336523610382200 - He 1.0468447800767700 -1.1672137679208900 1.3775210069004600 - He -1.2178650462714300 -0.99734580415540697 1.1883679738385799 - He 3.4227910141616800 -1.2819839155687200 1.6260436318207601 - He 0.94926640718961597 1.4312712463122801 3.7820604435516998 - He 1.4565819452461199 1.1598708700912299 -1.1454697743191500 - He 1.0726099177337101 -3.7757667842164202 -0.93744935450155198 - He 0.70934660866099697 -3.4991449656904101 3.9940315642507098 - He -4.7085923806418402 -2.9039000729586402 2.8428129099443802 - He -4.1441058838173497 2.2725952191547099 1.4059647936453401 - He 7.0133767746833504 1.0758564921192200 2.5324921301529200 - He 6.6354064528903196 -3.0092043059932099 -1.2102299153414000 - He -6.2845328330505001 -1.0031750125379100 -2.5051316088054798 - He -3.9745632948485801 -6.1155379916440600 -1.9487298539486699 - He 6.6276497829248298 2.3269096448661202 -2.8248818582421702 - He -1.7997802137020800 -2.0839379830294300 -5.5524238961758003 - He -3.0810987280456601 2.9963469372119000 -3.9222240666575399 - He 3.7035518279716002 -1.6077615567088701 -5.4830118487466804 - He -2.5687308398801201 -0.65824459422883796 7.8578300636568903 - He 4.3768973238478202 5.4484148419815801 1.2407187912669699 - He -0.76772013376455694 6.0312678861493296 -1.3184700992461461E-002 - He -6.0448030516536804 6.4950081490943496 -1.2238915675072000 - 21 - -0.11336025216686700 - He 1.0471830924330301 -1.1477296643889900 1.3736866025026400 - He -1.2113585627036600 -1.0057267201988001 1.1761270477332000 - He 3.4267222406196800 -1.2673765774962500 1.6245398671494200 - He 0.95547744842872695 1.4129023282544000 3.7886845759941599 - He 1.4406097094689900 1.1558024053305800 -1.1603977241405301 - He 1.0774730314001000 -3.7783472976299901 -0.94333152924565900 - He 0.70427994254811999 -3.5175706896163099 3.9880800805226801 - He -4.7232623630914299 -2.9084789841575902 2.8473552953441099 - He -4.1395440457847004 2.2684391246000999 1.4018884055733101 - He 7.0254905724020800 1.0720515877227299 2.5378457955969100 - He 6.6333634185782602 -2.9926572081875902 -1.2128759689627300 - He -6.2967563025146802 -0.98587373325343997 -2.5027043069752599 - He -3.9639434278547201 -6.1196117060746298 -1.9464700573552800 - He 6.6258836548891198 2.3224895883494798 -2.8293029530276299 - He -1.7842069103366700 -2.0747663808522101 -5.5415363060471803 - He -3.0844977779428500 2.9778615586075801 -3.9092774322023800 - He 3.7030243735676902 -1.6123712592873500 -5.4787189538040799 - He -2.5716240584832701 -0.65075833297782404 7.8561419977340501 - He 4.3764366348975496 5.4492656916602096 1.2351692280299100 - He -0.76416539640288095 6.0413347652133096 8.6538934403866379E-003 - He -6.0452266683313702 6.5140929001034600 -1.2230727135717101 - 21 - -0.11335095883334100 - He 1.0357391831347700 -1.1428955906996900 1.3733564741224300 - He -1.2240763790799600 -1.0169432809626500 1.1635993344093700 - He 3.4277197406644899 -1.2574881181695501 1.6054724796880100 - He 0.96911993461590995 1.4191034698673199 3.7908235572006199 - He 1.4387250963493201 1.1557537705742300 -1.1572649686097101 - He 1.0783340818091200 -3.7733171105280299 -0.96270231046484001 - He 0.70366440987946399 -3.5228733164942101 4.0081060491316798 - He -4.7092283187895898 -2.9118682238453699 2.8662716989578101 - He -4.1462998796406101 2.2766143562804602 1.4008730521798500 - He 7.0119377288736402 1.0740175596938599 2.5280761860615102 - He 6.6273996312449901 -3.0004784908367301 -1.2289327030364801 - He -6.2846614260406497 -0.99191918913499599 -2.5127662363757102 - He -3.9499054556433300 -6.1063619519918699 -1.9325047278574901 - He 6.6420251207084497 2.3183100148932101 -2.8143389794946798 - He -1.7873688954091900 -2.0856222542229701 -5.5373993740506000 - He -3.0950069108801399 2.9818796666996699 -3.8980645506370402 - He 3.7000454673873202 -1.6128909006868799 -5.4805727863239504 - He -2.5719477582846699 -0.65501733400231099 7.8703046967225898 - He 4.3612248653694898 5.4583621251309298 1.2380121207240000 - He -0.76263490571405901 6.0436461122585001 9.1041954917585131E-003 - He -6.0327016821205399 6.5100153323644498 -1.2323434158698101 - 21 - -0.11335115316082101 - He 1.0435599883552600 -1.1408393997596900 1.3688718926599399 - He -1.2176373844132800 -1.0193422439615500 1.1814443415173399 - He 3.4425456717701799 -1.2459911742842700 1.6088163101938699 - He 0.95789355007952504 1.4384536982516001 3.7869321978283699 - He 1.4358640345572200 1.1666524963145000 -1.1500630433594901 - He 1.0770505837619400 -3.7616637006480200 -0.97091272602808598 - He 0.71433134331604298 -3.5060008114245100 3.9952635769569902 - He -4.7074289905508797 -2.9139967724347100 2.8607569771066599 - He -4.1348407388249004 2.2676336833119199 1.4142501629918101 - He 6.9955802634085797 1.0705080273641401 2.5353781741473900 - He 6.6085735198516797 -3.0147766062799302 -1.2238630914071100 - He -6.2919478977087699 -0.99061081066471901 -2.5081425168836602 - He -3.9439746383080401 -6.1171690925105100 -1.9278465279148500 - He 6.6293046540888598 2.3415286868039602 -2.8295625917187501 - He -1.7825257829396000 -2.0765097634632399 -5.5431061381856797 - He -3.0884150346498700 2.9667969076172098 -3.8947089995176598 - He 3.6987649505416900 -1.6221279755957401 -5.4601217602948999 - He -2.5764322093796599 -0.66437375352809003 7.8674351227525099 - He 4.3679951939674204 5.4332048876807404 1.2249658415104301 - He -0.76788703751670395 6.0470244516551004 2.0183789256017680E-002 - He -6.0320019534761196 6.5100111852923996 -1.2513582662871701 - 21 - -0.11332545598206301 - He 1.0423677357201400 -1.1399639213525199 1.3798891516572900 - He -1.2128666180013501 -1.0147757365045100 1.1909672267993900 - He 3.4231453783272201 -1.2334544446422200 1.6036118021947601 - He 0.97298896422288905 1.4338866906671699 3.7959914661101801 - He 1.4251418212313800 1.1705384244413699 -1.1395193653378499 - He 1.0882061822075599 -3.7544649731779800 -0.98562311414009995 - He 0.70694202002835504 -3.4967848572105402 3.9797310943603699 - He -4.7017199737280801 -2.9269221237248999 2.8641069228518701 - He -4.1370244101454396 2.2621200763143001 1.4196617146322399 - He 6.9857298566208597 1.0492343866804299 2.5225009882713798 - He 6.6226313422475203 -3.0108727580696502 -1.2339034040497101 - He -6.2871804196840300 -0.99137386024786600 -2.4922457976100598 - He -3.9529235131304001 -6.1090225417683603 -1.9256293308599299 - He 6.6131984730972802 2.3336977980614599 -2.8367519232354401 - He -1.7839807185260199 -2.0775405559990698 -5.5567752967152000 - He -3.0827393195103099 2.9503597214804298 -3.8857776405425501 - He 3.7022207687882100 -1.6181323754180701 -5.4530947956707001 - He -2.5811544701029998 -0.64233984661358701 7.8729894372836302 - He 4.3733995205748002 5.4252619992537303 1.2120523903144500 - He -0.77983571809563001 6.0627728104380800 1.8635062432360669E-002 - He -6.0237456759395798 6.5089254653937898 -1.2351634172534300 - 21 - -0.11332191703379500 - He 1.0450379902451401 -1.1510703138064300 1.3560999399480400 - He -1.2101804281355499 -1.0000341357922000 1.2106226157005999 - He 3.4236277011269398 -1.2348793677094001 1.5839058073192200 - He 0.96318901856371797 1.4210884769275600 3.7964655629339599 - He 1.4289654966107499 1.1838138593254399 -1.1417385860922300 - He 1.0770418352062301 -3.7307752443294899 -0.97560810906202999 - He 0.71261048339156596 -3.5182864163999401 3.9660229870476198 - He -4.7075690467940401 -2.9205885310948099 2.8630384624370699 - He -4.1340717626709402 2.2738134435276498 1.4181561658165800 - He 6.9754292475070097 1.0562174761980101 2.5155488048794998 - He 6.6259109454626799 -3.0183059324380399 -1.2443593871073999 - He -6.3033034196805602 -0.98682217051896504 -2.4938240771401698 - He -3.9466354898103502 -6.1094275351872698 -1.9285010508912701 - He 6.6227636602614597 2.3335399286765299 -2.8214701249209999 - He -1.7942863506637601 -2.0753783063480098 -5.5440702236241304 - He -3.0820382408261899 2.9518228383133698 -3.8817100868052399 - He 3.7200141557075002 -1.6247632383937001 -5.4441340320144596 - He -2.5888220276518701 -0.65600322452196702 7.8822500280936296 - He 4.3878460033665201 5.4270530016998499 1.2159680986353201 - He -0.77322194613920603 6.0838043097723800 2.5091608305050409E-003 - He -6.0130302883837103 6.4783863789069303 -1.2384055403293199 - 21 - -0.11331456612161001 - He 1.0464797238399099 -1.1493589776534501 1.3509296187632800 - He -1.2131927183248301 -1.0005547162997901 1.1978714444322101 - He 3.4233378640909198 -1.2306216011093600 1.5713186301476800 - He 0.95980342387768502 1.4308853757741899 3.8087689605727602 - He 1.4395904460119100 1.1974634832347399 -1.1278498025291399 - He 1.0709625510788301 -3.7309839921147900 -0.97195008364934099 - He 0.72051419800103100 -3.5285506326793898 3.9471727261283900 - He -4.7090141912798096 -2.8976463963441099 2.8557436221833701 - He -4.1303073963132704 2.2672737676697201 1.4125589478275900 - He 6.9692801609165898 1.0656115226228300 2.5188157121401100 - He 6.6399428861988703 -3.0209948788965799 -1.2357090762586000 - He -6.3022887534726904 -0.98824501644772300 -2.4779383386749898 - He -3.9404917090711900 -6.1247430341189100 -1.9436278557988600 - He 6.6163650365173803 2.3410024099245201 -2.8119821897183601 - He -1.7961300308228101 -2.0713363173791701 -5.5480054407160999 - He -3.0998310322857101 2.9316746702165202 -3.8698850667345099 - He 3.7169674584566499 -1.6419050671472200 -5.4493132440946797 - He -2.5863436683411201 -0.66102543162505101 7.8968075735162602 - He 4.3841104148842804 5.4379036010057398 1.1895333634157499 - He -0.76149401210569201 6.0751896990023804 1.0810432637680010E-002 - He -6.0071124070060096 6.4697514979152997 -1.2353110184085101 - 21 - -0.11332093901852600 - He 1.0437274857522800 -1.1340007064776900 1.3527359523816500 - He -1.2370745406844701 -1.0116826794124700 1.1930621086872699 - He 3.4134266654099301 -1.2110172351766799 1.5593482579628799 - He 0.93922155024973097 1.4263279981808601 3.7887584220174202 - He 1.4467975437562599 1.2012796668528600 -1.1259819530154700 - He 1.0670523589501799 -3.7558181625433198 -0.97647392770572605 - He 0.73357940123544096 -3.5336524951521500 3.9501752753690900 - He -4.6836643970906398 -2.8861056365298898 2.8525465239105001 - He -4.1424530481379200 2.2711027578537499 1.4181015654810400 - He 6.9611452536058298 1.0424184766516200 2.5227877088053701 - He 6.6393780431762099 -3.0288341568977799 -1.2483693367203601 - He -6.3005180088987203 -1.0042158453473500 -2.4654350586104501 - He -3.9446314367042401 -6.1245939142643504 -1.9259722813632201 - He 6.6183982959490599 2.3450665199520100 -2.7998210782733999 - He -1.7695296285513600 -2.0831029859662400 -5.5242089592522197 - He -3.1106517866159198 2.9258518687783202 -3.8808275997322199 - He 3.7266935201935101 -1.6462927277555000 -5.4477934574529900 - He -2.5879472467713902 -0.64236892253278999 7.9038174095859501 - He 4.3783160886155903 5.4498409258794904 1.1795570493630501 - He -0.73506631226403496 6.0923308963587903 1.6656279304929359E-002 - He -6.0091456957985399 6.4709939254034703 -1.2466242763227899 - 21 - -0.11333572837101800 - He 1.0273690188853299 -1.1438678347591700 1.3532523857489600 - He -1.2310005728995901 -1.0215064380300001 1.1941990788964900 - He 3.4289729436202201 -1.2216332656363800 1.5484553481796699 - He 0.93187876247941404 1.4159674877479900 3.7698765915574000 - He 1.4485837395779400 1.1976567291060900 -1.1301079133626499 - He 1.0797292067883899 -3.7494140390722701 -0.98335878949928901 - He 0.74484205732070696 -3.5292659089459599 3.9311794979047399 - He -4.7004198706674201 -2.8724100020822299 2.8761937386654002 - He -4.1562567023740904 2.2600495202438302 1.4280852324906199 - He 6.9653015000109004 1.0333163730639501 2.5337883867725002 - He 6.6320562301308197 -3.0310258831443799 -1.2523597275153400 - He -6.3093606473129604 -0.98854334170737201 -2.4551382050774100 - He -3.9489271487772499 -6.1129392413141304 -1.9246453448006600 - He 6.5960296205219500 2.3513952107771501 -2.8130101264316298 - He -1.7707837424766000 -2.0838321465809799 -5.5087300222383098 - He -3.1154709235057800 2.9168779193416001 -3.8619182557874501 - He 3.7404342231640002 -1.6643417648657699 -5.4621608474018304 - He -2.5907814517111398 -0.65190203542085201 7.8994188065843298 - He 4.3834264866076103 5.4545096386211398 1.1813111023989800 - He -0.72250063109455398 6.1157759253163801 1.1470130626799720E-002 - He -5.9909016311111101 6.4836358728150101 -1.2610016244001701 - 21 - -0.11332609187724001 - He 1.0406881193412201 -1.1559024296375600 1.3628216399374800 - He -1.2295103204446700 -1.0243173191872299 1.1937675731922299 - He 3.4272179386984898 -1.2094224209822799 1.5480064145879500 - He 0.91499457202597900 1.4287121402010601 3.7697015918140302 - He 1.4561476816577801 1.1866330391813200 -1.1397593702715800 - He 1.0914578529482100 -3.7333929850294498 -0.98845665406047001 - He 0.74170381758303405 -3.5542482038502001 3.9360203826924400 - He -4.6948558142150798 -2.8693975605242201 2.8643479122090900 - He -4.1531597817334402 2.2663959300932501 1.4324665230402900 - He 6.9640703161298196 1.0483948915035199 2.5497952627335798 - He 6.6482250684460400 -3.0310013258812600 -1.2576538176736201 - He -6.3197891270419300 -1.0113940943350599 -2.4586358875209702 - He -3.9604080033918998 -6.1046675969358200 -1.9357044980932701 - He 6.5781132389105403 2.3493136550350400 -2.8365168594578001 - He -1.7638574398299001 -2.1003722070755200 -5.5016802775057903 - He -3.1034447324100300 2.9184571265711399 -3.8497685681739302 - He 3.7232108170275300 -1.6488098362357899 -5.4727696967419899 - He -2.6083698022778599 -0.65121753530655702 7.9030685914022198 - He 4.3975544039154997 5.4560018313699503 1.1839320457834701 - He -0.72594175070584299 6.1153703255505603 2.5025009118176580E-002 - He -5.9800700841329801 6.4602698413951103 -1.2796486502662801 - 21 - -0.11331423466644300 - He 1.0548369731566400 -1.1596045924825700 1.3683503191044699 - He -1.2143337212408101 -1.0362641667760699 1.2030880318701400 - He 3.4253278282492299 -1.2205670925895400 1.5340359529632299 - He 0.93074023663907601 1.4166633012634700 3.7698765129990899 - He 1.4552012748441101 1.2016552115399599 -1.1313355278746400 - He 1.0863419959288600 -3.7263007915171702 -0.96822250702145496 - He 0.73307090320340296 -3.5249582193384099 3.9438127896857900 - He -4.6830690060129596 -2.8667243019647102 2.8692580863788399 - He -4.1609588167180496 2.2736073727616599 1.4355013439429900 - He 6.9582343521805701 1.0507543490287901 2.5759235155036300 - He 6.6442976594912899 -3.0315285459219901 -1.2665105286178500 - He -6.3142098712289698 -1.0149366879028101 -2.4653370936088002 - He -3.9519517968218398 -6.1106689316640903 -1.9331966219791501 - He 6.5588185623318997 2.3458913016355498 -2.8385822564074399 - He -1.7518837712656401 -2.1137587687649799 -5.5265013076487897 - He -3.1207572513069999 2.9312213489836001 -3.8408852152195800 - He 3.7199436252690998 -1.6203494205655300 -5.5066286835321199 - He -2.6107159507084701 -0.65156690806352902 7.8798179578460301 - He 4.3943023883248804 5.4381866642184402 1.1898815866701100 - He -0.73356081943308904 6.0943329959695403 2.7744226969856959E-002 - He -5.9676840338614596 6.4512781536193202 -1.2715473749653701 - 21 - -0.11329835868222600 - He 1.0633088276563301 -1.1533080251120700 1.3670575506843901 - He -1.2077391997093501 -1.0114135945597600 1.1993136738544401 - He 3.4208227765650201 -1.2188594372424399 1.5359708731864401 - He 0.94968085709138095 1.4071236057294401 3.7645972581171399 - He 1.4576110794956600 1.1985328724065800 -1.1359522008730301 - He 1.1161345568103300 -3.7169240296349200 -0.96890962565632699 - He 0.72971457518209704 -3.5458302839504499 3.9401283087840802 - He -4.6882738068539096 -2.8682367211207298 2.8790010361981002 - He -4.1709173243162603 2.2601738695802500 1.4459830240076801 - He 6.9698153539124501 1.0469658975283600 2.5724333264996599 - He 6.6474516743079999 -3.0168869624319599 -1.2800451909484400 - He -6.2984541716423799 -1.0075601384579600 -2.4552985835076400 - He -3.9561929257627400 -6.1081532498126396 -1.9094290669545999 - He 6.5537271172114400 2.3362140214723999 -2.8481138260830798 - He -1.7618374146346201 -2.1313705642429701 -5.5374241789417296 - He -3.1290231669462800 2.9355669163211102 -3.8412239018895300 - He 3.7147363977390500 -1.6189273740142200 -5.4979023979730997 - He -2.6171333077475900 -0.65646559778316405 7.8719492013154397 - He 4.3961467167604900 5.4360620304287899 1.1887533311160401 - He -0.73219330998848597 6.1125310440361202 3.6597401554850202E-002 - He -5.9995027292954299 6.4367902327530704 -1.2680581586164601 - 21 - -0.11330819130314700 - He 1.0442687007367999 -1.1387896640936399 1.3379235205061599 - He -1.2162827748953200 -1.0068973699853700 1.2100270933409101 - He 3.4211727834179402 -1.2139357006732301 1.5526096020425200 - He 0.96355614394757005 1.4224331216180499 3.7772846447973798 - He 1.4655120945116700 1.1911618494138001 -1.1373716866865800 - He 1.1257988621474500 -3.7265376029184898 -0.96347973002548004 - He 0.73027580987664298 -3.5468166466505600 3.9281137099041099 - He -4.6936684670931497 -2.8842866003104799 2.8795299398313299 - He -4.1529842780610400 2.2616266599831998 1.4246350780515100 - He 6.9854924856786900 1.0450248295838200 2.5734371422483200 - He 6.6389797381368503 -2.9863492006217198 -1.2756870271587599 - He -6.2993422421203498 -1.0152176591042701 -2.4632819351697202 - He -3.9735099461400298 -6.1016676440959801 -1.8869619831933300 - He 6.5568846378095502 2.3225089809285802 -2.8495553256831201 - He -1.7590887478333199 -2.1346671683577800 -5.5243242481896502 - He -3.1239729845640598 2.9235567812589598 -3.8400862466959000 - He 3.7142433051455299 -1.6029429806474400 -5.5146891782047902 - He -2.6121708442701599 -0.66346358482052603 7.8566695141675700 - He 4.3883686047287496 5.4229297673158499 1.1909719832687700 - He -0.71187599019376602 6.1078446816920904 3.0230315725234370E-002 - He -6.0233421402309997 6.4275136766105598 -1.2519457941725500 - 21 - -0.11333270566475701 - He 1.0501420609379599 -1.1410317570024300 1.3441238843487999 - He -1.2234967645482500 -0.99334967155382603 1.2108450976695000 - He 3.4319315646520701 -1.2167352953537600 1.5364750520688699 - He 0.96254406973608997 1.4108707921242101 3.7466863659194098 - He 1.4417819194163699 1.1849782167528400 -1.1307885574043399 - He 1.1017930684521400 -3.7337675538273798 -0.95156641198850900 - He 0.73259369112180395 -3.5377486388800898 3.9127503219801900 - He -4.6731769154614398 -2.8965281771427600 2.8832167740119701 - He -4.1466669132057099 2.2518533181581799 1.4122990858504201 - He 6.9951254301225996 1.0410235170517399 2.5713517108573400 - He 6.6228804708444704 -2.9737624832977798 -1.2660409502730301 - He -6.2740691415292700 -1.0011527669041300 -2.4528998095278101 - He -3.9798277679301699 -6.0978157858535997 -1.8643461815767699 - He 6.5567559890150298 2.3279386544773399 -2.8652391966873698 - He -1.7668428963368901 -2.1363110512169601 -5.5189834397501700 - He -3.1197348944379901 2.9201229673849598 -3.8315016819937600 - He 3.7020944344430200 -1.6069513050055200 -5.4985114573016904 - He -2.6281131563333902 -0.67599985360586201 7.8417378644770697 - He 4.3750575430770500 5.4194456604927099 1.1850130555454299 - He -0.70444747288379606 6.0855887568134497 3.2532128959419253E-002 - He -6.0143501209762098 6.4411157556363303 -1.2461539637428800 - 21 - -0.11331299804025199 - He 1.0615708109794200 -1.1380181036663000 1.3360073275993301 - He -1.2201722141790201 -0.98729548393074296 1.2052271612113099 - He 3.4287196193689899 -1.2151476717859100 1.5373781477511199 - He 0.97048669802628695 1.4168522764621301 3.7511752281192301 - He 1.4154930894508999 1.1872049147325701 -1.1277605944653299 - He 1.1124626869372800 -3.7322284795647702 -0.96334438181697601 - He 0.71811309975732696 -3.5649531005574699 3.8969708020102498 - He -4.6833782606949503 -2.9112807651057202 2.8688494743850899 - He -4.1693611814878100 2.2285205822841001 1.4013512950159801 - He 6.9900646094445902 1.0541914310646701 2.5555028036831802 - He 6.6134635567456899 -2.9513337042118599 -1.2490848174079900 - He -6.2577236178723199 -0.99988858126388602 -2.4445786636790401 - He -3.9804818634957599 -6.0929420077718204 -1.8851579802154701 - He 6.5556061869459699 2.3265473177765101 -2.8725967848783900 - He -1.7615561821080401 -2.1379281453880501 -5.5093256193687896 - He -3.1151224289417301 2.9284785329031600 -3.8171274024054500 - He 3.7287832451349199 -1.6002720353853199 -5.4737473942771500 - He -2.6256160347950801 -0.67041691301543105 7.8416307083192098 - He 4.4015929228962696 5.4011177240033597 1.2121722551420400 - He -0.69724267763985104 6.0908611632390102 2.7785356791819180E-002 - He -6.0231081135319897 6.4331898386690698 -1.2487983163378200 - 21 - -0.11333209705081999 - He 1.0517276881512001 -1.1293293690260899 1.3596488115302601 - He -1.2304815869153301 -1.0054316965997201 1.1964361773390100 - He 3.4334640834495498 -1.2095624781218399 1.5758403034477999 - He 0.96028560632479298 1.4249440313952899 3.7538887369233298 - He 1.4285614169658600 1.1901142000016101 -1.1233873923993900 - He 1.1083710121726700 -3.7353814311535700 -0.94627870302969497 - He 0.70035379380774598 -3.5404259983865400 3.8850516703467202 - He -4.7008876611076698 -2.8980216813406301 2.8475901242921400 - He -4.1815825653957397 2.2316444460467899 1.3884819807047499 - He 6.9985030350000201 1.0443765721978799 2.5541835322687501 - He 6.6285101270319897 -2.9414099847998201 -1.2526090972721700 - He -6.2546850502315303 -1.0103719109053899 -2.4454403101344400 - He -3.9505134417123600 -6.0815870434051300 -1.9090465174287901 - He 6.5645644336681999 2.3120923191735101 -2.8597702688348199 - He -1.7732350586444099 -2.1365159051255200 -5.5274580809584499 - He -3.1160988583163900 2.9277288368168901 -3.8242437071182400 - He 3.7163672553025000 -1.5879249904485599 -5.4689096723497501 - He -2.5939454263873500 -0.69688954363804101 7.8307240292571398 - He 4.4048074589865100 5.4043497747617497 1.2322107924105301 - He -0.69952770230907801 6.0880989855589798 3.2304081846526493E-002 - He -6.0280201810695404 6.4031815062287603 -1.2472940587436900 - 21 - -0.11332601383139300 - He 1.0654551778446699 -1.1494821147940999 1.3615618733921599 - He -1.2181258643955299 -1.0145221051234099 1.1849507538245900 - He 3.4277688765908398 -1.2023101356407500 1.5625589565383100 - He 0.94930372045913503 1.4250477492322400 3.7555726448680899 - He 1.4367921518676201 1.1969708261519700 -1.1449037003726901 - He 1.1163067391474699 -3.7437663486338399 -0.98556822588955295 - He 0.71589251460121595 -3.5556319416315101 3.9085513825400500 - He -4.7016839482655799 -2.9039184615826299 2.8531437311149799 - He -4.1922749368830701 2.2406146274969601 1.4076262321438200 - He 6.9627129525661804 1.0275022989953699 2.5595982698993400 - He 6.6069276327325799 -2.9564072981149798 -1.2680303570695599 - He -6.2528915482716503 -0.99945061133224899 -2.4195417737232301 - He -3.9356113025320201 -6.0795949513199501 -1.8885645722749400 - He 6.5749087534619397 2.3186387429182198 -2.8659601758833602 - He -1.7399995018771199 -2.1423558854350699 -5.5260164650417503 - He -3.1124252614372501 2.9238909270372799 -3.8460213909296601 - He 3.6958281588931299 -1.5765094123174701 -5.4654899772225303 - He -2.6090597289888602 -0.68996805119125804 7.8172669397778103 - He 4.3957343160785403 5.4012646188982298 1.2691048097313899 - He -0.68938533886854803 6.0980353555512199 4.4430203459384851E-002 - He -6.0200866731449398 6.4183006020277196 -1.2594111062229301 - 21 - -0.11331681077302599 - He 1.0735495603691101 -1.1500911687243500 1.3821136841898400 - He -1.2152522300637500 -1.0190095693065699 1.2002646772786700 - He 3.4269662113110200 -1.1897883487953100 1.5642211821113099 - He 0.94396710389464200 1.4401967763455401 3.7506266306383700 - He 1.4845303528436200 1.2118351049625000 -1.1555716847733200 - He 1.1248398494086800 -3.7317078727108299 -0.99935952024883601 - He 0.70884131555282304 -3.5842977636613602 3.9025025783268501 - He -4.6942698564995400 -2.8870077583357698 2.8531236458996401 - He -4.2202832658526299 2.2260688945398899 1.4112726360081500 - He 6.9807224364879703 1.0160138545154700 2.5609583002939300 - He 6.6030750366017497 -2.9339980133446399 -1.2746866805629200 - He -6.2623495283299500 -1.0294676178161200 -2.4111705777574501 - He -3.9327251824076401 -6.0911949244389598 -1.8837777916736800 - He 6.5899926877332398 2.3397768878539602 -2.8679867561044898 - He -1.7522867845763199 -2.1412457966361100 -5.5121529161154097 - He -3.1295658701965698 2.9250214034218200 -3.8462228988964000 - He 3.6887973625498200 -1.6004057915979499 -5.4749427098499801 - He -2.6444007438002899 -0.68700730574732605 7.8039349616955302 - He 4.4087720397938499 5.4079707714201097 1.2479282277231201 - He -0.69072447314779795 6.1042134588790704 5.5035897595939388E-002 - He -6.0200473149796503 6.4094567881814397 -1.2516904805785400 - 21 - -0.11329449743678800 - He 1.0826919933634100 -1.1560103543372600 1.3668679906403600 - He -1.2018727453663200 -1.0230164480541299 1.2022594754388201 - He 3.4229339207165901 -1.2188293773803101 1.5953526941254801 - He 0.95674628105485104 1.4370170838749701 3.7741448987409099 - He 1.4935456181664100 1.1993580819270200 -1.1699115042487100 - He 1.1313674541703100 -3.6958688124923000 -0.98870847413111895 - He 0.69151933532498699 -3.6126858513190201 3.8928230375527000 - He -4.6976095765329902 -2.8708083460836402 2.8519186359433601 - He -4.2600636108478698 2.2290894979066600 1.4155733097572201 - He 6.9742342505666599 1.0189107063370899 2.5533007993095498 - He 6.5998882808395596 -2.9102342873999101 -1.2994459302783099 - He -6.2557087514594203 -1.0404377455172700 -2.4133237759710600 - He -3.9083798708366801 -6.0630033884344696 -1.9012184352763200 - He 6.5827378039694002 2.3370641766465998 -2.8685242164447602 - He -1.7555656559747701 -2.1311585359550098 -5.4846392581957000 - He -3.1476192732686101 2.9147026332545298 -3.8645724112149198 - He 3.6750300023874800 -1.6221569052680900 -5.4588169379617097 - He -2.6482803760254399 -0.68730813781746902 7.8141621151913503 - He 4.4428965800565798 5.4197007825138197 1.2303355990456699 - He -0.67602151175942704 6.1184567727168702 6.2480276399564903E-002 - He -6.0471634462899599 6.3995204599591000 -1.2536404133394199 - 21 - -0.11331623377355000 - He 1.0799330290640601 -1.1508293643392900 1.3564998778343600 - He -1.2009528130592300 -1.0160238253500200 1.2025784964377100 - He 3.4498188853627898 -1.2134513491112899 1.5922809013872301 - He 0.95809414230517698 1.4381508008907700 3.7670503811270399 - He 1.4619813200435900 1.1936814470208701 -1.1783059893792500 - He 1.1394609389947199 -3.6892963208492202 -0.99957566731371705 - He 0.70149424877317401 -3.6420199316269901 3.8934310625196802 - He -4.7189859240732597 -2.8798196842579902 2.8438131398875801 - He -4.2338634285888803 2.2403271800599800 1.3912135223412201 - He 6.9785758797561197 1.0272882578483000 2.5524225043085900 - He 6.5814535428430903 -2.9091275685109599 -1.3135739859652600 - He -6.2681641403906800 -1.0357567936307399 -2.3976237974777699 - He -3.9326535334964499 -6.0424429214085897 -1.9015989746678601 - He 6.6171513790945298 2.3344986221347899 -2.8387583012775202 - He -1.7595351330686799 -2.1318363513469900 -5.4782247313618502 - He -3.1143988182292199 2.9064991347067202 -3.8608582620285699 - He 3.6584949544541598 -1.6077387080113099 -5.4486583169894400 - He -2.6470206786299100 -0.69597256325752599 7.8212047996181697 - He 4.4387875597997803 5.4303367992864002 1.2342120832008101 - He -0.67955414193544506 6.0881561983526797 5.9995674483476501E-002 - He -6.0520499698477002 6.4021707881865098 -1.2440665290976201 - 21 - -0.11331713535057100 - He 1.0696488151448600 -1.1336230044046500 1.3525648717764400 - He -1.1956885870502301 -1.0108367417268300 1.1849593848877100 - He 3.4401062725184399 -1.2199540232410400 1.6162350044029501 - He 0.95269842190365395 1.4363850508361300 3.7883143090742699 - He 1.4591285213170100 1.2114797186633699 -1.1872435818265901 - He 1.1303312795253200 -3.6770144480200200 -1.0048774808579299 - He 0.73544011628904304 -3.6227083870308601 3.9016789231174198 - He -4.7267341639200398 -2.8377314926251902 2.8215846236952400 - He -4.2306452450708401 2.2128555595032200 1.4063748532846601 - He 6.9741958899994803 0.99452812927998702 2.5896888020064499 - He 6.5734174101499399 -2.8866980781234801 -1.2994229163720401 - He -6.2727343564700400 -1.0414436151943300 -2.3856875640644200 - He -3.9286175312981402 -6.0599235024082097 -1.9289128561430700 - He 6.6233693184627098 2.3440561298358999 -2.8499476619287698 - He -1.7493675351372200 -2.1275820312486400 -5.4799095482327500 - He -3.1025878788400600 2.9128546136641602 -3.8842410806807801 - He 3.6461995355839800 -1.6084477524196099 -5.4498045735149301 - He -2.6607888140161502 -0.71228608567810303 7.7922119996695898 - He 4.4425983457125398 5.4262732210642497 1.2381652865828701 - He -0.69531072294355201 6.0655475366846900 7.2143965521374601E-002 - He -6.0461360131046602 6.3823323191757604 -1.2493906721524499 - 21 - -0.11329633370741100 - He 1.0700149297566299 -1.1369183804977201 1.3487532811929099 - He -1.1859139340582801 -1.0041430630407799 1.1934908057775699 - He 3.4503703666262302 -1.2197122065513999 1.6039924420830800 - He 0.95504273552169106 1.4391701841662801 3.8098280526772998 - He 1.4694369487997301 1.2156553354783399 -1.1642513663012599 - He 1.1457525706798499 -3.6992468648196000 -1.0100578580246700 - He 0.75322556515109396 -3.6351652408921700 3.8965985963530199 - He -4.7174737444939900 -2.8442943141183101 2.8084570342679802 - He -4.2211001221032802 2.2159104285595999 1.4172662538720000 - He 6.9480838413755404 0.99516920695975697 2.5707397529437799 - He 6.5807748067272396 -2.8913552379939298 -1.2961281034215899 - He -6.2828418560032597 -1.0196546711309700 -2.3865311829879099 - He -3.9336694614360299 -6.0709953955082998 -1.9461817624150901 - He 6.6146338332806502 2.3440203766720500 -2.8676121011806601 - He -1.7508636712225900 -2.1237582478619599 -5.4750158059286500 - He -3.1024741155685200 2.9248891871817801 -3.8583708704133501 - He 3.6254704294143201 -1.6005161617504400 -5.4539079038997800 - He -2.6876483417892598 -0.70930007124825001 7.7880021972616600 - He 4.4553677356418397 5.4321246732863200 1.2401095303441800 - He -0.69005111895721405 6.0466388345520103 8.2091779252137217E-002 - He -6.0581729955383397 6.4019391690127998 -1.2714193783467600 - 21 - -0.11330620215755700 - He 1.0745755152865599 -1.1376206276580301 1.3477651694346899 - He -1.1857804801973599 -1.0281672534409101 1.1817514685876300 - He 3.4726252737277998 -1.2309764490283801 1.5896685432803099 - He 0.94624498667706103 1.4417946861950499 3.8029718290008301 - He 1.4739593123076200 1.2233893955700801 -1.1627750705973701 - He 1.1238151042710300 -3.7070724980344001 -1.0172247908450300 - He 0.76600073908201205 -3.6102934888027498 3.9226647775855201 - He -4.7142682510409903 -2.8388589992050299 2.8013264803705700 - He -4.2013264072813303 2.2059455179102199 1.4478729779441999 - He 6.9474865761453799 1.0058698310401399 2.5745889031363300 - He 6.5798478118177002 -2.9110931738227799 -1.2907969625841500 - He -6.2779677287526603 -1.0367896721759300 -2.4066662214461698 - He -3.9445158634065201 -6.0703554950467797 -1.9279761093073600 - He 6.6248878310960801 2.3540029269309000 -2.8668562528680299 - He -1.7319508569788800 -2.1246174706189200 -5.4971654727574100 - He -3.1193597115724501 2.9246737794702899 -3.8420839110281899 - He 3.6099213897020701 -1.6136411863044500 -5.4297863962765698 - He -2.6964901184127301 -0.72204052169208999 7.7988201519515803 - He 4.4479897721856103 5.4483976530581497 1.2212905116915300 - He -0.70232712972440403 6.0587023563986202 7.9132499240968060E-002 - He -6.0738241472559604 6.4216583531457001 -1.3140993008845301 - 21 - -0.11332684709534301 - He 1.0876642357067801 -1.1458191617193700 1.3535375334312800 - He -1.1884349211500500 -1.0294178613940099 1.1956292330151399 - He 3.4598124609103098 -1.2529561587877200 1.5905318615005599 - He 0.93685241830861699 1.4298083535662001 3.7741154665053598 - He 1.4755131231825100 1.2310821987625600 -1.1554657796908401 - He 1.1252052069708300 -3.6937653641698600 -1.0179140103386899 - He 0.75180253019303200 -3.6017466171939301 3.9491204222019798 - He -4.7033304583394298 -2.8259502065781601 2.7965056026294102 - He -4.1932925053960499 2.2176943599039300 1.4440016550747301 - He 6.9341269612855401 1.0181078630605500 2.5850030247620701 - He 6.5651163521718399 -2.9326321008877101 -1.2860250144726000 - He -6.2661138312416398 -1.0314425846453199 -2.4126892081072100 - He -3.9373246999900000 -6.0884290809227704 -1.9161538272423699 - He 6.5880808552462398 2.3628079286393899 -2.8758902124412802 - He -1.7366590666982900 -2.1183499512310902 -5.4726816329968102 - He -3.1304858553144999 2.8980300411122202 -3.8118716929668701 - He 3.6356179062427700 -1.6167736209274599 -5.4476786536761503 - He -2.6732550178801100 -0.72148357444541000 7.8053621356281004 - He 4.4629736460615499 5.4847200363076496 1.1889865074280801 - He -0.70425046473320496 6.0466206002869702 8.0070808819644415E-002 - He -6.0623963505271901 6.4355220101065402 -1.3391720788604000 - 21 - -0.11330539330380000 - He 1.1073423789669501 -1.1466217662258000 1.3525084702088599 - He -1.1885320104586301 -1.0343691125676100 1.1988354367291301 - He 3.4454117484645699 -1.2534656359768499 1.5902481595517599 - He 0.92425373925857701 1.4135052910642401 3.7578322579716801 - He 1.4745276131936600 1.2353179055128201 -1.1486823761183500 - He 1.1389789423515400 -3.7191775615469300 -1.0264571146037500 - He 0.75258221490160304 -3.6008558423933299 3.9716572303235802 - He -4.7017277210099602 -2.8461462459474101 2.8052458751319800 - He -4.1851323078596900 2.2303684941532498 1.4492157077348100 - He 6.9456163990035602 1.0086837569845599 2.5804097988544901 - He 6.5580522940152299 -2.9112787547088801 -1.2953997713201699 - He -6.2714448788016997 -1.0091844146038700 -2.4123981968702100 - He -3.9358838702610002 -6.0973042132498003 -1.8981065382992099 - He 6.5780772894902197 2.3673251937975102 -2.8785612485269598 - He -1.7274678026638699 -2.1204985325618000 -5.4514119463708104 - He -3.1501618439895598 2.9118434855431801 -3.8035104334031198 - He 3.6374675646981398 -1.6073202989689801 -5.4419790884648700 - He -2.6675805316494099 -0.72713249214385400 7.8237588256435204 - He 4.4385487775333496 5.4867745577290696 1.1604052952224400 - He -0.68822588962447795 6.0281141766785398 0.10499992761602001 - He -6.0687210106575300 6.4394982207241496 -1.3754023542968099 - 21 - -0.11332639572410701 - He 1.0991945099058700 -1.1285916074465900 1.3883659934127199 - He -1.1887351067704599 -1.0242567959776301 1.1934127278548401 - He 3.4450311289800002 -1.2382558260157599 1.5890279223440900 - He 0.93332725835520902 1.4175013808705701 3.7584050441118100 - He 1.4680316066618500 1.2148779587846299 -1.1683767055982699 - He 1.1187667416181499 -3.7126695630104600 -0.99649253105258695 - He 0.76218274255781704 -3.5772853194678600 3.9561228956189298 - He -4.7050756138031904 -2.8499375756176701 2.7945322206796699 - He -4.1674950765173602 2.2194853115463400 1.4763475905260499 - He 6.9174909901311397 1.0329227024272500 2.5796195417723098 - He 6.5494764886457402 -2.9403828861573200 -1.2755024820767900 - He -6.2754311613592604 -1.0279191853234899 -2.4270021261139498 - He -3.9405677903391498 -6.0808746675901801 -1.9094459487350699 - He 6.5874896633479203 2.3617098151935099 -2.8668438766686499 - He -1.7377107455073100 -2.1387121340869899 -5.4615856941955601 - He -3.1175434484067499 2.9270049492434600 -3.8176140302834298 - He 3.6719372551134000 -1.6007023963690701 -5.4301660429751397 - He -2.6864068957038398 -0.71298204791638897 7.7936744084681697 - He 4.4449531602196899 5.4809900129106497 1.1708971530256300 - He -0.69984256638976405 6.0233561112650902 0.12818372672312001 - He -6.0639818043844897 6.4146293637100804 -1.3981201061513999 - 21 - -0.11329102896011201 - He 1.0849739460560801 -1.1272935955199099 1.3668203062814399 - He -1.1794523969776400 -0.99343634382166401 1.1609794717306701 - He 3.4552600580818398 -1.2489554996650001 1.6025324587239100 - He 0.94816933184295105 1.4135202292869899 3.7494172174043499 - He 1.4653207476234000 1.1966477693672499 -1.1446515803259001 - He 1.1181326196570200 -3.7078932193959599 -0.98595614447621704 - He 0.77291063107674496 -3.5819231935930400 3.9603830710579402 - He -4.7074539547693801 -2.8785135417140699 2.7837688935294298 - He -4.1636511813357098 2.2164333893979400 1.4969209095592999 - He 6.9249648186672097 1.0424545323495000 2.5816285549267599 - He 6.5450330892021604 -2.9142810530221199 -1.2702717612732100 - He -6.2661732159756696 -1.0204692596661700 -2.4325611849106501 - He -3.9530757764197602 -6.0739224153293296 -1.9088402944011900 - He 6.5729599940300503 2.3671379744730698 -2.8497945306190799 - He -1.7419742140782000 -2.1485093015799102 -5.4434774781851196 - He -3.1418834294373301 2.9172517700920899 -3.8008576453933500 - He 3.6748417939518401 -1.6062402417349499 -5.4535934829842603 - He -2.6825807501443801 -0.70687849269994796 7.7997867169566302 - He 4.4561781432387102 5.4771715279124598 1.1396638149225600 - He -0.71199666783076898 6.0304398130664696 0.11978619488041101 - He -6.0637752848132198 6.4091936549283703 -1.3965782456122300 - 21 - -0.11331852948896200 - He 1.0631215079983101 -1.1336738850822501 1.3617395662657099 - He -1.1919265877832901 -1.0196757456320700 1.1522231350690599 - He 3.4630013177793701 -1.2365150306464801 1.5993256930289399 - He 0.92926900685374703 1.4247666815897100 3.7724738618487201 - He 1.4645126598493301 1.1970375840215599 -1.1762378181505500 - He 1.1274581469601099 -3.7160378423317102 -0.98352776939058295 - He 0.76114632312366304 -3.5453627346933101 3.9592696166749000 - He -4.7106512942777901 -2.8764674893898698 2.7792983143579599 - He -4.1743590060791096 2.2182349202397398 1.5179908183785200 - He 6.9339149386312204 1.0378718132197500 2.5839092496827099 - He 6.5615135102806699 -2.9025098626199100 -1.2550806141482400 - He -6.2639766832704700 -1.0167063906095199 -2.4377793096176599 - He -3.9562979660913600 -6.0833498659895300 -1.9036588072730201 - He 6.5817030809585102 2.3610963224883101 -2.8668457010779198 - He -1.7583903312446201 -2.1670333850245100 -5.4422180007037504 - He -3.0896851589886700 2.9335449466453301 -3.7977833030490298 - He 3.6741678017814601 -1.5955406169594799 -5.4252297042356403 - He -2.6867170683198802 -0.69589575340875598 7.7585342007401996 - He 4.4499497438146998 5.4401173582796503 1.1413217799930200 - He -0.71236484485491702 6.0179295151815904 0.10834926932836100 - He -6.0593350015750396 6.3788473866438498 -1.3940228404019399 - 21 - -0.11331059267009500 - He 1.0993737052540600 -1.1361719606200000 1.3511674263328901 - He -1.1845974564697901 -1.0273190106047900 1.1580577289413601 - He 3.4438140593414701 -1.2412120893060601 1.6017203160251201 - He 0.94340414337503198 1.4135042838393199 3.7701518654954702 - He 1.4628486387360000 1.1739521671881901 -1.1727510264900700 - He 1.1421755555879800 -3.7391350663358902 -0.97891738197393297 - He 0.74529770951190299 -3.5331715657391398 3.9784054357861498 - He -4.7399466959363901 -2.8752822178979800 2.7773520418103601 - He -4.1787925620598196 2.2356619864438301 1.5124493295365899 - He 6.9241965871098499 1.0364620921776899 2.5937620372173402 - He 6.5528667983909497 -2.8863113663891302 -1.2224446578776600 - He -6.2494737271190601 -0.99454597378388998 -2.4433390976545200 - He -3.9618182649212299 -6.0767385239878102 -1.9081246118794100 - He 6.6058943355932298 2.3533719006426899 -2.8415036944385701 - He -1.7600777239057701 -2.1793627297981000 -5.4661156903676904 - He -3.0720086357793099 2.9410347975198201 -3.8078630411150201 - He 3.6921716160475899 -1.5823271693577501 -5.4362284834757499 - He -2.6998912749787198 -0.70612779949929605 7.7466337769168296 - He 4.4608614437643004 5.4233486030302300 1.1369009319990500 - He -0.72358256311626701 6.0091916268516101 9.7220855764954581E-002 - He -6.0797244574547502 6.3923281181881499 -1.3951043082771499 - 21 - -0.11330634925811700 - He 1.1019861398036499 -1.1329545559176699 1.3520285914087400 - He -1.1834180201723199 -1.0321904609502901 1.1819973517139899 - He 3.4451957509860400 -1.2492346523272100 1.5788423082503900 - He 0.97814554473424697 1.4203804800859201 3.8046201167588900 - He 1.4446405741618200 1.1840350445249299 -1.2079343796484401 - He 1.1459839784910100 -3.7254979765691298 -0.98193053950752196 - He 0.73568580960291796 -3.5346377390091801 3.9836071057057700 - He -4.7314769054299397 -2.8832330523571499 2.8075771836900700 - He -4.1952907165986799 2.2794450306484499 1.5229364908571299 - He 6.9380830296573999 1.0221446918995400 2.5870025543803798 - He 6.5318864625882096 -2.8968703853755202 -1.2472379754445799 - He -6.2579960083003900 -1.0066381859753799 -2.4460152848425500 - He -3.9553155217684299 -6.0779577798857698 -1.9212337905827701 - He 6.5989464834684002 2.3740879631632801 -2.8519582236851599 - He -1.7466362332631400 -2.1805675332147501 -5.4713187408506903 - He -3.0446549972820498 2.9666971845231198 -3.8515916518124702 - He 3.6642872300365701 -1.5777142800322099 -5.4426305338421104 - He -2.7282935298024902 -0.72869239893131199 7.7464971503657702 - He 4.4565991446136204 5.4154573809437103 1.1280805053019201 - He -0.72303794765505902 5.9840660109336303 0.14448135000267301 - He -6.0599190701863099 6.3725614160606296 -1.4048211930817600 - 21 - -0.11332603602691600 - He 1.1005103512602901 -1.1298380061989699 1.3660651371875601 - He -1.2016429544333300 -1.0462996248630201 1.2102503191052900 - He 3.4562238823390001 -1.2651355631503900 1.5608110072557999 - He 0.97167264464104197 1.3923938215468701 3.8245723200603998 - He 1.4625331854244099 1.1706947274635300 -1.2224536931913901 - He 1.1449746650688399 -3.7072321960515700 -0.98450850458813099 - He 0.73896536082980802 -3.5272101524507300 3.9637284812367102 - He -4.7398678638569400 -2.9060353184793901 2.7907482736671998 - He -4.1622312292351200 2.2783672832934099 1.5123710184745200 - He 6.9494453016351398 1.0291375863356400 2.5903893632350998 - He 6.5296777592337500 -2.9301000757566000 -1.2700630314194801 - He -6.2785215683539004 -1.0109914235555399 -2.4565087458948800 - He -3.9744249168375299 -6.0674012290687296 -1.9172491369269400 - He 6.5998651078283004 2.3882601593259900 -2.8408076110718401 - He -1.7462096352983700 -2.2076701748954601 -5.4623646946584801 - He -3.0372467328993600 3.0083634278499201 -3.8532318376390000 - He 3.6527949766964900 -1.5509710000236301 -5.4325112708188303 - He -2.7141360104011198 -0.72212605355424697 7.7574219489077096 - He 4.4686024446640404 5.4110206135614698 1.1325871045899301 - He -0.71849670551672795 5.9926092559163502 0.16715752437674000 - He -6.0886539964550499 6.3701782554965298 -1.4029913656351900 - 21 - -0.11334160616164000 - He 1.0969325839151101 -1.1254872169025700 1.3670498432518701 - He -1.1898191440085000 -1.0401848825807001 1.1961140599406499 - He 3.4528461191873498 -1.2635143157569499 1.5897548655010101 - He 0.95593103428487702 1.4040286560886801 3.8135143876064101 - He 1.4690487571048001 1.1663092759911200 -1.2165848641974299 - He 1.1315579552869099 -3.7261061823140098 -0.96754034241357201 - He 0.75127443745850797 -3.5469787263893702 3.9719279212484602 - He -4.7030373625633297 -2.9006226095214700 2.7791930435094701 - He -4.1421936353386402 2.2612689482755099 1.4726433725950800 - He 6.9541362818899799 1.0637271878692300 2.5988894635482298 - He 6.5515619753823202 -2.9336753001940798 -1.2701178106747699 - He -6.2812159422955798 -1.0132487229657099 -2.4617075425782500 - He -4.0045845210713296 -6.0634012047684802 -1.9021528031675301 - He 6.5894096210355801 2.3888414830779898 -2.8216490982234799 - He -1.7495647632231801 -2.2024488249737999 -5.4476157515974997 - He -3.0451219137018102 3.0086087367515102 -3.8843669251167299 - He 3.6868918313646599 -1.5540702714142400 -5.4261426468097804 - He -2.7193000283302800 -0.71738993760759695 7.7334776477360796 - He 4.4346227702097396 5.4275638461653699 1.1237193766546600 - He -0.73089043638527995 5.9742307515126800 0.17856253605878900 - He -6.1187632412058601 6.3475388898996101 -1.3834893687372301 - 21 - -0.11329755677385700 - He 1.0765661366453401 -1.1420596784993500 1.3711188949705200 - He -1.1950409301197900 -1.0499926557393899 1.1598044059213199 - He 3.4506484721417201 -1.2256818304500701 1.5492904651352200 - He 0.95405472318377804 1.4183553508404201 3.8194119398390098 - He 1.5071809247591199 1.1841329791672000 -1.2083145138851401 - He 1.1000451142973200 -3.6931659704630300 -0.98170578948541898 - He 0.75051925886164605 -3.5436666299634498 4.0066819563170197 - He -4.7042765764266603 -2.9265722360443500 2.7638885646064102 - He -4.1705073136890096 2.2453767935650002 1.5019808632128000 - He 6.9872306120677203 1.0708809837801900 2.5973185808776100 - He 6.5616660354859802 -2.8975948888079799 -1.2695941227054399 - He -6.2922273283173604 -1.0125779017534999 -2.4731717050139501 - He -4.0077707259060400 -6.1076001560258497 -1.8967760377844001 - He 6.5989910037035404 2.3307536262658601 -2.8008169055071801 - He -1.7640498959920901 -2.1788846928883201 -5.4707081996997804 - He -3.0488371759643602 3.0142085105705698 -3.8953924920639200 - He 3.7248541300016300 -1.5564777862499699 -5.4448043881655996 - He -2.7264802368563501 -0.72838822324814301 7.7325779790973996 - He 4.4426208902946396 5.4358583376569500 1.1308882060357499 - He -0.75254403104607404 5.9536713123826699 0.21566878374771900 - He -6.1167471459944602 6.3799788843604102 -1.3688499762036801 - 21 - -0.11328459084379000 - He 1.0947441770059401 -1.1582796470616401 1.3784819109744000 - He -1.1928620742625800 -1.0427417673537900 1.1433690781278401 - He 3.4633261058148999 -1.2152806510377101 1.5538372493239501 - He 0.97386131094258599 1.4232081891247601 3.7938642155920799 - He 1.4519142812644299 1.1684703417286100 -1.1981273720143399 - He 1.1186293074809801 -3.6955501300843898 -0.98338189308823998 - He 0.73051191740611499 -3.5388361903498802 4.0121633097319700 - He -4.7202054486377998 -2.9486831647737799 2.7662264442217901 - He -4.1710930699690802 2.2525322531746399 1.4805774390404001 - He 6.9668129185119998 1.0505661978151000 2.5886075619354298 - He 6.5951210827264601 -2.8697976169571899 -1.2429677971572901 - He -6.3029434908751503 -1.0179563449733899 -2.4828452201592102 - He -4.0117737252008201 -6.1159261744709896 -1.9018840397718400 - He 6.5978963114520397 2.3268332076115201 -2.8305591390692202 - He -1.7716693199294100 -2.1739413956108899 -5.4620120072051703 - He -3.0533354781352702 3.0199824157354902 -3.9055664929439402 - He 3.7533017197392202 -1.5635445543008399 -5.4170744289984398 - He -2.7338679396854801 -0.67188154508083697 7.7313836365077000 - He 4.4728016691037897 5.4381092317341500 1.1273245935188301 - He -0.76803391970540102 5.9284999181651701 0.21301297712627501 - He -6.1144151858747602 6.3711812582012604 -1.3696623581435301 - 21 - -0.11327255244444200 - He 1.0765636333629300 -1.1473134570683901 1.3528319533821700 - He -1.1865393891952600 -1.0539672863919400 1.1501529985504200 - He 3.4657861589996899 -1.2223524309570699 1.5788815795766300 - He 0.95408710162438803 1.4399750328493199 3.8054806078889301 - He 1.4221934797937501 1.1569616302087899 -1.2225387315385501 - He 1.1414348346662699 -3.6894278622790302 -1.0202920131609099 - He 0.73742009487275195 -3.5569659824570801 3.9763556687487100 - He -4.7322678272260896 -2.9470165359782698 2.8047009253995498 - He -4.1571178719569097 2.2364241662280500 1.4935061015932201 - He 6.9745338381378001 1.0399534009388001 2.5621521450508902 - He 6.5894012384833696 -2.8452177064513400 -1.2718439019120700 - He -6.2934377579635301 -1.0410662058771900 -2.5020702006650701 - He -4.0290251131769104 -6.0890535969368900 -1.9486210120599901 - He 6.5815304756905899 2.3440607319540900 -2.8124371165276600 - He -1.7617779706020500 -2.1524518732837099 -5.4333879320395502 - He -3.0145526055974101 3.0091294863244000 -3.9295724919701902 - He 3.7304441976805398 -1.5753815045366300 -5.4118617450594897 - He -2.7519574475002799 -0.69914625921238505 7.7790804579860202 - He 4.4637058196549004 5.4216112683191504 1.1618664171321300 - He -0.76628280513035096 5.9277968871785198 0.21989604766563001 - He -6.0449385325578300 6.4027904891101999 -1.3686108291202701 - 21 - -0.11326371154346500 - He 1.0967715913798100 -1.1259195309153900 1.3899400557963699 - He -1.1837766489448600 -1.0197598398727299 1.1448571602124300 - He 3.4611987202102101 -1.2578280161830300 1.5709302729888801 - He 0.94932250789917805 1.4497980940983000 3.8098065772902299 - He 1.4426055085379601 1.1547702208383801 -1.2208138088128100 - He 1.1375034680560101 -3.6563618608482900 -1.0203570307552901 - He 0.71924609574798404 -3.5711069249482801 3.9725607943218302 - He -4.7198292797391197 -2.9676635180005300 2.7778655884587700 - He -4.1605116526305697 2.1953188427059200 1.4775025894951599 - He 6.9655801433429501 1.0130792414020700 2.5778335812343900 - He 6.5911984665297796 -2.8123985821283100 -1.2868994774552800 - He -6.2784940599937400 -1.0396001604702900 -2.4742749214625799 - He -4.0137014688693302 -6.0502396192668897 -1.9198799357202501 - He 6.5683786938793496 2.3346699122102699 -2.8199916069653401 - He -1.7781109320753801 -2.1791447297143698 -5.4254719561771401 - He -2.9975987859767401 3.0171243410962099 -3.9307348683919900 - He 3.6773977640224298 -1.5973658716740400 -5.4310430652815400 - He -2.7654171518656900 -0.71733011790744206 7.7791698602027397 - He 4.4677751226119300 5.4281493385933199 1.1673454691787100 - He -0.79611805957247395 5.9321884935173399 0.22836855810310400 - He -5.9986463540987396 6.4120901761621498 -1.3955959195876100 - 21 - -0.11321213484907799 - He 1.0905172956842000 -1.1534027242809399 1.3888704139682999 - He -1.1708652322614299 -1.0131314147534300 1.1338891066979200 - He 3.4520885451351901 -1.2229903703976901 1.5939430202015601 - He 0.92293804798927404 1.4353486470037999 3.8335773917346700 - He 1.4304119238520701 1.1768926763255401 -1.2553019908500100 - He 1.1197916064999200 -3.6758524679348801 -1.0373188987137900 - He 0.72680653071148904 -3.5798024305926699 3.9984471128909802 - He -4.7199451078504904 -2.9563910205930499 2.7776739412824001 - He -4.1578333260037201 2.1790354859868102 1.4750932104415000 - He 6.9601625661301796 1.0116021838415401 2.5600946186513198 - He 6.5804682136515904 -2.8072874641270502 -1.2846786966799799 - He -6.2220369198847401 -1.0692640851438200 -2.4465939379799200 - He -4.0687070513606898 -6.0493989059914597 -1.9091896141836600 - He 6.5741960830870498 2.3262137791757400 -2.7709335313370600 - He -1.7608256021677700 -2.1622873020412898 -5.3902482790349699 - He -3.0128086032600598 3.0533353841238702 -3.9787532788629201 - He 3.6739674628653800 -1.5664124703484501 -5.4465581546636397 - He -2.7529230280572201 -0.72704394599377398 7.7661117172350496 - He 4.4887690679496499 5.4080082213695500 1.1530028232545100 - He -0.77884619390479304 5.9360452804902204 0.20775935289893999 - He -5.9735874030754701 6.4057078110673800 -1.4077438294193600 - 21 - -0.11325393514344000 - He 1.0941672025746101 -1.1339184296472400 1.4262240078063799 - He -1.1995448121967700 -1.0343180945212800 1.1301970151281000 - He 3.4339852186307600 -1.2056702092427500 1.5917475603798099 - He 0.91017956982348802 1.3850479508646001 3.8282442389865898 - He 1.4429496549798100 1.1573968279974500 -1.2652642356502699 - He 1.1490796558611100 -3.6846403141323600 -1.0220384936242799 - He 0.73781325411912801 -3.5787995840364601 3.9729109572954799 - He -4.7216312182522602 -2.9658944730889201 2.7475582445310298 - He -4.2090170498744603 2.2033490582707000 1.4987708619207400 - He 6.9450953705018197 1.0004702222265001 2.5524387857189401 - He 6.5818342652103903 -2.7754159003436101 -1.2719510682016899 - He -6.1817255721732902 -1.0866272262609600 -2.4481614943734300 - He -4.0363517799833097 -6.0615804507795499 -1.9485628697194100 - He 6.5610189351362900 2.3017394707821199 -2.7872058769864601 - He -1.7669284601455399 -2.1373403818685000 -5.3522206039382798 - He -3.0148368937165699 3.0749720464908901 -3.9927202671425102 - He 3.7012557733673801 -1.5914659021997799 -5.4506475715592799 - He -2.7507070497243400 -0.70308673401889399 7.7755414196883601 - He 4.4688366009017901 5.4013422925374304 1.1653098839188101 - He -0.78305687434874405 5.9533910992047998 0.20595456683906699 - He -5.9814182135102696 6.3788961137274303 -1.3908744142959200 - 21 - -0.11323455283633700 - He 1.1074174950247799 -1.1578242305449400 1.4074188980380100 - He -1.1957910467053099 -1.0268905244645701 1.1042792438034601 - He 3.4310432397251098 -1.2171447159376301 1.5701173547883800 - He 0.93685295732782203 1.3919897296124499 3.8426661003649598 - He 1.4435596900478700 1.1845963547381100 -1.2646286888866900 - He 1.1572702493243201 -3.6785224195846302 -1.0337782086282801 - He 0.71944972519476702 -3.5696950829001501 3.9648369078486199 - He -4.7250529566669597 -3.0066899033694501 2.7408218649989600 - He -4.2171125424723401 2.2223748830522001 1.5141760319805599 - He 6.9468879864429702 0.97628599100516300 2.5466716819495798 - He 6.6016171699164303 -2.7693617145624101 -1.2471710661812201 - He -6.2040597494056904 -1.0733837530915200 -2.4192448372994799 - He -4.0768079291228201 -6.0768858342968004 -1.9851982057256199 - He 6.5928109100253502 2.3141322521675698 -2.7961171799875699 - He -1.7964228439034200 -2.1603017393619299 -5.3419417969112297 - He -3.0261141662311002 3.0514086554109801 -3.9815275535128500 - He 3.7073486031960199 -1.5891083728087201 -5.4612710132724702 - He -2.7068105405316500 -0.71246505521406700 7.7838319113620704 - He 4.4851753485725396 5.4046875965697296 1.1891043037377900 - He -0.80347163785773201 5.9851346274567101 0.21776170215630200 - He -6.0160089809114998 6.3967731448606200 -1.3773394379404800 - 21 - -0.11322700274904900 - He 1.0945003091493299 -1.1417054860403000 1.3872377712348600 - He -1.1868427259558700 -1.0370568833875300 1.1186048161740600 - He 3.4327523202381101 -1.1990075766114201 1.5538921821539300 - He 0.91987028958109995 1.3938690714528601 3.8339642625440402 - He 1.4267768945864501 1.1745768174729800 -1.2441143922208999 - He 1.1770447220311699 -3.6942459097099398 -1.0374237013014600 - He 0.71418754732730005 -3.5766730549821300 3.9774527657225498 - He -4.7242641181399501 -2.9791751763758598 2.7709571095846801 - He -4.2372782300916496 2.2284822452064499 1.4758950306052201 - He 6.9840549237521499 0.98214402964509295 2.5466085394310300 - He 6.6041402171389496 -2.7697208970594298 -1.2786161509917799 - He -6.2189889952369999 -1.0960787571589199 -2.4054997193514498 - He -4.0458717303604796 -6.0799302073025103 -1.9524137140379001 - He 6.6052151666831200 2.3127372989707302 -2.7858515846755001 - He -1.7901673611796101 -2.1479879246511802 -5.3439401985611603 - He -3.0095132192005498 3.0792079713956899 -3.9509670756998498 - He 3.6918931307653402 -1.6240477477825299 -5.4976617915403798 - He -2.7052286122448401 -0.69755607468952596 7.7739264077929198 - He 4.4635297349047800 5.4277257833143704 1.1845870779388801 - He -0.79105898344375503 5.9754381274223496 0.22432342624074900 - He -6.0100975388660602 6.3550059885429100 -1.3856611480767200 - 21 - -0.11324276443089200 - He 1.1060945758832501 -1.1506356590784199 1.3731075192971200 - He -1.2023552346848201 -1.0618261831104900 1.1240752908992200 - He 3.4380467057083699 -1.1978148974971099 1.5301313427835599 - He 0.91811959398572496 1.3972302586399601 3.8223818384151800 - He 1.4313917478910800 1.1803687223182799 -1.2320138358125701 - He 1.1810385359047599 -3.6961707113586200 -1.0217111759088400 - He 0.70427369832248399 -3.5613412851347102 4.0042645426306702 - He -4.7080866451751797 -2.9667667064278098 2.8032065279138401 - He -4.2302782008424904 2.2275756309975501 1.4672274571252200 - He 6.9959185930136600 1.0110899490192100 2.5566849728980299 - He 6.5969073254042501 -2.7738164515411898 -1.2862113708116001 - He -6.2278981964030198 -1.1309948845091500 -2.4207022011746600 - He -4.0261574080416498 -6.1283971280568004 -1.9612548701009600 - He 6.5996298095536998 2.3389571668881000 -2.7718497841557199 - He -1.8090173457607499 -2.1659599857477598 -5.3395773735589502 - He -3.0182269996853202 3.0732757453427300 -3.9983983131263301 - He 3.6937540401478199 -1.6329480955058300 -5.5101148559751696 - He -2.7092766973553100 -0.68503217791984805 7.7598831263205703 - He 4.4935895349118997 5.4388743253383902 1.2079665236070201 - He -0.82460319088045697 5.9818539144950300 0.21743717082016700 - He -6.0194717537370401 6.4008646578845498 -1.3729012995127301 - 21 - -0.11322383893495000 - He 1.0781935335724999 -1.1757732869107500 1.3561318289938500 - He -1.1965393954175501 -1.0279914386800899 1.1238272760588099 - He 3.4348631087129000 -1.2218433947918399 1.5265656303531501 - He 0.91274642540056405 1.4376040407473600 3.8117490668769300 - He 1.4202270805631600 1.1843295655573001 -1.2370046087569100 - He 1.1390434359945101 -3.6884641831323899 -1.0313880126710000 - He 0.73490343375743095 -3.5551042369457000 3.9906847479006999 - He -4.7034018181449300 -3.0087519910921401 2.8343852475343101 - He -4.1907772527134100 2.2709739985846000 1.4665778471411699 - He 6.9981614454197398 0.98768934179045897 2.5643969819585899 - He 6.5840531119008103 -2.7589621639534401 -1.2779884953892100 - He -6.2584369960066297 -1.0806888009676900 -2.4109828064293399 - He -4.0406768250466500 -6.1197888506527800 -1.9595735684367499 - He 6.5804790476018198 2.3335797266955098 -2.8013463537519501 - He -1.8600699900752500 -2.1522955401111901 -5.3128862614483303 - He -2.9652437069400701 3.0345918791071802 -4.0248707859178001 - He 3.6769373143674202 -1.6238329667388300 -5.4892814647622501 - He -2.6670043507765002 -0.69404343406892000 7.7523293136909803 - He 4.5036797397954800 5.4355498380374199 1.2469208128060500 - He -0.81450360479152595 5.9363548793556298 0.19191262752211799 - He -6.0098630784660596 6.4067407577019804 -1.3416477567721701 - 21 - -0.11318289839002101 - He 1.0735012534657900 -1.1691324614004399 1.3550536039415100 - He -1.2020909803042299 -1.0142940566387799 1.1312030824278101 - He 3.4067151325074598 -1.1711742866605499 1.5209765584646100 - He 0.88751116582665501 1.4390394060044001 3.8011367633961002 - He 1.4347598758813800 1.1384616345210401 -1.2266195370943200 - He 1.1344518253312601 -3.7197747118577298 -1.0322678293781300 - He 0.74867435854290298 -3.5096853847787401 3.9753402704470200 - He -4.7136996114242597 -2.9976387916150800 2.7936262644105998 - He -4.1755947638059396 2.2596711612095799 1.4549430404417500 - He 7.0319384219150001 1.0055077076312999 2.5768770226312201 - He 6.5862314193675804 -2.7745697191942602 -1.2642641471939200 - He -6.2712486929319002 -1.0542597915498799 -2.4069150603130098 - He -4.0131397541231397 -6.1293128011739801 -1.9791682688542600 - He 6.5743042058017700 2.2849383229145999 -2.7783774299240700 - He -1.8758023138949600 -2.1491823076863201 -5.2885168014438397 - He -2.9788484037532399 3.0093690341180599 -4.0259121217978304 - He 3.7025898161371402 -1.6476355868880801 -5.4886099659517900 - He -2.7010460188999699 -0.71685937138946199 7.7579268340589396 - He 4.5117379873671801 5.4404083378546604 1.2443279064798300 - He -0.78052307000527699 5.9345415926027796 0.16434717839976301 - He -6.0161314696507304 6.4641423233138298 -1.3278474787468000 - 21 - -0.11321039913565401 - He 1.0896573898247699 -1.1479591962584501 1.3796039110419200 - He -1.1994658183588900 -1.0326483092313901 1.1253579179235800 - He 3.4128107356933999 -1.1629485865135900 1.5578439033206299 - He 0.87023520407684796 1.4319264623847900 3.8008559114262499 - He 1.4128183061120601 1.1517208321077399 -1.2410695226385100 - He 1.1412720556138300 -3.7120168343333502 -1.0602761354589800 - He 0.76602906494088097 -3.5111412501297701 3.9739018001638100 - He -4.7215960156633496 -2.9882420922172099 2.7920214390849800 - He -4.1556017788527004 2.2482232172734098 1.4588463033325201 - He 7.0547724310311901 0.98816829616791402 2.5878885772108502 - He 6.5895306227593098 -2.7729019811499098 -1.2710653641960299 - He -6.2981896386312703 -1.0488983979261299 -2.4008109789716201 - He -4.0446625652805599 -6.0919049790736901 -2.0075886725186298 - He 6.5838648027367297 2.3126350234645101 -2.7888916131455601 - He -1.8828813268418001 -2.0913953124942801 -5.2612361831899896 - He -2.9783156047609700 2.9891532394001699 -4.0564692317475304 - He 3.6717825865729501 -1.6771664463179701 -5.5029912714012399 - He -2.7159849926843700 -0.77863063436779201 7.7359816416607101 - He 4.5286663536060496 5.4646407831425101 1.2654511383589999 - He -0.79777486570183798 5.9262086398215699 0.14781794412356800 - He -5.9832471806819099 6.4420471558001200 -1.3135865264130899 - 21 - -0.11319179598715901 - He 1.0992953862077599 -1.1816410854046300 1.3768352656948399 - He -1.2036991053134301 -1.0127257497147300 1.1269210372618099 - He 3.4064845579055900 -1.1712751104551400 1.5490680287395200 - He 0.87718669402106297 1.4273951692741400 3.7879504360589600 - He 1.4112903582588201 1.1510840947716801 -1.2488621965157700 - He 1.1575339954369199 -3.7163461116723502 -1.0429399606022400 - He 0.78372360381728701 -3.5033438388440401 3.9899823270784101 - He -4.7393243151950397 -2.9917418447863402 2.8170578293620698 - He -4.1428257521943701 2.2414423138633999 1.4883488347967300 - He 7.0627667950646300 1.0066106504139400 2.6190507910146801 - He 6.5690663649466696 -2.7721029811914102 -1.2663070442371001 - He -6.2882545410695503 -1.0547227352427599 -2.4241631486181698 - He -4.0652433746256200 -6.0876026693844896 -1.9862318563453401 - He 6.5981030598606303 2.3221042084772101 -2.7901840817416499 - He -1.8836586358849401 -2.0779899337951502 -5.2652530801301101 - He -2.9930571227450500 3.0224770059924100 -4.0496459411795902 - He 3.6058759647739498 -1.7295793528039400 -5.5516424355469400 - He -2.6721364612520202 -0.71556995942604096 7.7248108927647996 - He 4.4981952279477904 5.4492561587289101 1.2569178887956600 - He -0.78701000338059102 5.9139532871156604 0.13354485800689500 - He -5.9827607771114497 6.4142608343330698 -1.2798414183254700 - 21 - -0.11322172029101100 - He 1.0951386727162300 -1.1801021730442001 1.3459548744021701 - He -1.2126330559939100 -1.0116490891076599 1.1426379303215199 - He 3.4155332027857801 -1.1655685296736700 1.5279902607939599 - He 0.87342399880211996 1.4431372824161199 3.7575366742314400 - He 1.3934760579642500 1.1647519964837401 -1.2145263507272801 - He 1.1483326328926999 -3.7094825476549400 -0.99575942237273096 - He 0.78436570691686103 -3.4835312267676102 3.9831135208032902 - He -4.7541099472554000 -3.0375170150303501 2.7987499279089398 - He -4.1612644158011598 2.2271931651405099 1.4771854965915701 - He 7.0946916901861004 0.96436237860226304 2.5944840699266898 - He 6.5773415263368404 -2.7657540994633498 -1.2515784524583400 - He -6.2992223249402404 -1.0650157736158099 -2.4138677910961399 - He -4.0601248307867603 -6.1081123964881199 -1.9922337788741400 - He 6.5961316812704496 2.3472876021614799 -2.7626737218771700 - He -1.8699602447275800 -2.0685205115778098 -5.2878611999015899 - He -2.9768178488711801 3.0024418852339401 -4.0334372264361704 - He 3.6282443165043401 -1.6941862044176801 -5.5564819253286899 - He -2.7351714957294400 -0.70368977458740500 7.7544522495978798 - He 4.4816788176031901 5.4319021038919999 1.2069020718662400 - He -0.77278406878461603 5.9135473533007801 0.10385359584015599 - He -5.9643618031581500 6.4522626566421604 -1.2427932208181200 - 21 - -0.11321550401362800 - He 1.0985947230517701 -1.1639370849553301 1.3377906235735599 - He -1.1895087919244500 -1.0490961754916199 1.1497287619006500 - He 3.4349319534532898 -1.2145249313740700 1.5700178709023700 - He 0.83317163107029801 1.4510537469464899 3.7410159542323398 - He 1.4337401268614400 1.2148393778668600 -1.2178223321373101 - He 1.1281033766616599 -3.7005076180730700 -0.95553888981128299 - He 0.78842615151213302 -3.4972022829002798 3.9692683670147901 - He -4.7583072305938696 -3.0641751841902001 2.8030608612456800 - He -4.1582069140371898 2.2220142598660200 1.4501799925917300 - He 7.1109231131184902 0.97912750293934703 2.5931843633703902 - He 6.5889308799850497 -2.7462079861394000 -1.2660853812570101 - He -6.3365709100389500 -1.0630226326703600 -2.4084521073510698 - He -4.0243556671036096 -6.0916195499258503 -2.0277414668119098 - He 6.5811932905752002 2.3603012202328300 -2.7299002082649602 - He -1.9323586854386099 -2.0680391339339499 -5.2728840813979501 - He -2.9412260661845799 3.0209127098357400 -4.0387011609509100 - He 3.6425474801325599 -1.6966345942520900 -5.5843417655880199 - He -2.7651330301115600 -0.69091755669814703 7.7844958253868501 - He 4.5068836812315602 5.4751835306773398 1.2080247070353001 - He -0.76352558248497904 5.8963089882838302 0.11714328265527900 - He -5.9416693540993499 6.4075675642488603 -1.2599954727523901 - 21 - -0.11319695422610900 - He 1.1005333174151799 -1.1255391504066801 1.3721044769506801 - He -1.1876692178442001 -1.0247840919884501 1.1347593593471701 - He 3.4299199496756101 -1.2133063148592300 1.5849141447440300 - He 0.82376205555579196 1.4750227589495200 3.7513968707234402 - He 1.4352082612879900 1.1658710522129501 -1.1938141344285600 - He 1.1568670106082799 -3.6660020951143699 -0.96683968987449598 - He 0.78674024109644602 -3.4961892780507098 3.9706971751682199 - He -4.7700827261496501 -3.0536558916728098 2.8131499411621301 - He -4.1671743107642696 2.2155892436979800 1.4404619615935801 - He 7.0708812723829704 0.94833004339391402 2.5978372726200099 - He 6.6145600429235802 -2.7779753128436400 -1.2818681876824001 - He -6.3615844913507997 -1.0504948526322200 -2.4177852546654401 - He -3.9621264290761502 -6.1013687164632602 -2.0513102470123799 - He 6.6435747619338796 2.3536965340074900 -2.7579531287865700 - He -1.9613711095173501 -2.1171388538484801 -5.2922809032195204 - He -2.9492483593231502 3.0195921047495400 -4.0642556212633600 - He 3.6564207520669498 -1.6598825543321001 -5.5787359158105296 - He -2.7752271764517999 -0.67672591103562496 7.7993154631446604 - He 4.4897972412232097 5.4772217309255904 1.2305147296105701 - He -0.78970812245365096 5.9221096466881704 0.10917354934303400 - He -5.9598804236543801 6.3714003892358200 -1.2874359652726699 - 21 - -0.11324972650458000 - He 1.0778735814890399 -1.1560729491596700 1.3744277787290899 - He -1.2109161360917400 -1.0062633660245599 1.0898828073595299 - He 3.4146212544519998 -1.2054030478372000 1.5996182159701899 - He 0.85055895048457597 1.4479337233667200 3.7387215703277499 - He 1.4600327047330699 1.2052725028491300 -1.1594195061456400 - He 1.1542397271542799 -3.7057429226057499 -0.98599774595909695 - He 0.78141373254503999 -3.4622246103159702 3.9976996596835601 - He -4.7793820418764597 -3.0308994012052701 2.7967377578846602 - He -4.1724499228053000 2.2210063682333798 1.4595564969479899 - He 7.0846931053798201 0.96822019260943504 2.6203781045867101 - He 6.6293883172454597 -2.7993380815905602 -1.2667058587485800 - He -6.3656604761654298 -1.0088930347581500 -2.4604256562557700 - He -3.9785510085827398 -6.1076264402814102 -2.0659743266709301 - He 6.6456918715003201 2.3567733704131699 -2.7794028068994301 - He -1.9748623594137000 -2.1580412890301099 -5.2926281976059801 - He -2.9513022507283000 2.9898701246495198 -4.0248223563499996 - He 3.6681651822148198 -1.6492933691384299 -5.5507111786508396 - He -2.7206799133522801 -0.69433776200202402 7.7939515873071104 - He 4.4945507603155699 5.4964923034839499 1.2179384712762800 - He -0.77574218110554904 5.9154617837885697 0.11705354798175099 - He -5.9577546533013903 6.3619614004648897 -1.3047403480712700 - 21 - -0.11319489779966800 - He 1.0740918092530800 -1.1534729445042999 1.3468157525553399 - He -1.1821407683909100 -1.0418638230130399 1.0594557462202301 - He 3.4319308872332699 -1.2122794741838201 1.5995404761529199 - He 0.82184539668279299 1.4531995322679101 3.7353551224578099 - He 1.4073504497891101 1.1856201446281001 -1.1679831521744499 - He 1.1940719902306201 -3.7037646601212399 -0.93958359886103504 - He 0.73318560997174098 -3.4572739508034100 3.9891346267354901 - He -4.7704506107470204 -2.9944726606153700 2.8016170979549799 - He -4.1280268161348896 2.2147798068770301 1.5018909812820300 - He 7.0391411726986197 0.97604986965978602 2.6658074743960700 - He 6.6406246120952801 -2.8210200191210202 -1.2637923445229799 - He -6.3686706373624196 -0.97951720560608202 -2.4271216242215998 - He -3.9682779538911199 -6.1100757833863701 -2.0809499707017598 - He 6.6693387863675104 2.3296981856551802 -2.7510463191864698 - He -2.0015093021998802 -2.1029416520813600 -5.3413543349044703 - He -2.9182524968835901 2.9576587426314300 -4.0386359226447999 - He 3.6866878828834699 -1.6360774033475600 -5.5409560532173003 - He -2.7075843818768601 -0.68401882450031004 7.7866899207188496 - He 4.4949080225855900 5.4741644066063397 1.1861626354563399 - He -0.77635036545350100 5.9351125580480701 0.10175701106370300 - He -5.9890240802241097 6.3443616677411097 -1.2979465807377000 - 21 - -0.11316274462975000 - He 1.0701705971293900 -1.1538078214443901 1.3834366795277400 - He -1.1972146736861100 -1.0648657098881200 1.0634325333000401 - He 3.4108545149692602 -1.1967970178523299 1.6140662970809201 - He 0.82361554633774103 1.4690371664156501 3.7148032161743001 - He 1.3729518377986001 1.1844181431920600 -1.1519021483092200 - He 1.1971887842019799 -3.7105367137822900 -0.93573566501843097 - He 0.75097277025423703 -3.4858667664965899 4.0421373803109200 - He -4.7959139989019599 -2.9893906319404899 2.8047036209005798 - He -4.0995879930061196 2.2311510035799000 1.5221531781455300 - He 7.0452433116714603 0.97396041192205396 2.6630075534408499 - He 6.6272632616152203 -2.8042503534957901 -1.2946034748905100 - He -6.3384635166174199 -0.98402688359581203 -2.4370122050059302 - He -3.9915416671843702 -6.1062000767982001 -2.0850030719377202 - He 6.6822346119932696 2.3540352840555698 -2.7790122453317099 - He -1.9861170764381100 -2.0833211938558400 -5.3608249911014596 - He -2.9111810182855802 2.9467383177268500 -4.0215963547864497 - He 3.6874467265816500 -1.6300676613144200 -5.5979201609144598 - He -2.7124257088444499 -0.73346979639157495 7.7880774682212897 - He 4.4857219409444404 5.4703662833492901 1.1528243641624401 - He -0.76910728445177901 5.9257831332146704 0.11627078088766200 - He -5.9532080596653003 6.3647828622749003 -1.3198140938757701 - 21 - -0.11312337995947799 - He 1.0541534905736401 -1.1724330407098800 1.4040827197411401 - He -1.1973672356983101 -1.0518538421883401 1.0913137044255099 - He 3.3940568520038501 -1.2215248309492801 1.6094010322839500 - He 0.82379956003543198 1.4317580895562201 3.6905786909641898 - He 1.3951408267314200 1.1704413722040901 -1.1677305092322301 - He 1.2147504232362301 -3.7131352681354599 -0.93878537838560605 - He 0.77282938792762201 -3.4548577089915500 4.0940615926892203 - He -4.8026548723309901 -2.9694446434089001 2.8302775728409899 - He -4.1052384925658396 2.2122899374195901 1.5468469467839601 - He 7.0426092569648198 0.99380202171306897 2.5897198135223500 - He 6.6565673754084802 -2.7799685170260400 -1.3152674408225100 - He -6.3431300246372704 -0.97918890855594398 -2.4872005517265001 - He -3.9511855459371201 -6.1107274774715403 -2.1038555908422700 - He 6.6902798015377796 2.3792875277057699 -2.7716677196219801 - He -1.9822967915464600 -2.0829491716620101 -5.3617141650010396 - He -2.9009820127434498 2.9536640108990602 -4.0014042932324703 - He 3.6694918467677198 -1.6754185292331600 -5.6017385797854500 - He -2.7442817658465501 -0.70746740970499999 7.8486286426237903 - He 4.4568197855883804 5.4868548407851696 1.1396223502800600 - He -0.80664194620606799 5.9375769521101098 0.11044243434085700 - He -5.9609902638585499 6.3616929149852597 -1.3381789342328301 - 21 - -0.11311004146214600 - He 1.0715222137276901 -1.1798592063509199 1.4055561866637900 - He -1.1734252608555300 -1.0643281287196900 1.1072139505166601 - He 3.4273378499003799 -1.2265292352022501 1.5940586455502901 - He 0.83616811458039497 1.4667379339713900 3.7203837876080699 - He 1.3679065023743999 1.1972945567151101 -1.1208845565979899 - He 1.2234890004464800 -3.7507345579138298 -0.95947931862599800 - He 0.76462697920094402 -3.4692970122999198 4.1052634324171997 - He -4.8262870752748901 -2.9908733966821601 2.7922095674337499 - He -4.0923310217659203 2.2294396626882600 1.5845399231971600 - He 7.0520279969624102 0.99450953347692395 2.5966433070028101 - He 6.6198780684959901 -2.7458290993202401 -1.3152759758254700 - He -6.3293328159011404 -0.98493725183597602 -2.5074253526621302 - He -3.9564014416146600 -6.1270844057063796 -2.1280999787223100 - He 6.6810720219642903 2.4038809653387201 -2.7420587472596001 - He -2.0045561533373100 -2.1138611177254099 -5.3625126002476398 - He -2.9210515548776002 2.9564649316451401 -4.0050250993508003 - He 3.6760483731823901 -1.6874133098260600 -5.5811568765584099 - He -2.7882272703272202 -0.71755157682975501 7.8544467720514604 - He 4.5036434506247804 5.5103776594054397 1.1351271632627500 - He -0.82086111501982995 5.9847648710775498 8.0501545390088275E-002 - He -5.9691570744033600 6.3317845009907101 -1.3537452410225601 - 21 - -0.11318829789020800 - He 1.1071169157837699 -1.1694070229003399 1.3973626819401099 - He -1.1853018107057200 -1.0787479100506800 1.1648573244627201 - He 3.4291495313098199 -1.2355351025414301 1.5891405846421300 - He 0.83615048743690601 1.4594322946081699 3.6958470738339702 - He 1.4192678349299701 1.1905416005423100 -1.1607534810290201 - He 1.2275964741091301 -3.7832337770977200 -0.93459694678772398 - He 0.76583519170372205 -3.5023539142313900 4.1267499593252204 - He -4.8259275715156598 -3.0036425240792100 2.7284952154150499 - He -4.0970913517589302 2.2481428666361101 1.5641844793821400 - He 7.0409779294407802 1.0487743184556000 2.6275850900356499 - He 6.6071399163157700 -2.7903528248064600 -1.2967671587910801 - He -6.3509044300432702 -0.97784508493190303 -2.4652167325593801 - He -3.9840968096041900 -6.1009476963463500 -2.1883652743624298 - He 6.6650408605329901 2.4183971464586298 -2.7600126680453498 - He -2.0242673045829100 -2.1461739076349802 -5.4000509729465103 - He -2.9341809314143399 2.9690839799489002 -3.9816464750323801 - He 3.6809910071979299 -1.7019880350546199 -5.5964004695893497 - He -2.7557282106649499 -0.68746511253429599 7.8620562865687598 - He 4.5116785373602903 5.5146227098413698 1.1529254160799400 - He -0.80797898430477100 5.9750809912735701 0.15221310008396999 - He -5.9812765938247896 6.3149968932470104 -1.3846716265868100 - 21 - -0.11315654056014100 - He 1.0740041297937599 -1.1675021945571500 1.3998389633285300 - He -1.1995239608273400 -1.1335718782053801 1.1117245688787001 - He 3.4103788431888900 -1.2534520094996200 1.6358496738929800 - He 0.79056609515073295 1.4700741223595799 3.7555377312260498 - He 1.4307450834478399 1.1762296899681499 -1.1768548204893201 - He 1.2616636773468399 -3.8202557063964799 -0.92936193784052901 - He 0.78691301215807397 -3.5382140866143899 4.1456151653771300 - He -4.8289242620391999 -3.0305744103756802 2.7556712988064400 - He -4.1084851520848398 2.2789510631234502 1.5470163890780599 - He 7.0184189603373701 1.0424394113505400 2.6211927716027299 - He 6.6189436320129902 -2.8046998300779200 -1.2965163869317000 - He -6.3735746497139898 -0.92004733839902098 -2.4590541235876100 - He -3.9867000166961102 -6.0796882214581904 -2.1776883382894598 - He 6.6904815538209599 2.3731863093916599 -2.7751977463222199 - He -2.0561884101980499 -2.1880367594851600 -5.4063115443796601 - He -2.8956883859043399 2.9981464556413902 -3.9918905308534298 - He 3.6915446355695498 -1.7141884035782600 -5.5916296539764101 - He -2.7786004234792401 -0.61793135138596800 7.8617541273362601 - He 4.5094838199160003 5.5411351899147698 1.1150182617299500 - He -0.80567516167077502 5.9593627547773096 0.14377809529816199 - He -5.9634952629866600 6.3475142618364302 -1.4026844187317000 - 21 - -0.11308908395067099 - He 1.0888865769815701 -1.1483032972071801 1.4079294564863800 - He -1.1808163409745600 -1.1435927372622801 1.0860575361384499 - He 3.4211024607257099 -1.2434000515078001 1.6385633177150201 - He 0.83309240780874905 1.4775371622851099 3.7507774826146401 - He 1.3921170558759199 1.1360733683294499 -1.1573991656286600 - He 1.2636930239160500 -3.8766789629243901 -0.93086214452607396 - He 0.78190399893496898 -3.5568931142707698 4.1150777073557601 - He -4.8008883675704297 -3.0801773867675499 2.7969381105560198 - He -4.0954787087210001 2.2912466220868302 1.5355545130484500 - He 7.0101976319364798 1.0583044546818900 2.6285910754921198 - He 6.6394303695136196 -2.7821082003311099 -1.2644382126762601 - He -6.4473635612295004 -0.87545290768209305 -2.4349362265821499 - He -3.9656039936482199 -6.0355966707618798 -2.2195198339974600 - He 6.6957039988949703 2.3493761880712301 -2.7658805073888999 - He -2.0872924784400499 -2.2405339343414199 -5.3814371758823096 - He -2.8908160153963598 2.9403637648227399 -4.0207001189089304 - He 3.6908984962969900 -1.7226465357645799 -5.5851344955188500 - He -2.7578137798463600 -0.56474909489372105 7.8531873433573303 - He 4.5083863333300602 5.5717664200143098 1.1188366005331201 - He -0.81239141580017504 5.9850292598947297 0.15203287855952000 - He -5.9859759495305900 6.3707766986987000 -1.4177451862528101 - 21 - -0.11303045372194701 - He 1.0959596505694600 -1.2005704365554599 1.3926006212321300 - He -1.1478071692919400 -1.1266602809417401 1.0898470619975000 - He 3.4528989795859899 -1.2719441880568700 1.6266265660917201 - He 0.82216018012214098 1.4707533050299499 3.7643882019115900 - He 1.3815373240240501 1.1440387711333200 -1.1601756935337200 - He 1.2517691748795301 -3.8625676600113401 -0.91293060454499797 - He 0.76654415658779396 -3.5647066089071999 4.1134216187034900 - He -4.7915547897529098 -3.0835805645836598 2.7963576746874299 - He -4.0591658910591004 2.3017706711630201 1.5597064123840600 - He 6.9884508174001496 1.0093799974081401 2.6322205524990401 - He 6.6168763657474399 -2.7760160301429599 -1.2551590878308900 - He -6.5018937611843404 -0.84649217869741000 -2.4359014012576301 - He -4.0111866640546197 -6.0380427176224298 -2.2552337242662301 - He 6.6316570399994701 2.3351869319828200 -2.7356245265024000 - He -2.1134345291147798 -2.2131426946115198 -5.4147033934104902 - He -2.8796683912744498 2.9842864444158299 -3.9908934512332599 - He 3.7303798843679101 -1.7255893416798400 -5.5790690137199004 - He -2.7776836548889499 -0.59664109576218904 7.8600825042496698 - He 4.5652363284856001 5.6040324482739603 1.1279122702627000 - He -0.81532415833206795 6.0035968656181602 0.12673578329659599 - He -6.0036727578689799 6.3892047473549800 -1.4375658618515701 - 21 - -0.11311872964922300 - He 1.0987956030346899 -1.1756179332189600 1.3790673597876799 - He -1.1484070655479099 -1.1275800537652301 1.1125035208691101 - He 3.4638522160679699 -1.2685312102755200 1.6669216098279001 - He 0.77704063806616697 1.4260263627607099 3.6665113869472701 - He 1.4232848553191999 1.1309247812018699 -1.1550884745491801 - He 1.2466649392616000 -3.8834169520278299 -0.84869847503814599 - He 0.75032800409902900 -3.5360095870411299 4.1027596306027103 - He -4.7683406602863601 -3.0388878175161098 2.7976367576167300 - He -4.0544105248157800 2.3119449303170101 1.5514418193370101 - He 6.9650078490650502 0.98496934255290103 2.6477808787464099 - He 6.6490294454485097 -2.7911675720539901 -1.2064816047739200 - He -6.5030648549142001 -0.91078687006898895 -2.4594147056720899 - He -4.0277622462563603 -6.0488958509878801 -2.2299487222392300 - He 6.6161927816302804 2.2962711426881799 -2.7747833618535598 - He -2.0493708874557601 -2.2217179676143100 -5.4276583089049604 - He -2.8835675052505301 3.0121033491103799 -3.9969244530796302 - He 3.7507667733723800 -1.7440483554289099 -5.5558992358023103 - He -2.8275737703031698 -0.57386060589104604 7.8342191730505402 - He 4.5377884156332096 5.6474343982497404 1.1333921688877000 - He -0.80542547595161096 6.0301049492726602 0.11942826752295300 - He -6.0281408334023796 6.4053001265057601 -1.4279419423285300 - 21 - -0.11317511457164300 - He 1.0994681252987499 -1.1625234911451201 1.4315809245637301 - He -1.1646794916378600 -1.1364536984872500 1.1073245029625201 - He 3.4438338606484602 -1.2669839530947000 1.6789285822082101 - He 0.81896019435208400 1.4578449458967699 3.7236308080559000 - He 1.4356058808723999 1.1298999570181301 -1.1471334150994299 - He 1.2654913465730799 -3.8829488930113700 -0.86102158259004302 - He 0.79814320097747804 -3.5092664089588599 4.1236083785160798 - He -4.7394037223446501 -3.0250554157012899 2.8300130858622401 - He -4.0999388832497203 2.2099950580628800 1.5280887750485499 - He 6.9026709104060302 1.0190507989369899 2.5929640793295698 - He 6.6255163276882900 -2.8297538760288399 -1.2040209755455000 - He -6.5078838351727804 -0.90736601718533205 -2.4839622526898202 - He -3.9615564181395300 -6.0408603721856204 -2.2488052907860601 - He 6.6491014645444801 2.3215007910343899 -2.7921397534883998 - He -2.0458896902905601 -2.2195502712671198 -5.4504995738673898 - He -2.8871824532075401 2.9703972749583598 -3.9849411907642902 - He 3.7203569213073600 -1.7399006972005899 -5.5215860554567602 - He -2.7885198181766500 -0.57975834410391103 7.8139615371945101 - He 4.4855685508904797 5.6593257357309197 1.1499136325694601 - He -0.77996128504670603 6.0461080498250599 0.11375264572681600 - He -6.0310806480563199 6.4576582568612801 -1.4425437838363500 diff --git a/run_devsandbox_queue.sh b/run_devsandbox_queue.sh new file mode 100755 index 00000000..636e56f0 --- /dev/null +++ b/run_devsandbox_queue.sh @@ -0,0 +1,17 @@ +#!/bin/sh +#PBS -N STDIN +#PBS -l select=1:ncpus=24:mpiprocs=1:ompthreads=24 +#PBS -l walltime=08:00:00 +#PBS -q qprod +#PBS -A OPEN-15-10 + + +cd $PBS_O_WORKDIR/ +source ./build_scripts/load_salomon_modules.inc +cd ./build/examples +./dev_sandbox > out.txt +cd ../.. + + + + diff --git a/run_test.sh b/run_test.sh new file mode 100755 index 00000000..89b560fb --- /dev/null +++ b/run_test.sh @@ -0,0 +1,2 @@ +#!/bin/sh +./build_scripts/compile_salomon.sh && ( source ./build_scripts/load_salomon_modules.inc ; cd ./build/examples; ./dev_sandbox; cd ../.. ) diff --git a/src/Coordinates/coordinates.cpp b/src/Coordinates/coordinates.cpp index 2f0e59cd..180dce61 100644 --- a/src/Coordinates/coordinates.cpp +++ b/src/Coordinates/coordinates.cpp @@ -2,6 +2,8 @@ // Created by martin on 30.08.19. // +#define _USE_MATH_DEFINES + #include <vector> #include <cmath> #include "coordinates.h" diff --git a/src/DataSet/DataSet.cpp b/src/DataSet/DataSet.cpp index e65a67e0..8bf39621 100644 --- a/src/DataSet/DataSet.cpp +++ b/src/DataSet/DataSet.cpp @@ -1,9 +1,13 @@ #include <algorithm> + +#include <armadillo> #include <boost/serialization/export.hpp> #include "DataSetSerialization.h" #include "exceptions.h" +#include "DataSet.h" + BOOST_CLASS_EXPORT_IMPLEMENT(lib4neuro::DataSet); @@ -34,7 +38,6 @@ namespace lib4neuro { } this->normalization_strategy = std::make_shared<DoubleUnitStrategy>(DoubleUnitStrategy()); - } DataSet::DataSet(std::vector<std::pair<std::vector<double>, std::vector<double>>>* data_ptr, @@ -497,4 +500,27 @@ namespace lib4neuro { } this->output_dim += n_columns; } + + arma::Mat<double>* DataSet::get_inputs_matrix() { + this->inputs_matrix = new arma::Mat<double>(this->data.size(), this->data.at(0).first.size()); +// arma::Mat<double> m(this->data.size(), this->data.at(0).first.size()); + + for (size_t i = 0; i < this->data.size(); i++) { + this->inputs_matrix->row(i) = arma::Row<double>(this->data.at(i).first); + } + +// this->inputs_matrix = &m; + return this->inputs_matrix; + } + + arma::Mat<double>* DataSet::get_outputs_matrix() { + this->outputs_matrix = new arma::Mat<double>(this->data.size(), this->data.at(0).second.size()); + + for(size_t i = 0; i < this->data.size(); i++) { + this->outputs_matrix->row(i) = arma::Row<double>(this->data.at(i).second); + } + +// this->outputs_matrix = &m; + return this->outputs_matrix; + } } diff --git a/src/DataSet/DataSet.h b/src/DataSet/DataSet.h index f253d9da..0989bddc 100644 --- a/src/DataSet/DataSet.h +++ b/src/DataSet/DataSet.h @@ -14,6 +14,11 @@ #include "../settings.h" #include "../NormalizationStrategy/NormalizationStrategy.h" +/* Forward declaration or arma::Mat<> type */ +namespace arma { + template<class T> + class Mat; +} namespace lib4neuro { /** @@ -68,6 +73,11 @@ namespace lib4neuro { //TODO let user choose in the constructor! std::shared_ptr<NormalizationStrategy> normalization_strategy; + arma::Mat<double>* inputs_matrix; + + arma::Mat<double>* outputs_matrix; + + unsigned int last_batch_vector_ind = 0; public: @@ -306,14 +316,32 @@ namespace lib4neuro { * @param max * @return */ + [[deprecated("get_next_random_data_batch() should be used instead")]] LIB4NEURO_API std::vector<std::pair<std::vector<double>, std::vector<double>>> get_random_data_batch(size_t max); + /** + * Function, that returns being&end iterators of the next random disjunct batch of DataSet. + * Randomness is given by copying the current DataSet, shuffling it once by Fisher-Yates algorithm and then + * selecting first 'max' elements, which weren't selected before. + * + * If the shuffled vector is depleted, the process repeats with copying the DataSet again and another random + * shuffle... + * + * @param max + * @return + */ + LIB4NEURO_API std::vector<std::pair<std::vector<double>, std::vector<double>>> get_next_data_batch(size_t max); + /** * Adds a new output column filled with zeros * @param n_columns Number of columns to be inserted */ LIB4NEURO_API void add_zero_output_columns(size_t n_columns); + + [[nodiscard]] LIB4NEURO_API arma::Mat<double>* get_inputs_matrix(); + + [[nodiscard]] LIB4NEURO_API arma::Mat<double>* get_outputs_matrix(); }; } #endif //INC_4NEURO_DATASET_H diff --git a/src/ErrorFunction/ErrorFunctions.cpp b/src/ErrorFunction/ErrorFunctions.cpp index 45139360..8b659ffe 100644 --- a/src/ErrorFunction/ErrorFunctions.cpp +++ b/src/ErrorFunction/ErrorFunctions.cpp @@ -1,5 +1,6 @@ #include <vector> +#include <utility> #include <cmath> #include <sstream> #include <boost/random/mersenne_twister.hpp> @@ -15,7 +16,19 @@ namespace lib4neuro { return this->dimension; } - void MSE::divide_data_train_test(double percent_test) { + std::vector<NeuralNetwork*>& ErrorFunction::get_nets() { + return nets; + } + + DataSet* ErrorFunction::get_dataset() const { + return ds; + } + + void ErrorFunction::set_dataset(DataSet* ds) { + this->ds = ds; + } + + void ErrorFunction::divide_data_train_test(double percent_test) { size_t ds_size = this->ds->get_n_elements(); /* Store the full data set */ @@ -30,7 +43,7 @@ namespace lib4neuro { std::vector<unsigned int> test_indices; test_indices.reserve(test_set_size); - for (unsigned int i = 0; i < test_set_size; i++) { + for (size_t i = 0; i < test_set_size; i++) { test_indices.emplace_back(dist(gen)); } std::sort(test_indices.begin(), @@ -47,6 +60,8 @@ namespace lib4neuro { /* Move the testing data from train_data to test_data */ for (auto ind : test_indices) { test_data.emplace_back(train_data.at(ind)); + } + for(auto ind : test_indices) { train_data.erase(train_data.begin() + ind); } @@ -59,9 +74,67 @@ namespace lib4neuro { this->ds_full->get_normalization_strategy()); } - void MSE::return_full_data_set_for_training() { - if (this->ds_test) { + size_t ErrorFunction::divide_data_worst_subset( + std::vector<size_t> &subset_indices, + std::vector<bool> &active_subset, + std::vector<float> &entry_errors + ) { + if( this->ds_full == nullptr ){ + this->ds_full = this->ds; + } + size_t ds_size = this->ds_full->get_n_elements(); + + if( entry_errors.size() != ds_size ){ + entry_errors.resize( ds_size ); + } + + if( active_subset.size() != ds_size ){ + active_subset.resize( ds_size ); + std::fill(active_subset.begin(), active_subset.end(), false); + } + + std::vector<double> error_vector( this->get_n_outputs()); + for( size_t i = 0; i < ds_size; ++i ) { + entry_errors[ i ] = this->eval_single_item_by_idx( i, nullptr, error_vector ); + } + + std::vector<std::pair<std::vector<double>, std::vector<double>>> train_set; + double max_error = -1.0; + size_t max_error_entry_idx = 0; + for( size_t i = 0; i < ds_size; ++i ){ + if( active_subset[ i ] ){ + continue; + } + + if( entry_errors[ i ] > max_error ){ + max_error = entry_errors[ i ]; + max_error_entry_idx = i; + } + } + if( max_error >= 0.0 ){ + subset_indices.push_back( max_error_entry_idx ); + active_subset[max_error_entry_idx] = true; + } + + for( auto el: subset_indices ){ + train_set.emplace_back( this->ds_full->get_data( )->at( el ) ); + } + + if( this->ds != this->ds_full ){ + delete this->ds; + } + this->ds = new DataSet(&train_set, + this->ds_full->get_normalization_strategy()); + + return train_set.size( ); + + } + + void ErrorFunction::return_full_data_set_for_training() { + if (this->ds_test || this->ds != this->ds_full) { +// delete this->ds; this->ds = this->ds_full; + this->ds_full = nullptr; } } @@ -95,10 +168,13 @@ namespace lib4neuro { } MSE::MSE(NeuralNetwork* net, - DataSet* ds) { + DataSet* ds, + bool rescale_error + ) { this->nets.push_back(net); this->ds = ds; this->dimension = net->get_n_weights() + net->get_n_biases(); + this->rescale_error = rescale_error; } double MSE::eval_on_single_input(std::vector<double>* input, @@ -116,7 +192,7 @@ namespace lib4neuro { result += val * val; } - return std::sqrt(result); + return result; } double MSE::eval_on_data_set(lib4neuro::DataSet* data_set, @@ -161,7 +237,6 @@ namespace lib4neuro { this->nets[0]->eval_single(data->at(i).first, output, weights); - outputs.at(i) = output; } @@ -200,6 +275,8 @@ namespace lib4neuro { output_norm += denormalized_output * denormalized_output; } +// std::cout << " entry #" << i+1 << ", error: " << loc_error << std::endl; + std::stringstream ss_ind; ss_ind << "[" << i << "]"; @@ -210,9 +287,9 @@ namespace lib4neuro { << R_ALIGN << ss_input.str() << " " << R_ALIGN << ss_real_output.str() << " " << R_ALIGN << ss_predicted_output.str() << " " - << R_ALIGN << std::sqrt(loc_error) << " " + << R_ALIGN << loc_error << " " << R_ALIGN - << 200.0 * std::sqrt(loc_error) / (std::sqrt(loc_error) + std::sqrt(output_norm)) + << 200.0 * loc_error / (loc_error + output_norm) << std::endl); } @@ -223,14 +300,14 @@ namespace lib4neuro { << R_ALIGN << ss_input.str() << " " << R_ALIGN << ss_real_output.str() << " " << R_ALIGN << ss_predicted_output.str() << " " - << R_ALIGN << std::sqrt(loc_error) << " " + << R_ALIGN << loc_error << " " << R_ALIGN - << 200.0 * std::sqrt(loc_error) / (std::sqrt(loc_error) + std::sqrt(output_norm)) + << 200.0 * loc_error / (loc_error + output_norm) << std::endl; } } - double result = std::sqrt(error) / n_elements; + double result = error / (this->rescale_error?n_elements:1.0); if (verbose) { COUT_DEBUG("MSE = " << result << std::endl); @@ -335,7 +412,7 @@ namespace lib4neuro { this->nets[0]->add_to_gradient_single(el.first, error_derivative, - alpha / n_elements, + alpha / (this->rescale_error?n_elements:1.0), grad); } } @@ -503,7 +580,7 @@ namespace lib4neuro { 2.0 * (error_vector.at(j) - this->ds->get_data()->at(i).second.at(j)); //real - expected result } - return sqrt(output); + return output; } @@ -797,6 +874,18 @@ namespace lib4neuro { } } + size_t ErrorSum::divide_data_worst_subset( + std::vector<size_t> &subset_indices, + std::vector<bool> &active_subset, + std::vector<float> &entry_errors + ) { + size_t output = 0; + assert( false ); + return output; + } + + + void ErrorSum::return_full_data_set_for_training() { for (auto n: *this->summand) { n->return_full_data_set_for_training(); diff --git a/src/ErrorFunction/ErrorFunctions.h b/src/ErrorFunction/ErrorFunctions.h index f15e10d2..efbd2cc3 100644 --- a/src/ErrorFunction/ErrorFunctions.h +++ b/src/ErrorFunction/ErrorFunctions.h @@ -106,12 +106,23 @@ namespace lib4neuro { * @param percent_train * @return */ - virtual void divide_data_train_test(double percent_test) = 0; + LIB4NEURO_API virtual void divide_data_train_test(double percent_test); + + /** + * + * @param percent_train + * @return + */ + LIB4NEURO_API virtual size_t divide_data_worst_subset( + std::vector<size_t> &subset_indices, + std::vector<bool> &active_subset, + std::vector<float> &entry_errors + ); /** * */ - virtual void return_full_data_set_for_training() = 0; + LIB4NEURO_API virtual void return_full_data_set_for_training(); /** * @@ -232,6 +243,12 @@ namespace lib4neuro { */ virtual void randomize_parameters(double scaling) = 0; + [[nodiscard]] std::vector<NeuralNetwork*>& get_nets(); + + [[nodiscard]] DataSet* get_dataset() const; + + void set_dataset(DataSet* ds); + protected: /** @@ -262,27 +279,21 @@ namespace lib4neuro { class MSE : public ErrorFunction { + private: + bool rescale_error; public: /** * Constructor for single neural network * @param net * @param ds + * @param rescale_error if true, the means square error is used, if false, the absolute value of the error is used */ LIB4NEURO_API MSE(NeuralNetwork* net, - DataSet* ds); + DataSet* ds, + bool rescale_error = true + ); - /** - * - * @param percent_train - * @return - */ - LIB4NEURO_API virtual void divide_data_train_test(double percent_test) override; - - /** - * - */ - LIB4NEURO_API virtual void return_full_data_set_for_training() override; /** * @@ -667,9 +678,21 @@ namespace lib4neuro { /** * - * @param percent + * @param percent_train + * @return + */ + LIB4NEURO_API virtual void divide_data_train_test(double percent_test) override; + + /** + * + * @param percent_train + * @return */ - LIB4NEURO_API virtual void divide_data_train_test(double percent) override; + LIB4NEURO_API virtual size_t divide_data_worst_subset( + std::vector<size_t> &subset_indices, + std::vector<bool> &active_subset, + std::vector<float> &entry_errors + ) override; /** * diff --git a/src/LearningMethods/GradientDescentBB.cpp b/src/LearningMethods/GradientDescentBB.cpp index 971d15ef..09fda2e1 100644 --- a/src/LearningMethods/GradientDescentBB.cpp +++ b/src/LearningMethods/GradientDescentBB.cpp @@ -19,9 +19,7 @@ namespace lib4neuro { this->batch = batch; } - GradientDescentBB::~GradientDescentBB() { - } - + GradientDescentBB::~GradientDescentBB() {} void GradientDescentBB::optimize(lib4neuro::ErrorFunction& ef, std::ofstream* ofs) { @@ -176,7 +174,7 @@ namespace lib4neuro { if (iter_idx == 0) { - COUT_INFO(std::endl << "Maximum number of iterations (" << this->maximum_niters + COUT_INFO("Maximum number of iterations (" << this->maximum_niters << ") was reached! Final error: " << val_best << std::endl); if (ofs && ofs->is_open()) { @@ -186,7 +184,7 @@ namespace lib4neuro { } } else { - COUT_INFO(std::endl << "Gradient Descent method converged after " + COUT_INFO("Gradient Descent method converged after " << this->maximum_niters - iter_idx << " iterations. Final error:" << val_best << std::endl); diff --git a/src/LearningMethods/LazyLearning.cpp b/src/LearningMethods/LazyLearning.cpp new file mode 100644 index 00000000..b04d666d --- /dev/null +++ b/src/LearningMethods/LazyLearning.cpp @@ -0,0 +1,93 @@ +/** + * DESCRIPTION OF THE FILE + * + * @author Michal KravÄenko + * @date 30.7.18 - + */ + +#include <random.hpp> +#include <limits> + +#include "message.h" + +#include "LazyLearning.h" + +namespace lib4neuro { + LazyLearning::LazyLearning( + LearningMethod &inner_trainer, + double tol + ){ + this->inner_method = &inner_trainer; + this->tolerance = tol; + } + + LazyLearning::~LazyLearning( ) {} + + void LazyLearning::optimize( + lib4neuro::ErrorFunction& ef, + std::ofstream* ofs + ) { + + std::vector<size_t> subset_indices; + std::vector<bool> active_subset; + std::vector<float> entry_errors; + while( true ){ + + ef.divide_data_worst_subset( subset_indices, active_subset, entry_errors ); + /* errors of the active subset */ + float subset_error_min = std::numeric_limits<float>::max(); + float subset_error_max = 0.0; + float subset_error_total = 0.0; + size_t new_subset_index = subset_indices[subset_indices.size() - 1]; + float new_subset_entry_error = entry_errors[new_subset_index]; + + + /* errors of the elements not considered */ + float shelved_error_min = subset_error_min; + float shelved_error_max = 0.0; + float shelved_error_total = 0.0; + + /* processing of the errors */ + for( size_t i = 0; i < entry_errors.size(); ++i){ + if( active_subset[ i ] ){ + if( i == new_subset_index ){ + + } + else{ + subset_error_total += entry_errors[ i ]; + subset_error_max = std::max(subset_error_max, entry_errors[ i ] ); + subset_error_min = std::min(subset_error_min, entry_errors[ i ] ); + } + } + else{ + shelved_error_total += entry_errors[ i ]; + shelved_error_max = std::max(shelved_error_max, entry_errors[ i ] ); + shelved_error_min = std::min(shelved_error_min, entry_errors[ i ] ); + } + } + + if( subset_indices.size() > 1 ){ + COUT_INFO( "[" << subset_indices.size() << "] subset error: " << subset_error_total << ", in range: " << subset_error_min << " - " << subset_error_max << ", new entry error: " << new_subset_entry_error ); + } + else{ + COUT_INFO( "[" << subset_indices.size() << "] new entry error: " << new_subset_entry_error ); + } + COUT_INFO( "[" << active_subset.size() - subset_indices.size() << "] remaining error: " << shelved_error_total << ", in range: " << shelved_error_min << " - " << shelved_error_max << std::endl ); + + if( shelved_error_max < this->tolerance && subset_error_max < this->tolerance && new_subset_entry_error < this->tolerance ){ + break; + } + + this->inner_method->optimize( ef, ofs ); + + double sub_error_after = ef.eval( ); + while( sub_error_after > this->tolerance ){ + this->inner_method->optimize( ef, ofs ); + sub_error_after = ef.eval( ); + } + ef.return_full_data_set_for_training( ); + COUT_INFO( "------------------------" ); + } + } + +}//end of namespace lib4neuro diff --git a/src/LearningMethods/LazyLearning.h b/src/LearningMethods/LazyLearning.h new file mode 100644 index 00000000..9d5dec49 --- /dev/null +++ b/src/LearningMethods/LazyLearning.h @@ -0,0 +1,60 @@ +/** + * DESCRIPTION OF THE FILE + * + * @author Michal KravÄenko + * @date 18.09.19 - + */ + +#ifndef INC_4NEURO_LAZYLEARNING_H +#define INC_4NEURO_LAZYLEARNING_H + +#include <memory> +#include "../settings.h" +#include "../constants.h" +#include "LearningMethod.h" +#include "../ErrorFunction/ErrorFunctions.h" + +namespace lib4neuro { + /** + * + */ + class LazyLearning : public LearningMethod { + + private: + size_t subset_size; + + LearningMethod *inner_method; + + double tolerance; + + public: + + /** + * Creates an instance of Lazy Learning Optimizer + * it trains the network iteratively using chunks of the train data which cause + * the highest error + * @param inner_trainer method used for individual optimizations + * @param subset_size number of data entries to be propagated in one batch + * @param tolerance desired accuracy + */ + LIB4NEURO_API explicit LazyLearning( + LearningMethod &inner_trainer, + double tol = 1e-6 + ); + + /** + * Deallocates the instance + */ + LIB4NEURO_API ~LazyLearning(); + + /** + * + * @param ef + */ + LIB4NEURO_API void optimize(lib4neuro::ErrorFunction& ef, + std::ofstream* ofs = nullptr) override; + + }; +} + +#endif //INC_4NEURO_GRADIENTDESCENT_H diff --git a/src/LearningMethods/LevenbergMarquardt.cpp b/src/LearningMethods/LevenbergMarquardt.cpp index 394dddd1..7a617a07 100644 --- a/src/LearningMethods/LevenbergMarquardt.cpp +++ b/src/LearningMethods/LevenbergMarquardt.cpp @@ -1,3 +1,4 @@ +#define ARMA_ALLOW_FAKE_GCC #include <armadillo> #include "LevenbergMarquardt.h" @@ -121,7 +122,7 @@ namespace lib4neuro { double current_err = ef.eval(); COUT_INFO( - "Finding a solution via a Levenberg-Marquardt method... Starting error: " << current_err << std::endl); + "Finding a solution via the Levenberg-Marquardt method... Starting error: " << current_err << std::endl); if (ofs && ofs->is_open()) { *ofs << "Finding a solution via a Levenberg-Marquardt method... Starting error: " << current_err << std::endl; @@ -159,8 +160,8 @@ namespace lib4neuro { //-------------------// size_t iter_counter = 0; do { - COUT_INFO("Iteration: " << iter_counter << " Current error: " << current_err << ", Current gradient norm: " - << gradient_norm << ", Direction norm: " << update_norm << "\r"); +// COUT_INFO("Iteration: " << iter_counter << " Current error: " << current_err << ", Current gradient norm: " +// << gradient_norm << ", Direction norm: " << update_norm << "\r"); if (update_J) { /* Get Jacobian matrix */ @@ -218,11 +219,6 @@ namespace lib4neuro { /* Check, if the parameter update improved the function */ if (current_err < prev_err) { - /* If the convergence threshold is achieved, finish the computation */ - if (current_err < this->p_impl->tolerance) { - break; - } - /* If the error is lowered after parameter update, accept the new parameters and lower the damping * factor lambda */ @@ -236,6 +232,10 @@ namespace lib4neuro { prev_err = current_err; update_J = true; + /* If the convergence threshold is achieved, finish the computation */ + if (current_err < this->p_impl->tolerance) { + break; + } } else { /* If the error after parameters update is not lower, increase the damping factor lambda */ @@ -244,13 +244,13 @@ namespace lib4neuro { } // COUT_DEBUG("Iteration: " << iter_counter << " Current error: " << current_err << ", Current gradient norm: " // << gradient_norm << ", Direction norm: " << update_norm << "\r"); - + if (ofs && ofs->is_open()) { *ofs << "Iteration: " << iter_counter << " Current error: " << current_err << ", Current gradient norm: " << gradient_norm << ", Direction norm: " << update_norm << std::endl; } - } while (iter_counter++ < this->p_impl->maximum_niters && (update_norm > this->p_impl->tolerance)); + } while (iter_counter++ < this->p_impl->maximum_niters && (update_norm > this->p_impl->tolerance_parameters)); COUT_DEBUG("Iteration: " << iter_counter << " Current error: " << current_err << ", Current gradient norm: " << gradient_norm << ", Direction norm: " << update_norm << std::endl); if (ofs && ofs->is_open()) { @@ -269,8 +269,7 @@ namespace lib4neuro { ef.set_parameters(this->optimal_parameters); - COUT_INFO("Finished in " << iter_counter << " iterations with error: " << current_err << " and gradient norm: " << gradient_norm << std::endl); - + COUT_INFO("Finished in " << iter_counter << " iterations with error: " << current_err << " and gradient norm: " << gradient_norm << " and update norm: " << update_norm << std::endl); } LevenbergMarquardt::~LevenbergMarquardt() = default; diff --git a/src/LearningMethods/ParticleSwarm.cpp b/src/LearningMethods/ParticleSwarm.cpp index c8528554..7ba249b2 100644 --- a/src/LearningMethods/ParticleSwarm.cpp +++ b/src/LearningMethods/ParticleSwarm.cpp @@ -292,8 +292,6 @@ namespace lib4neuro { */ void ParticleSwarm::optimize(lib4neuro::ErrorFunction& ef, std::ofstream* ofs) { - //TODO add output to the 'ofs' - COUT_INFO("Finding optima via Globalized Particle Swarm method..." << std::endl); if (ofs && ofs->is_open()) { *ofs << "Finding optima via Globalized Particle Swarm method..." << std::endl; diff --git a/src/Network/ACSFNeuralNetwork.cpp b/src/Network/ACSFNeuralNetwork.cpp index 08d8b42f..9ab44255 100644 --- a/src/Network/ACSFNeuralNetwork.cpp +++ b/src/Network/ACSFNeuralNetwork.cpp @@ -2,14 +2,33 @@ // Created by martin on 19.08.19. // +#include <string> + +#include "../exceptions.h" #include "../settings.h" #include "ACSFNeuralNetwork.h" +#include "../ErrorFunction/ErrorFunctions.h" lib4neuro::ACSFNeuralNetwork::ACSFNeuralNetwork(std::unordered_map<ELEMENT_SYMBOL, Element*>& elements, std::vector<ELEMENT_SYMBOL>& elements_list, bool with_charge, std::unordered_map<ELEMENT_SYMBOL, std::vector<unsigned int>> n_hidden_neurons, std::unordered_map<ELEMENT_SYMBOL, std::vector<NEURON_TYPE>> type_hidden_neurons) { + + /* Check parameters */ + for(auto symbol : elements_list) { + if(n_hidden_neurons[symbol].size() != type_hidden_neurons[symbol].size()) { + THROW_RUNTIME_ERROR("Number of hidden layers for " + elements[symbol]->getElementSymbol() + " (" + + std::to_string(n_hidden_neurons[symbol].size()) + + ") doesn't correspond with a number of hidden neuron types (" + + std::to_string(type_hidden_neurons[symbol].size()) + ")!"); + } + } + + /* Save info about elements */ + this->elements = &elements; + this->elements_list = &elements_list; + /* Construct the neural network */ std::vector<size_t> inputs; @@ -32,7 +51,7 @@ lib4neuro::ACSFNeuralNetwork::ACSFNeuralNetwork(std::unordered_map<ELEMENT_SYMBO /* Create input neurons for sub-net */ std::shared_ptr<NeuronLinear> inp_n; - for(size_t j = 0; j < elements[elements_list.at(i)]->getSymmetryFunctions().size(); j++) { + for(size_t j = 0; j < elements[elements_list.at(i)]->getSymmetryFunctions()->size(); j++) { inp_n = std::make_shared<NeuronLinear>(); last_neuron_idx = this->add_neuron(inp_n, BIAS_TYPE::NO_BIAS); previous_layer.emplace_back(last_neuron_idx); @@ -122,52 +141,21 @@ lib4neuro::ACSFNeuralNetwork::ACSFNeuralNetwork(std::unordered_map<ELEMENT_SYMBO new_layer.clear(); } - /* Create hidden layers in sub-net */ -// std::vector<unsigned int> n_neurons = n_hidden_neurons[elements_list.at(i)]; -// std::vector<NEURON_TYPE> types = type_hidden_neurons[elements_list.at(i)]; -// for(size_t j = 0; j < n_neurons.size(); j++) { /* Iterate over hidden layers */ -// /* Create hidden neurons */ -// for(size_t k = 0; k < n_neurons.at(j); k++) { -// std::shared_ptr<Neuron> hid_n; -// switch(types.at(j)) { -// case NEURON_TYPE::LOGISTIC: { -// hid_n = std::make_shared<NeuronLogistic>(); -// break; -// } -// case NEURON_TYPE::BINARY: { -// hid_n = std::make_shared<NeuronBinary>(); -// break; -// } -// case NEURON_TYPE::CONSTANT: { -// hid_n = std::make_shared<NeuronConstant>(); -// break; -// } -// case NEURON_TYPE::LINEAR: { -// hid_n = std::make_shared<NeuronLinear>(); -// break; -// } -// } -// -// neuron_idx = this->add_neuron(hid_n, BIAS_TYPE::NEXT_BIAS); -// new_layer.emplace_back(neuron_idx); -// -// /* Connect hidden neuron to the previous layer */ -// for(auto prev_n : previous_layer) { -// this->add_connection_simple(prev_n, neuron_idx, SIMPLE_CONNECTION_TYPE::NEXT_WEIGHT); -// } -// previous_layer = new_layer; -// new_layer.clear(); -// } -// } - /* Create output neurons for sub-net */ for(auto prev_n : previous_layer) { this->add_connection_constant(prev_n, outputs[ 0 ], 1.0); } - } /* Specify network inputs and outputs */ this->specify_input_neurons(inputs); this->specify_output_neurons(outputs); } + +std::unordered_map<lib4neuro::ELEMENT_SYMBOL, lib4neuro::Element*>* lib4neuro::ACSFNeuralNetwork::get_elements() { + return this->elements; +} + +std::vector<lib4neuro::ELEMENT_SYMBOL>* lib4neuro::ACSFNeuralNetwork::get_elements_list() { + return this->elements_list; +} diff --git a/src/Network/ACSFNeuralNetwork.h b/src/Network/ACSFNeuralNetwork.h index 8c9615f4..071c58fb 100644 --- a/src/Network/ACSFNeuralNetwork.h +++ b/src/Network/ACSFNeuralNetwork.h @@ -5,17 +5,29 @@ #ifndef LIB4NEURO_ACSFNEURALNETWORK_H #define LIB4NEURO_ACSFNEURALNETWORK_H +#include <unordered_map> + #include "NeuralNetwork.h" #include "../DataSet/DataSet.h" +#include "../SymmetryFunction/SymmetryFunction.h" namespace lib4neuro { class ACSFNeuralNetwork : public NeuralNetwork { + private: + std::unordered_map<ELEMENT_SYMBOL, Element*>* elements; + + std::vector<ELEMENT_SYMBOL>* elements_list; + public: LIB4NEURO_API explicit ACSFNeuralNetwork(std::unordered_map<ELEMENT_SYMBOL, Element*>& elements, std::vector<ELEMENT_SYMBOL>& elements_list, bool with_charge, std::unordered_map<ELEMENT_SYMBOL, std::vector<unsigned int >> n_hidden_neurons, std::unordered_map<ELEMENT_SYMBOL, std::vector<NEURON_TYPE>> type_hidden_neurons); + + LIB4NEURO_API std::unordered_map<ELEMENT_SYMBOL, Element*>* get_elements(); + + LIB4NEURO_API std::vector<ELEMENT_SYMBOL>* get_elements_list(); }; } diff --git a/src/Reader/Reader.cpp b/src/Reader/Reader.cpp index 069ca7a1..b0aa9a34 100644 --- a/src/Reader/Reader.cpp +++ b/src/Reader/Reader.cpp @@ -32,12 +32,12 @@ void lib4neuro::Reader::read() { // TODO make filepath relative to an executable directory instead of the current one! // TODO https://www.boost.org/doc/libs/1_36_0/libs/filesystem/doc/reference.html#initial_path std::ifstream ifs(this->file_path); - + if ( !ifs.is_open() ) { // throw std::logic_error("File could not be opened! Possibly due to the lack of access privileges or an incorrect path.\n"); THROW_LOGIC_ERROR( "File could not be opened! Possibly due to the lack of access privileges or an incorrect path.\n" ); } - + std::string line; if (this->ignore_first_line) { diff --git a/src/Reader/XYZReader.cpp b/src/Reader/XYZReader.cpp index aa68f95b..bc989d70 100644 --- a/src/Reader/XYZReader.cpp +++ b/src/Reader/XYZReader.cpp @@ -40,6 +40,8 @@ std::shared_ptr<lib4neuro::DataSet> lib4neuro::XYZReader::get_data_set() { line = this->data.at(1); this->remove_white_characters_from_vector(line); n_particles = std::stoul(line.at(0)); + std::cout << "# of particles in cluster: " << n_particles << std::endl; + std::cout << "# of target configurations: " << n_configurations << std::endl; unsigned int situation; @@ -54,6 +56,16 @@ std::shared_ptr<lib4neuro::DataSet> lib4neuro::XYZReader::get_data_set() { if (situation == 1) { data_set_contents.emplace_back(std::make_pair(inputs, outputs)); +// std::cout << "[" << data_set_contents.size() << "] inputs: "; +// for( auto el: inputs ){ +// std::cout << el << ", "; +// } +// std::cout << "outputs: "; +// for( auto el: outputs ){ +// std::cout << el << ", "; +// } +// std::cout << std::endl; + inputs.clear(); outputs.clear(); } else if (situation == 2) { @@ -76,16 +88,14 @@ std::shared_ptr<lib4neuro::DataSet> lib4neuro::XYZReader::get_data_set() { inputs.emplace_back(std::stod(line.at(i))); } - if (data_ind == this->data.size() - 1) { - data_set_contents.emplace_back(std::make_pair(inputs, - outputs)); - inputs.clear(); - outputs.clear(); - } } } + data_set_contents.emplace_back(std::make_pair(inputs, outputs)); + inputs.clear(); + outputs.clear(); this->data_set = std::make_shared<DataSet>(DataSet(&data_set_contents)); + std::cout << "# number of clusters: " << this->data_set->get_n_elements( ) << std::endl; /* Compute number of particles per element */ for(auto e : *this->element_list) { @@ -130,6 +140,7 @@ void lib4neuro::XYZReader::transform_input_to_acsf(std::unordered_map<ELEMENT_SY cartesian_coords.resize(3); unsigned int idx; + this->acsf_data_set = std::make_shared<DataSet>(); for(auto configuration : *data) { /* Iterate over configurations */ idx = 0; particles.clear(); @@ -150,7 +161,7 @@ void lib4neuro::XYZReader::transform_input_to_acsf(std::unordered_map<ELEMENT_SY double coord_val; for(size_t i = 0; i < particles.size(); i++) { /* Iterate over all the particles */ single_coords_check.clear(); - for (auto sym_func : element_description[particles.at(i).first]->getSymmetryFunctions()) { + for (auto sym_func : *element_description[particles.at(i).first]->getSymmetryFunctions()) { coord_val = sym_func->eval(i, particles); acsf_coords.emplace_back(coord_val); single_coords_check.emplace_back(coord_val); @@ -180,9 +191,9 @@ void lib4neuro::XYZReader::transform_input_to_acsf(std::unordered_map<ELEMENT_SY THROW_RUNTIME_ERROR("Not all descriptors are unique with currently specified symmetry functions!"); } - if(this->acsf_data_set == nullptr) { - this->acsf_data_set = std::make_shared<DataSet>(); - } +// if(this->acsf_data_set == nullptr) { +// this->acsf_data_set = std::make_shared<DataSet>(); +// } this->acsf_data_set->add_data_pair(acsf_coords, configuration.second); acsf_coords.clear(); @@ -208,9 +219,9 @@ lib4neuro::ELEMENT_SYMBOL lib4neuro::XYZReader::get_element_symbol(std::string s std::shared_ptr<lib4neuro::DataSet> lib4neuro::XYZReader::get_acsf_data_set(std::unordered_map<ELEMENT_SYMBOL, Element*>& element_description) { - if(acsf_data_set == nullptr) { +// if(acsf_data_set == nullptr) { this->transform_input_to_acsf(element_description); - } +// } return this->acsf_data_set; } diff --git a/src/Reader/XYZReader.h b/src/Reader/XYZReader.h index b6eab886..c0774184 100644 --- a/src/Reader/XYZReader.h +++ b/src/Reader/XYZReader.h @@ -9,6 +9,7 @@ #include <vector> #include <memory> #include <algorithm> +#include <unordered_map> #include "../settings.h" #include "../DataSet/DataSet.h" diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt index 81fa34e2..8dc0822c 100644 --- a/src/examples/CMakeLists.txt +++ b/src/examples/CMakeLists.txt @@ -2,57 +2,53 @@ # EXAMPLES # ############ -ADD_EXECUTABLE(seminar seminar.cpp) -TARGET_LINK_LIBRARIES(seminar PUBLIC lib4neuro) +#ADD_EXECUTABLE(seminar seminar.cpp) +#TARGET_LINK_LIBRARIES(seminar PUBLIC lib4neuro) ADD_EXECUTABLE(dev_sandbox dev_sandbox.cpp) TARGET_LINK_LIBRARIES(dev_sandbox PUBLIC lib4neuro) -ADD_EXECUTABLE(net_test_1 net_test_1.cpp) -TARGET_LINK_LIBRARIES(net_test_1 PUBLIC lib4neuro) +#ADD_EXECUTABLE(net_test_1 net_test_1.cpp) +#TARGET_LINK_LIBRARIES(net_test_1 PUBLIC lib4neuro) -ADD_EXECUTABLE(net_test_2 net_test_2.cpp) -TARGET_LINK_LIBRARIES(net_test_2 PUBLIC lib4neuro) +#ADD_EXECUTABLE(net_test_2 net_test_2.cpp) +#TARGET_LINK_LIBRARIES(net_test_2 PUBLIC lib4neuro) -ADD_EXECUTABLE(net_test_3 net_test_3.cpp) -TARGET_LINK_LIBRARIES(net_test_3 PUBLIC lib4neuro) +#ADD_EXECUTABLE(net_test_3 net_test_3.cpp) +#TARGET_LINK_LIBRARIES(net_test_3 PUBLIC lib4neuro) -ADD_EXECUTABLE(net_test_ode_1 net_test_ode_1.cpp) -TARGET_LINK_LIBRARIES(net_test_ode_1 PUBLIC lib4neuro) +#ADD_EXECUTABLE(net_test_ode_1 net_test_ode_1.cpp) +#TARGET_LINK_LIBRARIES(net_test_ode_1 PUBLIC lib4neuro) -ADD_EXECUTABLE(net_test_pde_1 net_test_pde_1.cpp) -TARGET_LINK_LIBRARIES(net_test_pde_1 PUBLIC lib4neuro) +#ADD_EXECUTABLE(net_test_pde_1 net_test_pde_1.cpp) +#TARGET_LINK_LIBRARIES(net_test_pde_1 PUBLIC lib4neuro) -ADD_EXECUTABLE(network_serialization network_serialization.cpp) -TARGET_LINK_LIBRARIES(network_serialization PUBLIC lib4neuro) +#ADD_EXECUTABLE(network_serialization network_serialization.cpp) +#TARGET_LINK_LIBRARIES(network_serialization PUBLIC lib4neuro) -ADD_EXECUTABLE(test_harmonic_oscilator net_test_harmonic_oscilator.cpp) -TARGET_LINK_LIBRARIES(test_harmonic_oscilator PUBLIC lib4neuro) +#ADD_EXECUTABLE(test_harmonic_oscilator net_test_harmonic_oscilator.cpp) +#TARGET_LINK_LIBRARIES(test_harmonic_oscilator PUBLIC lib4neuro) -ADD_EXECUTABLE(x2_fitting x2_fitting.cpp) -TARGET_LINK_LIBRARIES(x2_fitting PUBLIC lib4neuro) +#ADD_EXECUTABLE(x2_fitting x2_fitting.cpp) +#TARGET_LINK_LIBRARIES(x2_fitting PUBLIC lib4neuro) -ADD_EXECUTABLE(acsf acsf.cpp) -TARGET_LINK_LIBRARIES(acsf PUBLIC lib4neuro) - -ADD_EXECUTABLE(acsf2 acsf2.cpp) -TARGET_LINK_LIBRARIES(acsf2 PUBLIC lib4neuro) +#ADD_EXECUTABLE(acsf acsf.cpp) +#TARGET_LINK_LIBRARIES(acsf PUBLIC lib4neuro) SET(EXAMPLES_OUTPUT_DIR ${PROJECT_BINARY_DIR}/examples) SET_TARGET_PROPERTIES( dev_sandbox - net_test_1 - net_test_2 - net_test_3 - net_test_ode_1 - net_test_pde_1 - network_serialization - test_harmonic_oscilator - seminar - x2_fitting - acsf - acsf2 + #net_test_1 + #net_test_2 + #net_test_3 + #net_test_ode_1 + #net_test_pde_1 + #network_serialization + #test_harmonic_oscilator + #seminar + #x2_fitting + #acsf PROPERTIES ARCHIVE_OUTPUT_DIRECTORY $<1:${EXAMPLES_OUTPUT_DIR}> @@ -61,16 +57,14 @@ SET_TARGET_PROPERTIES( INCLUDE_DIRECTORIES ${ROOT_DIR}/include ) -TARGET_INCLUDE_DIRECTORIES( - net_test_3 - PRIVATE - ${ROOT_DIR}/include - ${Boost_INCLUDE_DIRS} -) +#TARGET_INCLUDE_DIRECTORIES( +# net_test_3 +# PRIVATE +# ${Boost_INCLUDE_DIRS} +#) TARGET_INCLUDE_DIRECTORIES( - acsf2 + dev_sandbox PRIVATE - ${ROOT_DIR}/include - ${Boost_INCLUDE_DIRS} -) + ${ARMADILLO_INCLUDE_DIR} +) \ No newline at end of file diff --git a/src/examples/acsf.cpp b/src/examples/acsf.cpp index e1f3851a..6b91dca3 100644 --- a/src/examples/acsf.cpp +++ b/src/examples/acsf.cpp @@ -1,79 +1,247 @@ // -// Created by martin on 13.08.19. +// Created by martin on 20.08.19. // -#include <4neuro.h> +#define ARMA_ALLOW_FAKE_GCC + +#include <4neuro_public.h> + +void optimize_via_particle_swarm(l4n::NeuralNetwork& net, + l4n::ErrorFunction& ef) { + + /* TRAINING METHOD SETUP */ + std::vector<double> domain_bounds(2 * (net.get_n_weights() + net.get_n_biases())); + + for (size_t i = 0; i < domain_bounds.size() / 2; ++i) { + domain_bounds[2 * i] = -150; + domain_bounds[2 * i + 1] = 150; + } + + double c1 = 1.7; + double c2 = 1.7; + double w = 0.7; + size_t n_particles = 300; + size_t iter_max = 500; + + /* if the maximal velocity from the previous step is less than 'gamma' times the current maximal velocity, then one + * terminating criterion is met */ + double gamma = 0.5; + + /* if 'delta' times 'n' particles are in the centroid neighborhood given by the radius 'epsilon', then the second + * terminating criterion is met ('n' is the total number of particles) */ + double epsilon = 0.02; + double delta = 0.7; + + l4n::ParticleSwarm swarm_01( + &domain_bounds, + c1, + c2, + w, + gamma, + epsilon, + delta, + n_particles, + iter_max + ); + swarm_01.optimize(ef); + + net.copy_parameter_space(swarm_01.get_parameters()); + + /* ERROR CALCULATION */ + std::cout << "Run finished! Error of the network[Particle swarm]: " << ef.eval(nullptr) << std::endl; + std::cout + << "***********************************************************************************************************************" + << std::endl; +} + +double optimize_via_gradient_descent(l4n::NeuralNetwork& net, + l4n::ErrorFunction& ef) { + + std::cout + << "***********************************************************************************************************************" + << std::endl; + l4n::GradientDescentBB gd(1e-6, + 1000, + 10000); + + gd.optimize(ef); + + net.copy_parameter_space(gd.get_parameters()); + + /* ERROR CALCULATION */ + double err = ef.eval(nullptr); + std::cout << "Run finished! Error of the network[Gradient descent]: " << err << std::endl; + + /* Just for validation test purposes - NOT necessary for the example to work! */ + return err; +} + +double optimize_via_LBMQ(l4n::NeuralNetwork& net, + l4n::ErrorFunction& ef) { + + size_t max_iterations = 10000; + size_t batch_size = 0; + double tolerance = 1e-4; + double tolerance_gradient = tolerance; + double tolerance_parameters = tolerance; + + std::cout + << "***********************************************************************************************************************" + << std::endl; + l4n::LevenbergMarquardt lm( + max_iterations, + batch_size, + tolerance, + tolerance_gradient, + tolerance_parameters + ); + + lm.optimize(ef); + + net.copy_parameter_space(lm.get_parameters()); + + /* ERROR CALCULATION */ + double err = ef.eval(nullptr); + // std::cout << "Run finished! Error of the network[Levenberg-Marquardt]: " << err << std::endl; + + /* Just for validation test purposes - NOT necessary for the example to work! */ + return err; +} + +double optimize_via_NelderMead(l4n::NeuralNetwork& net, l4n::ErrorFunction& ef) { + l4n::NelderMead nm(500, 150); + + nm.optimize(ef); + net.copy_parameter_space(nm.get_parameters()); + + /* ERROR CALCULATION */ + double err = ef.eval(nullptr); + std::cout << "Run finished! Error of the network[Nelder-Mead]: " << err << std::endl; + + /* Just for validation test purposes - NOT necessary for the example to work! */ + return err; + +} + int main() { - /* Representation of N2He+ molecule using Atomic-centered Symmetry Functions (Behler's approach) */ -// // Cutoff functions -// l4n::CutoffFunction1 cutoff1(1.1); -// l4n::CutoffFunction2 cutoff2(1.5); -// l4n::CutoffFunction2 cutoff3(1.2); -// -// l4n::CutoffFunction2 cutoff4(1.3); -// l4n::CutoffFunction2 cutoff5(1.9); -// l4n::CutoffFunction2 cutoff6(2.9); -// -// // Symmetry functions -// l4n::G1 sym_f1(&cutoff1); -// l4n::G2 sym_f2(&cutoff2, 0.15, 0.75); -// l4n::G2 sym_f3(&cutoff3, 0.1, 0.2); -// -// l4n::G3 sym_f4(&cutoff4, 0.3); -// l4n::G4 sym_f5(&cutoff5, 0.05, true, 0.05); -// l4n::G4 sym_f6(&cutoff5, 0.05, false, 0.05); -// l4n::G5 sym_f7(&cutoff6, 0.05, true, 0.05); -// l4n::G5 sym_f8(&cutoff6, 0.05, false, 0.05); -// -// std::vector<l4n::SymmetryFunction*> nitrogen_sym_funcs = {&sym_f1, &sym_f2, &sym_f7, &sym_f8}; -// std::vector<l4n::SymmetryFunction*> helium_sym_funcs = {&sym_f2, &sym_f3, &sym_f4, &sym_f5, &sym_f6}; -// -// // Definition of sub-nets -// std::vector<unsigned int> nitrogen_hidden_neurons = {10}; -// std::vector<l4n::NEURON_TYPE> nitrogen_neuron_types = {l4n::NEURON_TYPE::LOGISTIC}; -// std::vector<unsigned int> helium_hidden_neurons = {10}; -// std::vector<l4n::NEURON_TYPE> helium_neuron_types = {l4n::NEURON_TYPE::LOGISTIC}; -// -// // Definition of elements -// l4n::Element nitrogen = l4n::Element("N", -// 2, -// nitrogen_sym_funcs, -// nitrogen_hidden_neurons, -// nitrogen_neuron_types, -// false); -// -// l4n::Element helium = l4n::Element("He", -// 1, -// helium_sym_funcs, -// nitrogen_hidden_neurons, -// nitrogen_neuron_types, -// false); -// -// std::unordered_map<l4n::ELEMENT_SYMBOL, l4n::Element*> elements; -// elements[l4n::ELEMENT_SYMBOL::N] = &nitrogen; -// elements[l4n::ELEMENT_SYMBOL::He] = &helium; -// -// // Definition of particles' Cartesian coordinates -// std::vector<double> n1 = {0,0}; -// std::vector<double> n2 = {1,0}; -// std::vector<double> he = {0,1}; -// std::vector<std::pair<l4n::ELEMENT_SYMBOL, std::vector<double>>> particles; -// particles.emplace_back(std::make_pair(l4n::ELEMENT_SYMBOL::N, n1)); -// particles.emplace_back(std::make_pair(l4n::ELEMENT_SYMBOL::N, n2)); -// particles.emplace_back(std::make_pair(l4n::ELEMENT_SYMBOL::He, he)); -// -// // Neural network construction -// l4n::NeuralNetwork nn = l4n::NeuralNetwork(elements, particles); -// -// std::cout << nn.get_n_neurons() << std::endl; -// std::cout << nn.get_n_inputs() << std::endl; -// std::cout << nn.get_n_outputs() << std::endl; -// std::cout << nn.get_n_biases() << std::endl; -// -// // Neural network training -// // TODO + try{ + + /* Specify cutoff functions */ + l4n::CutoffFunction2 cutoff2(8); + + /* Specify symmetry functions */ + l4n::G2 sym_f1(&cutoff2, 0, 0.7); + l4n::G2 sym_f2(&cutoff2, 0.1, 0.8); + l4n::G2 sym_f3(&cutoff2, 0.2, 0.04); + l4n::G2 sym_f4(&cutoff2, 0.3, 0.04); + l4n::G2 sym_f5(&cutoff2, 0.4, 0.04); + l4n::G2 sym_f6(&cutoff2, 0.5, 0.04); + l4n::G2 sym_f7(&cutoff2, 0.6, 0.04); + + l4n::G5 sym_f8(&cutoff2, 0.7, -1, 0.9); + l4n::G5 sym_f9(&cutoff2, 0.8, -1, 0.9); + l4n::G5 sym_f10(&cutoff2, 0.9, -1, 0.9); + l4n::G5 sym_f11(&cutoff2, 1, -1, 0.9); + l4n::G5 sym_f12(&cutoff2, 1.1, -1, 0.9); + l4n::G5 sym_f13(&cutoff2, 1.2, -1, 0.9); + l4n::G5 sym_f14(&cutoff2, 1.3, -1, 0.9); + l4n::G5 sym_f15(&cutoff2, 1.4, -1, 0.9); + l4n::G5 sym_f16(&cutoff2, 1.5, -1, 0.9); + l4n::G5 sym_f17(&cutoff2, 1.6, -1, 0.9); + l4n::G5 sym_f18(&cutoff2, 1.7, -1, 0.9); + + std::vector<l4n::SymmetryFunction*> helium_sym_funcs = {&sym_f1, + &sym_f2, + &sym_f3, + &sym_f4, + &sym_f5, + &sym_f6, + &sym_f7, + &sym_f8, + &sym_f9, + &sym_f10, + &sym_f11, + &sym_f12, + &sym_f13, + &sym_f14, + &sym_f15, + &sym_f16, + &sym_f17, + &sym_f18}; + + l4n::Element helium = l4n::Element("He", + helium_sym_funcs); + std::unordered_map<l4n::ELEMENT_SYMBOL, l4n::Element*> elements; + elements[l4n::ELEMENT_SYMBOL::He] = &helium; + + /* Read data */ + l4n::XYZReader reader("../../data/HE4+T1.xyz", true); + reader.read(); + + std::cout << "Finished reading data" << std::endl; + + std::shared_ptr<l4n::DataSet> ds = reader.get_acsf_data_set(elements); + + /* Create a neural network */ + std::unordered_map<l4n::ELEMENT_SYMBOL, std::vector<unsigned int>> n_hidden_neurons; + n_hidden_neurons[l4n::ELEMENT_SYMBOL::He] = {20, 20, 1}; + + std::unordered_map<l4n::ELEMENT_SYMBOL, std::vector<l4n::NEURON_TYPE>> type_hidden_neurons; + type_hidden_neurons[l4n::ELEMENT_SYMBOL::He] = {l4n::NEURON_TYPE::LOGISTIC, l4n::NEURON_TYPE::LOGISTIC, l4n::NEURON_TYPE::LINEAR}; + + l4n::ACSFNeuralNetwork net(elements, *reader.get_element_list(), reader.contains_charge(), n_hidden_neurons, type_hidden_neurons); + + l4n::MSE mse(&net, ds.get()); + + net.randomize_parameters(); + + for(size_t i = 0; i < ds->get_data()->at(0).first.size(); i++) { + std::cout << ds->get_data()->at(0).first.at(i) << " "; + if(i % 2 == 1) { + std::cout << std::endl; + } + } + std::cout << "----" << std::endl; + + l4n::ACSFParametersOptimizer param_optim(&mse, &reader); + std::vector<l4n::SYMMETRY_FUNCTION_PARAMETER> fitted_params = {l4n::SYMMETRY_FUNCTION_PARAMETER::EXTENSION, + l4n::SYMMETRY_FUNCTION_PARAMETER::SHIFT_MAX, + l4n::SYMMETRY_FUNCTION_PARAMETER::SHIFT, + l4n::SYMMETRY_FUNCTION_PARAMETER::ANGULAR_RESOLUTION}; + + param_optim.fit_ACSF_parameters(fitted_params, true); + + for(size_t i = 0; i < mse.get_dataset()->get_data()->at(0).first.size(); i++) { + std::cout << mse.get_dataset()->get_data()->at(0).first.at(i) << " "; + if(i % 2 == 1) { + std::cout << std::endl; + } + } + std::cout << "----" << std::endl; + + +// optimize_via_particle_swarm(net, mse); +// optimize_via_NelderMead(net, mse); + + double err1 = optimize_via_LBMQ(net, mse); + double err2 = optimize_via_gradient_descent(net, mse); + + /* Print fit comparison with real data */ + std::vector<double> output; + output.resize(1); + + for(auto e : *mse.get_dataset()->get_data()) { + std::cout << "OUTS (DS, predict): " << e.second.at(0) << " "; + net.eval_single(e.first, output); + std::cout << output.at(0) << std::endl; + } + + } catch (const std::exception& e) { + std::cerr << e.what() << std::endl; + exit(EXIT_FAILURE); + } return 0; -} \ No newline at end of file +} diff --git a/src/examples/dev_sandbox.cpp b/src/examples/dev_sandbox.cpp index 7cd5277a..a7e18cfe 100644 --- a/src/examples/dev_sandbox.cpp +++ b/src/examples/dev_sandbox.cpp @@ -3,8 +3,7 @@ // #define ARMA_ALLOW_FAKE_GCC -#include <4neuro_public.h> -#include "../mpi_wrapper.h" +#include <4neuro.h> void optimize_via_particle_swarm(l4n::NeuralNetwork& net, diff --git a/src/examples/net_test_1.cpp b/src/examples/net_test_1.cpp index a1f3e571..a5b30049 100644 --- a/src/examples/net_test_1.cpp +++ b/src/examples/net_test_1.cpp @@ -5,7 +5,7 @@ #include <vector> #include <iostream> -#include "4neuro.h" +#include <4neuro_public.h> void optimize_via_particle_swarm(l4n::NeuralNetwork& net, l4n::ErrorFunction& ef) { diff --git a/src/examples/net_test_2.cpp b/src/examples/net_test_2.cpp index 345bbb88..8aff983b 100644 --- a/src/examples/net_test_2.cpp +++ b/src/examples/net_test_2.cpp @@ -5,7 +5,7 @@ #include <vector> -#include "4neuro.h" +#include <4neuro_public.h> void optimize_via_particle_swarm(l4n::NeuralNetwork& net, l4n::ErrorFunction& ef) { diff --git a/src/examples/net_test_3.cpp b/src/examples/net_test_3.cpp index d9bc6a7f..bb95542d 100644 --- a/src/examples/net_test_3.cpp +++ b/src/examples/net_test_3.cpp @@ -11,7 +11,7 @@ #include <assert.h> #include <ctime> -#include <4neuro.h> +#include <4neuro_public.h> #include <boost/random/mersenne_twister.hpp> #include <boost/random/uniform_int_distribution.hpp> diff --git a/src/examples/net_test_harmonic_oscilator.cpp b/src/examples/net_test_harmonic_oscilator.cpp index e216200c..abd94990 100644 --- a/src/examples/net_test_harmonic_oscilator.cpp +++ b/src/examples/net_test_harmonic_oscilator.cpp @@ -11,7 +11,7 @@ #include <iostream> #include <fstream> -#include "4neuro.h" +#include <4neuro_public.h> void export_solution(size_t n_test_points, double te, diff --git a/src/examples/net_test_ode_1.cpp b/src/examples/net_test_ode_1.cpp index 28c48ec4..25d50bd2 100644 --- a/src/examples/net_test_ode_1.cpp +++ b/src/examples/net_test_ode_1.cpp @@ -19,7 +19,7 @@ #include <random> #include <iostream> #include <chrono> -#include "4neuro.h" +#include <4neuro_public.h> void optimize_via_particle_swarm(l4n::DESolver& solver, l4n::MultiIndex& alpha, diff --git a/src/examples/net_test_pde_1.cpp b/src/examples/net_test_pde_1.cpp index b69cd919..c2441062 100644 --- a/src/examples/net_test_pde_1.cpp +++ b/src/examples/net_test_pde_1.cpp @@ -22,7 +22,7 @@ #include <iostream> #include <fstream> -#include "4neuro.h" +#include <4neuro_public.h> void optimize_via_particle_swarm(l4n::DESolver& solver, l4n::MultiIndex& alpha, diff --git a/src/examples/network_serialization.cpp b/src/examples/network_serialization.cpp index bae85fcc..0a22c005 100644 --- a/src/examples/network_serialization.cpp +++ b/src/examples/network_serialization.cpp @@ -7,7 +7,7 @@ */ #include <vector> -#include "4neuro.h" +#include <4neuro_public.h> int main() { std::cout << "Running lib4neuro Serialization example 1" << std::endl; diff --git a/src/examples/seminar.cpp b/src/examples/seminar.cpp index 11926803..735f11c9 100644 --- a/src/examples/seminar.cpp +++ b/src/examples/seminar.cpp @@ -9,8 +9,7 @@ #include <iostream> #include <fstream> -#include "4neuro.h" -#include "../Solvers/DESolver.h" +#include <4neuro_public.h> int main() { diff --git a/src/examples/x2_fitting.cpp b/src/examples/x2_fitting.cpp index 9c273391..1484ec3c 100644 --- a/src/examples/x2_fitting.cpp +++ b/src/examples/x2_fitting.cpp @@ -1,6 +1,6 @@ #include <iostream> -#include "4neuro.h" +#include <4neuro_public.h> void optimize_via_particle_swarm(l4n::NeuralNetwork& net, l4n::ErrorFunction& ef) { -- GitLab