12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118 |
- /* This file is part of Lemma, a geophysical modelling and inversion API */
-
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
- /**
- @file
- @author Trevor Irons
- @date 06/26/2009
- @version $Id: hankeltransformhankel2.cpp 202 2015-01-06 20:53:21Z tirons $
- **/
-
- #include "FHTAnderson801.h"
-
- namespace Lemma {
-
- std::ostream &operator << (std::ostream &stream, const FHTAnderson801 &ob) {
- stream << ob.Serialize() << "\n";
- return stream;
- }
-
- // Initialise static const members, this could be done by preprocessor in
- // slightly higher precision?
- const Eigen::Matrix<Real, 2, 801> FHTAnderson801::FilterWeights =
- ( Eigen::Matrix<Real, 2, 801>() <<
- 2.103562053838982e-29, -1.264469361608894e-14,
- 4.615731256788567e-14, -2.798703374257668e-14,
- 5.465764965410841e-14, -2.652933109928729e-14,
- 5.674913434067321e-14, -2.157276828977208e-14,
- 5.831846086773976e-14, -1.546589284868783e-14,
- 6.057302455652974e-14, -8.502531259083065e-15,
- 6.388018061147645e-14, -5.659657635010288e-16,
- 6.848500604791407e-14, 8.572897732168277e-15,
- 7.465068154681814e-14, 1.920837293261338e-14,
- 8.269345428975771e-14, 3.170116562922900e-14,
- 9.300004039695208e-14, 4.649069639417992e-14,
- 1.060441944490564e-13, 6.411216589597457e-14,
- 1.224060834001701e-13, 8.521776751507022e-14,
- 1.427957940487172e-13, 1.106026606968463e-13,
- 1.680820203098405e-13, 1.412367028159546e-13,
- 1.993271011776308e-13, 1.783032042964119e-13,
- 2.378298196799422e-13, 2.232462602765097e-13,
- 2.851776817107034e-13, 2.778285575785995e-13,
- 3.433107735233557e-13, 3.442019764139949e-13,
- 4.145997612327839e-13, 4.249938198224969e-13,
- 5.019411631949951e-13, 5.234121310773422e-13,
- 6.088737193247560e-13, 6.433743253810275e-13,
- 7.397205280796933e-13, 7.896642978865920e-13,
- 8.997626559623209e-13, 9.681243129571424e-13,
- 1.095451187471558e-12, 1.185889375491455e-12,
- 1.334666226164323e-12, 1.451673490118585e-12,
- 1.627033241780647e-12, 1.776119296526221e-12,
- 1.984309459865773e-12, 2.172225112712636e-12,
- 2.420855801356264e-12, 2.655866524621122e-12,
- 2.954213313000758e-12, 3.246433455110429e-12,
- 3.605807223054322e-12, 3.967608279821300e-12,
- 4.401806878720721e-12, 4.848316218220904e-12,
- 5.374176077884770e-12, 5.923886142128417e-12,
- 6.561955948855011e-12, 7.237468388830243e-12,
- 8.012831864792648e-12, 8.841766480402105e-12,
- 9.785047278800097e-12, 1.080115224902499e-11,
- 1.194974128877562e-11, 1.319424925552153e-11,
- 1.459380374689331e-11, 1.611708818260074e-11,
- 1.782336249944076e-11, 1.968696083966218e-11,
- 2.176804271234846e-11, 2.404712745375440e-11,
- 2.658616922424555e-11, 2.937256616666064e-11,
- 3.247112071587450e-11, 3.587699548548411e-11,
- 3.965909071112399e-11, 4.382145152220635e-11,
- 4.843856688602439e-11, 5.352476425684008e-11,
- 5.916190912377549e-11, 6.537635327328955e-11,
- 7.225949098391667e-11, 7.985185650562155e-11,
- 8.825697213255412e-11, 9.753221923111176e-11,
- 1.077963949370144e-10, 1.191270094182892e-10,
- 1.316619519054340e-10, 1.455028951566729e-10,
- 1.608114581091983e-10, 1.777184270673645e-10,
- 1.964147916871289e-10, 2.170665216346822e-10,
- 2.399008451839042e-10, 2.651263504640323e-10,
- 2.930148720448538e-10, 3.238267179640594e-10,
- 3.578885297833856e-10, 3.955234710219298e-10,
- 4.371254308993604e-10, 4.830940473937580e-10,
- 5.339056350072159e-10, 5.900529573690070e-10,
- 6.521132758098962e-10, 7.206928333934838e-10,
- 7.964924450372341e-10, 8.802567084675067e-10,
- 9.728375895186283e-10, 1.075148437456224e-09,
- 1.188226062693121e-09, 1.313189706258061e-09,
- 1.451302163665563e-09, 1.603933943511600e-09,
- 1.772624063293560e-09, 1.959049733219870e-09,
- 2.165087540667258e-09, 2.392789115986871e-09,
- 2.644443536014764e-09, 2.922559573439235e-09,
- 3.229930291248597e-09, 3.569622651576204e-09,
- 3.945045448172924e-09, 4.359947261255963e-09,
- 4.818489091363688e-09, 5.325251901762953e-09,
- 5.885315583343685e-09, 6.504277635547376e-09,
- 7.188340419242570e-09, 7.944342903082902e-09,
- 8.779858562959109e-09, 9.703242578022093e-09,
- 1.072374322768940e-08, 1.185156747840095e-08,
- 1.309800933225301e-08, 1.447553742402158e-08,
- 1.599794451372024e-08, 1.768046154055318e-08,
- 1.953993335487118e-08, 2.159496468450500e-08,
- 2.386612830616206e-08, 2.637614961034523e-08,
- 2.915015476269831e-08, 3.221590205565798e-08,
- 3.560407926098509e-08, 3.934859178954436e-08,
- 4.348692045365787e-08, 4.806047869438007e-08,
- 5.311504443749314e-08, 5.870120138001748e-08,
- 6.487486163571268e-08, 7.169780940885934e-08,
- 7.923833480505012e-08, 8.757190229426675e-08,
- 9.678192055835553e-08, 1.069605631204864e-07,
- 1.182097045925483e-07, 1.306419269237675e-07,
- 1.443816591198488e-07, 1.595664099835792e-07,
- 1.763481565722233e-07, 1.948948533650376e-07,
- 2.153921247351847e-07, 2.380451115468297e-07,
- 2.630805351444854e-07, 2.907489558998551e-07,
- 3.213272911558462e-07, 3.551215767529809e-07,
- 3.924700396067688e-07, 4.337464734078393e-07,
- 4.793639887921159e-07, 5.297791390370199e-07,
- 5.854964979982190e-07, 6.470737017046583e-07,
- 7.151270374758372e-07, 7.903376040582035e-07,
- 8.734581359370587e-07, 9.653205295304359e-07,
- 1.066844176299330e-06, 1.179045157323447e-06,
- 1.303046419382764e-06, 1.440089007182073e-06,
- 1.591544490556806e-06, 1.758928685376697e-06,
- 1.943916830388476e-06, 2.148360347694608e-06,
- 2.374305378111399e-06, 2.624013254094558e-06,
- 2.899983137292810e-06, 3.204977025773239e-06,
- 3.542047402097807e-06, 3.914567778667102e-06,
- // 200
- 4.326266465748067e-06, 4.781263881007758e-06,
- 5.284113792545945e-06, 5.839848890150422e-06,
- 6.454031158395685e-06, 7.132807538712648e-06,
- 7.882971454044484e-06, 8.712030795792633e-06,
- 9.628283069078871e-06, 1.064089843325841e-05,
- 1.176001148348469e-05, 1.299682267761921e-05,
- 1.436371043746991e-05, 1.587435503282041e-05,
- 1.754387550120777e-05, 1.938898096105121e-05,
- 2.142813784487508e-05, 2.368175471430264e-05,
- 2.617238651818130e-05, 2.892496032668667e-05,
- 3.196702481167932e-05, 3.532902595927333e-05,
- 3.904461178455365e-05, 4.315096908756330e-05,
- 4.768919563102351e-05, 5.270471145419851e-05,
- 5.824771344935570e-05, 6.437367773954276e-05,
- 7.114391489568718e-05, 7.862618353777022e-05,
- 8.689536847209423e-05, 9.603423013681158e-05,
- 1.061342328695059e-04, 1.172964602657162e-04,
- 1.296326268075215e-04, 1.432661958546299e-04,
- 1.583336152150400e-04, 1.749856826064412e-04,
- 1.933890547221590e-04, 2.137279149064782e-04,
- 2.362058162174614e-04, 2.610477181410775e-04,
- 2.885022375064333e-04, 3.188441357870562e-04,
- 3.523770680013592e-04, 3.894366200728159e-04,
- 4.303936656695837e-04, 4.756580748770003e-04,
- 5.256828130316798e-04, 5.809684683619367e-04,
- 6.420682561143772e-04, 7.095935446942389e-04,
- 7.842199637491256e-04, 8.666941465924691e-04,
- 9.578411834759010e-04, 1.058572843543458e-03,
- 1.169896665384001e-03, 1.292925974983324e-03,
- 1.428890965739396e-03, 1.579150889627630e-03,
- 1.745207548623177e-03, 1.928720102656342e-03,
- 2.131521473093367e-03, 2.355636277673631e-03,
- 2.603300731229735e-03, 2.876984272542283e-03,
- 3.179413630050106e-03, 3.513598723334281e-03,
- 3.882861625673649e-03, 4.290867254031690e-03,
- 4.741657973486860e-03, 5.239689338467119e-03,
- 5.789870985188969e-03, 6.397607072000340e-03,
- 7.068843783102744e-03, 7.810112796625723e-03,
- 8.628584975720666e-03, 9.532112534855741e-03,
- 1.052928697105230e-02, 1.162947042684567e-02,
- 1.284285301027502e-02, 1.418045400408490e-02,
- 1.565416842684913e-02, 1.727670025860997e-02,
- 1.906157878467033e-02, 2.102295173845023e-02,
- 2.317553622087861e-02, 2.553413681316817e-02,
- 2.811347056705691e-02, 3.092716134472897e-02,
- 3.398734108220733e-02, 3.730266904318316e-02,
- 4.087756584601726e-02, 4.470845458227711e-02,
- 4.878245655564208e-02, 5.307046388837388e-02,
- 5.752521479656082e-02, 6.206888924914453e-02,
- 6.659098690582325e-02, 7.092687097703928e-02,
- 7.485762155329997e-02, 7.807466421172765e-02,
- 8.018887211338042e-02, 8.067640670918657e-02,
- 7.891767306422777e-02, 7.412406301630496e-02,
- 6.545864753141331e-02, 5.195771725733346e-02,
- 3.284797274184859e-02, 7.497076325831270e-03,
- -2.386612869894549e-02, -6.017494378476118e-02,
- -9.817899798850670e-02, -1.328147797272611e-01,
- -1.554628569772562e-01, -1.563982157987450e-01,
- -1.243049866529050e-01, -5.486815986343697e-02,
- 4.686255899170307e-02, 1.511218295806206e-01,
- 2.119315534410599e-01, 1.695134135887796e-01,
- 1.386197420331480e-02, -1.869350451838135e-01,
- -2.455889606925336e-01, -5.309269401899814e-02,
- 2.519998415798595e-01, 1.968224876057428e-01,
- -2.014333618969160e-01, -2.458450827258603e-01,
- 3.433559314076636e-01, -4.770066510626292e-02,
- -2.096628473507452e-01, 2.509085123794248e-01,
- -1.676412661335192e-01, 7.495199786896762e-02,
- -1.695135102751146e-02, -8.828524201374996e-03,
- 1.616787356183550e-02, -1.556411755992529e-02,
- 1.251311125216370e-02, -9.299315246978098e-03,
- 6.650525996779493e-03, -4.667707408671884e-03,
- 3.248885545556855e-03, -2.255529108544675e-03,
- 1.566875211100915e-03, -1.091132486368091e-03,
- 7.625383049040949e-04, -5.352540577820408e-04,
- 3.777104567214670e-04, -2.682528211535297e-04,
- 1.920265274996755e-04, -1.388213723208944e-04,
- 1.015998917810005e-04, -7.549725062631259e-05,
- 5.714172920052936e-05, -4.419160967680634e-05,
- 3.501776199578583e-05, -2.848496954139990e-05,
- 2.380104817324115e-05, -2.041274924032166e-05,
- 1.793363489791860e-05, -1.609367780777977e-05,
- 1.470394692017765e-05, -1.363208540087839e-05,
- 1.278540851480116e-05, -1.209910323276592e-05,
- 1.152780746372085e-05, -1.103964249967709e-05,
- 1.061214724478712e-05, -1.022954672255804e-05,
- 9.880801917269063e-06, -9.558136268373164e-06,
- 9.255989462874843e-06, -8.970368039834961e-06,
- 8.698439226217636e-06, -8.438199899378174e-06,
- 8.188185039708096e-06, -7.947275976752668e-06,
- 7.714620489277084e-06, -7.489590334670121e-06,
- 7.271712845563131e-06, -7.060595202720040e-06,
- 6.855890958634290e-06, -6.657307826365352e-06,
- 6.464610635947412e-06, -6.277596705248834e-06,
- 6.096069004564178e-06, -5.919835014912806e-06,
- 5.748721389173238e-06, -5.582576428368341e-06,
- 5.421255729073172e-06, -5.264611483233620e-06,
- 5.112497827757443e-06, -4.964780650195476e-06,
- 4.821336526159266e-06, -4.682043530422997e-06,
- 4.546777587820041e-06, -4.415418000076004e-06,
- // 400
- 4.287852503112911e-06, -4.163974668109847e-06,
- 4.043678407829827e-06, -3.926857526517075e-06,
- 3.813409851360361e-06, -3.703239239834851e-06,
- 3.596252927182967e-06, -3.492358600906126e-06,
- 3.391465179914198e-06, -3.293485431241940e-06,
- 3.198336356446399e-06, -3.105937110348406e-06,
- 3.016207679069661e-06, -2.929069911562291e-06,
- 2.844448954094881e-06, -2.762272935820411e-06,
- 2.682471568415877e-06, -2.604975709140556e-06,
- 2.529718233664062e-06, -2.456634690985054e-06,
- 2.385662793855871e-06, -2.316741584624232e-06,
- 2.249811415880699e-06, -2.184814552602377e-06,
- 2.121695378987067e-06, -2.060399926949900e-06,
- 2.000875435893980e-06, -1.943070483347481e-06,
- 1.886935339579619e-06, -1.832421953831803e-06,
- 1.779483599068986e-06, -1.728074671861562e-06,
- 1.678150840818710e-06, -1.629669220867866e-06,
- 1.582588274939725e-06, -1.536867577717458e-06,
- 1.492467744182388e-06, -1.449350544031671e-06,
- 1.407478963215944e-06, -1.366817091697906e-06,
- 1.327329980403758e-06, -1.288983628354532e-06,
- 1.251745052743577e-06, -1.215582289623042e-06,
- 1.180464297731392e-06, -1.146360878232118e-06,
- 1.113242681755176e-06, -1.081081241360643e-06,
- 1.049848946307979e-06, -1.019518969919736e-06,
- 9.900652269648073e-07, -9.614623823829486e-07,
- 9.336858590396268e-07, -9.067118039187765e-07,
- 8.805170379415897e-07, -8.550790335506564e-07,
- 8.303759185665738e-07, -8.063864695073603e-07,
- 7.830900795968434e-07, -7.604667251660013e-07,
- 7.384969528074763e-07, -7.171618775580271e-07,
- 6.964431695613518e-07, -6.763230273695452e-07,
- 6.567841555251206e-07, -6.378097555683096e-07,
- 6.193835199757372e-07, -6.014896169720738e-07,
- 5.841126695566173e-07, -5.672377400509635e-07,
- 5.508503223216395e-07, -5.349363333399711e-07,
- 5.194820986824491e-07, -5.044743364413132e-07,
- 4.899001458890472e-07, -4.757469999761242e-07,
- 4.620027360551677e-07, -4.486555431391317e-07,
- 4.356939495368206e-07, -4.231068139067277e-07,
- 4.108833178901058e-07, -3.990129570237777e-07,
- 3.874855299952715e-07, -3.762911289578004e-07,
- 3.654201320223786e-07, -3.548631961765860e-07,
- 3.446112489455190e-07, -3.346554794873414e-07,
- 3.249873307934947e-07, -3.155984931421240e-07,
- 3.064808974928670e-07, -2.976267081233949e-07,
- 2.890283152696976e-07, -2.806783286653362e-07,
- 2.725695717362821e-07, -2.646950756050221e-07,
- 2.570480727284082e-07, -2.496219907786807e-07,
- 2.424104471687142e-07, -2.354072438896643e-07,
- 2.286063621819694e-07, -2.220019570969968e-07,
- 2.155883523600859e-07, -2.093600356601861e-07,
- 2.033116540781646e-07, -1.974380094205501e-07,
- 1.917340535876188e-07, -1.861948842172547e-07,
- 1.808157405985162e-07, -1.755919996494557e-07,
- 1.705191718700136e-07, -1.655928973946416e-07,
- 1.608089422670497e-07, -1.561631948835526e-07,
- 1.516516624771349e-07, -1.472704676262496e-07,
- 1.430158448819191e-07, -1.388841375627619e-07,
- 1.348717946589134e-07, -1.309753677747614e-07,
- 1.271915081246862e-07, -1.235169636417206e-07,
- 1.199485762099940e-07, -1.164832789732080e-07,
- 1.131180936862105e-07, -1.098501281312535e-07,
- 1.066765736321394e-07, -1.035947026599537e-07,
- 1.006018664975167e-07, -9.769549295058651e-08,
- 9.487308412474974e-08, -9.213221428331440e-08,
- 8.947052777472484e-08, -8.688573700943115e-08,
- 8.437562048443172e-08, -8.193802086874367e-08,
- 7.957084315467929e-08, -7.727205286392824e-08,
- 7.503967429747869e-08, -7.287178883148888e-08,
- 7.076653326692979e-08, -6.872209823264986e-08,
- 6.673672663335082e-08, -6.480871213716780e-08,
- 6.293639770567428e-08, -6.111817417008917e-08,
- 5.935247885127626e-08, -5.763779421770836e-08,
- 5.597264657919956e-08, -5.435560481863042e-08,
- 5.278527916288309e-08, -5.126031999018991e-08,
- 4.977941667022704e-08, -4.834129643623350e-08,
- 4.694472329047102e-08, -4.558849694284832e-08,
- 4.427145178025873e-08, -4.299245586445184e-08,
- 4.175040995827635e-08, -4.054424658081963e-08,
- 3.937292909065092e-08, -3.823545079527342e-08,
- 3.713083408552377e-08, -3.605812959486601e-08,
- 3.501641538356351e-08, -3.400479614676831e-08,
- 3.302240244515663e-08, -3.206838995736202e-08,
- 3.114193875409117e-08, -3.024225259359901e-08,
- 2.936855823761587e-08, -2.852010478676213e-08,
- 2.769616303496246e-08, -2.689602484264953e-08,
- 2.611900252829978e-08, -2.536442827753140e-08,
- 2.463165356908288e-08, -2.392004861730570e-08,
- 2.322900183088905e-08, -2.255791928733344e-08,
- 2.190622422255186e-08, -2.127335653510145e-08,
- 2.065877230473273e-08, -2.006194332493974e-08,
- 1.948235664905881e-08, -1.891951414942437e-08,
- 1.837293208920017e-08, -1.784214070660012e-08,
- 1.732668381117887e-08, -1.682611839179446e-08,
- 1.634001423585344e-08, -1.586795355952947e-08,
- 1.540953064868929e-08, -1.496435151022419e-08,
- 1.453203353344868e-08, -1.411220516125227e-08,
- 1.370450557074419e-08, -1.330858436314438e-08,
- 1.292410126264865e-08, -1.255072582398340e-08,
- // 600
- 1.218813714839246e-08, -1.183602360782992e-08,
- 1.149408257713515e-08, -1.116202017395058e-08,
- 1.083955100614394e-08, -1.052639792651900e-08,
- 1.022229179461678e-08, -9.926971245406734e-09,
- 9.640182464660921e-09, -9.361678970810806e-09,
- 9.091221403102823e-09, -8.828577315878212e-09,
- 8.573520978800615e-09, -8.325833182853652e-09,
- 8.085301051938885e-09, -7.851717859915976e-09,
- 7.624882852931747e-09, -7.404601076884107e-09,
- 7.190683209868762e-09, -6.982945399464102e-09,
- 6.781209104717332e-09, -6.585300942697731e-09,
- 6.395052539483568e-09, -6.210300385452473e-09,
- 6.030885694751333e-09, -5.856654268826800e-09,
- 5.687456363899640e-09, -5.523146562267662e-09,
- 5.363583647325650e-09, -5.208630482195534e-09,
- 5.058153891863612e-09, -4.912024548723426e-09,
- 4.770116861425010e-09, -4.632308866934630e-09,
- 4.498482125712853e-09, -4.368521619921419e-09,
- 4.242315654571151e-09, -4.119755761525383e-09,
- 4.000736606276379e-09, -3.885155897415073e-09,
- 3.772914298716528e-09, -3.663915343765296e-09,
- 3.558065353046999e-09, -3.455273353434971e-09,
- 3.355451000003056e-09, -3.258512500097394e-09,
- 3.164374539601736e-09, -3.072956211332787e-09,
- 2.984178945504153e-09, -2.897966442199276e-09,
- 2.814244605795313e-09, -2.732941481281439e-09,
- 2.653987192416816e-09, -2.577313881675167e-09,
- 2.502855651924429e-09, -2.430548509791296e-09,
- 2.360330310661908e-09, -2.292140705271406e-09,
- 2.225921087836540e-09, -2.161614545686758e-09,
- 2.099165810350450e-09, -2.038521210054267e-09,
- 1.979628623594711e-09, -1.922437435542387e-09,
- 1.866898492740427e-09, -1.812964062059653e-09,
- 1.760587789374176e-09, -1.709724659722168e-09,
- 1.660330958617607e-09, -1.612364234479730e-09,
- 1.565783262147887e-09, -1.520548007450427e-09,
- 1.476619592797189e-09, -1.433960263766035e-09,
- 1.392533356654690e-09, -1.352303266970005e-09,
- 1.313235418827548e-09, -1.275296235235242e-09,
- 1.238453109235514e-09, -1.202674375881138e-09,
- 1.167929285020692e-09, -1.134187974870230e-09,
- 1.101421446348478e-09, -1.069601538153474e-09,
- 1.038700902559248e-09, -1.008692981911727e-09,
- 9.795519858036667e-10, -9.512528689090021e-10,
- 9.237713094575600e-10, -8.970836883316330e-10,
- 8.711670687664494e-10, -8.459991766370928e-10,
- 8.215583813149323e-10, -7.978236770771082e-10,
- 7.747746650530930e-10, -7.523915356928136e-10,
- 7.306550517412669e-10, -7.095465317049981e-10,
- 6.890478337962292e-10, -6.691413403408390e-10,
- 6.498099426367938e-10, -6.310370262500165e-10,
- 6.128064567350563e-10, -5.951025657682865e-10,
- 5.779101376817111e-10, -5.612143963858077e-10,
- 5.450009926701687e-10, -5.292559918710250e-10,
- 5.139658618950525e-10, -4.991174615891697e-10,
- 4.846980294463296e-10, -4.706951726376001e-10,
- 4.570968563611062e-10, -4.438913934986793e-10,
- 4.310674345713248e-10, -4.186139579848742e-10,
- 4.065202605574395e-10, -3.947759483205284e-10,
- 3.833709275859127e-10, -3.722953962705749e-10,
- 3.615398354722752e-10, -3.510950012884991e-10,
- 3.409519168717552e-10, -3.311018647143929e-10,
- 3.215363791563124e-10, -3.122472391091240e-10,
- 3.032264609905071e-10, -2.944662918626933e-10,
- 2.859592027691788e-10, -2.776978822639370e-10,
- 2.696752301275724e-10, -2.618843512650130e-10,
- 2.543185497794985e-10, -2.469713232177689e-10,
- 2.398363569815098e-10, -2.329075189002498e-10,
- 2.261788539610461e-10, -2.196445791904288e-10,
- 2.132990786842053e-10, -2.071368987808525e-10,
- 2.011527433743496e-10, -1.953414693624216e-10,
- 1.896980822262837e-10, -1.842177317380848e-10,
- 1.788957077923634e-10, -1.737274363579317e-10,
- 1.687084755467094e-10, -1.638345117961281e-10,
- 1.591013561618254e-10, -1.545049407174433e-10,
- 1.500413150584345e-10, -1.457066429068751e-10,
- 1.414971988143619e-10, -1.374093649601637e-10,
- 1.334396280418735e-10, -1.295845762558885e-10,
- 1.258408963651246e-10, -1.222053708514437e-10,
- 1.186748751503467e-10, -1.152463749655566e-10,
- 1.119169236611821e-10, -1.086836597292220e-10,
- 1.055438043302322e-10, -1.024946589050432e-10,
- 9.953360285547502e-11, -9.665809129205519e-11,
- 9.386565284680683e-11, -9.115388754922578e-11,
- 8.852046476362457e-11, -8.596312118607507e-11,
- 8.347965889923978e-11, -8.106794348344660e-11,
- 7.872590218244558e-11, -7.645152212241484e-11,
- 7.424284858301879e-11, -7.209798331980772e-11,
- 7.001508293831718e-11, -6.799235732265070e-11,
- 6.602806812690510e-11, -6.412052735069306e-11,
- 6.226809604991307e-11, -6.046918330329692e-11,
- 5.872224571634798e-11, -5.702578811834639e-11,
- 5.537836697680089e-11, -5.377860007122251e-11,
- 5.222519065363231e-11, -5.071698520520750e-11,
- 4.925310917157278e-11, -4.783328375532226e-11,
- 4.645856316442775e-11, -4.513304831495452e-11,
- 4.386786828115582e-11, -4.269042848860555e-11,
- 4.166589074066043e-11, -4.094706131972530e-11,
- 4.089025606285087e-11, -4.232439520086882e-11,
- 4.717597028661840e-11, -5.992051472297203e-11,
- // 800
- 9.095360729014628e-11,
- // J1 filter coeffs
- -2.377900110058238e-29, 7.972119293423644e-28,
- 3.832566186338494e-28, 8.493403321392027e-28,
- 8.232164371695149e-28, 1.100368717019849e-27,
- 1.325428732821688e-27, 1.592246428628784e-27,
- 1.998601965098251e-27, 2.368546581454427e-27,
- 2.979879339217500e-27, 3.543101964370716e-27,
- 4.425741130789444e-27, 5.318079447058835e-27,
- 6.555619006665152e-27, 7.994776219905923e-27,
- 9.707158322300619e-27, 1.200497993577129e-26,
- 1.440665350963159e-26, 1.797046711269925e-26,
- 2.145390397713542e-26, 2.681614737113612e-26,
- 3.203783629081399e-26, 3.992219752668547e-26,
- 4.793780377063212e-26, 5.935124745092138e-26,
- 7.177334354418767e-26, 8.825226769587027e-26,
- 1.073646008000832e-25, 1.313923424181352e-25,
- 1.603838995307793e-25, 1.958633055912045e-25,
- 2.393489595056268e-25, 2.921690713642289e-25,
- 3.570455561097498e-25, 4.359157800465477e-25,
- 5.325840709133780e-25, 6.503774912184682e-25,
- 7.944611784834684e-25, 9.702980761516990e-25,
- 1.185162186264197e-24, 1.447534903673577e-24,
- 1.768047044621983e-24, 2.159464672432506e-24,
- 2.637627922624120e-24, 3.221525590342443e-24,
- 3.934898912364447e-24, 4.805930563105760e-24,
- 5.870195744781909e-24, 7.169601400607034e-24,
- 8.757287433857846e-24, 1.069583032926807e-23,
- 1.306426797568440e-23, 1.595639689868334e-23,
- 1.948949017485241e-23, 2.380425857645875e-23,
- 2.907479573699533e-23, 3.551187751264232e-23,
- 4.337441481530691e-23, 5.297756660121858e-23,
- 6.470696377141974e-23, 7.903329008477021e-23,
- 9.653141660115531e-23, 1.179038165380973e-22,
- 1.440079827014168e-22, 1.758917653247009e-22,
- 2.148347376559587e-22, 2.623996157283884e-22,
- 3.204958075285148e-22, 3.914542160210567e-22,
- 4.781235486108842e-22, 5.839810952393910e-22,
- 7.132764830587759e-22, 8.711974589175415e-22,
- 1.064083434862305e-21, 1.299673924385260e-21,
- 1.587425911126261e-21, 1.938885693339251e-21,
- 2.368161151141687e-21, 2.892477586360832e-21,
- 3.532881273577120e-21, 4.315069519949315e-21,
- 5.270439518682773e-21, 6.437327295395713e-21,
- 7.862571844418139e-21, 9.603363814287760e-21,
- 1.172957893208765e-20, 1.432653521781635e-20,
- 1.749847566646075e-20, 2.137267893871469e-20,
- 2.610465830070486e-20, 3.188429016442547e-20,
- 3.894357412134842e-20, 4.756577134959383e-20,
- 5.809698595129943e-20, 7.095979207053098e-20,
- 8.667051908059619e-20, 1.058595695124327e-19,
- 1.292972220966051e-19, 1.579239186764568e-19,
- 1.928887914036691e-19, 2.355947994119052e-19,
- 2.877562665708650e-19, 3.514661357021616e-19,
- 4.292819113549590e-19, 5.243258540458620e-19,
- 6.404133671732880e-19, 7.822022466379286e-19,
- 9.553844929891425e-19, 1.166908611051965e-18,
- 1.425266206309626e-18, 1.740823055783105e-18,
- 2.126247365091890e-18, 2.597002781312310e-18,
- 3.171988392298073e-18, 3.874272813855638e-18,
- 4.732050718776532e-18, 5.779735750225090e-18,
- 7.059390282316958e-18, 8.622352349869446e-18,
- 1.053137301019041e-17, 1.286303788941302e-17,
- 1.571096273151045e-17, 1.918939713846172e-17,
- 2.343800282007509e-17, 2.862721583723883e-17,
- 3.496539240998871e-17, 4.270678642844850e-17,
- 5.216223744747131e-17, 6.371103687921334e-17,
- 7.781691646330707e-17, 9.504569536565720e-17,
- 1.160892016025935e-16, 1.417915110596655e-16,
- 1.731847439832610e-16, 2.115280706868521e-16,
- 2.583612876753947e-16, 3.155627883343085e-16,
- 3.854297646671823e-16, 4.707643426724462e-16,
- 5.749936655677889e-16, 7.022978436839158e-16,
- 8.577897883808816e-16, 1.047705221625211e-15,
- 1.279672050432180e-15, 1.562992451553929e-15,
- 1.909046462722709e-15, 2.331710624424154e-15,
- 2.847962809294981e-15, 3.478503311969800e-15,
- 4.248661490032314e-15, 5.189316858234294e-15,
- 6.338258511920505e-15, 7.741550588468052e-15,
- 9.455571172640662e-15, 1.154903563040828e-14,
- 1.410605553114248e-14, 1.722913542283047e-14,
- 2.104376349301754e-14, 2.570284789891445e-14,
- 3.139360843035402e-14, 3.834414037586157e-14,
- 4.683376407804295e-14, 5.720273100006960e-14,
- 6.986777175159004e-14, 8.533643955954289e-14,
- 1.042304766775628e-13, 1.273069965554705e-13,
- 1.554936139359936e-13, 1.899197032959808e-13,
- 2.319692366825060e-13, 2.833268748946759e-13,
- 3.460574729307441e-13, 4.226739834760657e-13,
- 5.162571427996572e-13, 6.305554147709428e-13,
- 7.701652476024983e-13, 9.406780256740293e-13,
- 1.148951682734905e-12, 1.403326528650366e-12,
- 1.714034726435434e-12, 2.093516885212530e-12,
- 2.557039701256063e-12, 3.123159736572392e-12,
- 3.814655555107956e-12, 4.659206104975550e-12,
- 5.690798281976283e-12, 6.950717591317659e-12,
- 8.489674870123959e-12, 1.036925035218241e-11,
- 1.266510893213373e-11, 1.546910089464080e-11,
- 1.889412592258518e-11, 2.307718220992490e-11,
- 2.818672942203327e-11, 3.442710316037366e-11,
- 4.204966817018048e-11, 5.135919134271227e-11,
- 6.273074786797763e-11, 7.661889201263122e-11,
- // 200
- 9.358330171196327e-11, 1.143019267753882e-10,
- 1.396099167826153e-10, 1.705183920059801e-10,
- 2.082735788845278e-10, 2.543834767842491e-10,
- 3.107077590612055e-10, 3.794954396016648e-10,
- 4.635216515055463e-10, 5.661404892806104e-10,
- 6.914932735763221e-10, 8.445820788220271e-10,
- 1.031587101304291e-09, 1.259967952077770e-09,
- 1.538947681019300e-09, 1.879650592174711e-09,
- 2.295841053082368e-09, 2.804108039269473e-09,
- 3.424993797807946e-09, 4.183235823312564e-09,
- 5.109492567813164e-09, 6.240651650854630e-09,
- 7.622470723630660e-09, 9.309953703014609e-09,
- 1.137139562283767e-08, 1.388881160360346e-08,
- 1.696413754044688e-08, 2.071966056701105e-08,
- 2.530753298545001e-08, 3.091008276019684e-08,
- 3.775442398336976e-08, 4.611239491146397e-08,
- 5.632301501798812e-08, 6.879156104001002e-08,
- 8.402411522137500e-08, 1.026248703632157e-07,
- 1.253493263032310e-07, 1.530981849317344e-07,
- 1.869993328577540e-07, 2.283954331971998e-07,
- 2.789703820965002e-07, 3.407255717347445e-07,
- 4.161751163160901e-07, 5.083021657140526e-07,
- 6.208605585127383e-07, 7.582965471628845e-07,
- 9.262152932479593e-07, 1.131243348429578e-06,
- 1.381750677989317e-06, 1.687612654971312e-06,
- 2.061328504830195e-06, 2.517614221705925e-06,
- 3.075136493715169e-06, 3.755823026355034e-06,
- 4.587552788474290e-06, 5.602996673366901e-06,
- 6.843794758360242e-06, 8.358620144706847e-06,
- 1.020967008292656e-05, 1.246945025422475e-05,
- 1.523086887102219e-05, 1.860192083272764e-05,
- 2.272139580071132e-05, 2.775012613215501e-05,
- 3.389544779882663e-05, 4.139684113647092e-05,
- 5.056404631634212e-05, 6.175357572143610e-05,
- 7.542814171915086e-05, 9.211833800758343e-05,
- 1.125153468149895e-04, 1.374085645976000e-04,
- 1.678302935465055e-04, 2.049544027080777e-04,
- 2.503222397064943e-04, 3.056782429102864e-04,
- 3.733227575027256e-04, 4.558456931739724e-04,
- 5.566775872841220e-04, 6.796584276296773e-04,
- 8.298982533418059e-04, 1.013079388381259e-03,
- 1.236799879071809e-03, 1.509444128879166e-03,
- 1.842278291863989e-03, 2.247620855799141e-03,
- 2.742106207595588e-03, 3.343716405309918e-03,
- 4.076852784788600e-03, 4.967507347193811e-03,
- 6.051117627655160e-03, 7.364681573940744e-03,
- 8.958863753805689e-03, 1.088505212285743e-02,
- 1.321388763870185e-02, 1.601387913655473e-02,
- 1.937949548174205e-02, 2.339556612555552e-02,
- 2.817934173583488e-02, 3.382079060619734e-02,
- 4.044464120111045e-02, 4.810974644754662e-02,
- 5.689934182811928e-02, 6.675168423575902e-02,
- 7.759114407311523e-02, 8.904761297446566e-02,
- 1.006540591855666e-01, 1.114010542073269e-01,
- 1.200693293287907e-01, 1.245859746888521e-01,
- 1.226876554954843e-01, 1.111594205067191e-01,
- 8.731995478664586e-02, 4.846500030224664e-02,
- -4.956156637375708e-03, -6.947108182097863e-02,
- -1.335126953345830e-01, -1.795750728565332e-01,
- -1.819110629504884e-01, -1.209847646201776e-01,
- 5.791427226916448e-03, 1.534812881363312e-01,
- 2.352209731069856e-01, 1.515040026640386e-01,
- -8.279085782145131e-02, -2.711543104015952e-01,
- -1.331279806376289e-01, 2.242058279665979e-01,
- 2.304292248782090e-01, -2.572813803130152e-01,
- -1.475549438192476e-01, 3.611935526731244e-01,
- -2.435371552288723e-01, 3.811454725614711e-02,
- 8.273650321459338e-02, -1.091467781119748e-01,
- 8.964328522861212e-02, -6.097788815932206e-02,
- 3.780123181837066e-02, -2.243862121105374e-02,
- 1.315627818991557e-02, -7.789693311677149e-03,
- 4.737032461705975e-03, -2.996529369596568e-03,
- 1.987854486046977e-03, -1.386982713556120e-03,
- 1.015740041573320e-03, -7.763183089745113e-04,
- 6.146040263274792e-04, -5.002069052247894e-04,
- 4.157061680153099e-04, -3.508644775971589e-04,
- 2.994936403367197e-04, -2.577357341490762e-04,
- 2.231048844827660e-04, -1.939428674265101e-04,
- 1.691035669098717e-04, -1.477663053511028e-04,
- 1.293230643516167e-04, -1.133088634015300e-04,
- 9.935787087369453e-05, -8.717517169548774e-05,
- 7.651820346514748e-05, -6.718422692060818e-05,
- 5.900162548547053e-05, -5.182370043717230e-05,
- 4.552413144789780e-05, -3.999355821930881e-05,
- 3.513692405823457e-05, -3.087135626461035e-05,
- 2.712444449271282e-05, -2.383282162264958e-05,
- 2.094097402272335e-05, -1.840022834334601e-05,
- 1.616788131114735e-05, -1.420645034584182e-05,
- 1.248302592309649e-05, -1.096870811434504e-05,
- 9.638113747637144e-06, -8.468945120923146e-06,
- 7.441613142631071e-06, -6.538907689594796e-06,
- 5.745708304710312e-06, -5.048729864716120e-06,
- 4.436299286415519e-06, -3.898159774165185e-06,
- 3.425299055300640e-06, -3.009798361246221e-06,
- 2.644699605727544e-06, -2.323888735130234e-06,
- 2.041993364758909e-06, -1.794292864274530e-06,
- 1.576639283761010e-06, -1.385387831873578e-06,
- 1.217335820899756e-06, -1.069669061011715e-06,
- 9.399147533431300e-07, -8.259000682217990e-07,
- 7.257157398665060e-07, -6.376840939530841e-07,
- // 400
- 5.603309658957991e-07, -4.923610193285461e-07,
- 4.326360479415582e-07, -3.801559094539231e-07,
- 3.340417795380239e-07, -2.935214398955969e-07,
- 2.579163472426386e-07, -2.266302675538730e-07,
- 1.991392901933410e-07, -1.749830560542944e-07,
- 1.537570500204901e-07, -1.351058266793548e-07,
- 1.187170569339987e-07, -1.043162975874935e-07,
- 9.166239627647569e-08, -8.054345360702865e-08,
- 7.077327442848185e-08, -6.218824944698919e-08,
- 5.464461550533503e-08, -4.801604844364623e-08,
- 4.219154778426137e-08, -3.707357778095240e-08,
- 3.257643398813585e-08, -2.862480813390940e-08,
- 2.515252712714758e-08, -2.210144493659511e-08,
- 1.942046882050334e-08, -1.706470371165871e-08,
- 1.499470045020363e-08, -1.317579520863365e-08,
- 1.157752900730261e-08, -1.017313762883149e-08,
- 8.939103427741988e-09, -7.854761525494339e-09,
- 6.901953769038680e-09, -6.064724650448546e-09,
- 5.329054110861765e-09, -4.682622765482983e-09,
- 4.114605612289784e-09, -3.615490760147216e-09,
- 3.176920140880805e-09, -2.791549544501460e-09,
- 2.452925636291220e-09, -2.155377892876758e-09,
- 1.893923644634260e-09, -1.664184635389759e-09,
- 1.462313704613378e-09, -1.284930364574083e-09,
- 1.129064192077534e-09, -9.921050860675488e-10,
- 8.717595588633507e-10, -7.660123299045589e-10,
- 6.730925786777026e-10, -5.914442910883912e-10,
- 5.197002025874266e-10, -4.566589020735369e-10,
- 4.012647133825055e-10, -3.525900173049568e-10,
- 3.098197178898629e-10, -2.722375929324441e-10,
- 2.392143002251476e-10, -2.101968387708856e-10,
- 1.846992883946521e-10, -1.622946726187645e-10,
- 1.426078085707891e-10, -1.253090242443995e-10,
- 1.101086379038488e-10, -9.675210714907983e-11,
- 8.501576639446501e-11, -7.470308140061063e-11,
- 6.564135815534322e-11, -5.767885098561786e-11,
- 5.068222145975428e-11, -4.453430552590912e-11,
- 3.913215150436401e-11, -3.438529608259476e-11,
- 3.021424943923932e-11, -2.654916412468056e-11,
- 2.332866540856460e-11, -2.049882351089608e-11,
- 1.801225050660065e-11, -1.582730677850963e-11,
- 1.390740372895185e-11, -1.222039107416370e-11,
- 1.073801846245205e-11, -9.435462400371624e-12,
- 8.290910564095319e-12, -7.285196534694753e-12,
- 6.401478841143664e-12, -5.624958936714699e-12,
- 4.942633385892820e-12, -4.343076111680976e-12,
- 3.816247056854583e-12, -3.353324055246731e-12,
- 2.946555097697522e-12, -2.589128518642891e-12,
- 2.275058929421262e-12, -1.999086988193079e-12,
- 1.756591328117270e-12, -1.543511168961402e-12,
- 1.356278316168970e-12, -1.191757408630524e-12,
- 1.047193414582761e-12, -9.201654964381461e-13,
- 8.085464719703853e-13, -7.104671929827940e-13,
- 6.242852449483966e-13, -5.485574434836370e-13,
- 4.820156670945356e-13, -4.235456214910329e-13,
- 3.721681798548054e-13, -3.270229865892332e-13,
- 2.873540499880031e-13, -2.524970825616983e-13,
- 2.218683770237039e-13, -1.949550316531413e-13,
- 1.713063613517743e-13, -1.505263505679493e-13,
- 1.322670217058939e-13, -1.162226079680830e-13,
- 1.021244330498886e-13, -8.973641194353509e-14,
- 7.885109750931469e-14, -6.928620661062564e-14,
- 6.088156763982168e-14, -5.349643831874401e-14,
- 4.700714885865928e-14, -4.130503101260246e-14,
- 3.629459834036019e-14, -3.189194721306437e-14,
- 2.802335178098858e-14, -2.462402937628328e-14,
- 2.163705567637205e-14, -1.901241146150821e-14,
- 1.670614500365970e-14, -1.467963606029139e-14,
- 1.289894914807883e-14, -1.133426526661138e-14,
- 9.959382555826870e-15, -8.751277525286314e-15,
- 7.689719507742115e-15, -6.756931880732829e-15,
- 5.937294383089198e-15, -5.217081541398457e-15,
- 4.584232826172386e-15, -4.028150688809716e-15,
- 3.539523097325829e-15, -3.110167599068186e-15,
- 2.732894299122300e-15, -2.401385459874979e-15,
- 2.110089705537303e-15, -1.854129059999304e-15,
- 1.629217261290832e-15, -1.431587984759346e-15,
- 1.257931773006046e-15, -1.105340616423372e-15,
- 9.712592562913251e-16, -8.534423949641643e-16,
- 7.499170965983152e-16, -6.589497487925016e-16,
- 5.790170318870357e-16, -5.087804097802586e-16,
- 4.470637150906226e-16, -3.928334533103688e-16,
- 3.451814961285280e-16, -3.033098741093958e-16,
- 2.665174140678718e-16, -2.341879973739602e-16,
- 2.057802425625493e-16, -1.808184394757190e-16,
- 1.588845831226758e-16, -1.396113738580090e-16,
- 1.226760666607451e-16, -1.077950665155628e-16,
- 9.471917939160380e-17, -8.322943929278698e-17,
- 7.313344150029316e-17, -6.426212060448496e-17,
- 5.646691937188211e-17, -4.961730103765172e-17,
- 4.359856336499476e-17, -3.830991786613391e-17,
- 3.366280201995165e-17, -2.957939622304163e-17,
- 2.599132063935437e-17, -2.283849012615860e-17,
- 2.006810806115271e-17, -1.763378222157133e-17,
- 1.549474790998944e-17, -1.361518531745643e-17,
- 1.196361969267083e-17, -1.051239427255871e-17,
- 9.237207148064648e-18, -8.116704309607398e-18,
- 7.132122057424711e-18, -6.266972788687375e-18,
- 5.506768899643017e-18, -4.838780179316216e-18,
- 4.251820632131413e-18, -3.736061159634172e-18,
- // 600
- 3.282864964518770e-18, -2.884642920675208e-18,
- 2.534726487315339e-18, -2.227256039024718e-18,
- 1.957082741736910e-18, -1.719682331465223e-18,
- 1.511079351949921e-18, -1.327780582522198e-18,
- 1.166716541382233e-18, -1.025190084716866e-18,
- 9.008312409083032e-19, -7.915575234972099e-19,
- 6.955390583093758e-19, -6.111679407722684e-19,
- 5.370313102870695e-19, -4.718876907676534e-19,
- 4.146462011511975e-19, -3.643482877427443e-19,
- 3.201516724850009e-19, -2.813162483527929e-19,
- 2.471916856791182e-19, -2.172065418717432e-19,
- 1.908586921555019e-19, -1.677069210972190e-19,
- 1.473635341074691e-19, -1.294878651921690e-19,
- 1.137805722345515e-19, -9.997862427642855e-20,
- 8.785089685693581e-20, -7.719430165048124e-20,
- 6.783038559324186e-20, -5.960234254861157e-20,
- 5.237238746867620e-20, -4.601944907799879e-20,
- 4.043714244041481e-20, -3.553198745789200e-20,
- 3.122184346997662e-20, -2.743453374142427e-20,
- 2.410663680492846e-20, -2.118242441910240e-20,
- 1.861292835641397e-20, -1.635512039302220e-20,
- 1.437119176831859e-20, -1.262792004764438e-20,
- 1.109611278531706e-20, -9.750118671903616e-21,
- 8.567397980805881e-21, -7.528145122423124e-21,
- 6.614956985587211e-21, -5.812541511365789e-21,
- 5.107461617652140e-21, -4.487910185482492e-21,
- 3.943512339081440e-21, -3.465151709308229e-21,
- 3.044817771736880e-21, -2.675471703023044e-21,
- 2.350928509369901e-21, -2.065753454081455e-21,
- 1.815171050414263e-21, -1.594985094847466e-21,
- 1.401508399670877e-21, -1.231501046949432e-21,
- 1.082116130537259e-21, -9.508520796066248e-22,
- 8.355107675059663e-22, -7.341607053512435e-22,
- 6.451047024956878e-22, -5.668514489455267e-22,
- 4.980905412312518e-22, -4.376705343564336e-22,
- 3.845796559678223e-22, -3.379288625754182e-22,
- 2.969369534739024e-22, -2.609174906141295e-22,
- 2.292673041856001e-22, -2.014563919875952e-22,
- 1.770190438740656e-22, -1.555460422525817e-22,
- 1.366778079672955e-22, -1.200983777985825e-22,
- 1.055301137906078e-22, -9.272905558580399e-23,
- 8.148083664639517e-23, -7.159709489187570e-23,
- 6.291231754727859e-23, -5.528106802589832e-23,
- 4.857554932085610e-23, -4.268346388064600e-23,
- 3.750613425528731e-23, -3.295685226039235e-23,
- 2.895942787876105e-23, -2.544691315369192e-23,
- 2.236048039475426e-23, -1.964843688844607e-23,
- 1.726535979915737e-23, -1.517133602902566e-23,
- 1.333129356639782e-23, -1.171441336528463e-23,
- 1.029361299133160e-23, -9.045094266181886e-24,
- 7.947947207266389e-24, -6.983802597398395e-24,
- 6.136526075969871e-24, -5.391947793289710e-24,
- 4.737623457434066e-24, -4.162624052945447e-24,
- 3.657351341563861e-24, -3.213375054547230e-24,
- 2.823287629843971e-24, -2.480574676640252e-24,
- 2.179502108849238e-24, -1.915020796639139e-24,
- 1.682686753114865e-24, -1.478592609598710e-24,
- 1.299306570857684e-24, -1.141816901768704e-24,
- 1.003481245022785e-24, -8.819804660957208e-25,
- 7.752768477813106e-25, -6.815767858002522e-25,
- 5.992985900665248e-25, -5.270459063734392e-25,
- 4.635862411179793e-25, -4.078328923510551e-25,
- 3.588287019442058e-25, -3.157312905756895e-25,
- 2.778003181153750e-25, -2.443872105993099e-25,
- 2.149270912330287e-25, -1.889318548953116e-25,
- 1.659828344765530e-25, -1.457219798327836e-25,
- 1.278418979568063e-25, -1.120761165538443e-25,
- 9.819063583398694e-26, -8.597706957547351e-26,
- 7.524761802539771e-26, -6.583229692872437e-26,
- 5.757815308418353e-26, -5.034908817517119e-26,
- 4.402475606598968e-26, -3.849819197101101e-26,
- 3.367329111558304e-26, -2.946341179122434e-26,
- 2.579121784723996e-26, -2.258873118181162e-26,
- 1.979667076757990e-26, -1.736329567227616e-26,
- 1.524356928842631e-26, -1.339878795333426e-26,
- 1.179604582048012e-26, -1.040714749090827e-26,
- 9.207194488904074e-27, -8.173124929559144e-27,
- 7.282515970348745e-27, -6.513100644712918e-27,
- 5.843030126248539e-27, -5.251393008101120e-27,
- 4.718791967930222e-27, -4.228406914229241e-27,
- 3.767695474750273e-27, -3.329913400113583e-27,
- 2.914300433863011e-27, -2.524366823406565e-27,
- 2.164690315762398e-27, -1.837673402805216e-27,
- 1.542301736687901e-27, -1.275894419058812e-27,
- 1.037166283039543e-27, -8.274817350070647e-28,
- 6.490942784063843e-28, -5.023466637656253e-28,
- 3.845211097313078e-28, -2.909163620505845e-28,
- 2.167800946716682e-28, -1.587457861911164e-28,
- 1.153739423502031e-28, -8.690036418978894e-29,
- 7.435572366263697e-29, -7.847142831542739e-29,
- 9.894985212873060e-29, -1.342720280592225e-28,
- 1.817424273402145e-28, -2.376361960950870e-28,
- 2.977819810711053e-28, -3.586836968065507e-28,
- 4.184476666502118e-28, -4.766085106688037e-28,
- 5.328777445258146e-28, -5.858824985834212e-28,
- 6.329409859706737e-28, -6.709268971860476e-28,
- 6.975416172179417e-28, -7.122929261229363e-28,
- 7.167821355397955e-28, -7.142209321177599e-28,
- 7.084785743816030e-28, -7.032486471839363e-28,
- 7.017650479151096e-28, -7.069608472164614e-28,
- // 800
- 7.214920505613761e-28).finished();
-
- const Real FHTAnderson801::ABSCISSA = 0.7059431685223780; //
- const Real FHTAnderson801::ABSE = 1.10517091807564762; // exp(.1)
- const Real FHTAnderson801::ABSER = 0.904837418035959573; // 1/exp(.1)
-
- // ==================== LIFECYCLE ==============================
- FHTAnderson801::FHTAnderson801(const ctor_key& key ) : HankelTransform( key ),
- Lambda(0), NumFun(0),
- NumConv(0), NumRel(0),
- BesselOrder(-1), Manager(nullptr) {
- }
-
- FHTAnderson801::FHTAnderson801( const YAML::Node& node, const ctor_key& key ) : HankelTransform( key ) {
- Lambda = node["Lambda"].as<Real>();
- NumFun = node["NumFun"].as<int>();
- NumConv = node["NumConv"].as<int>();
- NumRel = node["NumRel"].as<int>( );
- BesselOrder = node["BesselOrder"].as<int>( );
- //Manager = KernelEM1DManager::DeSerialize(node["Manager"]);
- }
-
- FHTAnderson801::~FHTAnderson801() {
- }
-
- std::shared_ptr<FHTAnderson801> FHTAnderson801::NewSP() {
- return std::make_shared<FHTAnderson801>( ctor_key() );
- }
-
- std::unique_ptr<FHTAnderson801> FHTAnderson801::NewUP() {
- return std::make_unique<FHTAnderson801>( ctor_key() );
- }
-
- std::shared_ptr<FHTAnderson801> FHTAnderson801::DeSerialize( const YAML::Node& node ) {
- if (node.Tag() != "FHTAnderson801") {
- throw DeSerializeTypeMismatch( "FHTAnderson801", node.Tag());
- }
- return std::make_shared<FHTAnderson801> ( node, ctor_key() );
- }
-
- YAML::Node FHTAnderson801::Serialize() const {
- YAML::Node node = HankelTransform::Serialize();
- node.SetTag( GetName() );
- node["Lambda"] = Lambda;
- node["NumFun"] = NumFun;
- node["NumConv"] = NumConv;
- node["NumRel"] = NumRel;
- node["BesselOrder"] = BesselOrder;
- node["Manager"] = Manager->Serialize();
- return node;
- }
-
- void FHTAnderson801::DeleteSplines() {
- splineVecReal.clear();
- splineVecImag.clear();
- }
-
- //--------------------------------------------------------------------------------------
- // Class: FHTAnderson801
- // Method: GetName
- // Description: Class identifier
- //--------------------------------------------------------------------------------------
- inline std::string FHTAnderson801::GetName ( ) const {
- return CName;
- } // ----- end of method FHTAnderson801::GetName -----
-
- // ==================== OPERATIONS ==============================
-
- void FHTAnderson801::ComputeRelated(const Real& rho, std::shared_ptr<KernelEM1DBase> Kernel) {
- //this->AttachKernel(Kernel);
- this->SetNumConv(1);
- icount = 0;
- #ifdef LEMMA_SINGLE_PRECISION
- Compute(rho, 1, 1e-8);
- #else
- Compute(rho, 1, 1e-14);
- #endif
- }
-
- void FHTAnderson801::ComputeRelated(const Real& rho, std::vector< std::shared_ptr<KernelEM1DBase> > KernelVecIn ) {
- icount = 0;
- this->kernelVec = KernelVecIn;
- this->SetNumConv(1);
- #ifdef LEMMA_SINGLE_PRECISION
- Compute(rho, 1, 1e-8);
- #else
- Compute(rho, 1, 1e-14);
- #endif
- }
-
- void FHTAnderson801::ComputeRelated(const Real& rho, std::shared_ptr<KernelEM1DManager> KernelManager) {
- icount = 0;
- Manager = KernelManager;
- this->kernelVec = KernelManager->GetSTLVector();
- this->SetNumConv(1);
- #ifdef LEMMA_SINGLE_PRECISION
- Compute(rho, 1, 1e-8);
- #else
- Compute(rho, 1, 1e-14);
- #endif
- }
-
- void FHTAnderson801::ComputeLaggedRelated(const Real& rho, const int& nlag, std::shared_ptr<KernelEM1DManager> KernelManager) {
- icount = 0;
- Manager = KernelManager;
- this->kernelVec = KernelManager->GetSTLVector();
- this->SetNumConv(nlag);
- #ifdef LEMMA_SINGLE_PRECISION
- Compute(rho, 1, 1e-8);
- #else
- Compute(rho, 1, 1e-14);
- #endif
- DeleteSplines();
-
- // Now do cubic spline
- for (int ii=0; ii<Zans.cols(); ++ii) {
- auto Spline = CubicSplineInterpolator::NewSP();
- Spline->SetKnots( Arg, Zans.col(ii).real() );
- splineVecReal.push_back(Spline);
-
- auto SplineI = CubicSplineInterpolator::NewSP();
- SplineI->SetKnots( Arg, Zans.col(ii).imag() );
- splineVecImag.push_back(SplineI);
- }
-
- }
-
- void FHTAnderson801::SetLaggedArg(const Real& rho) {
- for (int i=0; i<Zans.cols(); ++ i) {
- Zans(0, i) = Complex( splineVecReal[i]->Interpolate(rho),
- splineVecImag[i]->Interpolate(rho) );
- }
- }
-
- Complex FHTAnderson801::Zgauss(const int &ikk, const EMMODE &imode,
- const int &itype, const Real &rho,
- const Real &wavef, KernelEM1DBase* Kernel) {
-
- // TODO, right here we want to return the splined solution instead in the
- // case of lagged convolution!
- return Zans(0, Kernel->GetManagerIndex()); //Complex(0,0);
- }
-
- void FHTAnderson801::SetNumConv(const int &i) {
- this->NumConv = i;
- }
-
- Eigen::Matrix<Complex, Eigen::Dynamic, Eigen::Dynamic> FHTAnderson801::GetAnswer() {
- return this->Zans;
- }
-
- ///////////////////////////////////////////
- // Computes the transform
- void FHTAnderson801::Compute(const Real &rho, const int& ntol, const Real &tol) {
-
- Real y1 = this->ABSCISSA/rho;
- //this->Key.setZero(801);
- this->Key.setZero( );
- //std::memset(Key, 0, 801*sizeof(int));
-
- // Check to make sure everything is set, we call this a lot though, so disable checks
- // in release.
- #ifndef NDEBUG
- if (rho<=0) {
- //std::cout << "rho= " << rho << std::endl;
- throw std::runtime_error("In Hankel 2 Argument rho <= 0; rho=" + to_string(rho) );
- }
-
- if (this->NumConv<1) {
- throw std::runtime_error("In FHTAnderson801 NumConv is less than 1.");
- }
-
- if (this->kernelVec.empty()) {
- throw std::runtime_error("In FHTAnderson801 Unset Kernel Calculator");
- }
- #endif
- //if (rho<=1e-5) {
- // std::cout << "Extremely small rho argument" << std::endl;
- //}
-
- // only marginally faster even for best case
- //if (cacheResults) Manager->FindCache(rho);
-
- Arg = VectorXr::Zero(this->NumConv);
- Lambda = std::pow(rho*ABSER, this->NumConv-1);
-
- #ifndef NDEBUG
- if (Lambda <= 0) {
- std::cerr << "Exponent Underflow Error";
- throw std::underflow_error("Exponent underflow");
- }
- #endif
-
- int itol = 0;
- int none = 0;
- this->NumFun = 0;
- int idx = 0;
- int istore = 0;
-
- Complex Zsum(0.);
- Complex Cmax(0.);
- Complex C(0.);
-
- // Curiously critical piece of code
- //this->Zwork.resize(801, (int)(this->kernelVec.size()));
- this->Zwork.resize(Eigen::NoChange, (int)(this->kernelVec.size()));
- //Zans.resize(this->NumConv, (int)(this->kernelVec.size()));
- //Zans.setZero();
- //Zwork = Eigen::Matrix<Complex, Eigen::Dynamic, Eigen::Dynamic>::Zero(801, (int)(this->kernelVec.size()));
- Zans = Eigen::Matrix<Complex, Eigen::Dynamic, Eigen::Dynamic>::Zero(this->NumConv, (int)(this->kernelVec.size()));
-
- // 1010 Loop
- for (int ilag=0; ilag < this->NumConv; ++ilag) {
-
- istore = this->NumConv - 1 - ilag;
- if (ilag > 0) y1 *= ABSE;
- Arg(istore) = ABSCISSA/y1;
-
- // 1000 Loop
- for (unsigned int irel=0; irel < this->kernelVec.size(); ++irel) {
-
- // fiter weight switch here
- this->BesselOrder = this->kernelVec[irel]->GetBesselOrder();
- none = 0;
- itol = ntol;
- Zsum = Complex(0,0);
- Cmax = Complex(0,0);
- Lambda = y1;
-
- // Begin right side convolution at weight 298
- // counting from 0
- idx = 298;
- Lambda *= ABSE;
-
- // Code Block 20 in Anderson
- do {
- this->StoreRetreive(idx, ilag, Zsum, irel, C, rho);
- Cmax = Complex(std::max(std::abs(real(C)), std::real(Cmax)),
- std::max(std::abs(imag(C)), std::imag(Cmax)) );
- ++idx;
- Lambda *= ABSE;
- } while (idx < 339);
- if (real(Cmax) == 0 && imag(Cmax) == 0) none = 1;
- Cmax *= tol;
-
- // Code Block 30 in Anderson
- do {
- this->StoreRetreive(idx, ilag, Zsum, irel, C, rho);
- if ( std::abs(real(C)) <= real(Cmax) &&
- std::abs(imag(C)) <= imag(Cmax) ) {
- --itol;
- if (itol < 0 || idx > 800) break;
- } else {
- itol = ntol;
- }
- ++idx;
- Lambda *= ABSE;
- } while (idx < 801);
- itol = ntol;
- Lambda = y1;
-
- // Code Block 60 in Anderson
- idx = 297;
- do {
- this->StoreRetreive(idx, ilag, Zsum, irel, C, rho);
- if ( std::abs(real(C)) <= real(Cmax) &&
- std::abs(imag(C)) <= imag(Cmax) &&
- none == 0 ) {
- --itol;
- if (itol < 0 || idx < 0) break;
- } else {
- itol = ntol;
- }
- --idx;
- Lambda *= ABSER;
- } while (idx>=0);
- Zans(istore, irel) = Zsum/Arg(istore);
- } // End of 1000 loop
- } // End of 1010 loop
- }
-
- }
|