#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <stdio.h>

void slahqre_(long* n, long *is1, long *is2, float *a, long *lda, float *wr, float *wi, long *info);
void strexc_(char *wantQ, long* n, float *a, long *lda, float *z, long *ldz, long *ifst, long *ilst, long *info);
extern void sgemm_(char *opA, char *opB, size_t *m, size_t *n, size_t *k,
                   float *alpha, float *a, size_t *lda,
                   float *b, size_t *ldb, float *zero, float *c, size_t *ldc);

/* Parameters */
#define N 25
#define LDA N
#define LDVL N
#define LDVR N

float Ahess[25*25] = {
  7.67268987e-01, -2.29426243e+00, -1.04404499e+00, -2.44719593e-01, -3.55110433e-01, 2.02010033e-01, -5.81371693e-01, -6.08825471e-01, -3.93116359e-04, -1.92425341e-02, -4.60491791e-01, -4.86318955e-02, -4.35540060e-01, 1.76181767e-02, -4.76437887e-01, -2.76695422e-01, -1.33119212e-01, 2.41990798e-02, -2.34617234e-01, -1.03820284e-01, 1.99135952e-01, -1.97694299e-01, -5.42081639e-02, 9.11897564e-02, 1.94024386e-01,
  -3.25034378e+00, 9.86064863e+00, 4.67525671e+00, 4.15983255e-01, 6.66684669e-01, 6.75084832e-01, -7.86051748e-01, 4.09972337e-01, 6.36971714e-01, 3.44757843e-01, 2.13168578e-01, 4.43370815e-01, -6.36811259e-01, 1.80617133e-01, 1.19927644e-01, 4.31510216e-01, 2.69944414e-01, 8.61850447e-02, 2.10579479e-01, 5.18927011e-01, 8.60382532e-01, -6.58588443e-01, 1.74746499e-01, 8.04851980e-01, 4.88399481e-01,
  0.0, 4.60781905e+00, 2.45035098e+00, 3.88382886e-01, 8.82050947e-01, 6.56907680e-02, -1.27064097e-01, 4.00377669e-01, 1.36948882e-01, -2.23151086e-01, 1.21705565e-01, 8.65161261e-02, 3.83208909e-01, 1.68994161e-01, -2.14061557e-01, -1.89743726e-01, 2.34423801e-01, 2.92217277e-01, 4.43973023e-02, -1.16604693e-01, -2.77095743e-01, 1.50048567e-01, -1.17870112e-01, -3.92120966e-01, 1.67735177e-01,
  0.0, 0.0, 1.48288575e+00, 1.48012353e-01, -7.72130953e-02, 2.42469634e-02, -1.33267508e-01, -2.57757342e-01, -2.14744522e-01, -7.13421548e-02, 3.99629745e-01, -5.48497128e-01, 2.22250518e-01, 1.08284886e-02, -2.53431403e-01, 2.70071418e-02, 2.20032852e-01, 1.88906098e-01, 3.94687215e-01, -1.42985633e-01, -7.22824902e-02, 3.55278606e-01, 3.29776893e-01, 4.79699165e-01, 4.19838667e-01,
  0.0, 0.0, 0.0, 1.01262543e+00, -3.35749803e-01, -2.33713458e-01, -4.08723808e-01, -2.77061343e-01, 2.28462175e-01, 4.28515303e-01, -5.14442351e-01, -2.18356240e-01, -5.31373188e-03, -3.69326060e-01, -1.54746229e-02, 5.40713614e-02, 9.44103175e-02, 6.18206825e-02, -8.72098822e-02, -1.15836224e-01, 2.73713130e-02, -2.73562546e-02, 6.80508896e-02, -2.31008469e-01, -1.84303844e-01,
  0.0, 0.0, 0.0, 0.0, -1.01071941e+00, -1.85193457e-02, -6.15206947e-01, -1.73077061e-01, 3.54233125e-01, -4.16136926e-01, -2.06997343e-01, -4.06838506e-01, 3.97155154e-02, 2.43343894e-01, -1.42815092e-01, 1.70512949e-01, 2.59265960e-01, 2.29104615e-01, 3.52461382e-01, -3.52535103e-01, -1.34254131e-01, 2.58962106e-01, -1.03997200e+00, -1.66671182e-01, 3.24870205e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 8.27311279e-01, 2.13429667e-01, -2.56481131e-01, -3.47605131e-02, 4.86593484e-01, -4.42548530e-02, 2.23862457e-01, 3.70602436e-01, -3.11195196e-01, -1.50307600e-01, -6.14494464e-01, 2.31665995e-01, 1.19949622e-01, 1.46560475e-01, -2.54880891e-01, -5.47272125e-02, 2.27604269e-01, 6.06339464e-01, -1.92115549e-01, -2.53007275e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.22492955e+00, -3.97633083e-02, -1.79117337e-01, 5.01772134e-01, -1.80155964e-01, 1.61862598e-01, 1.92881204e-01, 2.78089969e-01, 2.47783873e-01, 1.89597577e-01, -1.86182796e-01, -3.67353639e-01, -3.50183047e-02, -2.54503228e-01, 1.17325995e-01, 2.67126487e-01, 5.06056896e-02, 1.34690381e-01, 2.42537600e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.08544587e+00, -1.36609736e-01, 6.57370352e-02, -3.32616799e-01, -3.97585468e-01, -6.59064178e-01, 1.29949905e-02, -5.73423481e-01, 4.47595180e-01, -4.99685599e-01, 1.07920083e-01, 3.67325293e-02, 3.08812343e-01, 3.82885027e-01, -3.60463988e-01, 3.80076205e-01, -4.02682827e-01, 3.68414541e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.08078959e+00, -3.91316495e-01, -1.21540316e-01, -1.97091094e-01, -1.31690074e-01, 5.07833479e-03, 4.50782085e-01, 1.27938603e-01, -4.86735629e-01, 1.51929774e-01, -3.51161253e-01, 6.95932130e-01, -1.59184835e-01, -3.91798357e-01, -3.02991802e-01, 2.92823494e-01, -1.29490255e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.23612902e+00, 1.46138863e-01, 2.49845265e-01, 4.64819129e-01, 4.38862122e-01, 8.63717742e-01, 3.32244978e-01, -6.47556863e-01, -1.39130622e-01, 7.18326993e-01, 1.45246681e-01, 1.05046701e-01, -1.01415210e-01, -8.18231140e-01, 3.40249479e-01, 1.15224000e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.32223806e-01, 1.53746895e-01, -1.71326323e-01, -3.80567907e-01, -2.89333553e-01, 4.56403011e-01, -4.44328771e-02, -5.19989864e-01, 6.66436589e-02, -2.91846715e-01, -1.64402463e-01, 3.71566657e-01, 2.44018877e-01, 3.66414209e-01, 2.02836199e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.13268499e+00, 1.79638914e-01, 5.18116384e-01, -7.74251477e-02, -3.74886177e-01, 1.36980787e-01, 1.32006049e-01, -2.15849839e-01, -2.84522508e-01, 4.81766581e-01, -1.97098465e-01, -1.56758684e-02, 9.42108194e-03, -1.86432630e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -6.49269501e-01, -2.21215526e-01, 3.41601008e-01, 1.50636455e-01, 2.96540731e-01, -1.65630237e-01, 5.71545192e-01, -1.62811570e-01, 1.36518326e-01, -4.48216932e-02, 6.40454318e-01, -1.99781275e-01, 1.07473231e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.60643133e-01, 2.94325903e-01, 3.86920211e-01, 5.57541789e-02, 7.58778342e-02, 3.25410690e-01, -1.04252266e-01, -4.71598926e-01, -2.77994346e-01, -1.43749045e-01, 3.69176188e-01, 1.32944753e-02,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -9.34274864e-01, -1.67202527e-01, 4.38436651e-01, 2.04816695e-01, -4.03987035e-02, -3.57652060e-01, 1.39238458e-02, 6.11304022e-02, 7.90714760e-02, 1.22652808e-01, 1.32141821e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.11061457e+00, -3.07545175e-01, 7.20463050e-01, 3.29926331e-01, -2.97615693e-01, 2.08694564e-01, 5.68744915e-01, -4.17192612e-01, 1.62329201e-01, -2.18404386e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -5.76263506e-01, 4.67571642e-01, 1.76575483e-01, -6.99090066e-02, 7.68363136e-03, -4.14104291e-01, -3.31306930e-01, 5.75520879e-02, -1.68973644e-02,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.94498841e-01, 4.65284596e-01, 5.23603357e-01, -4.75316251e-02, -1.36086404e-01, 1.18026199e-02, -3.39231698e-01, -1.83181257e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.06377730e-01, -4.48223340e-01, 2.07890954e-01, 2.49524927e-01, 6.18805146e-01, -1.22174154e-01, -5.43608482e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.13214968e-01, 1.71762000e-01, -1.16902245e-02, 4.64904265e-02, -4.75102164e-02, 3.97777999e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -4.56998695e-01, -2.02671602e-01, -3.01859689e-01, 2.09513319e-01, 1.65173330e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.97421306e-01, -8.28668548e-02, 7.67238499e-02, -9.53518824e-02,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.22682262e-01, -3.38434655e-01, 1.55196316e-01,
  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.06013127e-01, 2.55546979e-01
};

