AtheMathmo / rulinalg

A linear algebra library written in Rust
https://crates.io/crates/rulinalg
MIT License
287 stars 58 forks source link

Eigenvalues goes into infinite loop for certain matrices #187

Open dgrnbrg opened 7 years ago

dgrnbrg commented 7 years ago

By accident, my program which is using eigenvalues() has become very good at constructing matrices which never converge during the search for their eigenvalues. Below is an example of such a matrix--I can actually generate an infinite number of these. I've noticed that this only occurs for matrices that are around 50x50--my smaller matrices generated through the same procedure never have this issue:

{ rows: 49, cols: 49, data: [0.31501474594214457, 0.35268042391164867, 0.4452319362672858, 0.1470024737549112, 0.17111164144364013, 0.4193866974066266, 0.2706799155654205, 0.15475150836100138, 0.5146104708867024, 0.22725395409287158, 0.3229436602972845, 0.3076102108901424, 0.3540325839268723, 0.19916677422058549, 0.3038098876169077, 0.17422150446301807, 0.4565455145724919, 0.061258808716221795, 0.2975616539949748, 0.020699330799131214, 0.4172816970466515, 0.24217587597829868, 0.37107045565269914, 0.2838647218847461, 0.37040354192880465, 0.266956710238414, 0.11771851456210208, 0.3048009102691931, 0.31811526082758124, 0.3810027915462596, 0.3079152228390535, 0.26347200863110076, 0.314114418764055, 0.3370694645495711, 0.3389829511088026, 0.18430398345224755, 0.17949923425082714, 0.2026949812803743, 0.11479880470315389, 0.3264422882163841, 0.25555153601381003, 0.14524842484521672, 0.19613074264335123, 0.19852370876861422, 0.3420052545851465, 0.2766624149926663, 0.2608183760693584, 0.2194349570472135, 0.1952972401489027, 0.35268042391164867, 0.15670825536853397, 0.3114470552096161, 0.2904535424254735, 0.3317506524385053, -0.060867477789417576, 0.3500579952491177, 0.38914674799192084, 0.23021010952260074, 0.16209276518274457, 0.08255608617509544, 0.29731970301395494, 0.218849630362935, 0.37460503334379214, 0.16899227654162305, 0.20781185071223945, 0.32374763705742304, 0.1450009236461164, 0.35732385248287946, 0.21059635344786143, 0.26149813157012297, 0.08191329648013636, 0.46013714402832095, 0.17856733888252024, 0.20994271552217447, 0.3599520827095213, 0.12070023293111945, 0.32323958837400335, 0.26171256398949133, 0.2991357929254599, 0.2681472195387346, 0.10694733810248166, 0.09194428359298296, 0.25932881612999187, 0.39206107217676944, 0.17565490109964504, 0.23635650413273365, 0.2187275446289296, 0.17994656478369014, 0.31721849918737566, 0.4286425690234691, 0.2427233274486008, 0.42325869221174345, 0.22694198020161732, 0.22160456239329673, 0.2440555251385899, 0.0824920593809706, 0.3484375320001196, 0.278373424932557, 0.4452319362672858, 0.3114470552096161, 0.5242048469814456, 0.2140989613329933, 0.2189190776099474, 0.44960356757717734, -0.04813566109828983, 0.15467099878085278, 0.15043735824574198, 0.19947931688837373, 0.20477818684323904, 0.35461167855067405, 0.3413321364287185, 0.3700615340914661, 0.3658807870698153, 0.3938885058539764, 0.11168088887215384, 0.11684958563151594, 0.4848693178726664, 0.2467512553986334, 0.47496898774624086, 0.012570948306155405, 0.45248719645584806, 0.23111976741475837, 0.3435274417032648, 0.36924838776643043, 0.18366023854061836, 0.21517804851387798, 0.17924292569599815, -0.004613816841587029, 0.2856293772295043, 0.15668824092994804, 0.05314165709721005, 0.07222983287375012, 0.41166155589401315, 0.3514491541890431, 0.13750727257051037, 0.32656086444514687, 0.4227355009963888, 0.21739786745056117, 0.39212079876636396, 0.40679681872699414, 0.3419718712085783, 0.1754041412483725, 0.3174014735476576, 0.4111955278635465, 0.46142294811180495, 0.3125153822577894, 0.19908969494862228, 0.1470024737549112, 0.2904535424254735, 0.2140989613329933, 0.3482655890037226, 0.08379273311291593, 0.33569877782115876, 0.3346870762398092, 0.17602553970113838, 0.34275712190366187, 0.27828282714212943, 0.07913709696939392, 0.061025172755656054, 0.35892749878762387, 0.19423464975171112, 0.22496423361919193, 0.18921208946465984, 0.24258465617159164, 0.2927247743281065, 0.34979068916569034, 0.15374272911283154, 0.14977929643742433, 0.22040137151791345, 0.19113179098257455, 0.12138015014498793, 0.23242856344622315, 0.263055544281569, 0.32549526698255316, 0.21415763683609562, 0.3044550161250775, 0.1728324030811004, 0.02839040070981811, 0.3054662992684506, 0.2875882517661712, 0.17787076633702215, 0.24261529487747274, 0.4447102486433868, 0.23974651086202015, 0.18617011848954235, 0.13642116789940326, 0.33899726366219746, 0.2731534490647309, 0.24393282368704422, -0.10449777831315987, 0.1806701767576516, 0.20767068418163942, 0.197517867521451, 0.37199475276239596, 0.2034293164320641, 0.28538474700318034, 0.17111164144364013, 0.3317506524385053, 0.2189190776099474, 0.08379273311291593, 0.3289975226769573, 0.13972614748907927, 0.3668026244162394, 0.3287304278146863, 0.17095762969105394, 0.4011805729388018, 0.3036771362047239, 0.25124672249916075, 0.30077808901324665, 0.1849483637791714, 0.5121338119823763, 0.11771502935542455, 0.2980644338285265, 0.25345727452660405, 0.2579106273561621, 0.09485381140037262, 0.34328300466251416, 0.13764886984407315, 0.22939317838963952, 0.30100482815629703, 0.29938911928127926, 0.3125196853119237, 0.04217500773264519, 0.4107854489696092, 0.13326424647706264, 0.2517351851074785, 0.18996734010045258, 0.2144103919217806, 0.3549782922221788, 0.3014202240613595, 0.22379153615320196, 0.22221525024792393, 0.4086340518743595, 0.36675977300063445, 0.2583105621936256, 0.4120191288906182, 0.05804789813969227, 0.4030634590464005, 0.1427545654917586, 0.2681104325229767, 0.4342726048472771, 0.2913069844400426, 0.17549825244910333, 0.3037851361587536, 0.3523525678859175, 0.4193866974066266, -0.060867477789417576, 0.44960356757717734, 0.33569877782115876, 0.13972614748907927, 0.3321194866905242, 0.21816645642208632, 0.3939162734352712, 0.29499147124495345, 0.2391510067306551, 0.06569082331489154, 0.1890149966352297, 0.4134948565851993, 0.29824373891428635, 0.30883386131631096, 0.2631599237150595, 0.2473981993612037, 0.25919486558068594, 0.11130568353082443, 0.1535589997519059, 0.33570610311412447, 0.27491095597042925, 0.43306139592354675, 0.2180949011157577, 0.38976506717196147, 0.2452857524414425, 0.06746257643312778, 0.2935494141915637, 0.2454286900666891, 0.22166192431637602, 0.06518278740373507, 0.43716469613964226, 0.15393071487834808, 0.166069976505494, 0.2329246878717962, 0.30969911571092973, 0.31141487321354966, 0.39016184956277933, 0.28514613381911, 0.28476376085370003, 0.26066229424643106, 0.29759477413920044, 0.21327306846974875, 0.23553089732757684, 0.09221384537072441, 0.11614849998271701, 0.37448546197818866, 0.37250796503402994, 0.20550440928847316, 0.2706799155654205, 0.3500579952491177, -0.04813566109828983, 0.3346870762398092, 0.3668026244162394, 0.21816645642208632, 0.31385377574095685, 0.04087922612009304, 0.3607771526352974, 0.1084256634895127, 0.2940038575465006, 0.25783895882620095, 0.23021797069195774, 0.19601349968972132, 0.1849593450161203, 0.18482075860403535, 0.4265306096484369, 0.1296810159062361, 0.32702893410447986, 0.31083236356777366, 0.3050350033629249, 0.13329733223817822, 0.3986660148498219, 0.23754828033342124, 0.246204058868389, 0.5235981166164845, 0.2660938143826752, 0.10667967771137142, 0.26491010675927806, 0.22638388973344062, 0.027111999287767054, 0.31599699543526694, 0.2904829416116086, 0.190089424253025, 0.14130428728998373, 0.008906249865258276, 0.33319307235789264, 0.26596974176250543, 0.2623176375111226, 0.24420118880450853, 0.2781456416370758, 0.2199095140977581, 0.4217077006288872, 0.06580042227089394, 0.19015743176738564, 0.22731908625487365, 0.33402908471177784, 0.34155802261048085, 0.1787300937540514, 0.15475150836100138, 0.38914674799192084, 0.15467099878085278, 0.17602553970113838, 0.3287304278146863, 0.3939162734352712, 0.04087922612009304, 0.43341301359427986, 0.21515935035321065, 0.2244833411482463, 0.49810197354701596, 0.41413922776210443, 0.2799647018396494, 0.41413381864372967, 0.29632591924859897, 0.24401090422701555, 0.44896189303072387, 0.25634026953408096, 0.3418466435681851, 0.2870235279179555, 0.19005395687505772, 0.15355260879954669, 0.31364954965342695, 0.3061271707929403, 0.37918618886266425, 0.1716227632171834, 0.31051979427544335, 0.09561795543370198, 0.22589027417795074, 0.14389640719886737, 0.11104994771102199, 0.29690605510119505, 0.033367008207087774, 0.1510121042778503, 0.29906187895854475, 0.2105402390458528, 0.22380079131574282, 0.3395096149281294, 0.35130476632611707, 0.1719773530914371, 0.2981992543982867, 0.1951658722782752, 0.2948434931107068, 0.17303316585232192, 0.174902767754829, 0.2720872905843252, 0.25053851424392276, 0.2068379263720747, 0.09100695572642832, 0.5146104708867024, 0.23021010952260074, 0.15043735824574198, 0.34275712190366187, 0.17095762969105394, 0.29499147124495345, 0.3607771526352974, 0.21515935035321065, 0.5573255428092566, 0.36140747818377394, 0.48444253041215174, 0.20402991457482086, 0.3644684665459007, 0.36104475935584235, 0.3835592569580765, 0.3284632871782579, 0.1730240540521535, 0.3195202101664817, 0.37505743884654386, 0.24284150080837083, 0.053646773180638506, 0.1780214313212901, 0.09439198990349373, 0.21378455841272093, 0.306187300990443, 0.38329445007709756, 0.07749389319364605, 0.14546961271937128, 0.2685311546954401, 0.08077976930676783, 0.41186896389517635, 0.2995191597381479, 0.3632356766300221, 0.18463625357141455, 0.15919080135238733, 0.34076610605993196, 0.33407158081020705, 0.32287333798304496, 0.13497824709439885, 0.23467599708662656, 0.2541345178567249, 0.26079863119167634, 0.23241731693488202, 0.41319343360905014, 0.3574503541327716, 0.12897516359407285, 0.23170791665747476, 0.2540768253568279, 0.3462995541305116, 0.22725395409287158, 0.16209276518274457, 0.19947931688837373, 0.27828282714212943, 0.4011805729388018, 0.2391510067306551, 0.1084256634895127, 0.2244833411482463, 0.36140747818377394, 0.01096338743937944, 0.34072604483849844, 0.3868377217689557, 0.19927482061773064, 0.38515412267597965, 0.2209732633713304, 0.2990973475142556, 0.23098196831517273, 0.2720888672536744, 0.33389273928130236, 0.1664522735062075, 0.2670567962403366, 0.24845713301091527, 0.14441624266452063, 0.2694465766512125, 0.18599540667721487, 0.2463457076932432, 0.038564963091227596, 0.2490331176574257, 0.33111416782721403, 0.12344222854128023, 0.3456518025063559, 0.2892582292958264, 0.2503683488399087, 0.16848857247597548, 0.35134911204409486, 0.31848921325174695, 0.2441683680715864, 0.21120797173877265, 0.264879220970911, 0.3830916663143634, 0.33277041682524244, 0.1585178125827536, 0.18563378011445333, 0.232179986305576, 0.411360096444134, 0.08041105990082371, 0.2135328968886296, 0.196345736277022, 0.1468727036107016, 0.3229436602972845, 0.08255608617509544, 0.20477818684323904, 0.07913709696939392, 0.3036771362047239, 0.06569082331489154, 0.2940038575465006, 0.49810197354701596, 0.48444253041215174, 0.34072604483849844, 0.5035520857550536, 0.2767511426885729, 0.207509119961849, 0.16551027930850842, 0.2691968312222633, 0.42789479667579766, 0.07209934637851828, 0.29774971358011637, 0.19667429685571375, 0.299282453313805, 0.16239728523587282, 0.15341948243858086, 0.2984775983657577, 0.16414093199811816, 0.3343296778457526, 0.33306535599792547, 0.13043129173631238, 0.21732655506178838, 0.2541383178363481, 0.4321479379302177, 0.011816887715304238, 0.25827726055584743, 0.0953305248600692, 0.3285258973862153, 0.035083861231250665, 0.20172789505249236, 0.2292584606638811, 0.15853326131012077, 0.1553846771274258, 0.21879986043061295, 0.09135232997555637, 0.17267447952976828, 0.28379060474902784, 0.15333394898548272, 0.19283988340693153, 0.2041538142253464, 0.24751031067736076, 0.11258086392351616, 0.2112132665829327, 0.3076102108901424, 0.29731970301395494, 0.35461167855067405, 0.061025172755656054, 0.25124672249916075, 0.1890149966352297, 0.25783895882620095, 0.41413922776210443, 0.20402991457482086, 0.3868377217689557, 0.2767511426885729, 0.3705561416081755, 0.38890753758498187, 0.13854145755753325, 0.2792530321612508, 0.21831910187344108, 0.21163824279397228, 0.22636429957957827, 0.37825878668850066, 0.34202748915772957, 0.16046143648761663, 0.2701306015089313, 0.3488760762176647, 0.18690516102732463, 0.10929363698982514, 0.35573615326562436, 0.01714814655733135, 0.4054486436047907, 0.33005273966320803, 0.06558350917527679, 0.2817926355338329, 0.26193901524935387, 0.2356236155623619, 0.3667252330886135, 0.00629934310358992, 0.09015850893383695, 0.18861843234276437, 0.4277718490352119, 0.26693147858055144, 0.20833559537319085, 0.2839093306180853, 0.4386095118303722, 0.4298924951401675, 0.0860315552950092, 0.45272294911082556, 0.06804375469013146, 0.15525503435966606, 0.3291700579621816, 0.2007704488376067, 0.3540325839268723, 0.218849630362935, 0.3413321364287185, 0.35892749878762387, 0.30077808901324665, 0.4134948565851993, 0.23021797069195774, 0.2799647018396494, 0.3644684665459007, 0.19927482061773064, 0.207509119961849, 0.38890753758498187, 0.28630305413100554, 0.2110940088925778, 0.40622157101044976, 0.11274763351932096, 0.15238271832993663, 0.28582977084435823, 0.13995378653677243, 0.21876514621215692, 0.27988361514718263, 0.38510004667429165, 0.2881429726464185, 0.19506307306215148, 0.2686192449624112, 0.2786044685460162, 0.304355978128491, 0.1432583299552045, 0.23020366127624403, 0.3988970143664217, 0.27039204728139354, 0.27564222368638824, 0.18541368428780794, 0.24665672005590797, 0.2636188469163364, 0.24991922957204854, 0.26319905502503044, 0.17193970296634126, 0.28176845155378405, 0.2201586897186909, 0.34333323839170093, 0.16111022615676895, 0.09892697917310318, 0.34963317724958987, 0.27994284280113213, 0.45227251744017455, 0.3331598270573727, 0.1282104875209085, 0.33246616163245923, 0.19916677422058549, 0.37460503334379214, 0.3700615340914661, 0.19423464975171112, 0.1849483637791714, 0.29824373891428635, 0.19601349968972132, 0.41413381864372967, 0.36104475935584235, 0.38515412267597965, 0.16551027930850842, 0.13854145755753325, 0.2110940088925778, 0.12739355342446554, 0.08068713760762958, 0.1648941022876736, 0.1669317369608616, 0.2080293385218635, 0.21373949577960755, 0.3322092046654296, 0.06252001595352734, 0.04369416421220991, 0.2590351649990512, 0.22247003464131537, 0.2796238510976695, 0.2590004126518952, 0.28152674412455087, 0.19423587473586823, 0.28285926714016796, 0.31464399436116697, 0.390052519377262, 0.18542141888240316, 0.3887814960153929, 0.14591399677530098, 0.1773230200597729, 0.258705177354358, 0.28296028737295853, 0.2285010445754165, 0.3203172249766613, 0.2203225896680425, 0.03460905697711779, 0.15491458807957093, 0.5187703393891271, 0.4401792973827876, 0.5440569039647347, 0.19681459982362423, 0.3076269427231586, 0.18835313322585603, 0.36358617017834816, 0.3038098876169077, 0.16899227654162305, 0.3658807870698153, 0.22496423361919193, 0.5121338119823763, 0.30883386131631096, 0.1849593450161203, 0.29632591924859897, 0.3835592569580765, 0.2209732633713304, 0.2691968312222633, 0.2792530321612508, 0.40622157101044976, 0.08068713760762958, 0.25156245969577334, 0.11270893211778704, 0.2245994240666345, 0.2300112863891463, 0.10365179874545438, 0.1205588635323897, 0.31377151593504427, 0.05542865367372898, 0.2372310550991456, 0.30292487919076305, 0.4154567166867947, 0.4295289291978218, 0.3205800357812194, 0.16535894165033943, -0.02886850304043599, 0.21372098350102658, 0.2164962895357327, 0.31525958807161747, 0.08190607248476192, 0.5303384295621987, 0.07581741244555602, 0.232639225461217, 0.25890111972126484, 0.3438981329907369, 0.20627378720264192, 0.45065801227921765, 0.09242223505985432, 0.3288271160705043, 0.24619710063179148, 0.2688665619819597, 0.21224757540485023, 0.3566647797473894, 0.2528114849362432, 0.16876741409690182, 0.31168208390717633, 0.17422150446301807, 0.20781185071223945, 0.3938885058539764, 0.18921208946465984, 0.11771502935542455, 0.2631599237150595, 0.18482075860403535, 0.24401090422701555, 0.3284632871782579, 0.2990973475142556, 0.42789479667579766, 0.21831910187344108, 0.11274763351932096, 0.1648941022876736, 0.11270893211778704, 0.35062050141059936, 0.3703343563816622, 0.2662553038687089, 0.46421351424904667, 0.27866333595104686, -0.05400905752061559, 0.135317235490987, 0.40459456846265, 0.12474572196964612, 0.3398996840997237, 0.23429383557440966, 0.3515157390403281, 0.2992597823678449, 0.15122636638119374, 0.12210983372756506, 0.1450329880783479, 0.31375034631026905, 0.21508146396399533, 0.17311792565435163, 0.21114158222546806, 0.10549661954209968, 0.15912270133960485, 0.18871497628450043, 0.23614175911724103, 0.45143111956567195, 0.4175802560254469, 0.1606141213333224, 0.18977760133408705, 0.22205655651243886, 0.059949591781480085, 0.12344954433586786, 0.26868321302438714, 0.19192549500715755, 0.33034454703215477, 0.4565455145724919, 0.32374763705742304, 0.11168088887215384, 0.24258465617159164, 0.2980644338285265, 0.2473981993612037, 0.4265306096484369, 0.44896189303072387, 0.1730240540521535, 0.23098196831517273, 0.07209934637851828, 0.21163824279397228, 0.15238271832993663, 0.1669317369608616, 0.2245994240666345, 0.3703343563816622, 0.43702628228539203, 0.28347847355027556, 0.20678144944688595, 0.21858217650837342, 0.26576199981436344, 0.3623385730074803, 0.3167549360919911, 0.20150872042298248, 0.3325815623774965, 0.32455231445199734, 0.42698611714082885, 0.49433473921529175, 0.1835154757465134, 0.3198289745954075, 0.3766808919637895, 0.25006467213720707, 0.1612470516943839, 0.15590508632771244, 0.3185375007606888, 0.2470623458665492, 0.23235214167531168, 0.22079200845341218, 0.3682681635910163, 0.15274810887234525, 0.2958716390017511, 0.13885616602512196, 0.1463880241949871, 0.2980670127948847, 0.36156722034587235, 0.3981427624027429, 0.25479722288081846, 0.21165686208542017, 0.17876285094472152, 0.061258808716221795, 0.1450009236461164, 0.11684958563151594, 0.2927247743281065, 0.25345727452660405, 0.25919486558068594, 0.1296810159062361, 0.25634026953408096, 0.3195202101664817, 0.2720888672536744, 0.29774971358011637, 0.22636429957957827, 0.28582977084435823, 0.2080293385218635, 0.2300112863891463, 0.2662553038687089, 0.28347847355027556, 0.02481117770796744, 0.35006041785825015, 0.3152272882950176, 0.36243047426789066, 0.28231357778600874, 0.09162168187542855, 0.1961413727658814, 0.09431309235125439, 0.22626282921627178, 0.34832526921694235, 0.26991958013535056, 0.3741743566642587, 0.26879143821220913, 0.12688045609452533, 0.3154235655552011, 0.11964019640550125, 0.21373538072913764, 0.22540042268583613, 0.27217702756655476, 0.3031427799107078, 0.4382292998995422, 0.29396727591436345, 0.23164758965122245, 0.42719051652713935, 0.2300700231401242, 0.2683629690783806, 0.41446983662618264, 0.39813623381742913, 0.16590566162490036, 0.2200735736370137, 0.30581188148998495, 0.34657785934956836, 0.2975616539949748, 0.35732385248287946, 0.4848693178726664, 0.34979068916569034, 0.2579106273561621, 0.11130568353082443, 0.32702893410447986, 0.3418466435681851, 0.37505743884654386, 0.33389273928130236, 0.19667429685571375, 0.37825878668850066, 0.13995378653677243, 0.21373949577960755, 0.10365179874545438, 0.46421351424904667, 0.20678144944688595, 0.35006041785825015, 0.0699798213352891, 0.3438283413959189, 0.3892682599483227, 0.2902793748361824, 0.3916890623299569, 0.3052167515906049, 0.22834332678579827, 0.12448573553312955, 0.35404895092083194, 0.20260804049466544, 0.001548774693118364, 0.4023287764340804, 0.339158027933801, 0.2382209415781237, 0.43035012333675415, 0.31924869225825764, 0.4526782131488286, 0.298099053764034, 0.30168505446011434, 0.10793763261011934, 0.19532434935060605, 0.08488121014375896, 0.345144848913882, 0.38897846391796054, 0.35516527071435045, 0.36762687489432705, 0.2874438107268068, 0.28695592637156925, 0.23558543221214437, 0.22013153749069128, 0.20848651530524315, 0.020699330799131214, 0.21059635344786143, 0.2467512553986334, 0.15374272911283154, 0.09485381140037262, 0.1535589997519059, 0.31083236356777366, 0.2870235279179555, 0.24284150080837083, 0.1664522735062075, 0.299282453313805, 0.34202748915772957, 0.21876514621215692, 0.3322092046654296, 0.1205588635323897, 0.27866333595104686, 0.21858217650837342, 0.3152272882950176, 0.3438283413959189, 0.3336263416933041, 0.4259636296339254, 0.20893094129121248, 0.13700546510968903, 0.25650963019871115, 0.22231286683526255, 0.1959649766571378, 0.08450810067235892, 0.2869958138511173, 0.1552628630290081, 0.4297893301902407, 0.21769015685276155, 0.22676530063726336, 0.29496957846171495, 0.3641087521309972, 0.36968745435586814, 0.2842833151246017, 0.11863425124854765, 0.4357915003582402, 0.11977204504535663, 0.2385670542854883, 0.3314779398624713, 0.32056348320240813, 0.0592436971257234, 0.3629637136376953, 0.34425906127380107, 0.17306497179392388, 0.09365851600912377, 0.16894927362058648, 0.4521719223101818, 0.4172816970466515, 0.26149813157012297, 0.47496898774624086, 0.14977929643742433, 0.34328300466251416, 0.33570610311412447, 0.3050350033629249, 0.19005395687505772, 0.053646773180638506, 0.2670567962403366, 0.16239728523587282, 0.16046143648761663, 0.27988361514718263, 0.06252001595352734, 0.31377151593504427, -0.05400905752061559, 0.26576199981436344, 0.36243047426789066, 0.3892682599483227, 0.4259636296339254, 0.2966602542927381, 0.27619294840941455, 0.26394609340806935, 0.4255104548101519, 0.5612883218609022, 0.2875346754195647, 0.3194948603527346, 0.3961736308896293, 0.23909532019734356, 0.1161254096370693, 0.21660697182733551, 0.19595925440897893, 0.15348484258692618, 0.2691418146598775, 0.2825871925561989, 0.2125861714834313, 0.18362383811278463, 0.14877613109840254, 0.24440350750831774, 0.4236717325632303, 0.2601871842032982, 0.11310236542885405, 0.38281395319331457, 0.2578058776992277, 0.1509327004869464, 0.2098113573739666, 0.22206350040853537, 0.23494916597428822, 0.2811727148901614, 0.24217587597829868, 0.08191329648013636, 0.012570948306155405, 0.22040137151791345, 0.13764886984407315, 0.27491095597042925, 0.13329733223817822, 0.15355260879954669, 0.1780214313212901, 0.24845713301091527, 0.15341948243858086, 0.2701306015089313, 0.38510004667429165, 0.04369416421220991, 0.05542865367372898, 0.135317235490987, 0.3623385730074803, 0.28231357778600874, 0.2902793748361824, 0.20893094129121248, 0.27619294840941455, 0.1222486683842535, 0.1463001397219582, 0.24968513740349776, 0.4799685591479393, 0.3092213116289826, 0.27585435406560954, 0.2004436500339918, 0.22426471738440423, 0.13097704893183057, 0.3111155126093653, 0.42752800383227935, 0.4118140191763254, 0.38072561464289867, 0.2630013029741443, 0.12101264378977909, 0.3238848653167429, 0.2634930487938435, 0.15024772741332876, 0.3180946968931646, 0.23596105252462057, 0.3006545225064001, 0.08259995907894437, 0.1600095443998501, 0.2649213851528806, 0.4146532007216349, 0.13630272733936993, 0.38354975388954315, 0.39102466545058223, 0.37107045565269914, 0.46013714402832095, 0.45248719645584806, 0.19113179098257455, 0.22939317838963952, 0.43306139592354675, 0.3986660148498219, 0.31364954965342695, 0.09439198990349373, 0.14441624266452063, 0.2984775983657577, 0.3488760762176647, 0.2881429726464185, 0.2590351649990512, 0.2372310550991456, 0.40459456846265, 0.3167549360919911, 0.09162168187542855, 0.3916890623299569, 0.13700546510968903, 0.26394609340806935, 0.1463001397219582, 0.09735221676809272, 0.14315282044813682, 0.11211497087284912, 0.14574114396929733, 0.1329062322024293, 0.34118011398580783, 0.07846789804679435, 0.38515710326845276, 0.21376238320333946, 0.267776062009933, 0.2715330649635411, 0.29192206947358845, 0.2930537280194103, 0.06034903553868943, 0.4099792073436928, 0.1814768780197658, 0.21281721493852299, 0.23884109498639378, 0.32775353295703413, 0.241825115437713, 0.324296521584325, 0.1663249298522334, 0.2537874043389839, 0.2190515234653159, 0.279933860507836, 0.08469705635251289, 0.3044946319434475, 0.2838647218847461, 0.17856733888252024, 0.23111976741475837, 0.12138015014498793, 0.30100482815629703, 0.2180949011157577, 0.23754828033342124, 0.3061271707929403, 0.21378455841272093, 0.2694465766512125, 0.16414093199811816, 0.18690516102732463, 0.19506307306215148, 0.22247003464131537, 0.30292487919076305, 0.12474572196964612, 0.20150872042298248, 0.1961413727658814, 0.3052167515906049, 0.25650963019871115, 0.4255104548101519, 0.24968513740349776, 0.14315282044813682, 0.20143084341684564, 0.492665856245695, 0.3916847708767911, 0.1482553800391786, 0.09856929614482027, 0.16789126209213906, 0.256551758633624, 0.3976698861857578, 0.36274004202635357, 0.3818292675286438, 0.14141149335994713, 0.28006769131181125, 0.25998601532345383, 0.11022843103853965, 0.1151472093837429, 0.04281615557892374, 0.31213531564047725, 0.2185027746303113, 0.24460134676285009, 0.3460882738478088, 0.3335028767330434, 0.3055430934803795, 0.12896533035452717, 0.26675935202397405, 0.47540978361712666, 0.1724558815646706, 0.37040354192880465, 0.20994271552217447, 0.3435274417032648, 0.23242856344622315, 0.29938911928127926, 0.38976506717196147, 0.246204058868389, 0.37918618886266425, 0.306187300990443, 0.18599540667721487, 0.3343296778457526, 0.10929363698982514, 0.2686192449624112, 0.2796238510976695, 0.4154567166867947, 0.3398996840997237, 0.3325815623774965, 0.09431309235125439, 0.22834332678579827, 0.22231286683526255, 0.5612883218609022, 0.4799685591479393, 0.11211497087284912, 0.492665856245695, 0.08121218286524395, 0.09201983176430667, 0.17014036419153586, 0.242669828532322, 0.38493071139830504, 0.3725469312117934, 0.10226344863675503, 0.24199430587399873, 0.16072629369602964, 0.29848486334005464, 0.41161732600364026, 0.270394282586581, 0.1656491817092965, 0.1803530746202872, 0.2841595321385757, 0.4577347366925902, 0.2511519508942308, 0.2396203091717678, 0.09254100585515956, 0.22934198985965754, 0.1140575643784312, 0.32260188083329494, 0.19120970423602718, 0.27303450275734914, 0.2021900426053237, 0.266956710238414, 0.3599520827095213, 0.36924838776643043, 0.263055544281569, 0.3125196853119237, 0.2452857524414425, 0.5235981166164845, 0.1716227632171834, 0.38329445007709756, 0.2463457076932432, 0.33306535599792547, 0.35573615326562436, 0.2786044685460162, 0.2590004126518952, 0.4295289291978218, 0.23429383557440966, 0.32455231445199734, 0.22626282921627178, 0.12448573553312955, 0.1959649766571378, 0.2875346754195647, 0.3092213116289826, 0.14574114396929733, 0.3916847708767911, 0.09201983176430667, 0.4667938114036466, 0.21925897598206487, 0.3000058759691385, 0.3382210050238836, 0.3576854426081342, 0.0006190390358263159, 0.2851038516660566, 0.2991543160485673, 0.19449270517796063, 0.33220370589375225, 0.2007629696411366, 0.30834315761427666, 0.3536935278661437, 0.09214256116880047, 0.24862611658609546, 0.07391812805997283, 0.3511075500462648, 0.4056794624311722, 0.5294766913808532, 0.2848521173174947, 0.2554350759553097, 0.3189638972883567, 0.3138572016204777, 0.24034230503884307, 0.11771851456210208, 0.12070023293111945, 0.18366023854061836, 0.32549526698255316, 0.04217500773264519, 0.06746257643312778, 0.2660938143826752, 0.31051979427544335, 0.07749389319364605, 0.038564963091227596, 0.13043129173631238, 0.01714814655733135, 0.304355978128491, 0.28152674412455087, 0.3205800357812194, 0.3515157390403281, 0.42698611714082885, 0.34832526921694235, 0.35404895092083194, 0.08450810067235892, 0.3194948603527346, 0.27585435406560954, 0.1329062322024293, 0.1482553800391786, 0.17014036419153586, 0.21925897598206487, 0.26295672471415377, 0.22364194349907907, 0.23070571045680555, 0.12528107627232765, 0.22535105304688663, 0.4496290721604911, 0.4341862277042905, 0.4197277198246969, 0.15887913446742855, 0.18122016501295557, 0.30653532967055064, 0.2097228290110551, 0.21790798433117928, 0.35214376681999965, 0.1765627067390628, 0.3026228246557874, 0.031042328790865926, 0.28408103572123594, 0.17649582811688816, 0.2671392069853842, 0.2622001958626841, 0.1695727848305298, 0.26497078479750313, 0.3048009102691931, 0.32323958837400335, 0.21517804851387798, 0.21415763683609562, 0.4107854489696092, 0.2935494141915637, 0.10667967771137142, 0.09561795543370198, 0.14546961271937128, 0.2490331176574257, 0.21732655506178838, 0.4054486436047907, 0.1432583299552045, 0.19423587473586823, 0.16535894165033943, 0.2992597823678449, 0.49433473921529175, 0.26991958013535056, 0.20260804049466544, 0.2869958138511173, 0.3961736308896293, 0.2004436500339918, 0.34118011398580783, 0.09856929614482027, 0.242669828532322, 0.3000058759691385, 0.22364194349907907, 0.25433227948137693, 0.11325720619643997, 0.1728456779471107, 0.09448444909884729, 0.40854064828848896, 0.34108373991535235, 0.19716490901485356, 0.38062655461281153, 0.15476772348815732, 0.03503251843340473, 0.21079920200485058, 0.36602939681922686, 0.43060978852997334, 0.1739277023422392, 0.24111483124891714, 0.10944615179922879, 0.023448673048886728, 0.0362223579417733, 0.2755170541811013, 0.2709764726403894, 0.39138005110651114, 0.2589369012167063, 0.31811526082758124, 0.26171256398949133, 0.17924292569599815, 0.3044550161250775, 0.13326424647706264, 0.2454286900666891, 0.26491010675927806, 0.22589027417795074, 0.2685311546954401, 0.33111416782721403, 0.2541383178363481, 0.33005273966320803, 0.23020366127624403, 0.28285926714016796, -0.02886850304043599, 0.15122636638119374, 0.1835154757465134, 0.3741743566642587, 0.001548774693118364, 0.1552628630290081, 0.23909532019734356, 0.22426471738440423, 0.07846789804679435, 0.16789126209213906, 0.38493071139830504, 0.3382210050238836, 0.23070571045680555, 0.11325720619643997, 0.07545168818956473, 0.3965904989074287, 0.27462108520554507, 0.340475804512263, 0.2117584441024222, 0.250969934530649, 0.469066835394233, 0.3607736508508703, 0.36063351871205424, 0.3385452781348639, 0.31152259841832625, 0.18176454735284275, 0.35354988709977553, 0.1448245096365715, 0.1798561472759464, 0.29833891149566827, 0.35472099745931074, 0.3476316361127444, 0.4124921921932242, 0.483493770166829, 0.18276576356754104, 0.3810027915462596, 0.2991357929254599, -0.004613816841587029, 0.1728324030811004, 0.2517351851074785, 0.22166192431637602, 0.22638388973344062, 0.14389640719886737, 0.08077976930676783, 0.12344222854128023, 0.4321479379302177, 0.06558350917527679, 0.3988970143664217, 0.31464399436116697, 0.21372098350102658, 0.12210983372756506, 0.3198289745954075, 0.26879143821220913, 0.4023287764340804, 0.4297893301902407, 0.1161254096370693, 0.13097704893183057, 0.38515710326845276, 0.256551758633624, 0.3725469312117934, 0.3576854426081342, 0.12528107627232765, 0.1728456779471107, 0.3965904989074287, 0.1409413819154157, 0.4426054035171369, 0.29899700616311475, 0.5322067628832126, 0.37985214996908717, 0.14413360461865093, 0.2491435392355455, 0.22978705870274294, 0.2857929106624802, 0.31994225582826064, 0.3053471745744663, 0.1692579288348689, 0.21604277770878633, 0.22581301933737868, 0.24460227141324276, 0.1411228345084444, 0.25260243722175657, 0.3661792147587029, 0.3169848900919464, 0.4153174861530945, 0.3079152228390535, 0.2681472195387346, 0.2856293772295043, 0.02839040070981811, 0.18996734010045258, 0.06518278740373507, 0.027111999287767054, 0.11104994771102199, 0.41186896389517635, 0.3456518025063559, 0.011816887715304238, 0.2817926355338329, 0.27039204728139354, 0.390052519377262, 0.2164962895357327, 0.1450329880783479, 0.3766808919637895, 0.12688045609452533, 0.339158027933801, 0.21769015685276155, 0.21660697182733551, 0.3111155126093653, 0.21376238320333946, 0.3976698861857578, 0.10226344863675503, 0.0006190390358263159, 0.22535105304688663, 0.09448444909884729, 0.27462108520554507, 0.4426054035171369, 0.07220776891066133, 0.27874042620747574, 0.3192243222858163, 0.1557321637266883, 0.07179105156315979, 0.4247458835558471, 0.1402038576045794, 0.24277018797285033, 0.3033563053749042, 0.21951184372646065, 0.19660356896656211, 0.4434190900003865, 0.2851372662935584, 0.18031580979028616, 0.1466846430463086, 0.18621220373595604, 0.24145676040209446, 0.09104749718251441, 0.15419971254282913, 0.26347200863110076, 0.10694733810248166, 0.15668824092994804, 0.3054662992684506, 0.2144103919217806, 0.43716469613964226, 0.31599699543526694, 0.29690605510119505, 0.2995191597381479, 0.2892582292958264, 0.25827726055584743, 0.26193901524935387, 0.27564222368638824, 0.18542141888240316, 0.31525958807161747, 0.31375034631026905, 0.25006467213720707, 0.3154235655552011, 0.2382209415781237, 0.22676530063726336, 0.19595925440897893, 0.42752800383227935, 0.267776062009933, 0.36274004202635357, 0.24199430587399873, 0.2851038516660566, 0.4496290721604911, 0.40854064828848896, 0.340475804512263, 0.29899700616311475, 0.27874042620747574, 0.42103573832170854, 0.2195055217191062, 0.34005724705857915, 0.2658786307245843, 0.21271644281876656, 0.2433980760774916, 0.05059175757060492, 0.3957125793209111, 0.31287619713777265, 0.292948674894159, 0.27545884825363154, 0.3104131247330589, 0.13242244903666994, 0.05167968491109967, 0.1554374039423124, 0.02947145500205456, 0.22239536204484028, 0.3235237842661606, 0.314114418764055, 0.09194428359298296, 0.05314165709721005, 0.2875882517661712, 0.3549782922221788, 0.15393071487834808, 0.2904829416116086, 0.033367008207087774, 0.3632356766300221, 0.2503683488399087, 0.0953305248600692, 0.2356236155623619, 0.18541368428780794, 0.3887814960153929, 0.08190607248476192, 0.21508146396399533, 0.1612470516943839, 0.11964019640550125, 0.43035012333675415, 0.29496957846171495, 0.15348484258692618, 0.4118140191763254, 0.2715330649635411, 0.3818292675286438, 0.16072629369602964, 0.2991543160485673, 0.4341862277042905, 0.34108373991535235, 0.2117584441024222, 0.5322067628832126, 0.3192243222858163, 0.2195055217191062, 0.4371547699312219, 0.13760100546029685, 0.2676185777286899, 0.09348886120381292, 0.12194128999408055, 0.16817440006159556, 0.32880584039113536, 0.012402734789521447, 0.10284377951813548, 0.3758213837249582, 0.2944105526047023, 0.3144808170111973, 0.1593990640933135, 0.22010392527888673, -0.03442327940583337, 0.3105700456021391, 0.04199358990755075, 0.3370694645495711, 0.25932881612999187, 0.07222983287375012, 0.17787076633702215, 0.3014202240613595, 0.166069976505494, 0.190089424253025, 0.1510121042778503, 0.18463625357141455, 0.16848857247597548, 0.3285258973862153, 0.3667252330886135, 0.24665672005590797, 0.14591399677530098, 0.5303384295621987, 0.17311792565435163, 0.15590508632771244, 0.21373538072913764, 0.31924869225825764, 0.3641087521309972, 0.2691418146598775, 0.38072561464289867, 0.29192206947358845, 0.14141149335994713, 0.29848486334005464, 0.19449270517796063, 0.4197277198246969, 0.19716490901485356, 0.250969934530649, 0.37985214996908717, 0.1557321637266883, 0.34005724705857915, 0.13760100546029685, 0.46912792805264336, 0.4078154371879941, 0.20156154666720383, 0.23332304988534366, 0.30391565271563337, 0.3425323112647366, 0.3828339211990359, 0.22619980435570608, 0.09809019204334175, 0.3159469305965935, 0.08075052723013383, 0.1920257016225171, 0.2599605521764153, 0.3946311668670762, 0.3607219015323986, 0.24022508509132928, 0.3389829511088026, 0.39206107217676944, 0.41166155589401315, 0.24261529487747274, 0.22379153615320196, 0.2329246878717962, 0.14130428728998373, 0.29906187895854475, 0.15919080135238733, 0.35134911204409486, 0.035083861231250665, 0.00629934310358992, 0.2636188469163364, 0.1773230200597729, 0.07581741244555602, 0.21114158222546806, 0.3185375007606888, 0.22540042268583613, 0.4526782131488286, 0.36968745435586814, 0.2825871925561989, 0.2630013029741443, 0.2930537280194103, 0.28006769131181125, 0.41161732600364026, 0.33220370589375225, 0.15887913446742855, 0.38062655461281153, 0.469066835394233, 0.14413360461865093, 0.07179105156315979, 0.2658786307245843, 0.2676185777286899, 0.4078154371879941, 0.47738418636039226, 0.4371812323530847, 0.4489714533573203, 0.2017635787584987, 0.3704499817966098, 0.14567380877799363, 0.3139805166837253, 0.2782296399766963, 0.041767792511954754, 0.35124645504950824, 0.33861371881558455, 0.3756819575549069, 0.3715600646785404, 0.3175731368545622, 0.21125355213134028, 0.18430398345224755, 0.17565490109964504, 0.3514491541890431, 0.4447102486433868, 0.22221525024792393, 0.30969911571092973, 0.008906249865258276, 0.2105402390458528, 0.34076610605993196, 0.31848921325174695, 0.20172789505249236, 0.09015850893383695, 0.24991922957204854, 0.258705177354358, 0.232639225461217, 0.10549661954209968, 0.2470623458665492, 0.27217702756655476, 0.298099053764034, 0.2842833151246017, 0.2125861714834313, 0.12101264378977909, 0.06034903553868943, 0.25998601532345383, 0.270394282586581, 0.2007629696411366, 0.18122016501295557, 0.15476772348815732, 0.3607736508508703, 0.2491435392355455, 0.4247458835558471, 0.21271644281876656, 0.09348886120381292, 0.20156154666720383, 0.4371812323530847, 0.3448363918843721, 0.35907538920834514, 0.010376603439646304, 0.27122973475623113, 0.29640631004525664, 0.397825696397461, 0.30296940351567736, 0.19087142331513723, 0.2899248416899124, 0.26175194119969647, 0.13783881216980848, 0.36932573958378945, 0.11392179663207727, 0.3517956874944997, 0.17949923425082714, 0.23635650413273365, 0.13750727257051037, 0.23974651086202015, 0.4086340518743595, 0.31141487321354966, 0.33319307235789264, 0.22380079131574282, 0.33407158081020705, 0.2441683680715864, 0.2292584606638811, 0.18861843234276437, 0.26319905502503044, 0.28296028737295853, 0.25890111972126484, 0.15912270133960485, 0.23235214167531168, 0.3031427799107078, 0.30168505446011434, 0.11863425124854765, 0.18362383811278463, 0.3238848653167429, 0.4099792073436928, 0.11022843103853965, 0.1656491817092965, 0.30834315761427666, 0.30653532967055064, 0.03503251843340473, 0.36063351871205424, 0.22978705870274294, 0.1402038576045794, 0.2433980760774916, 0.12194128999408055, 0.23332304988534366, 0.4489714533573203, 0.35907538920834514, 0.3377816648743984, 0.4379201487891549, 0.24519890656958931, 0.12646203259804345, 0.2655518368866856, 0.4088929020539343, 0.36591960364510534, 0.18357167781535627, 0.20185285342086792, 0.22469678759534073, 0.21164633896866467, 0.4153849784400263, 0.006532368934850527, 0.2026949812803743, 0.2187275446289296, 0.32656086444514687, 0.18617011848954235, 0.36675977300063445, 0.39016184956277933, 0.26596974176250543, 0.3395096149281294, 0.32287333798304496, 0.21120797173877265, 0.15853326131012077, 0.4277718490352119, 0.17193970296634126, 0.2285010445754165, 0.3438981329907369, 0.18871497628450043, 0.22079200845341218, 0.4382292998995422, 0.10793763261011934, 0.4357915003582402, 0.14877613109840254, 0.2634930487938435, 0.1814768780197658, 0.1151472093837429, 0.1803530746202872, 0.3536935278661437, 0.2097228290110551, 0.21079920200485058, 0.3385452781348639, 0.2857929106624802, 0.24277018797285033, 0.05059175757060492, 0.16817440006159556, 0.30391565271563337, 0.2017635787584987, 0.010376603439646304, 0.4379201487891549, 0.16864953525200838, 0.32514393004822595, 0.2953091035390638, 0.053702849234238285, 0.2659895893653821, 0.37739415188927616, 0.023467713986187952, 0.22269629239392205, 0.2679876756840455, 0.09905377253538453, 0.09723565787804626, 0.009374150742164088, 0.11479880470315389, 0.17994656478369014, 0.4227355009963888, 0.13642116789940326, 0.2583105621936256, 0.28514613381911, 0.2623176375111226, 0.35130476632611707, 0.13497824709439885, 0.264879220970911, 0.1553846771274258, 0.26693147858055144, 0.28176845155378405, 0.3203172249766613, 0.20627378720264192, 0.23614175911724103, 0.3682681635910163, 0.29396727591436345, 0.19532434935060605, 0.11977204504535663, 0.24440350750831774, 0.15024772741332876, 0.21281721493852299, 0.04281615557892374, 0.2841595321385757, 0.09214256116880047, 0.21790798433117928, 0.36602939681922686, 0.31152259841832625, 0.31994225582826064, 0.3033563053749042, 0.3957125793209111, 0.32880584039113536, 0.3425323112647366, 0.3704499817966098, 0.27122973475623113, 0.24519890656958931, 0.32514393004822595, 0.22085735288031152, 0.14937005709148632, 0.15907431244775688, 0.3970633556360773, 0.0536520266480181, 0.2987349103039137, 0.17884799599658172, 0.28733130501986637, 0.17951051408343333, 0.3840501690665076, 0.2934440403641174, 0.3264422882163841, 0.31721849918737566, 0.21739786745056117, 0.33899726366219746, 0.4120191288906182, 0.28476376085370003, 0.24420118880450853, 0.1719773530914371, 0.23467599708662656, 0.3830916663143634, 0.21879986043061295, 0.20833559537319085, 0.2201586897186909, 0.2203225896680425, 0.45065801227921765, 0.45143111956567195, 0.15274810887234525, 0.23164758965122245, 0.08488121014375896, 0.2385670542854883, 0.4236717325632303, 0.3180946968931646, 0.23884109498639378, 0.31213531564047725, 0.4577347366925902, 0.24862611658609546, 0.35214376681999965, 0.43060978852997334, 0.18176454735284275, 0.3053471745744663, 0.21951184372646065, 0.31287619713777265, 0.012402734789521447, 0.3828339211990359, 0.14567380877799363, 0.29640631004525664, 0.12646203259804345, 0.2953091035390638, 0.14937005709148632, 0.4616722259879896, 0.1500851169611065, 0.12851937166997549, 0.15936033162486515, 0.24585462659966506, 0.23133491823242935, 0.1278275590113185, 0.48592644897551235, 0.29452997024497646, 0.1541056860605651, 0.25555153601381003, 0.4286425690234691, 0.39212079876636396, 0.2731534490647309, 0.05804789813969227, 0.26066229424643106, 0.2781456416370758, 0.2981992543982867, 0.2541345178567249, 0.33277041682524244, 0.09135232997555637, 0.2839093306180853, 0.34333323839170093, 0.03460905697711779, 0.09242223505985432, 0.4175802560254469, 0.2958716390017511, 0.42719051652713935, 0.345144848913882, 0.3314779398624713, 0.2601871842032982, 0.23596105252462057, 0.32775353295703413, 0.2185027746303113, 0.2511519508942308, 0.07391812805997283, 0.1765627067390628, 0.1739277023422392, 0.35354988709977553, 0.1692579288348689, 0.19660356896656211, 0.292948674894159, 0.10284377951813548, 0.22619980435570608, 0.3139805166837253, 0.397825696397461, 0.2655518368866856, 0.053702849234238285, 0.15907431244775688, 0.1500851169611065, 0.14337533919757087, 0.20655675025573084, 0.32292414809311315, 0.3613214231994069, 0.3180616593924965, 0.38839822433405713, 0.13724833031739592, 0.10803396767796031, 0.14027742059092088, 0.14524842484521672, 0.2427233274486008, 0.40679681872699414, 0.24393282368704422, 0.4030634590464005, 0.29759477413920044, 0.2199095140977581, 0.1951658722782752, 0.26079863119167634, 0.1585178125827536, 0.17267447952976828, 0.4386095118303722, 0.16111022615676895, 0.15491458807957093, 0.3288271160705043, 0.1606141213333224, 0.13885616602512196, 0.2300700231401242, 0.38897846391796054, 0.32056348320240813, 0.11310236542885405, 0.3006545225064001, 0.241825115437713, 0.24460134676285009, 0.2396203091717678, 0.3511075500462648, 0.3026228246557874, 0.24111483124891714, 0.1448245096365715, 0.21604277770878633, 0.4434190900003865, 0.27545884825363154, 0.3758213837249582, 0.09809019204334175, 0.2782296399766963, 0.30296940351567736, 0.4088929020539343, 0.2659895893653821, 0.3970633556360773, 0.12851937166997549, 0.20655675025573084, 0.373397601139044, 0.04003214795384037, 0.36440035008729055, 0.13606091171158474, 0.28180603219474476, 0.40762140545558945, 0.0849727782927027, 0.13047732998177036, 0.19613074264335123, 0.42325869221174345, 0.3419718712085783, -0.10449777831315987, 0.1427545654917586, 0.21327306846974875, 0.4217077006288872, 0.2948434931107068, 0.23241731693488202, 0.18563378011445333, 0.28379060474902784, 0.4298924951401675, 0.09892697917310318, 0.5187703393891271, 0.24619710063179148, 0.18977760133408705, 0.1463880241949871, 0.2683629690783806, 0.35516527071435045, 0.0592436971257234, 0.38281395319331457, 0.08259995907894437, 0.324296521584325, 0.3460882738478088, 0.09254100585515956, 0.4056794624311722, 0.031042328790865926, 0.10944615179922879, 0.1798561472759464, 0.22581301933737868, 0.2851372662935584, 0.3104131247330589, 0.2944105526047023, 0.3159469305965935, 0.041767792511954754, 0.19087142331513723, 0.36591960364510534, 0.37739415188927616, 0.0536520266480181, 0.15936033162486515, 0.32292414809311315, 0.04003214795384037, -0.013372079615318694, 0.4123776374089231, 0.19481958100933966, 0.24936938200210548, 0.11167150412813164, -0.047911136838315015, 0.12343498661490462, 0.19852370876861422, 0.22694198020161732, 0.1754041412483725, 0.1806701767576516, 0.2681104325229767, 0.23553089732757684, 0.06580042227089394, 0.17303316585232192, 0.41319343360905014, 0.232179986305576, 0.15333394898548272, 0.0860315552950092, 0.34963317724958987, 0.4401792973827876, 0.2688665619819597, 0.22205655651243886, 0.2980670127948847, 0.41446983662618264, 0.36762687489432705, 0.3629637136376953, 0.2578058776992277, 0.1600095443998501, 0.1663249298522334, 0.3335028767330434, 0.22934198985965754, 0.5294766913808532, 0.28408103572123594, 0.023448673048886728, 0.29833891149566827, 0.24460227141324276, 0.18031580979028616, 0.13242244903666994, 0.3144808170111973, 0.08075052723013383, 0.35124645504950824, 0.2899248416899124, 0.18357167781535627, 0.023467713986187952, 0.2987349103039137, 0.24585462659966506, 0.3613214231994069, 0.36440035008729055, 0.4123776374089231, 0.5021741239645846, 0.23723832859806818, 0.1770143098098719, 0.22552291660377366, 0.21752853132301553, 0.10764166942255979, 0.3420052545851465, 0.22160456239329673, 0.3174014735476576, 0.20767068418163942, 0.4342726048472771, 0.09221384537072441, 0.19015743176738564, 0.174902767754829, 0.3574503541327716, 0.411360096444134, 0.19283988340693153, 0.45272294911082556, 0.27994284280113213, 0.5440569039647347, 0.21224757540485023, 0.059949591781480085, 0.36156722034587235, 0.39813623381742913, 0.2874438107268068, 0.34425906127380107, 0.1509327004869464, 0.2649213851528806, 0.2537874043389839, 0.3055430934803795, 0.1140575643784312, 0.2848521173174947, 0.17649582811688816, 0.0362223579417733, 0.35472099745931074, 0.1411228345084444, 0.1466846430463086, 0.05167968491109967, 0.1593990640933135, 0.1920257016225171, 0.33861371881558455, 0.26175194119969647, 0.20185285342086792, 0.22269629239392205, 0.17884799599658172, 0.23133491823242935, 0.3180616593924965, 0.13606091171158474, 0.19481958100933966, 0.23723832859806818, 0.22687731635557626, 0.09743682267031306, 0.29757172941223836, 0.306779035474961, 0.1694563191274956, 0.2766624149926663, 0.2440555251385899, 0.4111955278635465, 0.197517867521451, 0.2913069844400426, 0.11614849998271701, 0.22731908625487365, 0.2720872905843252, 0.12897516359407285, 0.08041105990082371, 0.2041538142253464, 0.06804375469013146, 0.45227251744017455, 0.19681459982362423, 0.3566647797473894, 0.12344954433586786, 0.3981427624027429, 0.16590566162490036, 0.28695592637156925, 0.17306497179392388, 0.2098113573739666, 0.4146532007216349, 0.2190515234653159, 0.12896533035452717, 0.32260188083329494, 0.2554350759553097, 0.2671392069853842, 0.2755170541811013, 0.3476316361127444, 0.25260243722175657, 0.18621220373595604, 0.1554374039423124, 0.22010392527888673, 0.2599605521764153, 0.3756819575549069, 0.13783881216980848, 0.22469678759534073, 0.2679876756840455, 0.28733130501986637, 0.1278275590113185, 0.38839822433405713, 0.28180603219474476, 0.24936938200210548, 0.1770143098098719, 0.09743682267031306, 0.36963029700484684, 0.13794743874690135, 0.37046238354508365, 0.4410999100976193, 0.2608183760693584, 0.0824920593809706, 0.46142294811180495, 0.37199475276239596, 0.17549825244910333, 0.37448546197818866, 0.33402908471177784, 0.25053851424392276, 0.23170791665747476, 0.2135328968886296, 0.24751031067736076, 0.15525503435966606, 0.3331598270573727, 0.3076269427231586, 0.2528114849362432, 0.26868321302438714, 0.25479722288081846, 0.2200735736370137, 0.23558543221214437, 0.09365851600912377, 0.22206350040853537, 0.13630272733936993, 0.279933860507836, 0.26675935202397405, 0.19120970423602718, 0.3189638972883567, 0.2622001958626841, 0.2709764726403894, 0.4124921921932242, 0.3661792147587029, 0.24145676040209446, 0.02947145500205456, -0.03442327940583337, 0.3946311668670762, 0.3715600646785404, 0.36932573958378945, 0.21164633896866467, 0.09905377253538453, 0.17951051408343333, 0.48592644897551235, 0.13724833031739592, 0.40762140545558945, 0.11167150412813164, 0.22552291660377366, 0.29757172941223836, 0.13794743874690135, 0.44324757492085676, 0.22854931248729088, 0.14947549330698606, 0.2194349570472135, 0.3484375320001196, 0.3125153822577894, 0.2034293164320641, 0.3037851361587536, 0.37250796503402994, 0.34155802261048085, 0.2068379263720747, 0.2540768253568279, 0.196345736277022, 0.11258086392351616, 0.3291700579621816, 0.1282104875209085, 0.18835313322585603, 0.16876741409690182, 0.19192549500715755, 0.21165686208542017, 0.30581188148998495, 0.22013153749069128, 0.16894927362058648, 0.23494916597428822, 0.38354975388954315, 0.08469705635251289, 0.47540978361712666, 0.27303450275734914, 0.3138572016204777, 0.1695727848305298, 0.39138005110651114, 0.483493770166829, 0.3169848900919464, 0.09104749718251441, 0.22239536204484028, 0.3105700456021391, 0.3607219015323986, 0.3175731368545622, 0.11392179663207727, 0.4153849784400263, 0.09723565787804626, 0.3840501690665076, 0.29452997024497646, 0.10803396767796031, 0.0849727782927027, -0.047911136838315015, 0.21752853132301553, 0.306779035474961, 0.37046238354508365, 0.22854931248729088, 0.036244345690910396, 0.17927857690328985, 0.1952972401489027, 0.278373424932557, 0.19908969494862228, 0.28538474700318034, 0.3523525678859175, 0.20550440928847316, 0.1787300937540514, 0.09100695572642832, 0.3462995541305116, 0.1468727036107016, 0.2112132665829327, 0.2007704488376067, 0.33246616163245923, 0.36358617017834816, 0.31168208390717633, 0.33034454703215477, 0.17876285094472152, 0.34657785934956836, 0.20848651530524315, 0.4521719223101818, 0.2811727148901614, 0.39102466545058223, 0.3044946319434475, 0.1724558815646706, 0.2021900426053237, 0.24034230503884307, 0.26497078479750313, 0.2589369012167063, 0.18276576356754104, 0.4153174861530945, 0.15419971254282913, 0.3235237842661606, 0.04199358990755075, 0.24022508509132928, 0.21125355213134028, 0.3517956874944997, 0.006532368934850527, 0.009374150742164088, 0.2934440403641174, 0.1541056860605651, 0.14027742059092088, 0.13047732998177036, 0.12343498661490462, 0.10764166942255979, 0.1694563191274956, 0.4410999100976193, 0.14947549330698606, 0.17927857690328985, 0.2259146835200606] }
Andlon commented 7 years ago

