├── HLS ├── run_hls.tcl └── src │ ├── CNN_HLS.cpp │ ├── CNN_HLS.h │ ├── CNN_tb.cpp │ ├── cnn.cpp │ ├── cnn.h │ └── layers.h ├── LICENSE └── README.md /HLS/run_hls.tcl: -------------------------------------------------------------------------------- 1 | ############################################################ 2 | ## This file is generated automatically by Vivado HLS. 3 | ## Please DO NOT edit it. 4 | ## Copyright (C) 1986-2016 Xilinx, Inc. All Rights Reserved. 5 | ############################################################ 6 | 7 | # Reset the project with the -reset option 8 | open_project -reset LeNet_IP 9 | set_top CNN_HLS1 10 | add_files src/CNN_HLS.cpp 11 | add_files src/CNN_HLS.h 12 | add_files src/cnn.cpp 13 | add_files src/cnn.h 14 | add_files src/layers.h 15 | add_files -tb src/CNN_tb.cpp 16 | 17 | # Reset the project with the -reset option 18 | open_solution -reset "solution1" 19 | set_part {xc7z020clg400-1} -tool vivado 20 | create_clock -period 10 -name default 21 | 22 | # Leave the previous directives commented out 23 | #source "./LeNet_IP/solution1/directives.tcl" 24 | 25 | # Not run csim and cosim 26 | #csim_design 27 | csynth_design 28 | #cosim_design 29 | export_design -format ip_catalog 30 | 31 | exit -------------------------------------------------------------------------------- /HLS/src/CNN_HLS.cpp: -------------------------------------------------------------------------------- 1 | #include"cnn.h" 2 | #include "ap_axi_sdata.h" 3 | 4 | void CNN_HLS1(ap_axis<32,4,5,5> image[28*28],ap_axis<32,4,5,5> *recognition){ 5 | #pragma HLS INTERFACE axis port=recognition 6 | #pragma HLS INTERFACE axis port=image 7 | 8 | 9 | unsigned int mem[28*28]; 10 | unsigned int number; 11 | 12 | for(int i=0;i<28*28;i++) 13 | { 14 | mem[i] = image[i].data.to_uint(); 15 | } 16 | 17 | 18 | 19 | struct C1 c1 = {{{0},{0},{0},{0},{0},{0}}, 20 | 21 | {{-1.7604623118783600,-0.4934450950943410,0.4039893625101180,-0.2350840744750400,-1.0443666883586700, 22 | -1.0616442379197100,0.4807063950485420,0.8714129932785050,0.9040639336157930,0.6597288973661870, 23 | -0.3975856764289250,0.9215147037311110,1.3065607099573799,1.5995390721209399,1.5916567063868801, 24 | -0.0452910388274384,1.1237659979469901,1.7509170877572899,1.2752477451872699,0.7951027086246040, 25 | -0.4233518697243130,1.0852952857016300,1.1650898286059199,0.9299781589081140,-0.5201599130693910, 26 | }, 27 | {0.7035942011454320,0.0680243813686797,-0.0528627127204859,0.4183638417998880,0.8250258736081060, 28 | 0.5373992122192070,-0.3855192886443680,-0.8432288114016080,-0.4163401486872150,0.2096192736203370, 29 | 0.4807826048164890,-0.7591570239512300,-1.0738771759025600,-0.9020761481162120,-0.0647129222255804, 30 | 0.1190885123337760,-0.7979158339213570,-1.1965895939893001,-0.7715961249738920,0.5737301963442290, 31 | 0.2859490443361600,-0.6067803693829940,-1.2010493514180201,-0.5362139907861621,0.7646150965909390, 32 | }, 33 | {0.7400404109234890,0.7905842695900021,0.2752784545295490,0.5559202116260490,1.4968757604692799, 34 | 1.2116389682967399,-0.0919947692535219,-0.6679853050707700,-0.1205042941746450,0.3166995594633710, 35 | 0.7357277132990860,-0.5830434250882260,-1.3646007932177799,-1.1767775862495100,-0.3832714143364490, 36 | 0.2438098222841120,-1.0414915464446901,-1.3849716373346701,-1.5113062330797600,-0.4954138948523230, 37 | 0.5198525972906990,-0.8759718155242050,-1.1164953126624699,-1.2622484970878900,0.1076139397668350, 38 | }, 39 | {1.3530938371688901,-0.1340410003185550,-1.4720322583775101,-1.2546754669862801,-0.3649286331796920, 40 | 0.9554937056456380,-0.5848094444109960,-1.3836845054578999,-1.2375477184571899,-0.8581767263936040, 41 | 1.0436835319493001,-0.3534442092878680,-1.0787952502067100,-1.3710102830634701,-0.7702348672620530, 42 | 0.9571621527278030,-0.3099147040247200,-1.1314708304879200,-1.6512428768746501,-0.7222037670734071, 43 | 1.3363576479958801,0.2178877058454690,-0.8877487017846321,-1.2965154330206099,-0.1891507310504710, 44 | }, 45 | {0.3316507799595850,-0.6112390921694330,-0.8188630908415250,-0.2070360910619360,0.5573721053325720, 46 | 0.1948693899336840,-0.8653317830717840,-1.1372901004349900,-0.5346555036686950,0.6016598138978500, 47 | 0.3874410984723800,-0.7567448422622980,-1.1861596868633399,-0.3578776237309820,0.9981293711900990, 48 | 0.1605662490402250,-0.8895208536529050,-1.1407888203687400,-0.4092055053232330,0.9550958402784240, 49 | -0.0434077031376829,-0.8257077780065920,-1.0933329822630200,-0.2643277499544030,0.8932103150849560, 50 | }, 51 | {0.1442522687870440,-0.7342101041309410,-0.5867300535495190,-0.2078290742971740,0.5088199854566120, 52 | -0.3303722650170060,-1.1829226707657901,-1.3190520448659899,-0.9862439889040110,0.4939462424632320, 53 | -0.7111015229214180,-1.0386321973088499,-1.2567705811882199,-0.3904865704918100,0.9379608992628590, 54 | -0.1338839365023490,-0.5725766103529550,-0.5199720589364720,0.0811049530134250,1.3288657802684800, 55 | 0.3642435901249520,0.1102885724026790,0.1249667322856530,0.4395575300876870,1.3394253975764501, 56 | }}, 57 | 58 | {-1.78573144002112,1.86200915041715,1.23016700371694,1.19678376441044,1.44500627259234,0.969737876211625}}; 59 | 60 | struct S2 s2 = {{{0},{0},{0},{0},{0},{0}}}; 61 | 62 | struct C3 c3 = {{{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}}, 63 | 64 | {{-0.2985000426625550,-0.4533572652797340,-0.1690389353102020,0.1613714235551000,-0.1138660574919610, 65 | 0.1269502744119040,0.5039210643565310,0.4985615795911190,0.3286500694390460,-0.0652574349234286, 66 | 0.4209186490840840,0.0223785452396916,-0.3085725436785180,-0.1083094936453500,0.0458064240011161, 67 | -0.0247842354356196,-0.4250412066523000,-0.4342397712715310,-0.1958860933921110,0.0433956204904938, 68 | -0.3422436574036110,-0.2859464202789890,-0.0894403731261367,0.0722736554393344,0.1312786598593120, 69 | }, 70 | {0.1620156354653270,0.1810531935660850,-0.0947932552427439,-0.2783944109492790,0.1150078258480660, 71 | -0.1956930513483620,-0.6558662721055310,-0.7133132492436850,-0.4040304457182870,0.0406716263432307, 72 | -0.4368030425018590,-0.3909054257924010,-0.0294287738472364,0.0589667737948634,0.1099171323060730, 73 | -0.1226655291861580,-0.0293232173313153,0.3037633352732320,0.1526880789029240,-0.0012416198756134, 74 | 0.1050924322702570,0.3337392458971920,0.1177726014908830,-0.0904109256101446,-0.0582995952360955, 75 | }, 76 | {0.0959451820209500,-0.1005995829867830,-0.3799631336207460,-0.3330763930974000,0.0252846571372908, 77 | -0.2779026477365120,-0.7614419670731040,-0.5240629966354830,-0.1611184139084160,0.0204770862967426, 78 | -0.3461449613064050,-0.1489528932957760,0.1887167432140260,0.2991437108133160,0.0283063798842309, 79 | -0.0700360401833088,0.3286562103352890,0.2912923145854550,0.0715949829094030,0.1374170411220770, 80 | 0.1957038541943800,0.1432019427675930,-0.1570995258696560,-0.0155078205743838,0.1323083762643260, 81 | }, 82 | {0.3402440177445260,0.0940671838632430,-0.0239858710665758,-0.1241359468944920,0.1666316709762280, 83 | -0.0648289137129651,-0.6684938129240570,-0.7842595026483040,-0.4247707329669770,0.1776073860829900, 84 | -0.5870212424483170,-0.7855889734710551,-0.3789100817192270,-0.1630041918185920,0.1467908853737360, 85 | -0.4128902710114790,0.0734240821798055,0.1993859971519800,0.1483592500719420,-0.0572428853844535, 86 | 0.2085782549193490,0.3582550523531250,0.2060204616908270,-0.0486636244181474,-0.1120413295075470, 87 | }, 88 | {0.3867593408106560,0.1481397646092290,0.0978842612374657,-0.2161765681574880,-0.0965336509769304, 89 | 0.1269461716460940,-0.3676717559089400,-0.8106133398138070,-0.6159259719435281,-0.0208172126636158, 90 | -0.4380624406990390,-0.8755737090573150,-0.4398985605449960,-0.2458287235156200,0.0589143749136139, 91 | -0.3352014481253220,-0.2409666107046870,0.2073378621884940,0.2272327092825520,0.0731681462077362, 92 | -0.0084710936933245,0.2963602290205440,0.2388240056588760,-0.0275020374950921,-0.0751625477123003, 93 | }, 94 | {0.3041846405200370,0.4083061211270120,0.5693583130243010,0.2979204573541370,0.0543405779231062, 95 | 0.3159129354253450,0.0433607492783757,-0.1938324259085140,-0.5349036905571930,-0.1034741152513250, 96 | -0.1005332825424230,-0.4925259850662730,-0.7620449268894750,-0.2740800850392480,-0.0760928805814681, 97 | -0.4034757032237010,-0.2261469982379690,0.2186105771182140,0.2277591455543410,0.0823921442627172, 98 | -0.0534895098510000,0.1912304607115610,0.2715999524091890,0.1400133146497020,-0.1258958347035500, 99 | }, 100 | {0.1738096025934370,0.2304312520728170,-0.3268452361569520,-0.2962430424720090,0.5264917022431490, 101 | 0.4311358645973020,0.0603448661991660,-0.5903176510932000,-0.4798140068843490,0.5583426571086720, 102 | 0.7064586987965240,0.0105380523284051,-0.9013075739457570,-0.3461992654360740,0.6064664489327930, 103 | 0.5354506207881320,0.0504113213035848,-0.6314770350179890,-0.0812045763731787,0.2430036717667780, 104 | 0.4717072092272050,0.1401275768554580,-0.5417974596925010,-0.1396006759362970,-0.1683156268225220, 105 | }, 106 | {-0.3649044902813380,-0.4417347932234220,0.0765177999794246,0.3922360481346770,-0.4158316540207710, 107 | -0.4648429927269310,-0.4054083993487930,0.6407247297353710,0.6747925581753550,-0.4420285904374840, 108 | -0.4700571927987110,-0.1866555535621920,0.7626617649925130,0.6461109839723250,-0.5012742852178750, 109 | -0.3146221885131810,-0.2894581421839760,0.6810411724371800,0.2408652210417100,-0.2471026329405070, 110 | -0.1469799498841290,-0.2877158595570880,0.4493429737203050,0.2411893594513840,-0.0458721587362300, 111 | }, 112 | {-0.1835511079222620,-0.3260836653453610,0.3073538801342110,0.1666162574262830,-0.4718392883083310, 113 | -0.5438758902179010,-0.4524901661812830,0.7368560210808650,0.2557168931002850,-0.5916855042408630, 114 | -0.7188163366236811,-0.1838854222469200,0.8755888790991570,0.1486711666531110,-0.4982396380046270, 115 | -0.4867302230616690,-0.1273670381166120,0.4411446944086220,-0.1481662930011960,-0.3389187555977630, 116 | -0.4024157664361470,-0.1286417332158310,0.5114908305561891,-0.0476547297864687,0.1313803449709730, 117 | }, 118 | {-0.4786618822354170,-0.3919918906909480,0.5126662248652220,-0.0338409396186508,-0.6223339978304310, 119 | -0.7077837297410450,-0.0866504006764721,0.7993894777819091,0.1943605583190020,-0.6991909690076470, 120 | -0.7112921990049340,0.3292105696993090,1.2854293730436701,0.3412478461859670,-0.6844883320708760, 121 | -0.7963513967225350,0.3729424311888540,0.9613736248259310,0.0208809871043192,-0.4005499252751120, 122 | -0.5349472377002520,0.2808446848672210,0.7302450735429230,0.0103512137401700,0.0664525210551062, 123 | }, 124 | {-0.2443242382316120,-0.4181874965179900,0.1196817309868150,0.6124560082746759,-0.1760493698445960, 125 | -0.4572493581049190,-0.4682031764170590,0.4689633613208110,0.7625101159041670,-0.2650552388264470, 126 | -0.5652498879384890,-0.3822526453966390,0.7357118908206500,0.9899503722749290,-0.4982223179883320, 127 | -0.3522942149872830,-0.4697929411687650,0.9322766941550700,0.4803095543715460,-0.3960364217312580, 128 | -0.0701056596738755,-0.4682753539105310,0.6026558388044280,0.2609284405074910,-0.0434992345120970, 129 | }, 130 | {-0.0316951929395681,-0.4400524444737000,-0.1243877927451150,0.3907513874251300,-0.1352298076399710, 131 | -0.2480910220664060,-0.6213950397313890,-0.1720364253614920,0.6764477538331600,-0.3469920721753350, 132 | -0.4925964595031850,-0.5293426827973130,0.4136584108687560,0.8077539042569351,-0.4024927818927800, 133 | -0.2214113605657100,-0.5168370442857920,0.4545662657352070,0.4609745782370380,-0.5529701798463900, 134 | 0.0621975817709040,-0.5416685760951290,0.3239483034492290,0.1763357074115970,-0.3114142631435380, 135 | }, 136 | {-0.0818519558063624,-0.5032039120751060,-0.4723026078512640,0.2087195980967020,-0.0295044537211390, 137 | 0.0269727221830349,-0.6095475904004321,-0.5509506240004130,-0.1654257003745500,0.2048195721775300, 138 | 0.0479362234109518,-0.3704579177929240,-0.5505718782060540,-0.4023465859426910,0.1023653168949720, 139 | -0.0726047866864897,-0.6764831730582370,-0.8664120590830180,-0.6379560507163941,-0.0916857640511029, 140 | -0.4883333774151030,-0.8678117842882880,-0.9473315909981130,-0.5784365868325240,-0.1734906710713150, 141 | }, 142 | {-0.2451960087930640,0.2496632502969820,0.5460025350186600,-0.4110971595079850,-0.5711909980483300, 143 | -0.1116959784757260,-0.0063994082351918,0.2944174748996870,-0.2539173423035670,-0.5966255120735801, 144 | -0.2707991375418150,-0.0923876570059050,0.1724018793973540,0.0594410706181834,-0.4211367905077200, 145 | -0.0381420873228047,-0.0002188584826922,0.2687819447298740,0.2091474926546080,-0.0911534520251372, 146 | 0.1452744717418530,0.3770229471678020,0.3803576736949660,0.2013839342486110,-0.0760931639575820, 147 | }, 148 | {-0.1180609789807250,0.4220272877126830,0.6044553388525280,-0.0892213011721484,-0.2130756098076270, 149 | 0.0854084198440872,0.1201784767880710,0.3159892635146050,-0.0146315798744510,-0.5598020823711120, 150 | -0.0584051581203514,-0.0278551162402390,0.4573967222519200,0.3226998546263990,-0.3314108022870020, 151 | 0.0944796200631359,0.4549956915930480,0.7199116984722150,0.6674760132901560,0.2582489153110630, 152 | 0.2761586747039110,0.7291552773072481,0.7015375496660410,0.2333482094200410,0.0622957702550455, 153 | }, 154 | {0.1429786186343450,0.8256353570219310,0.3764036736436940,-0.6812262671415750,-0.3667074817126940, 155 | 0.1686841501002130,0.4214718568077100,0.3185874727367300,-0.4938207765077110,-0.5426243214958110, 156 | -0.1657280508797250,0.1843129771348430,0.5012475322116921,0.0288207670810432,-0.5144914427846750, 157 | -0.1341257630260730,0.2918362253525920,0.5694033372696800,0.1864465684304440,-0.0364549144238946, 158 | 0.1088462091584820,0.3674169219364240,0.3428272588105550,0.4648525346315400,0.1382306831126270, 159 | }, 160 | {-0.2068124968797440,0.1450519424760860,0.6050714030770110,-0.3451605552664680,-0.7744830489421390, 161 | -0.1121950319625400,0.0191233501413855,0.1490742322963760,-0.1740891086741850,-0.6660898135385310, 162 | -0.2930817240481080,-0.2417709223892120,-0.0606730115929151,-0.1872576074166240,-0.6227395800673280, 163 | -0.2829484400637580,-0.1552001706110210,0.0566178192067164,0.1579304430932570,-0.3429482826995030, 164 | -0.1142055446479240,0.2190095473794100,0.2851034824179980,0.1927495058400850,-0.1430769090324790, 165 | }, 166 | {-0.2776897712714050,0.1022345140431410,0.6994079141897910,-0.1085437236421010,-0.6808574157798680, 167 | -0.1524928947198270,0.2002115893985010,0.4947061242553990,0.1468718103830820,-0.1606249341519880, 168 | -0.1142463295595930,0.1143070676350670,0.1592907554601110,0.0410666860149031,-0.4938776755836510, 169 | -0.2954315999647630,-0.0136996313264267,0.0566494813532637,0.4303161649389390,0.0892799879006420, 170 | -0.1359163580162940,0.2517084263784720,0.4938870157654050,0.5663249560749720,0.2337627095326080, 171 | }, 172 | {-0.2265050754708160,-0.1180792786467530,-0.5414185348510680,-0.7687172825492920,-0.5278893874746971, 173 | -0.1965794082410330,0.2295443184492670,-0.3362682764921750,-0.9570514112096680,-0.2201516635110790, 174 | -0.1240739742545710,0.3375844524586270,-0.1730726097152330,-1.1339984030779600,-0.2458296214478380, 175 | 0.0704392464593640,0.2839657460039610,-0.1303603147406820,-0.9308253617936880,-0.4979589677798870, 176 | 0.0651390027162520,0.0613060020183436,-0.0355282568630776,-0.8596512059977089,-0.9726326773442250, 177 | }, 178 | {-0.2000249959998060,-0.0368856067405781,0.0651549909226679,0.5535609388618620,0.1378189997622580, 179 | -0.2361437595969290,-0.3374647909067500,-0.2514943110315260,0.5774829702344800,-0.0158334711225733, 180 | -0.2427978411219190,-0.4967769019116770,-0.3516367066621350,0.7569970697661320,0.0857398449529813, 181 | -0.3756159605803050,-0.4153207907851800,-0.3181749515585120,0.5608937724472660,0.1636014786287110, 182 | -0.4425972194100370,-0.4449615181397230,-0.3094721648758340,0.5838327416405030,0.4496930691423690, 183 | }, 184 | {-0.0540336496193618,-0.1926468420156900,-0.0381465052321233,0.4541432768627760,-0.0262507207782973, 185 | 0.0020078964756032,-0.4521904750911640,-0.1429686925436580,0.9805141320392210,-0.0273455968050730, 186 | -0.4557086757934280,-0.4520197524750880,-0.2442743936416660,0.8634616557154230,0.1360195123855000, 187 | -0.3527556331778620,-0.5013756059188510,-0.2990316203923050,0.6904697928301540,0.2566712403803900, 188 | -0.3720456245682780,-0.5549952578818670,-0.1926272648671260,0.6782293878609540,0.6509234067642400, 189 | }, 190 | {0.1776772075228450,0.1595864756639360,0.8170128822489170,0.9595415918242251,0.3695719903555500, 191 | -0.2140413273509640,-0.3473536070177650,0.3144922795613140,1.0254880184427100,0.0052744179936179, 192 | -0.3448226429081290,-0.6682011371467460,0.2916307974449010,1.0650034438206699,0.1791692053215370, 193 | -0.3936010893109030,-0.4898498484656820,0.0709830623758472,1.0491689591208699,0.2400634428113520, 194 | -0.4090683226559550,-0.4049829993577240,0.0928878471308228,0.9174030645453020,0.3064297493646810, 195 | }, 196 | {-0.0008281955749426,0.0683850565181355,0.1062297129691610,0.7797986305971900,0.2409785846755000, 197 | -0.1867966081694200,-0.2904219129985270,-0.1579119908361450,0.7657466888738760,0.0173614179682504, 198 | -0.4483432632045060,-0.5472784551467120,-0.5207089350191180,0.6876903105353520,0.0709363018571693, 199 | -0.6759007498737270,-0.5692454418276640,-0.3922467480762300,0.6475077420771550,0.0101043788260609, 200 | -0.5849183383695920,-0.4289150149642950,-0.5249674190634860,0.3700582161741550,0.2409157123101910, 201 | }, 202 | {-0.0244846614528892,0.1351941849756120,0.0422803111170440,0.7536337441324830,0.5035971411959890, 203 | 0.0377620024793078,-0.0166583867994752,-0.3095770728707860,0.5165092597566980,0.1531412659359250, 204 | 0.0332354883596232,-0.2662750800812330,-0.5570630154912050,0.7391774943701011,0.1938768076473200, 205 | -0.4554905820580090,-0.4949332654635320,-0.4681464267463400,0.3396159680534520,0.2257163600555560, 206 | -0.3856607838939550,-0.2647117000228800,-0.5207491525443280,0.2517196917147070,0.1573380734041260, 207 | }, 208 | {0.0342014024226528,0.3583644925586160,0.3081559287276270,0.2200754729590830,-0.1650891374597710, 209 | -0.2392866942088290,0.2118411897473450,0.6304577357724021,0.5340341000439390,-0.3780233234410580, 210 | -0.2807983646515440,-0.2151595737945660,0.8878703994705290,0.6739150629486500,-0.3563827371894540, 211 | -0.4450549412721580,-0.2392829003335510,0.8428719453754260,0.5954201283833640,-0.5151257454027660, 212 | -0.4943215931912500,-0.4583411640262240,0.3213474694084330,0.3362222583107640,-0.3517329410944750, 213 | }, 214 | {-0.0783792255244584,-0.3731802025996550,-0.1941487660941680,-0.2052858965441450,0.0948847159831648, 215 | -0.0428562456144046,-0.0550307860124520,-0.3654375569479430,-0.4513959733579300,0.1824198262081140, 216 | 0.0320005766156077,0.1131555059195450,-0.4749885092358480,-0.6625101671923650,0.1325533709537180, 217 | 0.3360264322844150,0.4599667125863870,-0.3709478209262930,-0.4423271918382900,0.1231309937952270, 218 | 0.2984863230111000,0.5431303071333750,-0.1904091557457830,-0.3529370406421950,-0.0595597810554206, 219 | }, 220 | {-0.1032252926206920,-0.4492542939156990,-0.4747602578993430,-0.3853446105119500,0.0339596154741936, 221 | 0.1388881139412070,-0.0189854013600757,-0.6415007459431980,-0.7041495326383870,0.1071606085495280, 222 | 0.3196593443967490,0.1666397762052400,-0.7016517433133460,-0.7574020546562910,0.2208260968239480, 223 | 0.4240744068987290,0.4185549080054450,-0.7286965067056520,-0.4107920912637050,0.1338150723796250, 224 | 0.3773983716176250,0.6055006257121190,-0.2835119154583240,-0.4044696917583080,-0.1195131230906160, 225 | }, 226 | {-0.1376080978486330,-0.1679493475025650,-0.0635841028441204,0.0487452825577746,0.4170296762429690, 227 | 0.0959819570214499,-0.0365787849141402,-0.0740892275380519,0.0087343663010733,0.7364114257700570, 228 | 0.2897205705671400,0.3301182842022090,-0.5613395261019760,-0.0315609919859921,0.9055335738487310, 229 | 0.6123919249726740,0.4737211826173330,-0.6858585912390310,-0.1942106076207960,0.6213097199667830, 230 | 0.7399030800081350,0.5707095559661510,-0.3014684776547630,0.0369797636758711,0.4647931452098920, 231 | }, 232 | {-0.0667587971709869,-0.4679784269437940,-0.2355780736973290,0.0546798726580497,-0.0577350574003172, 233 | -0.1937539120608190,-0.0965576474800792,-0.0859267281616433,-0.1411685528689340,-0.0144084314435342, 234 | 0.1201306362431670,0.1345243356837510,-0.1104274706574410,-0.5696311823394940,0.1624704455206360, 235 | 0.1571437160392930,0.4673621656463840,-0.1693588864096600,-0.5000574459529270,0.0886343646885436, 236 | 0.1908123192187540,0.5964232045714250,-0.1347666669797780,-0.2179049279836530,-0.0143421696684073, 237 | }, 238 | {0.0626258675516521,-0.2902177129335970,-0.3773058224873450,-0.1961256128084500,-0.2262251498858320, 239 | -0.0217615239876472,-0.2388027268194210,-0.4522886302871240,-0.4551255671578690,-0.5078870337003090, 240 | -0.1325817858515740,0.0780268570498801,-0.2503204502940200,-0.6743100881801940,-0.4752371933480430, 241 | 0.0700299807673997,0.3922673892282170,-0.1669153310797200,-0.6806143251417141,-0.1340457101481020, 242 | 0.0552022514929526,0.4757851539428910,-0.2296428045102750,-0.5416799002014470,-0.1662994661363410, 243 | }, 244 | {-0.4773986271696320,-0.8914412992648760,-0.4491008248787250,-0.2549109287885150,-0.2795265389069370, 245 | -0.4340965271015020,-0.6472751937030560,-0.5218138702660800,-0.4996144595325990,-0.2017175392220720, 246 | -0.3817832712488130,-0.5891017272880050,-0.4466051512463480,-0.1549322799529760,0.2653926943777290, 247 | -0.3542945967204860,-1.0220542820936600,-0.5323240723143300,-0.1404204716344660,0.0509565165978334, 248 | -0.4099579159254740,-0.7672838777753300,-0.1387002815920030,0.0169392177886182,-0.2766101069752620, 249 | }, 250 | {-0.1592564132337140,0.5673033599941890,0.2271152212926470,-0.2147799830061670,-0.1307764417896780, 251 | -0.1936224602293220,0.4399726219913550,0.2376323548431980,-0.0618359560609791,-0.1236960283074250, 252 | -0.1392007148661810,0.6515676326563250,0.1910000040629390,-0.1599485260782790,-0.4134054302634480, 253 | -0.0747274937595455,0.5994193622053960,0.0475425026733595,-0.4788963553881090,-0.5451980310645980, 254 | -0.3747843276948060,0.2584027830975870,-0.2685984081669860,-0.5465326925091341,-0.1559676480778460, 255 | }, 256 | {0.3402579607731290,0.9701483884281720,0.3562921948540620,0.1895625353993620,0.0086133099676680, 257 | -0.0279112151166204,0.5363220073601031,0.2219934302449620,0.1786710175472090,-0.0446610564022964, 258 | 0.1610206820773320,0.6409869547024130,0.1196770882033910,-0.3219014930666850,-0.3373865667151480, 259 | 0.1637774070108730,0.8673356846309110,0.0956859029441484,-0.5537519239707990,-0.0986483986723470, 260 | 0.0970379331934427,0.3376011606759480,-0.3235360452929690,-0.1519912098274630,0.1020147147482550, 261 | }, 262 | {0.3287387518379680,0.7675856755364530,0.1089980558572620,-0.3411989890387330,-0.3199269813988290, 263 | 0.2172383021362090,0.9705829651704691,0.5383662202572340,0.0840550334471726,-0.0909159758729036, 264 | 0.3757371320102430,0.8237460653021230,0.4693601163058010,-0.2152687942970970,-0.2931332630752120, 265 | 0.2958099768699320,1.0176410729843699,0.0910782643925801,-0.3824696667068070,-0.3806717819390480, 266 | 0.3560462564399620,0.5626668471409710,-0.2454425069447440,-0.5034695237073440,-0.1199024160121050, 267 | }, 268 | {-0.7029829633996650,0.1533614827461030,-0.0627805042580005,-0.4965197207509610,-0.4576380143566700, 269 | -0.4532455832733670,0.5900739581971950,0.3736382422859590,-0.0116978937516045,-0.1506565102576500, 270 | -0.1607226104538140,0.5885519313578490,0.3425264119586070,-0.3733272866320780,-0.4560248347709890, 271 | -0.1996031430871540,0.5733885773846800,0.1355128837014710,-0.7180799345649550,-0.5814576456169700, 272 | -0.5093279557838600,0.4740007980369370,-0.1926259813669590,-0.8776304003735860,-0.3451651813007750, 273 | }, 274 | {-0.7010232563561030,-0.0086918292982788,0.0029795367496692,-0.6164583930093750,-0.4063171440232810, 275 | -0.3849750581404840,0.4003678095464440,0.4957207832496950,-0.1235120691686540,0.0430733838854252, 276 | -0.3279908565036870,0.2110692756166840,0.4453933610990010,0.0968166351486184,-0.1116605970201590, 277 | -0.2433192314666870,0.4624636374514690,0.4514875656587880,-0.3040460966305090,-0.4221533081193940, 278 | -0.2414053698337590,0.5735942171782560,0.1418458084328900,-0.5813902972593540,-0.3192530329347650, 279 | }, 280 | {0.1268365589560580,-0.1650935132701310,-0.1405521123781610,-0.3002895606858930,-0.2606685724691540, 281 | 0.0660934230611310,0.2314979317571060,0.2631923983893970,-0.2199156679217330,-0.2142233597441040, 282 | 0.0923702613939489,0.6677050132348010,0.8152267104567020,0.3428359264934840,0.1025606237145670, 283 | -0.1418135193141680,0.2297708746342640,0.6229598306424640,0.7545914566509661,0.4194314354070600, 284 | -0.5395981533731540,-0.4897365196677370,-0.1608022757619630,-0.0694051856317440,0.0851212432713002, 285 | }, 286 | {-0.0867546441924413,-0.0714466576382420,0.1646063016437980,0.3146474752583890,0.2294611165461410, 287 | -0.1057972532120940,-0.4145054354200350,-0.1506244104594240,0.1024513735152180,0.1547243891258500, 288 | 0.0947550899831328,-0.3437522144273800,-0.6006215657199000,-0.3337066928567860,-0.0058520512126077, 289 | 0.1960334149538040,-0.1139163456714520,-0.3963353472132050,-0.5603321327287050,-0.3240922539727930, 290 | 0.4301995096041280,0.4229305789745690,0.3085895491523570,-0.1207493292378630,-0.1575866783186170, 291 | }, 292 | {-0.1666638091946970,-0.1948109577552500,0.0529471057916151,0.2835094238499440,0.1428572952712430, 293 | -0.3008370930954600,-0.3296658409925590,-0.2301332827057550,0.0780603659886724,-0.0070577019213748, 294 | 0.0733227494657724,-0.3514268461632160,-0.5494099696318670,-0.4827334387766380,-0.1593090350858980, 295 | 0.2056808392978650,0.0823166380143623,-0.3039044120345550,-0.5653805317055890,-0.4804410532930930, 296 | 0.5728603488729110,0.8442945874937100,0.6916732902169340,0.1580695074687850,0.0872782980378663, 297 | }, 298 | {-0.1232078658586280,0.0927929942866059,0.3267009647614270,0.2152867523313660,0.3281550535540870, 299 | -0.2717410663654540,-0.1272990075632080,-0.0236078035450978,0.2658661866783630,0.2024943058182980, 300 | -0.2776619346623950,-0.7587974999543180,-0.3966125563965980,0.0770454164408671,0.0808124899161988, 301 | -0.0203713416352315,-0.5215539700878260,-0.7186724332550970,-0.6114760469164781,-0.1572499812383280, 302 | 0.5138551639315780,0.3861933024954510,-0.1152983035023310,-0.4790577448906430,-0.1939877460327700, 303 | }, 304 | {-0.2325187885693150,0.0488592648273541,0.1370798446100690,0.1681889841050660,0.3136725998120190, 305 | -0.0901338295782807,-0.2335821088007330,-0.2115047229470000,0.1236352924638490,0.3490637463204180, 306 | -0.0554982775777134,-0.4355669153437760,-0.5391616061833850,-0.2287856601712650,0.0258720624218289, 307 | 0.1302963011977340,-0.1533765023255080,-0.6330183303134430,-0.5536665115946250,-0.3873284542592840, 308 | 0.3529999433241470,0.1825510900005980,0.0936807585072200,-0.2707598940849940,-0.2478557739791090, 309 | }, 310 | {-0.1786424865425750,0.0325503060825771,0.2231499651320690,0.1117878281390720,0.1742750053260480, 311 | -0.1806135846367030,-0.3199533557930080,-0.0536790670434740,0.0701555014646652,0.1790524765066280, 312 | -0.2013808139571840,-0.2540664490179530,-0.3025263965121100,0.0037206698146291,0.1090049711921390, 313 | 0.0390883848234939,-0.3222334754451830,-0.6662341085276720,-0.4590481437507830,-0.2905903548666480, 314 | 0.1701174863358060,0.0230337725370571,-0.3322943352746230,-0.4433517245485640,-0.4400814241709300, 315 | }, 316 | {-0.0198688461006107,-0.5982307554595930,-0.2403198679367980,-0.0252468768614707,-0.2972091569913310, 317 | -0.5217006330008500,-0.3249765479249520,0.4387325324732820,0.3132791027001150,-0.4815579748516500, 318 | -0.2488851044293730,0.0316726538916976,0.8221373539330580,0.1584836306712780,-0.6711641060128580, 319 | -0.0496162348082461,0.4245553282587670,0.6400591336758980,0.0136510904378587,-0.3930336618861490, 320 | 0.0698459209792611,0.7095072492814281,0.8217164577211770,0.3941791837178070,-0.2075831368975420, 321 | }, 322 | {-0.3064705859747030,0.3042323561012290,0.2133674541577420,-0.0535749219718899,0.3815261333004860, 323 | 0.0572283713125449,0.4813167185492290,-0.2718297152609550,-0.3597501888348300,0.4258599233877990, 324 | 0.0760301106528210,0.1015343385473950,-0.4183796277535920,-0.2473136187409430,0.4968484305212970, 325 | 0.0813099062411206,-0.2214252140542520,-0.3915957049386100,-0.1588162422723430,0.2549301793538760, 326 | 0.0254020473136747,-0.2975617781863210,-0.6192891679370580,-0.2418865580714020,0.2947109523701570, 327 | }, 328 | {-0.0280002025434367,0.4707928905884130,-0.0982264300469193,-0.0693906728447212,0.1916761604986630, 329 | 0.3486758098869730,0.1937368890467890,-0.6357044035235530,-0.3656998816129090,0.3379163418741660, 330 | 0.2123242177852350,-0.3435419602765590,-0.8359934355905400,-0.1863568242588260,0.5124996679589940, 331 | -0.2578406824753160,-0.6512900141416190,-0.6857992455594260,-0.2309813181822290,0.2097239805577940, 332 | -0.1663892032721110,-0.6234643839405930,-0.5266795729083830,-0.1540006792404510,0.1906142979766580, 333 | }, 334 | {-0.0343351574216735,0.3048843485487280,0.1460406823028890,0.2147454669525740,0.6428866404938880, 335 | 0.2548226776312960,0.4861959409579690,-0.3520818086517150,0.2199877119488280,0.7212735874634590, 336 | 0.3190168806904550,0.0577609609097626,-0.6528132531445791,0.2879660749016720,0.7516918365608110, 337 | -0.0837182040258561,-0.1488340961301040,-0.4699541443244150,0.3588744727503760,0.4277677554490460, 338 | 0.0718974571542770,-0.4404958278619380,-0.1517364961946990,-0.0741384189069044,0.1981533103070260, 339 | }, 340 | {-0.3923527716304400,-0.0429990878938500,0.1704035835616620,0.0115029136333243,0.2236583649844040, 341 | -0.2447603653565360,0.4382674904434820,0.1551502311674190,-0.3610696986838840,0.5346479024830250, 342 | -0.0076582396520920,0.2742812439420740,-0.3617259252115850,-0.1173978016334610,0.5891924361643091, 343 | -0.0677299421812276,-0.1924887476737610,-0.3833466939350430,-0.0058209863257143,0.6140701373011530, 344 | 0.1209524547075650,-0.1061937047089000,-0.3101760631674750,-0.1287783033829790,0.2227339137165590, 345 | }, 346 | {-0.4433485324983620,-0.2765176431037600,-0.0267422330013158,0.0358161290411395,0.2484333966199200, 347 | -0.4433637514663070,0.2353269474661200,0.1893669192186820,-0.5093214197194480,0.1021678912467030, 348 | 0.0236544807926646,0.3358396028704260,-0.4093093726241860,-0.7885698283617130,0.2472720483981420, 349 | 0.1037862329826570,-0.0482139769594871,-0.6374026655594111,-0.4301011157569970,0.2545222616691450, 350 | -0.0255551331274564,-0.1573535023709970,-0.7349836398804820,-0.5559641709588000,-0.2055334812186150, 351 | }, 352 | {-0.4047626975232550,-0.0891341580681688,0.3824242094025500,-0.4862179112780370,-0.3923077401673380, 353 | -0.7850274021463350,0.1606688932266050,0.8959523750668370,-0.2365772241340570,-0.3369262885711730, 354 | -0.9131384978222230,0.2407698855475410,1.0482286298159600,0.0687525690209636,-0.4365358264531130, 355 | -0.4754535823165590,0.3028046510450490,0.7079560022982741,0.4095092165250000,-0.4380597712715380, 356 | -0.3647706102257690,-0.1429163628917260,0.3605439024116850,0.4045901652526680,-0.4961542527351350, 357 | }, 358 | {0.0162073779722494,-0.0821257257620747,-0.5984575369313540,0.3619610615547870,0.3292484928456980, 359 | 0.3281229986296430,-0.0771426209258446,-0.9350099925141970,0.2531947990648410,0.4564149965041730, 360 | 0.5564683534252120,-0.1805426378880720,-0.7856898566884780,0.0434456151759600,0.4874700457899120, 361 | 0.1900646987145840,-0.1212246009886850,-0.4618746053528970,-0.1357171412479490,0.2376200769014760, 362 | 0.0355318026682736,0.0066691695001471,-0.1579486185599650,-0.3843958071537530,0.2165479743419870, 363 | }, 364 | {0.0376636448483602,-0.2264137769306530,-0.8064634262134490,0.1888172364834820,-0.0243672779523865, 365 | 0.4617344100128920,-0.3967277251238020,-1.0993656567242300,0.0719977113055679,0.0536771508909540, 366 | 0.4829004078526390,-0.5882707139960620,-1.0769715422427300,-0.1234639983749680,0.1720687865141140, 367 | -0.0262063135520333,-0.3715457502994590,-0.5989208385134091,-0.5012604723715010,-0.0059126806391060, 368 | 0.0296454811948894,-0.0394625172896781,-0.5061980900254960,-0.6234646814900821,0.0724084251879636, 369 | }, 370 | {0.1847142712678890,-0.1230051059595440,-0.2519355017897700,0.8002732828679470,0.4865282634458050, 371 | 0.2822034719986140,-0.4313064633893640,-0.4014805195405360,0.7393415495122200,0.4296276981095310, 372 | 0.4957936416594780,-0.5728847582249240,-0.4314350341341560,0.6626115398176800,0.5189641622690350, 373 | 0.3801448988608430,-0.3366443354432630,-0.5870679080517360,0.2251549974993640,0.7251806451570210, 374 | 0.2636556225634750,0.1857805911121570,-0.3211830731666740,-0.3995462904637320,0.5849420721426190, 375 | }, 376 | {0.0010702958932998,-0.1169020638510250,-0.5566539915260270,0.3150238740483620,0.7461971531963491, 377 | 0.2997466352386330,0.2194744296529240,-0.6046278070856770,0.4026563984628250,0.7618352212075600, 378 | 0.3572245841538430,0.0686260825559092,-0.6138804919774270,0.3295715601038820,0.6212114468354950, 379 | 0.2928593844193600,0.0402375292018484,-0.1211580456881060,-0.0131369633685022,0.2514094297653140, 380 | 0.1347481885169000,0.1406956223990710,-0.0099538813701029,-0.1957021420779750,-0.0152456148270573, 381 | }, 382 | {-0.2121207259231360,-0.0504117184204738,-0.5776538074577090,-0.0050422198940486,0.5841050628257010, 383 | -0.0770299544611534,-0.1035961228519610,-0.9062703416457880,-0.3528092109606920,0.3195886554985910, 384 | 0.2201607791325490,-0.1089026778544510,-1.1183813725908001,-0.2633254738697830,0.0193166693763246, 385 | 0.3234997416728030,-0.1745078004740550,-0.6481915430443510,-0.3076685588690490,-0.1908329218984330, 386 | -0.0520249674478894,0.0024986155525004,-0.1433919888894710,-0.4390776138457160,-0.3587493368679050, 387 | }, 388 | {0.1916883582445990,0.3896455943564880,0.1951709554256690,0.2712024661871380,-0.0566124666876933, 389 | 0.3078045802369160,0.6428634472165510,0.5561949714605841,0.6247921686886560,0.1922425125435040, 390 | -0.0936368076170959,0.7286916133983760,0.6482208767125500,0.5594587371048240,0.1414154752559750, 391 | -0.2502050620046360,0.1840508981222560,0.3342746203521480,0.0988751316100849,-0.5146534945989040, 392 | -0.5286054339952560,-0.2087161715072700,0.1553954765522980,0.1876839606617470,-0.2238069965166850, 393 | }, 394 | {0.2111215309202890,-0.0518855020670436,-0.2005106339604750,-0.0329559217910120,0.3645613088371820, 395 | 0.2127823916218530,-0.3643753535539060,-0.5148864256739830,-0.2980819208122800,-0.1155587559456390, 396 | 0.2909022693557340,-0.4052303951350890,-0.4615855724285070,-0.4429267943855780,0.0258907995352621, 397 | 0.4902058172426810,0.0703172818569351,-0.2701459853318970,0.0388885614673646,0.4405256326484430, 398 | 0.5078607381735441,0.6963733274995180,0.1867952263280910,0.1420899422406620,0.4648085737168150, 399 | }, 400 | {-0.1105096051712180,-0.2232353188088560,-0.2828698693567600,-0.3375511039902450,0.0000028384920743, 401 | 0.0114521466610936,-0.6916726836619790,-0.8105814531556940,-0.7056216470732261,-0.2415953396835340, 402 | 0.2635667679343230,-0.4936967241589310,-0.5961066445609120,-0.5061682502402030,0.0397713717788215, 403 | 0.5825647438338940,0.3701847983322760,-0.2497324298134680,0.2117635079312990,0.4193044244460180, 404 | 0.5630871507920690,0.6082788104835830,-0.1453391146429940,-0.2728332994999080,0.0049567731227392, 405 | }, 406 | {0.0124047113497829,-0.1029848035164460,-0.1517025140809730,0.0326591600677246,0.3677024183074480, 407 | -0.2771903397851580,-0.5536895985758200,-0.6559588497867920,-0.4681653719523430,-0.1145739520170480, 408 | 0.0555982209117628,-0.6157511880654520,-0.8405645273590020,-0.7633447623065400,-0.1684179651249690, 409 | 0.1244371936879030,-0.3269701873351880,-0.5532158436258070,-0.2539603371295130,0.2748428728333110, 410 | 0.4782145172650000,0.2451421812705290,-0.2314242500155500,0.1895701949100860,0.4656977297501130, 411 | }, 412 | {0.0303053220016183,0.2599936156774370,0.1605432349314050,0.1722466746521410,0.3183194441901950, 413 | 0.2781579617927160,-0.2156866908811000,-0.2960599537470080,-0.1600544204185230,-0.1024969408858700, 414 | 0.2619218665406600,-0.2062794519029840,-0.5683658236401810,-0.4273423891497810,-0.2121195541174280, 415 | 0.2587643873057170,0.0748725799955948,-0.2197604380604540,0.0082738152014046,0.4294061056244270, 416 | 0.2820128316028060,0.5546656162860200,0.3272397539964640,0.2505950782540840,0.6580976095616390, 417 | }, 418 | {0.0238248853511987,0.3778964822805730,0.3447814806592500,0.2271157302475370,0.1692769325366950, 419 | 0.2132335172051200,0.0235317644780125,-0.4219428025292440,-0.2705713779171730,-0.0620350381697289, 420 | 0.1825296537198630,-0.3297402859583320,-0.7008827198550510,-0.5750052561858710,-0.2978928807431850, 421 | 0.3019046974573200,-0.1508994390681330,-0.4926497698914900,-0.3080619372924030,0.0274989498092668, 422 | 0.1758541735280580,0.5458625199125210,0.2524531203367260,0.1560912452257320,0.3182090606555670, 423 | }, 424 | {0.3290488474110980,0.0300686257972053,-0.3801805631664360,-0.5355888187378750,0.0150871325727982, 425 | 0.0512246748677587,-0.6131305540111840,-0.3493210124937850,0.0477036209354902,0.3664207207136860, 426 | 0.2121574086302990,-0.1130672827905590,0.1843417019206260,0.5186230419562610,0.2207479239361140, 427 | 0.2584127220562680,0.5566258832703610,0.5454090629023020,0.1061499946561270,-0.1666432094615870, 428 | -0.0757761444902244,0.2422485361545880,-0.1031939740918150,-0.3464509729072390,-0.4794890276216080, 429 | }, 430 | {0.1020515090834060,0.0824718311886694,0.2016200001769450,0.4040312862915300,0.2364914210140550, 431 | -0.0081496134652189,0.5713712247478140,0.4039727266474190,-0.2563050077077490,-0.3475587047047120, 432 | -0.3382085324129410,0.1589384663624230,-0.2498471540032030,-0.6752053168693870,-0.2172624014515040, 433 | -0.3605928837800260,-0.3680868974738440,-0.7907335755892950,-0.2166112329309720,0.1187851431906110, 434 | 0.0311174004143202,-0.3440822328384380,-0.0773857635170024,0.4699845764750150,0.5207597404519440, 435 | }, 436 | {-0.0353765186028668,0.4098656976346610,0.3979922132912880,0.3861208277010470,-0.0441691446965645, 437 | 0.0327582088659521,0.5968879910093320,0.2644680573048640,-0.3645180189930500,-0.2719705819480850, 438 | -0.1983350934780780,-0.1871686966857720,-0.4268399441522990,-0.5174027373064110,0.0964347273419318, 439 | -0.1837058377040870,-0.4618835819453450,-0.5663596205681120,-0.1415699220692520,0.3267091905038360, 440 | 0.2671442820635930,0.0629843603537283,0.2464333456039650,0.6882876420534380,0.6569031756873780, 441 | }, 442 | {-0.1697361076725390,-0.1828652794216720,0.1954097657431710,0.2818873187390400,-0.1345470813271440, 443 | 0.2767576820809030,0.3670977393876020,0.1491999002879900,-0.1998492012359620,-0.3164093503408980, 444 | 0.1656940599636310,0.2634499170446190,-0.3388437467231890,-0.8372182218697110,-0.1871632092870410, 445 | -0.5388673456631220,-0.8251626035016250,-1.0911931015965901,-0.4325993469454450,0.1791939349891190, 446 | -0.3080211312629300,-0.7447605300211180,-0.2201854313331240,0.3621107949374340,0.6273771304894680, 447 | }, 448 | {-0.0792303067561252,-0.0336744771318694,-0.0335579712892256,0.2536016608684370,0.1605103098035980, 449 | -0.1693030430988670,0.4091016084463630,0.3846613588579450,0.0348043452197220,-0.4018306374330510, 450 | -0.1789858238310530,0.2039515498672770,0.0254061701447004,-0.5442353324953330,-0.3848254450982050, 451 | -0.5146608507000910,-0.3512516563513900,-0.7429165922280100,-0.5370931287805940,-0.0472691343981724, 452 | -0.3381150346238690,-0.6569276469723060,-0.5503064670536640,0.2424539884653790,0.5423494975943480, 453 | }, 454 | {0.0820675135770152,-0.1434419791419260,-0.2364598132451160,0.1861540934211070,0.4651791398640470, 455 | -0.0339390405259672,0.3403890861851450,0.5562199315219950,0.4476342693054580,-0.0013902895441782, 456 | -0.2731036676006910,0.4508937792126820,0.3699553647133430,-0.2920863253600380,-0.4320339370041670, 457 | -0.3881965543797950,-0.0303093694198901,-0.3646962016279240,-0.5676924636633720,-0.1837773821570290, 458 | -0.2218023577626760,-0.5319159360573320,-0.7190397372992700,-0.2471016666037360,0.1870751392124070, 459 | }, 460 | {-0.1306822856123110,-0.0964368310701013,0.1770181749582010,0.2991584945005830,0.2347657586087830, 461 | 0.1105143574060760,0.2869825096510850,0.4127757471527330,0.2568858774300260,0.3471010664410980, 462 | 0.5298839316635410,0.3206917468446090,-0.0715478609035747,-0.2032707984695310,-0.3402540643364440, 463 | 0.4265709425578210,-0.1492082986684140,-0.6246127311459210,-0.5500220373029130,-0.5203977208130500, 464 | -0.1256774629908950,-0.3357635078528990,-0.3346933547305240,-0.1892320645123500,-0.5374776398245320, 465 | }, 466 | {0.1690007376324110,0.0140014634831161,-0.3107806676910580,-0.4694475659257650,-0.2575653170272020, 467 | 0.1117364436807770,-0.2632807534118860,-0.6690272157018560,-0.4628901485471720,-0.2443449896535610, 468 | -0.2164553951139420,-0.3635230392718210,-0.1518562045511610,0.2389105460976760,0.2545744779450240, 469 | -0.2622853915624650,0.1515235179456630,0.6073787817055940,0.4549582556667380,0.4206993622696550, 470 | -0.0553388971525619,0.4590826461199810,0.1964251768107530,0.1337043199942880,0.4755367923353570, 471 | }, 472 | {-0.0018650269735588,-0.1637251958259670,-0.4784020461155340,-0.5008070716052050,-0.2525889838228560, 473 | -0.1449575273938510,-0.5526279781292180,-0.6786658782201930,-0.3270808982221200,-0.1113434769063930, 474 | -0.4476208191310530,-0.3069375538317370,0.3191819004809980,0.5466320105790580,0.5198398924897860, 475 | -0.2398873013624520,0.4075932462515570,0.7960938455859170,0.4750440361772910,0.4182181143052790, 476 | 0.0828910253717128,0.3230570915957650,0.0003357405028431,0.2170630356420340,0.2969131458935240, 477 | }, 478 | {0.3637908899111450,0.2559518690872930,-0.4013662761797270,-0.6500287321221270,-0.3055195893526530, 479 | 0.1828477695045690,-0.3679960342173240,-0.7759795565076120,-0.7607953212422840,-0.2847681764296320, 480 | -0.2272196730611890,-0.5345070582536650,-0.2273691635547000,-0.0128303232890801,0.1722321205236250, 481 | -0.3906705166026600,0.3037161944009390,0.4321550689442440,0.5681241744454501,0.6299052322299040, 482 | -0.1053165711137450,0.5010011331467450,0.5091586246594561,0.3368078864799500,0.5388459904848880, 483 | }, 484 | {0.1988023714242660,0.2266089854259010,-0.1270250081753570,-0.4086349321084810,-0.1056454095679160, 485 | 0.1052660372779490,0.1294756673006060,-0.6018529160960110,-0.5676534360889670,-0.1671435990477900, 486 | 0.0476784814925620,-0.3054838212631110,-0.4055959967790510,0.1378189690622280,0.2469075304728960, 487 | -0.2562191183272610,-0.1256623231180780,0.4267923168614710,0.4465898135262530,0.4334209970471800, 488 | -0.1879467217963810,0.5653606641890790,0.5290949176709870,0.3443261058679800,0.3699264361589650, 489 | }, 490 | {0.0072205474094322,0.0987273361401743,-0.1300701283661550,-0.1483865232389260,-0.1803719065243760, 491 | -0.0359081431705849,-0.0438666049553385,-0.1997498615709550,-0.3950595963368580,-0.1501767980312900, 492 | 0.1012469174017620,-0.3870980572266870,-0.8644438273384471,-0.4845340201137880,-0.1975918431805090, 493 | -0.2712866516283270,-0.2129314357587750,0.1455500988136270,0.3843628148313740,0.2559573336720270, 494 | -0.3871179982020160,0.1851464352029160,0.3979815678158760,0.2973707333322150,0.0740310173743629, 495 | }}, 496 | 497 | {-0.00749697556126653,-0.0760937776406446,-0.0155045840198304,-0.126102525608299,-0.139758950833980,-0.184553736347720, 498 | -0.00228032020143601,-0.0940739815268324,-0.375679312537373,0.00141485348030061,0.0588169985727321,-0.0677191326051983} 499 | }; 500 | 501 | struct S4 s4 = {{{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0}}}; 502 | struct Output output = {{0}, 503 | 504 | {{0.00731424476979909,0.110026309233215,-0.259948181634811,-0.0169709130457267,0.285436883475728,-0.0875216225674583,0.142981276363920,-0.112825968413074,0.490367814921228,0.361228276161944,-0.357817859013723,0.0783095363027093,0.0588447208569842,-0.334768940744896,0.0984583854290893,-0.369880894659986,-0.117012615323397,-0.432694828663287,-0.477595207846875,-0.992954845905545,-0.723148450591813,-0.109617925191257,0.381000734801176,-0.342098937331303,-0.477511552980608,0.162489690697262,0.286537804352413,-0.411245130313160,-0.758813181575708,-0.240274830662050,-0.179982642567454,0.180256247089087,0.461364092270786,-0.0751822264655324,-0.783967002601668,-0.178370268982920,-0.115708470246361,0.349260923610056,-0.689255886415415,-0.762926212411715,-0.265772139245721,0.462246295725652,-0.158659975699671,-0.416408118493087,-0.629277248796181,-0.0742417772822557,0.246814937085359,0.0677646176291365,-0.737318772574774,0.0316883829231928,0.111259850529470,-0.790641851334225,-0.383981726253938,-0.0257418748750093,0.455058142512194,-0.323583153720135,-0.282591541015645,-1.10851111146791,-0.785359109260844,-0.0196329507571225,0.0180121394214619,-0.832271920866709,0.0204016338236062,0.567386606160754,-0.0428041142537441,0.0205407051584972,0.588422776566477,0.192424486741167,0.0661530106712824,-0.591828047173098,-0.608364516325056,0.0160252036979967,-0.301420516355930,-0.648692275301284,-0.302527953658751,-0.569809888294898,0.100241056404181,0.715156554079739,-0.408298231162223,-0.440372126637718,0.300015657149679,0.459330763698547,-0.554109931687450,-0.505569935949579,0.0317667423491114,-0.553615804469574,-0.404200296120850,-0.878152721338033,-1.25961298224094,-0.739277109072840,0.373452785288599,-0.518246764723315,-1.06138431893291,-0.221354246435259,0.275361269670936,-0.706753828471605,-0.227462216021182,0.221358397047100,0.469375243937319,0.834271982182689,-0.203427721807082,-0.308741695520343,0.444198680823123,0.119605284932394,0.0732933901498177,-0.121781466294256,-0.291354466759086,-0.469684248151739,0.531358226085729,-0.199764684422112,-0.701142939423455,-0.500485643739603,0.103664401468921,0.203910224241510,-0.110131243578320,-0.207341001670321,0.154560480951487,-0.307169807489309,-0.354596448416871,-0.145051305795153,0.368247583418959,-0.750531354177325,-0.707514856389255,0.0994299776363724,0.168337135111776,-0.138615007200159,0.0555925173957338,-0.0363498714980126,-0.328516402243345,-0.140982081265857,0.473771145882442,-0.0591431982636766,-0.721084173803236,-0.506714208035460,-0.181612395038967,-0.158274275170741,-0.361976695020154,-0.451067612229954,-1.10879090875056,-0.108085498808931,0.346849532701260,0.0787652418842133,-0.253469103664751,-0.247822772074156,-0.189998940078663,-0.0404154672708107,0.124071377084144,0.391546572887520,0.562565873448722,0.159748977267507,-0.756845223757666,0.278152797429330,0.474654553122182,0.178508216673723,-0.526865367352122,0.172929692797559,0.273929099624879,0.758184131737148,-0.0492170961922996,-0.394697784772043,0.195522418093283,-0.0833550314405760,-0.0993421016846846,-0.482003484525503,0.0879908431412269,-0.0631715925181714,-0.0680505869251499,0.199551870177574,0.0718519627794723,-0.271114180699739,0.190317716467747,0.543820769065493,0.234339236890001,-0.249911851595456,-0.135630603905134,0.277626519575031,0.0365998435492090,0.237821913256634,0.274217443166948,0.356194764937015,0.379214818780823,0.697435917744152,-0.641994724576497,-0.398868335798051,0.125968323792370,0.575376298963804,-0.935734412642960,-0.224351443051112,-0.159419165009238,-0.121217547750941,-0.0104513243296493,-0.257786582809217}, 505 | {-0.145686079132405,0.114220426758668,1.03532100235815,0.723321771285801,-0.0398413267683507,0.0933048603526623,0.220535600769378,0.328375505766096,-0.143938397204715,-0.0827748745455033,0.487710281981673,-0.306957470527410,-0.0595802946763749,0.518122818019526,-0.00101447894482262,0.135698056074953,-0.876179212839732,-1.12218857372824,-0.838597855955696,-0.145106973330775,-0.373044822246885,-0.948148482944547,-0.778813562758176,0.221311623558143,-0.173733470843776,-0.891960169007152,-0.0479206863019146,0.275484593933955,-0.523185886012978,-0.415422270821935,0.174855672490407,-0.504301601168879,0.260867843108912,0.0456709205979643,0.362620841159394,0.600766943997776,0.217402202464408,-0.775416303163250,0.982416917793918,0.248562218762133,0.246901813540703,-0.187537553454312,0.640959479951992,0.00798221061072361,0.400783491144588,0.384546159155450,-0.310771992260058,0.355191750949516,0.374784941285052,-0.870125407193105,-1.33980895694242,0.0555111805826870,0.0131662928456792,0.597516821912935,-0.375342657208727,-0.0263807505307236,-0.334473552866467,0.742152645373580,-0.203862776658405,0.610660516322496,-0.262039464859337,1.27022217646414,-0.369019007571853,-0.682255842960498,-0.395568866830831,-0.502284438068872,-0.481845925390207,-0.149385253204276,-0.250699113291460,-0.216868384873175,0.407667128559247,0.0218426540685747,-0.134513739899267,-0.433089263920220,0.0678699356240792,-0.290186600090889,-0.0732344270920831,-0.420452710828938,0.599165773098134,0.0217017803186073,0.300688868950010,0.572873761953948,0.00570729865279061,0.0916309840906440,0.00999675007985099,0.465883954406898,-0.232612785134824,1.08655340135501,0.440352467651785,-0.00765924238285941,-0.284233710600731,0.756359101037893,0.747060716657349,-0.408619587855421,0.393311727486653,0.686520133351741,0.0101356020634728,0.708491656587096,-0.177437513866052,-0.0121509858650569,-0.292602938088078,0.259263345709651,-0.123387373177243,-0.114732211382300,-0.0660394187069098,0.0607141726881856,0.252893107349568,-0.120533709987460,-0.117044162124112,-0.221585872190162,0.676439442722590,-0.0867572342633728,0.0623013567352239,-0.183345050282520,-0.0925913151940959,0.0239769065377737,-0.478250828804826,0.348199139125995,-0.0634460520229460,-0.522288305936328,-0.534752051034463,0.625396950577359,-0.323936703982177,-0.146316645072739,0.0271648982269615,-0.0865233396934215,-0.0901206286277984,-0.273843865839599,-0.454943963585278,0.115925769527988,-1.36016294917845,-0.478144959738293,-0.464236767866513,-0.284455097471456,-0.219530360583446,-0.387501739527522,-0.576357483047794,-0.422846750970240,0.0620742086451891,-0.572990737372386,-0.382297324739409,0.134506158780045,0.226637268468346,-0.483109146013061,-0.677988793778975,-1.23241212444665,-0.856740722975238,-1.17961352281333,-0.576537526165528,-0.674292374431456,0.518426788160508,-1.07355003575335,-0.165470260808474,-0.400596724031510,-0.187827387275643,-0.921916720737303,0.387873229442400,-0.683900517571736,-1.25924502609508,-0.421620751947360,-0.0327646346206022,0.661303907671136,0.449357074025992,0.342134084015251,-0.0636355319788860,0.0592233499015042,0.0185336445191088,-0.361443072241611,-0.301994055189338,0.425313855998255,0.0583708421021093,-0.167714667261987,0.195831209469400,0.311891678317192,0.0817944823737262,-0.0726779550830765,-0.0780080943254053,0.0552996663619672,-0.110460099342105,-0.630292414543686,-0.243521243820645,-0.894768373621462,0.418176370202206,-0.323426527152462,-0.110345370655693,-0.318497381780776,-0.0617341609302320,-0.554275690988428,0.0736597650461567,-0.242868061498985,-0.714662168067544,0.317944672615261}, 506 | {-0.129393820351655,-0.0258575959933697,-0.590441180481572,-0.470877175774465,-0.645153296745292,-0.449051570876426,-0.306277858111025,-0.398534990246374,-0.298922664656051,0.154186888766123,0.148534855310560,0.570787519491144,0.660364316185227,0.321247036270133,0.0857723685802147,-0.816353879842634,0.989436193721177,0.885237762194879,-0.109094596802043,-0.963566153065010,1.26005801814174,0.550398267732358,-0.520783218325271,-0.823498615171869,0.450103152931120,-0.347877224306592,-0.571461979516711,0.199160143133162,-0.180071246098710,-0.0134668057770712,-0.203041641023145,0.673566097414796,0.309638895559404,-0.231390447836980,-0.0434540156582878,0.308823071319623,-0.239113648094538,0.0129028263454044,0.429688846322707,0.376942967225604,-0.266878769913102,-0.264630105955823,-0.0131115196386529,-0.685057855638341,-0.451158659682779,-1.07142361188648,-0.897201264714793,-1.20208160478015,0.316846655952429,0.821943371661431,0.353787584531885,-0.917281887901385,0.459058776023046,0.621423001946887,0.0150346613996590,-0.397218975565043,-0.778830624401384,-0.879210325343596,-0.139504883925104,0.333186191782619,-0.237118743342372,-0.833708413694041,-0.218775161860055,-0.129127650770659,0.263505867184333,0.824474373735811,-0.0719920958358710,-0.349566793595435,0.549575673347895,0.0770128660034296,-0.451933223866015,-0.555504566064563,0.0955733538959120,0.0766468643694684,-0.0739837646522901,0.0696582214553555,-0.298606025327683,0.289865139461957,0.564524619285749,1.02137485144196,0.291396864947760,-0.230366419070290,-0.440280693158226,-0.0787455640441250,0.291025834515858,0.274845172694885,-0.354146612525890,-0.578767065644084,0.702336851938408,0.202760699739784,-0.266517736480582,0.597602041858045,-0.0573521485457583,-0.439847334902912,0.233478040582783,0.464829160858380,-0.158271490011075,-0.306051914286369,0.411610811139402,0.528130811798629,-0.779081670408872,-0.364599268170449,-0.234171617314297,-0.622323387749834,-0.778860578511581,-0.238463247800948,-0.720215693316484,-0.356127637245035,-0.212207435022172,-0.232419317146509,0.195206452377997,0.0433164397269862,-0.495512343746871,-0.321925472132920,-0.843089090027260,-0.671993616808250,-0.172309362384735,-0.331200204184073,-0.467146722725965,-0.728881675223391,0.329178389130532,-0.177940546217780,0.420111445325695,1.25129553541477,-0.0819941315184769,0.128592815330096,0.364121535206362,0.641893581237321,0.277925211319442,0.474385471658054,0.0947919442576980,-0.274398591687612,0.768500277455797,0.303382736935696,-0.391535735551569,-0.872873535125965,-0.551322781456980,0.288962537149246,0.143435641813018,0.506068059643329,0.714499656316920,0.676265142398263,0.653213423538764,0.777560950747756,-0.377782092515970,-0.625761883314441,-0.419974460869139,-0.184814775818836,-0.599885748281678,-0.319207306173384,-0.279978938701846,-0.117844109959464,0.371224224582260,0.840241549251574,-0.0328771575345258,-0.189042071828411,-0.127626732168236,-0.634194051391636,-0.481644218207994,0.619057479317431,-0.0531423743572992,-0.339490845988069,-0.766767532198630,-0.120498298774227,0.0714285319371050,-0.796245186002260,0.240995239679776,0.372373900867489,0.609258388723470,-0.0762350140180670,0.348671393038715,-0.564330153180768,0.218162658599319,-0.150318935765412,-1.71966980935881,-1.02240152537315,-0.363209493679809,0.189247231187173,0.274770052599947,0.654971624654005,-0.769923669639491,-0.0884124372888147,-0.134772742972987,-0.205308521169116,1.00205222387579,0.874329233900810,0.492544563501865,-0.700741995366096,1.17029195250937,0.590704158997241,-0.441180341696636,0.121828063359988}, 507 | {-0.211505579732599,-0.860798809552035,0.333782124577121,0.705388767926216,-0.390583073642913,-0.526266743408396,0.0748033279344807,0.687979535599824,-0.530007173330131,-0.452434526770752,-0.512540685656749,-0.126390184097403,-0.885731508516847,-1.17893401107037,-0.357094861151709,0.358491006639866,0.779405723602432,0.995925795333004,0.0546434114265613,0.0763672872348459,0.655588047812521,0.0230607431118190,0.312483362641639,0.656376440313356,0.850425410863339,1.02236299467365,0.0861313081347643,-0.480778493978472,1.11525825907277,0.305681841854202,-0.310170462619934,-0.493893103897407,-0.187079779610355,-0.626474927330409,0.316019378161513,0.357693101318666,-0.778463072265222,-0.489435729138208,-0.499359814380611,-0.134125412654228,0.508229922232243,0.254197733734086,-0.129175521047006,-0.0562733157964835,0.318588228664639,0.350166635879330,-0.412488534165958,0.0462238474171243,0.950484112235464,0.295234085845581,-0.557708484953447,-1.52810564342716,0.100126234390613,-0.283794736305785,-0.0645643978422709,0.446375579686373,0.339520303794613,0.676660502346921,-0.0174323881195363,-0.896366188411792,-0.573370811955830,-0.690168913261192,-0.0502638490263476,0.168701255207149,0.663755775404694,0.670988978118424,-0.103666903359576,0.368986854837218,-0.471028045027352,-0.235695104398412,-0.177880233281403,-0.274730310189992,-0.0176043361778005,0.0871298849805636,0.343064654557403,0.332855954740239,1.14472863725364,0.527727139057956,0.377847842372526,-0.535735904284056,-0.485550538428170,-0.807370127054240,-1.08350921963200,0.0342100135283217,0.168945414988396,-0.268819105576853,-0.802686989040409,0.0448379919115720,-0.0837631015684215,-0.962000484721763,-0.382694155110893,-0.547725908459961,-0.170827850815265,-0.00339232909982825,0.0130246940524250,-1.03119418842772,-0.484954520983182,-0.0435009677745975,0.423942247736082,0.493795775100176,-0.595939955961706,-0.292505855903431,-0.419554456441040,-0.141685401523012,-0.504140960968091,0.658554179914614,0.0342077947854311,0.523344724561667,-0.150410582049888,-0.184884364026356,-0.194938292592233,-0.251087881772553,-0.369119760659180,-0.392914085898992,-0.108216153311892,-0.958949200043734,-0.467398874280335,-0.318492574125250,0.744429488133400,0.437793923541760,-0.433005133408592,-0.354844152839947,-0.0955905239724088,-0.556189970752708,-0.146097385499586,-0.185102758447030,-0.116835726027797,-0.659468933283443,0.372972757410443,0.882780654317176,0.198089186780770,-0.581973582363417,-0.245605771586768,-0.166358207998212,0.754669176440242,0.422184856310749,0.385889563396283,1.63081692771379,0.868481556039983,-0.0422958355742158,-0.0335601419899801,-0.245061198177000,0.407650978147533,-0.478687068241087,0.278813970682432,-0.854507878589132,0.240303599775702,-0.642974643010506,-0.855013875423504,-0.258847566132481,0.665237841836129,0.424924200713334,-1.17098912894234,-0.862978603266452,0.185371428878144,0.429302713093843,0.142198898496622,0.234652152526385,0.589705983843962,-0.212983830220328,-0.760558232651348,0.0482375799063355,0.828453144819826,0.864198096556127,-0.371266608627775,0.922210525181753,0.785423226794762,-0.135090502250842,-0.771319900945094,-0.286627370914896,-0.860275824344289,-0.210587313383054,-0.774787717629487,-0.195974873547928,0.242161761195967,0.852665924300398,-1.00787181399938,-1.37780194207161,-0.335204520398369,-0.548318139764412,-0.858063799093604,-0.355193964031238,0.155684920824248,-0.519880442755395,-0.544203220648790,-0.749861321075930,-0.923549162142071,-0.0795213456574181,-0.122082860547824,0.134978431721495,0.0524449900805891,-0.116923526063629}, 508 | {0.131246940255681,-0.227010941778950,0.860655191171250,0.783532834423234,0.135931478030900,-0.107492892299351,-0.109090909836678,0.203819396469078,0.529249370055797,-0.221066178354642,-0.320911259015902,-0.354182563281248,0.185883344181704,0.0220003477979185,0.121464166049131,-0.0507522197021464,-0.721484459441693,-1.44607170640385,-1.99551675780352,-1.00829876375493,-0.364604161072352,-0.444316656646347,0.271234931025212,0.517081819863975,0.254790770794173,0.414245097113489,-0.262307668052947,-0.401616402797702,0.123707767464817,0.321926690076044,0.452361339349529,-0.354694091351226,-0.741718031429142,0.753080115192718,-0.110080520831553,-0.0633230057015544,0.0564452715889262,0.588039526811644,-0.480568198896801,0.197351528699349,-0.101197523209450,-0.266787307793060,0.110034079935473,-0.561100421068254,-0.0695904174781134,0.245536624811934,0.254029325990263,0.426201730165667,-1.29137773122181,-1.33116797671687,-0.985249765667671,-1.14514419129538,-0.776283887829115,-0.952954964767291,-0.609795492747399,-0.376053540796314,0.297372600583532,0.682539980739194,0.0686276719537396,0.971819532914404,0.215527224040386,1.31211651722462,1.27646601858277,-0.642710297747421,-0.719647899898755,-1.64829045697593,-1.25957025421177,-1.21765974779300,0.545008048886929,0.0257770192858986,-0.351126171319461,-0.598778134425193,0.657494255883182,0.658214446223223,0.478437847092509,-0.0718947861677370,-0.260677530461522,-0.531678884823458,-0.218606283928724,0.454656796668164,-0.258848890707023,-0.804389220387119,-0.389969193973159,-1.56155806160818,0.103489693530360,-0.472677112942336,-0.225692243577083,-1.11708226149638,-0.735594176758583,0.0104360080190974,-0.0339541235608803,-0.461207214339785,0.638723935153047,-0.630013590166107,-0.555023339242052,0.571761230057620,0.797602786560189,0.163117175389427,-0.473000009769553,-0.351060067552741,-0.0118668025072483,0.244039569618451,0.0136433347258710,-0.339308385942794,0.301559998077008,0.0650995755933503,-0.161512532285393,0.0413336211166967,0.139831748510783,0.308497674536333,0.470259624330394,0.217908584591112,0.104099087951404,-1.20931293266776,-1.54440852883569,0.122068198854927,-0.0849545111420555,0.147328712147092,-0.306905383413852,0.359245694326340,-0.118794233879618,-0.166056773009621,0.443949909799044,0.121859838672314,-0.107429080340854,0.652641304795607,-0.0497469534284831,-0.226893819453486,-0.0483618738373199,-1.23170567800229,-2.33938040187675,-1.47273316532575,-0.422415804649604,-0.162502011296397,-0.335609865960065,-0.308921232228758,0.260475934156805,-0.0472721051555561,0.121578901277508,0.640698097056056,-0.352175383215604,-0.500309719832249,0.170017549278877,-0.447504640921764,-0.222195111360087,-0.416321968364851,-0.516308965924416,0.686603434393027,0.120268877315365,0.716796555256306,-0.162347265553908,0.382533940199258,0.267944742985325,0.0206548610393886,-0.0490589341988831,-0.0453463635167316,-0.568880847281776,-0.407555922246633,0.00780872685210280,0.184458265927719,-0.377619189730781,-0.128340264437290,1.01352475386165,1.74685981561759,0.407374606712543,0.00269845139886990,-0.204213866289858,0.381511637370867,-0.763102039838634,-0.206303022550265,0.214338306518953,-0.383588741523755,-0.474997601244003,-0.0262566978582199,-0.0375355088957660,0.0742729660133271,0.320200633716898,0.414812619811670,-0.399519987730362,0.0372033100343478,-0.0652652308791390,0.0537063173136906,-0.0570769621348110,0.608299142043609,0.783395299781750,-0.153690544687770,0.238378002363253,0.220368418174693,-0.0379127041919923,-0.726463155908325,-0.292427760619490,-0.117767001171120}, 509 | {0.00114794635540111,0.635029829833947,-0.105888735206798,-0.959287729537705,-0.00467283648171196,0.0167999399006027,-0.705082511523598,-0.799114523992294,-0.641679617389659,-0.618120431501971,-0.774367383860298,-0.449998108164703,-0.648335582232693,-0.791537590662268,0.0701295693755249,0.141822107949214,-1.21182776694505,-0.378531718284657,0.792205629475941,1.06215252421591,-0.330573021198525,-0.119339436548598,-0.337534423238038,-0.467948126920693,0.358565370884564,0.0944764350062795,-0.279131536374114,-0.900444029634416,1.34593225447959,0.526308891645289,0.124185612964977,-0.353018898598377,0.0531933414197108,-0.185791765444854,-0.0398378583844637,-1.60988962681233,0.211997267935624,-0.680643292306178,-0.397085396218826,-0.787486389842530,-0.522337685348516,0.315197107767770,0.411895549412211,0.263929435638875,-0.547646182691331,-0.157230949861478,0.0426556321419921,0.139110230193889,-0.908220520962833,-0.468850394372007,0.250715596140397,2.23564459107353,-0.0220605215996035,-0.0370059043672298,0.338941715126248,1.07989955209018,-0.439108659776063,0.282511337654599,-0.325947001414426,-0.807179921165144,-0.511766063884736,-0.723398807868985,0.106154723843743,-0.0156595996995764,-0.462478401614518,0.137509589589222,0.406303856904300,0.112835978446252,0.442345759526086,0.332463243914775,0.0346791921259724,0.643282475486190,0.344060799534708,0.332525841200334,0.433080455651645,0.205537947736094,0.594085895852055,0.216443907955825,-0.289594607457493,0.127182040548894,0.302644744025402,0.851275806153527,0.948736375365152,-0.105670183840659,0.137868732265052,0.0261123440541175,0.541425888435687,0.0633140200914429,0.352518011502751,-0.559937633826139,-0.831025015350517,0.436805039308792,0.403258255556890,0.123579461476217,0.258351078749528,0.0242940216255145,0.516952380282333,-0.308081168617315,-1.05572403120611,-2.03649792792763,0.502781426057167,-0.136535005477666,0.421175005847437,-0.0898456212069725,-1.00551615928514,-0.204539164715930,-0.0274086059076202,0.567152294953513,-0.646836967914381,-0.353281856161997,-0.186496699523865,-0.151895945469905,0.547481101679982,0.310588705269991,0.152335898344960,1.86748155140426,-0.523318327051849,0.754746998069216,0.504298914129031,-0.207182391397350,-0.550778707595666,-0.00153702719428458,-0.252224857594540,-0.839553952659192,-0.0113490336041696,0.0535991317139829,-0.375672141181158,-0.659175424420599,-0.146531186197384,0.305489952941440,0.225593135829272,0.896104508714919,0.418626697940472,0.239981339102934,1.02720449321770,1.09462996713329,0.853746524976173,0.951390315387356,-0.328394641082948,0.0172302099856781,0.412060488581405,0.446942959009046,0.307034954096943,-0.591381072970224,-0.681836567343329,-0.446184340456085,-0.284977577042024,0.583043590058431,-0.605401442505252,0.162514538350232,-0.604399366190891,-0.473925806201900,-0.264505700221569,-0.308412527610528,-0.503235563487359,-0.487738709877146,1.15515461797884,0.0673410418588533,-0.411555555828561,-0.342618083349230,0.981061410792305,-0.408064606005259,-1.09660860344859,-0.173847852280332,-0.163856130949819,-0.370831923626338,-2.51969436775872,-2.02735905674399,-0.0658668299224573,-0.477545213583806,-0.348325276761796,-1.09078832404236,-1.36772267242778,-0.228792093531300,0.128914402376767,0.259352420956894,0.265782680626395,0.814286440018465,0.588672165514717,0.219854405917757,-0.139082421267077,0.822733257117687,0.613311245774062,0.347504986503002,-0.847394333969655,-0.238394026164451,-0.106622128968803,0.423703975791260,-0.221447706484311,0.257357167061727,0.0836796701751378,-0.879859178056740}, 510 | {0.101010229387424,0.434707878137212,0.0645434229792555,0.226066030848045,0.394540649313301,0.167134822439377,-0.0575043899789395,-0.702883974755227,0.190257147216384,0.222596446763540,-0.292132281736062,-0.192044564097229,-0.331002497370005,-0.0174883860350847,-0.0505565436854985,0.0305240256821830,-0.641879216245602,-0.991359264804503,0.324693767716764,1.09405512419799,-0.798183717048132,-0.360419129028175,-0.0599243251721754,-0.340724781356420,-1.12495992222000,-0.607213610384648,-0.203827004310046,-0.471838963734395,-0.882533171918908,-0.557318631371171,-0.395797266949684,-0.113300251816911,0.215351008869599,-0.0223675042370215,0.744665131164080,0.118957433606169,-0.102502325703489,-0.0977320933520194,-0.0474773190228487,-0.703421772613559,-0.664007507906049,-0.600445856611246,-0.508045261250692,-0.417408861518923,-0.588792071962203,-0.624314957810027,-0.806350861568907,-0.204032356186611,-0.721336805017452,-1.14230052962742,-0.127000710351775,1.60147894173593,-0.652058904640474,-1.13168388354555,-0.223350394505960,-0.255851853989126,0.209069197714963,-0.796886831688614,-0.353607586865194,-0.360283256413037,0.733801333139330,-0.0834366455298102,-0.198929399340542,0.273897576327928,-0.602106495432911,-0.597592108184306,-0.833587624957829,-0.419749327744322,-0.444541513806673,-0.101718417756412,0.0161752770376231,0.615863586081298,-0.134261792010924,-0.100160622679821,0.259594443159931,-0.146741494561426,-0.242940378251311,0.465909255752952,0.307539419278650,-0.460209373076622,0.00165444256176292,0.257890811677605,0.418980649355222,0.794540883161270,-0.143436468887599,-0.230337529528143,0.173390006859160,1.08643624535859,-0.592782253605798,-0.226822571611523,-0.328169635740686,-0.456117404936125,-0.946926904545306,-0.933179024328617,-0.204522398363068,-0.819874983984830,-0.375797842420949,-0.723214822608703,-0.772938261890592,-0.587233788219074,-0.400619916461442,-0.655533598433071,-0.167833876925909,0.558873810265157,0.427204622426719,-0.123614839452542,0.0755109740493500,-0.198572497258911,0.182871040187696,-0.0515547498458858,-0.177084211282397,-0.229870442190883,-0.438076251783667,-0.633272544285094,0.195907262955798,-0.449729876648881,-0.368988466373911,-0.151190243069814,0.415254683370272,-0.0577747340428374,0.304593456271983,-0.170109076299653,0.108883011829504,-0.188776689721124,0.427234861528080,0.407337974714797,0.354202134806785,-0.217857928210527,-0.635063181087379,-1.32369303531106,-0.760910513869727,-0.00718766269151453,-0.778291673272969,-0.749012505815985,-0.192210713059212,0.426273559540276,-0.0614589420901232,-0.0139033375392119,0.0629797398370858,0.0836495457236536,0.161043596606587,0.851203376420656,0.392675832362210,0.223142480150512,-0.0191066178725845,-0.0265986514086489,-0.239798479233536,-0.994575294657712,0.109997363817177,-0.294434926838494,-0.0495614982309627,-0.164623909872019,0.126001978221112,0.167098056873789,0.341102086518462,0.460015320383882,-0.359230831710954,0.838604810707506,0.363638137112764,0.0365280945568640,0.385233096928329,0.255394476549425,0.353189713698097,-0.544139198925928,-0.287797068768778,0.0443063511348137,-0.323275384777180,-0.832973372050360,0.0621516850644358,0.189702810226176,-0.0827930128958830,0.303117453222743,0.476954483423635,0.0402495436875270,0.00676195305287316,-0.0973223797729065,0.307758958499630,-0.0295835608741483,-0.267358533450627,-0.432780237643922,0.489616470474840,0.106595576771694,0.0444179927076987,-0.456505504088782,-0.0600971246490605,0.321936044103044,0.335422204751652,0.191928273988939,-0.540757379447830,-0.328743977442063,0.108747074782151,0.160710471524024}, 511 | {-0.360864599851774,-0.514161528615881,-0.529446137914984,-0.225929045247555,-0.553901380756267,0.361482677696002,0.101191629537951,0.305556354576240,0.372639031616244,0.363687893997279,0.388896117561353,-0.213724370601493,0.0401077218343714,0.239131700374592,0.374645635777891,0.363731399436198,0.207793109675979,0.402183049733927,0.215457536181673,-0.223616701400777,0.753836850708282,0.867497129903000,1.24180394873373,0.792422513370036,0.184636732554540,0.180567022091911,-1.00184135948256,-0.204629060093740,0.229650279479846,-0.763615299120254,-0.0632008459670176,0.348311180546131,-0.392982417773298,0.150323312616971,0.209041512146987,-0.0277342071935820,-0.415494492351647,-0.536995823229212,-0.108478120537656,-0.371714487767265,-0.441373867672487,-0.599292172994554,-0.176922348668959,-0.475509180948334,0.357327035955566,0.191624284710337,0.294529099355734,0.551579030381453,0.335959237288742,0.416925102779197,0.314484208259965,-0.633077554613871,0.367886359524793,0.553570046860814,1.36547893179048,0.110414462187543,0.371498189585299,-0.735574214922907,-0.202825767871079,0.774910590174030,0.723383208959649,0.996596294077596,1.00685467237058,0.228257071334063,0.573256489739492,0.751233869643976,0.188715553483647,-0.0837929334579582,0.790087628268938,-0.266480942834410,-0.0571524438424342,0.0762360105851766,-0.734886254029477,-1.41847466407743,-0.254014661496720,0.0914464985539892,-1.08678771313818,-0.971961618737303,-0.700620474206906,-0.541766947815029,-0.408142975531253,0.409780111955705,1.27162586657000,0.166524127451470,0.343036211928547,0.287376291888576,-0.480274206579174,-0.0938458882577172,0.125086478233303,0.532041704487453,0.129954481708187,-0.878437046459641,-0.202380459361888,-0.293399261190457,-0.331545732399376,0.315935438029422,0.168103301832674,-0.123864637535436,-0.0459600459298020,-0.0904659079259790,-0.543807831777708,-0.813233907154838,0.533807954009462,-0.0944109206054044,-0.686650168933232,-0.236402602245511,-0.249207909696726,-0.284252501349861,-0.262880287025652,0.643915954578894,0.0840131788119659,-0.451489291603510,0.428144882840308,-0.101456465611398,0.0487000595335639,-0.0584588952299151,-0.00658040673760270,-0.479189159651900,-0.0947172211228216,0.206975116337344,0.229032953438316,-1.12805359740100,0.271050601433046,-0.181453034089399,-0.188039398000018,0.301783359801657,-0.265661171151924,-0.666956191774557,0.435875993112350,0.580952089010340,0.644886432096939,0.181264780063667,0.352564150722212,0.155961143575390,0.563975259225158,0.786255609985323,-0.299486589761541,-0.993969689803153,-0.964263397311762,0.334321076093547,-1.44585126994080,-0.954987730709188,-0.429051676043785,-0.768275473885692,0.458085923371531,0.0272163603702230,-0.167345864171068,-0.345732381535754,-0.182021501891036,-0.889042191789935,-0.0712753188157844,0.0287878101813710,-0.468993067852701,-0.957207137373508,-0.847843410972881,0.128407008814720,-1.17401838207730,-0.782864135376508,-0.838988655478776,-1.15576889019994,-0.911952568071826,-1.13612559410102,-0.0296337622649982,0.437682425566190,-0.235179377349835,0.107962370580978,-0.212946654812521,-0.220725525757281,-0.00601436584518483,0.672346688977823,0.605157117743602,0.0458877390933510,0.105426670398759,0.0268802386651243,0.527142817697853,-0.341445889605505,-0.393705306345206,-0.426565517549607,-0.291755888180563,-0.0786970867034106,-0.610830069222286,0.167476277383024,-0.572332132101453,0.184898382809141,0.303660974233723,0.0499281302573132,0.0984596405810102,0.0352103353270957,0.0609700054162731,-0.994195603407390,-0.208105344449192,-0.628539447882107}, 512 | {-0.0242067811234101,0.329300812878701,-0.241870653626896,-0.339938682207741,0.0639352992525147,-1.11619162920752,-0.496256055860299,-0.0837872095517426,-0.0458454012090982,-0.0659071495856798,-0.191079550712204,-0.277301532608055,0.954490770092051,0.156829317424824,-0.146380017904820,-0.601398785802903,-0.621739903137818,0.249209938765342,0.665953940109720,0.0863467386589703,-0.470109603006897,-0.228843802711441,0.179326579842961,0.370888763196010,-0.130311608009440,-0.833665997281101,-0.0952067729183658,0.354396157192442,-1.12263207993630,-0.159721657487348,-0.389610890478975,-1.10009334680229,0.272317637878964,-0.816442210024255,-1.00402641146326,-0.459287733293412,-1.15028709614265,-0.858011527177736,-0.469499390819526,-0.852205446736955,-0.965780959194805,-1.09085613303524,-0.657697381739129,-0.358850424480555,-0.889264590103760,-0.884123334317514,-0.0512135483912219,0.595447084995434,-0.423735269006343,-0.864578326941541,-0.767127571099521,-0.482850032058444,0.692760670731237,-0.102033937871968,-0.588669687381325,0.574115553181107,0.101627810990443,-0.397257692533469,-0.452463172214475,0.304486281320175,0.478446400218059,-1.43384584757325,-2.24367305850916,-0.787478309588132,-0.476547887261709,-0.607709837400802,-0.189084286485393,-0.307828389833869,0.551862185363273,0.395001414839538,0.281005202240748,-0.715913225573668,-0.370971464997203,0.181659336943449,-0.0947146023203785,-0.157911203734703,-0.815682244594977,-0.571183658153009,0.339679705461412,-0.618453521258486,-0.334415426274551,-0.921438055769603,-1.28835953902536,-0.895225233548700,-1.02590211479918,-0.826065804143192,0.106781251941797,-1.51303133834639,0.475597987933802,-1.06117105777503,-0.955985837370120,-0.503871161882397,-1.03517979324389,-1.47400478771195,-0.332386497830065,-0.953604161482361,-0.0963444507602164,0.269313957395832,-0.670025784127430,0.00321165554147404,0.857678548197121,0.162265261101428,-0.551706576188376,-0.111363220101412,-0.464023261079384,-0.319500318137666,0.465660407810505,0.562218727391997,0.303151586143742,-0.267893174760262,-0.102535742636838,0.102606889772195,0.215543140460977,0.214982816552602,0.0170163389652881,-0.149489671085752,0.108447250053506,0.399689265030684,-0.596599615249086,1.17780158221004,0.293004593822726,1.28821560338721,0.183851583123168,0.0553844566393121,0.515696157021519,0.138356920434441,-0.704154977793858,-0.598945126281086,-0.687246951379724,0.191289896802939,0.559850928234608,-0.104389213582155,0.624069217380672,0.571000925176209,0.151219057208039,0.259489987356260,-0.922357082053858,-0.0957617396312018,0.365930512288967,0.0960614179558670,-0.613394842002472,0.330575303658221,-0.692604973688066,-0.870805156436926,-0.000930612370034968,0.153639920367296,0.216835361078159,1.03805076869202,0.644912853549982,0.796993010815102,1.07284098953740,0.927263155425837,0.906954653786534,0.899817194756349,0.169684075134498,0.0736731501175676,0.0892021162686497,0.371376542001020,0.271980947967740,0.0934056294451906,-0.188872584424359,-0.320958291395493,-0.0867667329685965,-0.0359791543821657,-1.04925372225132,-0.108293301335509,0.205981267453746,1.04076641835688,-0.157412265965197,0.447247321777905,-1.01035486122259,-0.810040652939135,0.134378348198707,0.543266121578341,-0.102914077872397,0.442458529971189,-0.112347662263310,0.263340503104294,0.217968621575045,-0.524896665992402,-0.0844424108952405,-0.449919347970732,0.530453684096734,-0.0641794302323423,0.151930220719445,1.28524101036292,0.712703549474418,0.408326060441907,0.488405662500862,0.336633774038650,0.147088257738091,0.0690667367495501}, 513 | {-0.0215293963090580,0.117385566357812,-0.936174842820973,-0.737821919111587,0.606606151077371,-0.326893427765706,0.411106706240573,-0.797599721536861,-0.645590656544729,-0.825304678907617,-0.0883715473841353,0.519645293334886,-0.330564949437223,-0.715177661716096,0.0869718073212081,0.232259444570139,-0.0498713404650596,0.211398408949069,0.481753011132716,-0.386037584910424,-1.03177101829484,-0.146009272119036,-0.915813666350941,-0.967467239569371,-0.569192411419589,0.553529209406028,1.24036890565920,0.472745412678022,0.307991058468035,0.296009397865591,0.729598068135771,0.525575099712596,0.467963268759665,-1.63576465765262,-0.662661161852569,-0.170062405895700,-0.183068101927964,0.0831635541016513,-0.774117236201476,0.505543054242596,-0.559825255079039,-0.141374183011929,0.175219248103543,1.21413335603414,-0.173773330186721,0.0752415600801299,-0.376625830388471,-0.220320475033514,-1.19705401021771,-0.0169646928163480,0.385156336407526,-0.371744967755914,-0.169852516639858,-0.671403195810223,-1.49117979749995,-1.57562921833789,-0.510692295553672,0.865247733171695,0.407641444664456,-0.958434031448538,0.171867219067037,1.18673823727983,0.953701651587914,0.0642556431689091,-0.192053089735056,0.822536631186417,1.30741507335724,0.523695058337884,-0.990990747002145,0.120965574551309,0.630321510807938,-0.320156955367219,0.979481053467606,0.871370866118910,-0.716821572521479,-0.681983806007162,-0.182896608024557,-0.568857073614264,-1.72506332729416,-0.442989905339443,0.145684002130784,0.133336766153421,-1.07517699651287,0.540099937658906,-1.34741590423271,-0.842569004659137,0.317375518588540,-0.772930916512728,-1.37307033724925,-0.672397907379231,-0.195349975689347,-0.243267718266837,-0.457832599887263,-0.107031386052693,-0.742679649925154,0.245567712238343,-0.954384726169365,-0.246389489019737,0.351734661614301,0.518967012899504,0.154387577653575,0.235568379640310,-0.301050516009368,0.159359477954856,1.15145870284375,-0.225186406860051,-0.255494751901702,-0.225083041876735,-0.377361798803579,-0.781212742363635,0.0478599554890808,0.259091080663667,-0.114857683973048,1.00708311800720,1.03288738070972,-0.758730613341939,0.578973066118444,1.33218448311608,0.182990370598411,-0.806800730280519,-0.376084228816017,0.0707576222791316,-1.05805528889933,-0.597097285605847,-0.293972607093982,-0.742445989521557,-0.551693419064750,-0.608858892376967,-1.10848539983842,0.133154788705046,1.33589006747037,0.292428500535833,0.221987845650773,0.922261039342996,1.13598119826182,-0.704772013511759,0.331944311820532,0.563233537528740,-0.0269935658638606,-1.23041179022157,-0.0643680882242152,-0.0116771103486827,-0.237882206410986,-0.682986476493959,-0.352303730073097,1.06189468186438,1.06691272395889,-0.506588098645192,0.583395256032878,0.0550942528844867,-0.0280917191162836,0.228739098446659,0.411172503246286,0.0816254892259498,-0.111440338492276,-1.04078605510097,-0.323114014369716,-0.464720123264673,-0.563545756580037,-0.749772514840598,1.07551279693922,0.468068321143639,-0.990534718122260,-1.59739093790327,-0.0982899695577284,-0.133144733798160,-0.00174662138992328,0.660105937731135,-0.490808877037206,-0.510371076289644,0.193149200187763,0.294042885942409,-0.301704863276796,-0.810780566655091,-0.371633444804425,-0.109438270636722,-0.452605346668020,-0.396713649093684,0.363846244469740,0.558204719472660,0.614341228562222,-0.199711725717644,0.0293477670002296,-0.137298424273365,-1.70977349824214,-1.47002719390627,-0.232068690377531,-0.436870275768754,-0.749474883621482,-0.640792891181858,-0.638150939886406,-1.28555225438515}}, 514 | 515 | {-0.0919761885524766,-0.159684059643282,-0.240247249649285,-0.264989411177056,-0.0530785478582051, 516 | -0.165492115653131,-0.287320370753949,-0.359379979680877,-0.164829910709562,-0.523457884941914} 517 | }; 518 | 519 | Input_To_C1(mem,c1); 520 | C1_To_S2(c1,s2); 521 | S2_To_C3(s2,c3); 522 | C3_To_S4(c3,s4); 523 | S4_To_Output(s4,output); 524 | number = Get_Result(output,number); //recognition 525 | 526 | recognition->data = number; 527 | recognition->keep = 15; 528 | recognition->strb = -1; 529 | recognition->user = 1; 530 | recognition->last = 1; 531 | recognition->id = 0; 532 | recognition->dest = 0; 533 | 534 | 535 | } 536 | -------------------------------------------------------------------------------- /HLS/src/CNN_HLS.h: -------------------------------------------------------------------------------- 1 | #include "ap_axi_sdata.h" 2 | 3 | void CNN_HLS1(ap_axis<32,4,5,5> image[28*28],ap_axis<32,4,5,5> *recognition); 4 | -------------------------------------------------------------------------------- /HLS/src/CNN_tb.cpp: -------------------------------------------------------------------------------- 1 | #include"CNN_HLS.h" 2 | #include 3 | #include 4 | #include 5 | #include "ap_axi_sdata.h" 6 | 7 | int main(){ 8 | //FILE *fp_lable = fopen("C:\\Users\\wangchunjie\\Desktop\\MINIST\\t10k-labels-idx1-ubyte\\t10k-labels.idx1-ubyte","rb"); 9 | FILE *fp_lable = fopen("D:\\lyy\\01_Zynq\\vivado_HLS\\CNN_IP\\MNIST\\t10k-labels.idx1-ubyte","rb"); 10 | if(!fp_lable){ 11 | printf("open lable file failed!\n"); 12 | return -1; 13 | } 14 | 15 | int a,num; 16 | fread(&a,sizeof(int),1,fp_lable); 17 | fread(&num,sizeof(int),1,fp_lable); 18 | printf("a = %x\nnum = %x\n",a,num); 19 | 20 | FILE *fp_image = fopen("D:\\lyy\\01_Zynq\\vivado_HLS\\CNN_IP\\MNIST\\t10k-images.idx3-ubyte","rb"); 21 | if(!fp_image){ 22 | printf("open image file failed!\n"); 23 | return -1; 24 | } 25 | 26 | //read picture 27 | int size1,size2; 28 | fread(&a,sizeof(int),1,fp_image); //magic 29 | fread(&num,sizeof(int),1,fp_image); //numbers 30 | fread(&size1,sizeof(int),1,fp_image); //length 31 | fread(&size2,sizeof(int),1,fp_image); //width 32 | printf("a = %x\nnum = %x\nsize1 = %x\nsize2 = %x\n",a,num,size1,size2); 33 | 34 | 35 | unsigned char input1[28*28]; 36 | ap_axis<32,4,5,5> input2[28*28]; 37 | ap_axis<32,4,5,5> recognition; 38 | 39 | unsigned char label; 40 | 41 | int err_cnt=0; 42 | for(int i=0;i<1;i++){ 43 | fread(input1,sizeof(unsigned char),28*28,fp_image); 44 | fread(&label,sizeof(unsigned char),1,fp_lable); 45 | for(int j=0;j<28*28;j++){ 46 | input2[j].data = (int)input1[j]; 47 | input2[j].keep = 1; 48 | input2[j].strb = 1; 49 | input2[j].user = 1; 50 | input2[j].last = 0; 51 | input2[j].id = 0; 52 | input2[j].dest = 1; 53 | } 54 | 55 | 56 | CNN_HLS1(input2,&recognition); 57 | while(recognition.data.to_uint()!=7); 58 | if(recognition.data!=label){ 59 | err_cnt++; 60 | for(int i=0;i<28;i++){ 61 | for(int j=0;j<28;j++){ 62 | if(input2[i*28+j].data>128){ 63 | printf(" 1"); 64 | }else{ 65 | printf(" "); 66 | } 67 | } 68 | printf("\n"); 69 | } 70 | printf("\nlabel = %d , recognization = %d\n",label,(unsigned int)recognition.data); 71 | } 72 | } 73 | printf("\nlabel = %d , recognization = %d\n",label,(unsigned int)recognition.data); 74 | printf("err_cnt = %d\n",err_cnt); 75 | fclose(fp_lable); 76 | fclose(fp_image); 77 | return 0; 78 | } 79 | 80 | -------------------------------------------------------------------------------- /HLS/src/cnn.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include"cnn.h" 3 | #include 4 | double sigmoid(double x){ 5 | return 1.0/(1+exp(-x)); 6 | } 7 | 8 | 9 | void Input_To_C1(unsigned int input[28*28],struct C1 &c1){ 10 | int i,j,k,l,m; 11 | double input_double[28*28]; 12 | 13 | for(i=0;i<28*28;i++){ 14 | input_double[i] = double(input[i])/255; 15 | } 16 | 17 | double tmp; 18 | for(i=0;i<28;i++){ 19 | for(j=0;jtmp){ 131 | tmp = output.map[i]; 132 | number =i; 133 | } 134 | } 135 | 136 | return number; 137 | } 138 | -------------------------------------------------------------------------------- /HLS/src/cnn.h: -------------------------------------------------------------------------------- 1 | #include"layers.h" 2 | #include "ap_axi_sdata.h" 3 | 4 | double sigmoid(double x); 5 | void Input_To_C1(unsigned int input[28*28],struct C1 &c1); 6 | void C1_To_S2(struct C1 &c1,struct S2 &s2); 7 | void S2_To_C3(struct S2 &s2,struct C3 &c3); 8 | void C3_To_S4(struct C3 &c3,struct S4 &s4); 9 | void S4_To_Output(struct S4 &s4,struct Output &output); 10 | //void Get_Result(struct Output &output,ap_axis<32,2,5,6> *recognition); 11 | unsigned int Get_Result(struct Output &output,unsigned int number); 12 | -------------------------------------------------------------------------------- /HLS/src/layers.h: -------------------------------------------------------------------------------- 1 | struct C1{ 2 | double map[6][24*24]; 3 | double kernel[6][5*5]; 4 | double bias[6]; 5 | }; 6 | 7 | struct S2{ 8 | double map[6][12*12]; 9 | // double kernel[6][2*2]; 10 | }; 11 | 12 | struct C3{ 13 | double map[12][8*8]; 14 | double kernel[12*6][5*5]; 15 | double bias[12]; 16 | }; 17 | 18 | struct S4{ 19 | double map[12][4*4]; 20 | // double kernel[12][2*2]; 21 | }; 22 | 23 | struct Output{ 24 | double map[10]; 25 | double w[10][12*4*4]; 26 | double bias[10]; 27 | }; 28 | 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 He Yan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ZYNQ_Linux_CNN 2 | 3 | ## Development environment 4 | - Vivado 2016.4 5 | 6 | ## Generate LeNet IP using Vivado HLS 7 | On windows, open Vivado HLS 2016.4 Command Prompt. 8 | On Linux, open a new terminal. 9 | Then change directory to the project's directory named **HLS** and run 10 | ``` 11 | vivado_hls -f run_hls.tcl 12 | ``` 13 | This command will generate the LeNet IP that we need. 14 | --------------------------------------------------------------------------------