float Z0[25*25] = {
  -0.2067608,0.1211794,0.3681825,0.01451969,-0.04707489,0.3991269,-0.1144379,0.09594179,0.2130511,0.1039579,0.1808569,0.1665023,-0.1745567,0.5110366,-0.1833183,-0.06700236,-0.1808117,-0.1216162,0.2699718,-0.08133487,0.05561635,0.1061178,-0.120361,-0.1187689,0.08181115,
  0.8911658,-0.09857105,0.08340203,0.1962121,0.1238233,-0.06860056,-0.01485668,0.02671959,0.07577658,0.1842499,0.122737,-0.094752,-0.1200914,0.08368117,-0.09270608,0.01151052,-0.1032118,-0.09045322,0.1232203,-0.01038325,0.01466425,-0.007131063,-0.008299295,-0.0344209,0.01226226,
  0.4010397,0.2404998,0.04421358,-0.3998235,-0.2356169,0.3507555,-0.02663288,-0.02139547,-0.0585659,-0.3975869,-0.1674007,0.342885,0.1641603,0.08191675,0.12572,-0.05800622,0.1555859,0.1541939,-0.1564454,-0.01864659,-0.00551949,0.06784589,-0.04444059,0.01471254,0.01559918,
  0.04719302,0.3762408,-0.3139305,-0.2302254,-0.5121568,0.0575399,0.005272061,0.08465353,-0.01625307,0.3466112,-0.150298,-0.4097813,0.1242253,-0.02655347,-0.1295048,-0.02281088,-0.1718655,-0.1415211,0.1926181,-0.0008491084,0.01355072,0.02272573,0.007333385,0.006659272,-0.006408688,
  0.003659578,-0.3252427,-0.2688532,-0.1697391,-0.3779947,0.08321422,0.004078919,0.180034,0.2058582,0.1362574,0.6368175,0.1812994,-0.1846076,-0.1561102,0.1315749,0.06584486,0.09657846,0.09625912,-0.1097837,-0.01216535,0.000292196,0.004836613,-0.003175753,-0.02313675,0.008176106,
  -0.0002889329,0.3808658,0.4735423,0.06712472,0.1031689,0.07979615,0.005773419,0.1669279,-0.1096997,0.3923947,0.2987608,-0.1165198,0.3123038,-0.1842134,0.2739218,0.04593861,0.156085,0.1711572,-0.2195655,0.002016109,-0.01289467,0.01174136,0.003606497,0.03849357,-0.01264869,
  -1.911581e-05,0.3584263,-0.2491688,0.2189823,0.2604733,0.2664276,0.1306716,-0.04212763,0.5314734,-0.1002199,0.08351187,0.1782042,0.1256556,-0.4187641,-0.2481608,-0.02574002,-0.01788919,-0.08356444,0.06535928,0.02850867,-0.01540756,-0.01743032,0.05023624,0.04945636,-0.03572117,
  1.829091e-06,-0.249695,0.2541207,-0.2874355,-0.1124177,-0.265314,-0.1590854,-0.3485448,0.2386708,0.2895822,-0.04405414,0.2635558,0.4275596,-0.04705774,-0.3696739,-0.06845998,0.0592083,-0.05479112,-0.003762552,0.04642203,-0.03171408,-0.0392572,0.04994767,0.08087338,-0.04224613,
  1.540466e-07,-0.224223,0.4246117,-0.1305159,-0.1838984,0.01422741,0.3679316,-0.003014078,0.4071429,-0.1857817,-0.1869264,-0.2326158,-0.02038389,-0.26063,0.3629451,0.06863553,-0.2233784,-0.09182278,0.1617445,-0.02396143,0.03398501,0.004407617,-0.002209564,-0.05002353,0.01136144,
  -1.268837e-08,-0.06114921,-0.284325,0.2563153,-0.0001343458,0.1340151,-0.1454384,-0.3151676,0.1473632,0.3349581,-0.2033516,0.2502819,0.180909,0.1890775,0.6174204,0.01638932,-0.1399262,0.0005236447,0.04821497,-0.01538894,0.02285866,0.01265821,-0.01239107,-0.01912614,0.008698424,
  1.246518e-09,0.4606631,0.1331933,0.0463978,-0.2191379,-0.5460323,-0.01583376,-0.07767952,-0.03666347,-0.04229111,0.07422865,0.4245143,-0.359528,-0.1088623,0.1538538,-0.0549344,-0.1203153,-0.1310913,0.1353002,0.0370165,-0.00880939,-0.05462068,0.05494493,0.02284477,-0.02906319,
  6.253042e-11,0.1787688,-0.09142907,-0.3354075,0.2548292,-0.2492478,-0.1054879,0.1307774,0.4857607,0.1426037,-0.2033682,-0.1169894,-0.2531782,0.2412589,0.03266817,0.2921762,0.1204921,0.2390016,-0.2812938,-0.05515275,0.02566224,-0.0187206,-0.04335993,-0.1127255,0.04902585,
  5.62593e-12,0.1178017,-0.1526937,-0.194749,0.2028665,-0.2901401,-0.06139378,-0.08851581,0.1222563,-0.3543869,0.4481429,-0.2557097,0.3802347,0.282167,0.2222998,-0.1988519,-0.02331999,-0.1271881,0.2103836,-0.0168234,0.007243042,0.05271615,-0.05691387,-0.006087817,0.02559562,
  -2.823006e-13,-0.01464537,0.1110261,0.2207591,-0.2097599,0.05780122,-0.3949403,0.05876653,0.2704912,-0.101275,-0.102793,-0.2352287,-0.1585656,0.06388423,0.1052014,-0.3210206,0.4694122,-0.1499981,-0.03223876,0.179806,-0.1407239,-0.148106,0.1822545,0.2618091,-0.1398915,
  -2.17347e-14,0.05097636,0.08760458,0.1999097,-0.2079567,0.03744987,-0.4419949,-0.1555834,0.03840625,-0.2908416,0.1368013,-0.1495793,0.09922267,-0.01056567,-0.08967194,0.4054086,-0.4626747,0.1456344,-0.2546029,0.04667498,0.03180591,-0.2043424,0.1607822,-0.03948092,-0.05988979,
  1.576213e-15,-0.09742061,-0.03365863,-0.1992563,0.2054667,-0.00214484,-0.1114336,0.4588019,0.01216808,0.07257547,-0.08570285,0.1288991,0.02679596,-0.02274048,0.06294581,-0.4291813,-0.5321257,0.0939068,-0.1241108,0.1506583,-0.02825926,-0.05428582,0.2049597,0.2547834,-0.1581773,
  1.351447e-16,-0.08591048,-0.01476233,-0.02427644,0.06016472,-0.06066635,-0.2664591,0.5279482,-0.04291192,-0.05684266,-0.1218956,0.2049308,0.2444032,-0.0753855,0.0803908,0.5031989,0.1395699,-0.3555141,0.3087608,-0.01054049,-0.02229638,0.0479823,0.03816556,0.03823992,-0.02709335,
  -5.884416e-18,0.03477488,-0.03347199,0.1676435,-0.1429626,-0.06028927,0.5554529,0.06918378,0.06071445,-0.01290935,0.04876916,0.07950141,0.141961,0.453248,-0.06539929,0.2432808,0.0009855638,-0.1465424,-0.2506036,0.1601369,-0.1225058,-0.08442575,0.1500593,0.3847499,-0.1672427,
  -4.724672e-19,-0.02645343,-0.02511603,0.34716,-0.2432145,-0.2144341,0.122338,0.3461017,0.1276209,-0.07660261,-0.1168996,0.09815493,0.2899507,0.1243998,-0.09529161,-0.201565,0.09604803,0.428452,0.1251832,-0.09419247,0.1555172,-0.2194046,0.04045424,-0.3832886,0.07307775,
  0,-0.02287793,-0.005758036,0.185955,-0.1260247,-0.1238317,-0.06644649,0.1609691,0.08292184,-0.05033269,-0.07093449,0.01834132,0.106459,-0.04182564,-0.02833925,-0.1822503,-0.111119,-0.4253638,-0.5427315,-0.1345026,-0.1053618,0.2078463,-0.4504832,-0.1321702,0.2465914,
  0,-0.01874408,0.00847316,0.1812224,-0.1129299,-0.1294868,-0.09201495,0.02903698,0.08666361,-0.06222276,-0.0364004,-0.03387236,0.01194748,-0.03409307,-0.05912639,0.07437109,-0.04833652,0.4437267,0.1860513,0.0235717,-0.04309777,0.5654534,-0.3311465,0.4878124,0.0102131,
  0,0.003580977,-0.005106366,-0.05860253,0.03432705,0.04286995,0.009304815,0.01739275,-0.02280397,0.01918423,0.005004478,0.01797984,0.003642144,-0.01708066,0.0168856,0.0542589,-0.05691531,0.1283034,0.1682284,0.386348,-0.5134755,-0.4891607,-0.4627495,0.03935883,0.2691893,
  0,-0.0005614453,-0.002395314,-0.02527686,0.01331003,0.01805022,-0.01950295,0.009530119,-0.008286728,0.003277956,0.0003354725,0.005089062,-0.01208847,-0.02385421,0.008022665,0.0008901369,0.03787005,-0.07536751,-0.01835902,0.04583528,0.7600785,-0.3810382,-0.3902144,0.3355218,0.01382754,
  0,-0.0008917684,-0.0008005859,-0.01080106,0.005175478,0.007353439,-0.01542564,0.0008853948,-0.004379454,9.555001e-05,0.0002900439,-0.0002303964,-0.01162314,-0.01062702,0.001823956,-0.02146942,-0.02724063,0.04261039,0.0522514,-0.8415584,-0.27176,-0.320919,-0.09485275,0.2741525,-0.1559585,
  0,0.0001478942,-4.933513e-06,0.001384209,-0.0005541558,-0.0007867574,0.001647208,0.001011268,0.0005755419,-0.000168164,-0.0002300902,0.0003120522,0.001230296,0.0001482394,-0.0003898391,-0.003095821,-0.0003678941,0.003755672,0.00396218,-0.1193144,0.05576543,-0.0258532,0.3942029,0.2849123,0.8633462,
};