Hey @dgrnbrg, thanks for this example! I'm actually reasonably close to rewriting the eigenvalue/eigenvector routines for rulinalg, so this is a useful example to check against. I've been pretty busy with real life the last few weeks, but I hope I should have some more time to look at it again in not too long!

stiv-yakovenko commented 7 years ago

HI! I also face this problem. I plan to port this code: https://github.com/fiji/Jama/blob/master/src/main/java/Jama/EigenvalueDecomposition.java into Rust tomorrow, because I have not found reliable eigen solver for rust which will work stably.

Andlon commented 7 years ago

@stiv-yakovenko: thanks for your interest, and your willingness to attempt a port!

I see now that it's been 3 months ago since I said that I would hopefully be able to look at it again soon. Unfortunately that didn't really hold up, so it's good if someone wants to take a look at it.

I took a brief look at the Jama implementation (not the details at this point). I don't agree with their overall API design, though I'm sure their implementation might be very good. In particular, an "Eigenvalue Decomposition" only makes sense for symmetric matrices. For non-symmetic matrices, one rather talks about the "Real Schur Decomposition". The idea I had for the design of eigenvalue algorithms for rulinalg is as follows:

For complex eigenvalues, we'd have to introduce "HermitianEigenvalueDecomposition" for hermitian matrices. I haven't given much thought to the general complex case yet.