float Aschur[25*25] = {
  12.74328,-0.4745196,0.4452863,-0.3886005,-0.9730348,-0.6382478,-0.203631,0.5564175,-0.4486515,0.3645436,0.4018205,0.03386618,-0.3160545,-0.2568208,0.6842549,0.2031295,0.1139178,0.3897559,-0.6528429,-0.6380282,0.1020006,-0.1448965,0.2245977,0.7059003,0.171449,
  0,0.8637231,-0.5941614,-0.09652711,-0.019895,-0.09675985,0.1421574,0.4318502,-0.08857224,-1.000185,-0.03530854,0.4708474,0.2768347,-0.02321081,-0.1349306,-0.06396922,0.4463584,0.27608,0.363637,-0.1416197,-0.5451224,-0.36097,-0.4045166,-0.3966607,0.2129461,
  0,0.9310643,0.8637231,0.1772761,-0.04135961,-0.1614503,-0.02594916,0.1468208,0.1926929,0.1993552,-0.3469971,-0.5907973,0.07640798,0.1227101,-0.2139713,-0.4867993,0.01382584,0.3254224,-0.0116579,0.1628048,-0.2768473,-0.6394722,0.343717,0.1145183,0.362945,
  0,0,0,1.093719,-0.01058556,-0.2936983,0.08321012,0.1743007,-0.06004998,-0.1831607,-0.2742577,-0.09887235,-0.3659784,-0.3263954,-0.2799855,0.1328822,-0.1521012,0.0915971,-1.048372,-0.1683862,0.1775081,-0.0705444,0.1044329,-0.1133201,-0.4222977,
  0,0,0,0,1.016849,-0.4321034,0.008915543,-0.2434214,-0.2927782,0.5071222,-0.08487294,0.06857798,-0.5292889,0.4164496,0.4178889,0.6120053,0.2602174,-0.02414657,0.1536471,-0.09226325,-0.1946426,0.171801,0.1486966,0.06623793,-0.1769869,
  0,0,0,0,0.1390488,1.016849,0.4702205,-0.163429,0.4806116,0.4923436,0.3359776,0.07578836,0.1645008,-0.1823207,0.2907752,0.4002166,0.4083957,-0.7584689,0.4264856,0.2157904,0.3656029,0.2315796,0.2230743,-0.06476644,0.1623559,
  0,0,0,0,0,0,0.6625774,-0.6516271,-0.1336592,0.2099167,0.08723384,0.1587898,-0.0839531,-0.2985834,-0.2047079,-0.0924915,0.1290862,-0.2213435,-0.1848155,0.1183251,0.190301,0.1144579,0.666193,-0.07372561,0.1065036,
  0,0,0,0,0,0,1.190006,0.6625774,0.007594699,0.1224347,0.3667193,-0.5127409,0.1280556,-0.3307656,0.1121371,-0.09650931,-0.1234036,0.1816038,0.6475963,0.4151699,-0.1708989,0.03296529,-0.1134156,0.2293997,-0.1240152,
  0,0,0,0,0,0,0,0,-0.276612,0.8715395,-0.1775503,0.3180125,-0.0166703,0.1241611,-0.279019,0.005791873,-0.07687263,-0.4658833,0.1325473,0.04994844,-0.8642138,-0.4837337,0.08987453,-0.2793133,-0.1964015,
  0,0,0,0,0,0,0,0,-1.457051,-0.276612,-0.1562564,-0.5830481,-0.05653448,-0.1187809,0.3272439,-0.2130832,-0.3614372,0.1800819,-0.004933846,-0.5145743,-0.5093014,-0.09038126,-0.04592613,0.1612058,0.3193362,
  0,0,0,0,0,0,0,0,0,0,-0.7150023,-0.8005641,0.648819,0.1180746,-0.2672906,-0.0833619,-0.3304741,0.07659608,-0.2166462,0.1213649,-0.5341408,-0.09900641,0.1471045,-0.5262403,-0.1875253,
  0,0,0,0,0,0,0,0,0,0,1.237424,-0.7150023,0.3073722,-0.00901799,0.5291667,0.5749056,0.1128156,0.07314931,0.3004772,-0.07449698,-0.1818919,-0.2661856,0.4398805,-0.1111582,-0.2495337,
  0,0,0,0,0,0,0,0,0,0,0,0,0.2281609,0.7836034,-0.04960613,0.0803185,0.1919013,0.08408626,-0.4498161,-0.5329176,-0.08425751,-0.1660415,0.3408133,0.1443093,-0.1017315,
  0,0,0,0,0,0,0,0,0,0,0,0,-1.049137,0.2281609,-0.3196357,-0.01411256,-0.4346627,0.01870958,-0.02509466,-0.4575685,0.383906,0.1186345,0.04797535,-0.1306725,0.2123632,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.31164,-0.4572627,-0.2401828,-0.2051168,-0.4673503,0.1344185,-0.4070339,-0.4242664,0.4400633,0.008001405,-0.1677967,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.7470069,-0.777988,0.08464068,-0.3472773,-0.0783199,-0.7341939,-0.5756787,-0.3038749,0.1701478,-0.235746,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.4956028,-0.7470069,0.197238,0.2670171,0.5422886,0.1124044,0.236702,-0.0857848,-0.4673262,0.1191398,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1.100316,-0.1385818,-0.06695623,-0.1595495,-0.1261899,0.3004189,-0.3808414,0.5597376,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.8706959,-0.2674413,-0.2561579,0.1181838,0.5327015,0.5211418,0.3096372,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.4294532,-0.5542721,-0.4110564,0.02542461,-0.2080975,-0.1307627,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.1428915,-0.4294532,0.338323,0.01662279,0.09304138,-0.01123242,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.4264216,-0.09083183,-0.1644882,0.05075079,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.4801295,0.4264216,0.1405041,0.2230384,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.1349744,0.4496069,
  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.09996034,0.1349744,
};