It seems that Jama tries to detect whether the matrix is (exactly) symmetric, and then compute either the symmetric eigenvalue decomposition or the real schur decomposition. I think detecting exact symmetry is a fragile approach: indeed, due to roundoff errors a matrix that is supposed to be symmetric may well have very slightly different elements in the corresponding element in the transpose.

Of course, .eigenvalues() would be a convenient function to access this functionality without explicitly constructing the decompositions.

I'm certainly open for a discussion on how an eigenvalue API could look like in Rulinalg!

stiv-yakovenko commented 7 years ago

HI! I've finished this dirty work of transpiling and debugging the code. And for simple real-valued assymetric matrix the code works correctly. I propose to do some more testing, it may fail in some other cases. Now you can improve the code (I am rust beginner) and orchestrate it the way you like: https://gist.github.com/stiv-yakovenko/2c59c9588b615556f20d4a2537f6cd8d

Andlon commented 7 years ago

Thank you for the effort, @stiv-yakovenko! Unfortunately I can't promise that I'll get to it anytime soon (though I hope so, but I'm currently spending my limited time on a different, but tangentially related effort at the moment). If I don't, perhaps someone else is willing to pick it up in the meantime though!

dgrnbrg commented 7 years ago

Hey @stiv-yakovenko and @Andlon: if it makes sense, I can provide code review & suggestions for the algorithm.

stiv-yakovenko commented 7 years ago

Well, for my own purposes the algorithm works good enough, I don't have time to integrate it into rulinalg. If, as far as I understand, this project has no funding, then sorry, I'll leave integration task for the community. BTW: algorithm also finds imaginary parts of eigen numbers.

AtheMathmo commented 7 years ago

@stiv-yakovenko - thanks for sharing your code. This gives a good start point for somebody looking to integrate into rulinalg.

@dgrnbrg please feel free to take the lead on that work if you want to. I'm sure it will be quite tricky but I am happy to try and provide feedback along the way.

Unfortunately I am in the same boat as @Andlon . I have a lot of other things going on and no time to dedicate for any serious attention to rulinalg for now...