/* Auxiliary routine: printing a matrix */
void print_matrix( char* desc, size_t n, float* a, size_t lda ) {
    int i, j;
    printf("\n %s\n", desc);
    for(i = 0; i < n; i++) {
        for(j = 0; j < n; j++) {
            float f = a[i+j*lda];
            if (fabsf(f) < 0x1p-18f) { printf(" 0,"); }
            else { printf(" % 6.7f,", f); }
        }
        printf("\n");
	} 
}

static __attribute__((always_inline)) inline void disable_denormals(void)
{
    unsigned int a = 0x9f80;
    __asm__ __volatile__ ("ldmxcsr %0" : "+m" (a));
}

/* Main program */
int main() {
    /* Locals */
    long i, j, n = N, lda = LDA, info, is1 = 1, is2 = N;
    long ifst, ilst;
    /* Local arrays */
    float Aschur1[N*N], Z[N*N]={0}, Z1[N*N]={0};
    float wr[N], wi[N];
    float tmp[N*N];

    for (j = 0; j < N; j++) {
        for (i = 0; i < N; i++) {
            Aschur1[N*i+j] = Aschur[N*j+i];
            Z[N*i+j] = Z0[N*j+i];
        }
    }
    disable_denormals();
    setvbuf(stdout, NULL, _IONBF, 0);
    print_matrix("Schur form T:", n, Aschur1, n);
    ifst = 11;
    ilst = 9;
    strexc_("V", &n, Aschur1, &lda, Z, &lda, &ifst, &ilst, &info);
    ifst = 9;
    ilst = 2;
    strexc_("V", &n, Aschur1, &lda, Z, &lda, &ifst, &ilst, &info);
    ifst = 11;
    ilst = 4;
    strexc_("V", &n, Aschur1, &lda, Z, &lda, &ifst, &ilst, &info);
    print_matrix("Schur form T:", n, Aschur1, n);
    memcpy(tmp, Aschur1, N*N*sizeof(float));
    slahqre_(&n, &is1, &is2, tmp, &lda, wr, wi, &info);
    printf("Eigenvalues of the Schur form T:\n");
    for (i = 0; i < n; i++) {
        printf("%.7f+%.7fi\n", wr[i], wi[i]);
        if (fabsf(wi[i]) >= 0x1p-24f) i++;
    }
    print_matrix("Z:", n, Z, n);
    return 0;
}

