/* 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 M. Andy Kass and Trevor P. Irons @date 02/07/2011 16 Dec. 2018 **/ #include "FastCosTransformAnderson.h" namespace Lemma { // ==================== FRIENDS ======================= std::ostream &operator<<(std::ostream &stream, const FastCosTransformAnderson &ob) { stream << *(DigitalFilterIntegratorAnderson*)(&ob); return stream; } // ==================== LIFECYCLE ======================= FastCosTransformAnderson::FastCosTransformAnderson(const ctor_key& key) : DigitalFilterIntegratorAnderson(key) { SetFilterWeights(); NumConv = 1; ilow = 425; ihi = 460; ABSCISSA = 0.7866057737580476; //IntKernel = CosTransIntegrationKernel::New(); } FastCosTransformAnderson::~FastCosTransformAnderson() { } std::shared_ptr FastCosTransformAnderson::NewSP() { return std::make_shared< FastCosTransformAnderson > ( ctor_key() ); } // ==================== OPERATIONS ======================= void FastCosTransformAnderson::SetFilterWeights() { FilterWeights.resize(787); Key.resize(787); Work.resize(787, NumRel); this->FilterWeights << 7.214369775966785E-20, 5.997984537445829E-20, 1.383536819510307E-20, 6.127201193993877E-20, 2.735622069700930E-20, 6.567948836420383E-20, 4.144963335850363E-20, 7.316414067200350E-20, 5.682375914662966E-20, 8.391977074915078E-20, 7.418756524583309E-20, 9.829637687190485E-20, 9.430643800653847E-20, 1.168146262188112E-19, 1.180370735968097E-19, 1.401723019040171E-19, 1.463726071463266E-19, 1.692722072070252E-19, 1.804796158499069E-19, 2.052560499147526E-19, 2.217507732438609E-19, 2.495469564846162E-19, 2.718603842873614E-19, 3.039069705922034E-19, 3.328334008394297E-19, 3.705052796297763E-19, 4.071277819975917E-19, 4.520053409594589E-19, 4.977334107366132E-19, 5.516707191291291E-19, 6.082931168675559E-19, 6.734956703766505E-19, 7.432489554623685E-19, 8.223651399147256E-19, 9.080210233648037E-19, 1.004250388267800E-18, 1.109225156214032E-18, 1.226448534750949E-18, 1.354938655056596E-18, 1.497875155579711E-18, 1.655024636692164E-18, 1.829422009902478E-18, 2.021527957180686E-18, 2.234394042862191E-18, 2.469158736824458E-18, 2.729043278909879E-18, 3.015882778812807E-18, 3.333221019045560E-18, 3.683642665131121E-18, 4.071174485366807E-18, 4.499238428427072E-18, 4.972519918024098E-18, 5.495403162992602E-18, 6.073431145514256E-18, 6.712116746365455E-18, 7.418091347704607E-18, 8.198210388921290E-18, 9.060466264497684E-18, 1.001332641867938E-17, 1.106647001686341E-17, 1.223031194783507E-17, 1.351661046246575E-17, 1.493814249254853E-17, 1.650922025025269E-17, 1.824549287949245E-17, 2.016440324953847E-17, 2.228509875325462E-17, 2.462885473506622E-17, 2.721908372832262E-17, 3.008174877960754E-17, 3.324546598231868E-17, 3.674192913569353E-17, 4.060610542324258E-17, 4.487669220181069E-17, 4.959641037849226E-17, 5.481251456381401E-17, 6.057719336989671E-17, 6.694815564512041E-17, 7.398915178848498E-17, 8.177066132132114E-17, 9.037055462918574E-17, 9.987491078055815E-17, 1.103788451159722E-16, 1.219874911140742E-16, 1.348170262066998E-16, 1.489958578076007E-16, 1.646658879212839E-16, 1.819839514458913E-16, 2.011233698894207E-16, 2.222757000537238E-16, 2.456526388749016E-16, 2.714881529754608E-16, 3.000408107960083E-16, 3.315963787425073E-16, 3.664706739627943E-16, 4.050127315080793E-16, 4.476082920363670E-16, 4.946836672898304E-16, 5.467100025245505E-16, 6.042079955957903E-16, 6.677531050397348E-16, 7.379813122861424E-16, 8.155954842977402E-16, 9.013724102689123E-16, 9.961705740887021E-16, 1.100938748010566E-15, 1.216725486808607E-15, 1.344689623369201E-15, 1.486111865526057E-15, 1.642407614840039E-15, 1.815141131499014E-15, 2.006041190779248E-15, 2.217018384471440E-15, 2.450184243392977E-15, 2.707872369692257E-15, 2.992661792874233E-15, 3.307402781094011E-15, 3.655245368051253E-15, 4.039670879180488E-15, 4.464526774284602E-15, 4.934065153895433E-15, 5.452985315986473E-15, 6.026480787914038E-15, 6.660291305149181E-15, 7.360760256360466E-15, 8.134898170257041E-15, 8.990452879276204E-15, 9.935987062502841E-15, 1.098096394385775E-14, 1.213584200318437E-14, 1.341217964828528E-14, 1.482275089528562E-14, 1.638167321535499E-14, 1.810454882702344E-14, 2.000862084851265E-14, 2.211294587257239E-14, 2.443858469135401E-14, 2.700881307980678E-14, 2.984935474755050E-14, 3.298863879030854E-14, 3.645808421795958E-14, 4.029241440643229E-14, 4.453000462105175E-14, 4.921326608894885E-14, 5.438907046503769E-14, 6.010921893911273E-14, 6.643096067976429E-14, 7.341756580308676E-14, 8.113895860149252E-14, 8.967241736929777E-14, 9.910334783010448E-14, 1.095261379057530E-13, 1.210451023825933E-13, 1.337755269287210E-13, 1.478448219118764E-13, 1.633937975650728E-13, 1.805780732628623E-13, 1.995696350122467E-13, 2.205585567465074E-13, 2.437549026489779E-13, 2.693908295460095E-13, 2.977229104105259E-13, 3.290347022305518E-13, 3.636395839428896E-13, 4.018838928348062E-13, 4.441503908040617E-13, 4.908620951685787E-13, 5.424865123659980E-13, 5.995403169151822E-13, 6.625945224685207E-13, 7.322801967084261E-13, 8.092947772848716E-13, 8.944090520057436E-13, 9.884748731403624E-13, 1.092433683043238E-12, 1.207325936425662E-12, 1.334301513576084E-12, 1.474631228748613E-12, 1.629719548899119E-12, 1.801118650062676E-12, 1.990543952052933E-12, 2.199891286960273E-12, 2.431255873276498E-12, 2.686953285545802E-12, 2.969542629413028E-12, 3.281852154013172E-12, 3.627007558039277E-12, 4.008463272785582E-12, 4.430037035256956E-12, 4.895948097364050E-12, 5.410859453614547E-12, 5.979924509929487E-12, 6.608838660661838E-12, 7.303896290017477E-12, 8.072053768367932E-12, 8.920999073943177E-12, 9.859228736701785E-12, 1.089613287445852E-11, 1.204208917233957E-11, 1.330856674614333E-11, 1.470824092910627E-11, 1.625512013089818E-11, 1.796468603849469E-11, 1.985404856210394E-11, 2.194211707689892E-11, 2.424978967439970E-11, 2.680016231759770E-11, 2.961875999311579E-11, 3.273379217385409E-11, 3.617643514887572E-11, 3.998114404618718E-11, 4.418599767123930E-11, 4.883307961241208E-11, 5.396889942771051E-11, 5.964485812805529E-11, 6.591776261587440E-11, 7.285039422767879E-11, 8.051213707077629E-11, 8.897967244274265E-11, 9.833774628361575E-11, 1.086800173417544E-10, 1.201099945420632E-10, 1.327420729381141E-10, 1.467026786162787E-10, 1.621315340105112E-10, 1.791830562914075E-10, 1.980279028251780E-10, 2.188546791698937E-10, 2.418718267033471E-10, 2.673097087743666E-10, 2.954229162567076E-10, 3.264928155800021E-10, 3.608303647396648E-10, 3.987792254688925E-10, 4.407192027209688E-10, 4.870700458846789E-10, 5.382956497775456E-10, 5.949086974607432E-10, 6.574757913439202E-10, 7.266231239320192E-10, 8.030427449710128E-10, 8.874994877135167E-10, 9.808386236281220E-10, 1.083994322159010E-09, 1.197999000209434E-09, 1.323993654914953E-09, 1.463239283128961E-09, 1.617129501899646E-09, 1.787204496262075E-09, 1.975166433922344E-09, 2.182896501130837E-09, 2.412473730218034E-09, 2.666195807259519E-09, 2.946602068077095E-09, 3.256498912782063E-09, 3.598987893149563E-09, 3.977496754017933E-09, 4.395813739277522E-09, 4.858125505931142E-09, 5.369059025511281E-09, 5.933727892433384E-09, 6.557783502483194E-09, 7.247471613991360E-09, 8.009694857348590E-09, 8.852081819018630E-09, 9.783063390784292E-09, 1.081195714921208E-08, 1.194906060875559E-08, 1.320575428316232E-08, 1.459461558495058E-08, 1.612954470504804E-08, 1.782590372973567E-08, 1.970067039062624E-08, 2.177260798218037E-08, 2.406245315273551E-08, 2.659312344174916E-08, 2.938994664888302E-08, 3.248091431980495E-08, 3.589696189917651E-08, 3.967227833770833E-08, 4.384464827330457E-08, 4.845583018407081E-08, 5.355197433170284E-08, 5.918408463559961E-08, 6.540852915386353E-08, 7.228760421284378E-08, 7.989015791604288E-08, 8.829227916594097E-08, 9.757805922900159E-08, 1.078404332968648E-07, 1.191821106789995E-07, 1.317166026689236E-07, 1.455693587079098E-07, 1.608790217936311E-07, 1.777988162313823E-07, 1.964980809461758E-07, 2.171639645456637E-07, 2.400032980365736E-07, 2.652446652738443E-07, 2.931406901825997E-07, 3.239705657602287E-07, 3.580428475071237E-07, 3.956985425939703E-07, 4.373145214673157E-07, 4.833072913425415E-07, 5.341371626757850E-07, 5.903128587132423E-07, 6.523966036832935E-07, 7.210097538541495E-07, 7.968390110811429E-07, 8.806433020866372E-07, 9.732613658282036E-07, 1.075620158230134E-06, 1.188744116446123E-06, 1.313765428158270E-06, 1.451935342270991E-06, 1.604636717777632E-06, 1.773397831228256E-06, 1.959907713317686E-06, 2.166033001576880E-06, 2.393836687356070E-06, 2.645598681084377E-06, 2.923838733370935E-06, 3.231341523918154E-06, 3.571184694601016E-06, 3.946769446344899E-06, 4.361854837678969E-06, 4.820595081762782E-06, 5.327581531949061E-06, 5.887888119174313E-06, 6.507122780830562E-06, 7.191482772393097E-06, 7.947817716468041E-06, 8.783696866498923E-06, 9.707486485040472E-06, 1.072843153422521E-05, 1.185675077161778E-05, 1.310373578995573E-05, 1.448186809502301E-05, 1.600493890578862E-05, 1.768819362222417E-05, 1.954847630132444E-05, 2.160440843572022E-05, 2.387656249074371E-05, 2.638768394666778E-05, 2.916289862392297E-05, 3.222998971512441E-05, 3.561964367629314E-05, 3.936579782365431E-05, 4.350592904974602E-05, 4.808149299156779E-05, 5.313825827671661E-05, 5.872686606041739E-05, 6.490320915255368E-05, 7.172915206849267E-05, 7.927294798468421E-05, 8.761017620761336E-05, 9.682417843295337E-05, 1.070072955978771E-04, 1.182612851235724E-04, 1.306989769939818E-04, 1.444446003274482E-04, 1.596360362963627E-04, 1.764249271609239E-04, 1.949797924244976E-04, 2.154857030671910E-04, 2.381486646105023E-04, 2.631944925246626E-04, 2.908750792099106E-04, 3.214658697246949E-04, 3.552749625435381E-04, 3.926382043270680E-04, 4.339325952975191E-04, 4.795674127479124E-04, 5.300042093562213E-04, 5.857414026355948E-04, 6.473444397414629E-04, 7.154197401707392E-04, 7.906606243262904E-04, 8.738040302727717E-04, 9.657009935888906E-04, 1.067245638145834E-03, 1.179484028621435E-03, 1.303498707764836E-03, 1.440577691237741E-03, 1.592027938865682E-03, 1.759438818176274E-03, 1.944382214020240E-03, 2.148824632015574E-03, 2.374646777242952E-03, 2.624289840901410E-03, 2.899987938462482E-03, 3.204783728012370E-03, 3.541304571287609E-03, 3.913361077715114E-03, 4.323998734848948E-03, 4.778017035442578E-03, 5.278871213895021E-03, 5.832645828904957E-03, 6.443132211847618E-03, 7.118100704687155E-03, 7.861484687059508E-03, 8.683286454219962E-03, 9.587172959576953E-03, 1.058612645311708E-02, 1.168276512339872E-02, 1.289407692301174E-02, 1.422020567085629E-02, 1.568354709989395E-02, 1.727924763496293E-02, 1.903701004445868E-02, 2.094259894090355E-02, 2.303555498203885E-02, 2.528473397535577E-02, 2.774280095909549E-02, 3.034889679856765E-02, 3.317292189089636E-02, 3.610269051747732E-02, 3.923023471609136E-02, 4.235591398256915E-02, 4.559945470018810E-02, 4.861418172220856E-02, 5.155399423688033E-02, 5.382905665985834E-02, 5.563737547309198E-02, 5.599656739496778E-02, 5.517328802198061E-02, 5.157565446188783E-02, 4.561585237274122E-02, 3.481744626013846E-02, 1.997678484763328E-02,-2.511444299727086E-03, -3.078890380569448E-02,-6.952663437748715E-02, -1.140926319655417E-01,-1.692861783153246E-01, -2.240265004914591E-01,-2.809223452446239E-01, -3.165386782849084E-01,-3.295050746499982E-01, -2.805919713655642E-01,-1.744060875765448E-01, 2.722628846693606E-02, 2.668949880744598E-01, 5.262102231394616E-01, 6.256684356927903E-01, 4.995016301447683E-01,-1.002368152582941E-02, -6.114010724740713E-01,-9.727382503860407E-01, -3.838420705230950E-01, 7.198704705669955E-01, 1.262041888009595E+00,-2.998397076312483E-01, -1.479978761932394E+00, 1.886890549669046E-01, 1.961538671802124E+00,-2.104506074490929E+00, 7.701373097387101E-01, 4.062497351127477E-01, -8.229740504000808E-01, 7.307456920106093E-01, -4.903037312539515E-01, 2.839808721720737E-01, -1.517915989046718E-01, 7.860615976683388E-02, -4.139435902417716E-02, 2.340179865400356E-02, -1.488928090494461E-02, 1.080204283974104E-02, -8.695630540330540E-03, 7.448774255862835E-03, -6.571253694245813E-03, 5.859704720178251E-03, -5.235154219023063E-03, 4.669537109654244E-03, -4.153880559277143E-03, 3.685278478886407E-03, -3.262012231674279E-03, 2.882025619739767E-03, -2.542670610556139E-03, 2.240859550470028E-03, -1.973292341858488E-03, 1.736649256291777E-03, -1.527725614465373E-03, 1.343513590939351E-03, -1.181244115916277E-03, 1.038401885876272E-03, -9.127236961818876E-04, 8.021869803583510E-04, -7.049929363136232E-04, 6.195471678105551E-04, -5.444398377266471E-04, 4.784265058211163E-04, -4.204101656165671E-04, 3.694246665626042E-04, -3.246196272200836E-04, 2.852468930079681E-04, -2.506484828993674E-04, 2.202458813636377E-04, -1.935305291014704E-04, 1.700554065180346E-04, -1.494276181460851E-04, 1.313018693894386E-04, -1.153747197310416E-04, 1.013795159657149E-04, -8.908193308740761E-05, 7.827605834070905E-05, -6.878095175364698E-05, 6.043762035968366E-05, -5.310635544925448E-05, 4.666439257514449E-05, -4.100385733848758E-05, 3.602996086454923E-05, -3.165941281357187E-05, 2.781902585783293E-05, -2.444448983707277E-05, 2.147929539928508E-05, -1.887378820764930E-05, 1.658433732127529E-05, -1.457260421932255E-05, 1.280490076321861E-05, -1.125162529600942E-05, 9.886767060922143E-06, -8.687470528401389E-06, 7.633652544743499E-06, -6.707666049011719E-06, 5.894004649462370E-06, -5.179042976527735E-06, 4.550808463155193E-06, -3.998780821517730E-06, 3.513715894699684E-06, -3.087490887193285E-06, 2.712968339794580E-06, -2.383876585436306E-06, 2.094704718364733E-06, -1.840610321658703E-06, 1.617338386451554E-06, -1.421150054108675E-06, 1.248759998169063E-06, -1.097281408784448E-06, 9.641776560691427E-07, -8.472198144303782E-07, 7.444493348026655E-07, -6.541452446960252E-07, 5.747953299561648E-07, -5.050708135463763E-07, 4.438041043830051E-07, -3.899692438669907E-07, 3.426647247474678E-07, -3.010983952488172E-07, 2.645741945310525E-07, -2.324804964806138E-07, 2.042798670572760E-07, -1.795000644284691E-07, 1.577261311964345E-07, -1.385934457978807E-07, 1.217816165104314E-07, -1.070091160694850E-07, 9.402856728542481E-08, -8.262260063861433E-08, 7.260021429510923E-08, -6.379357556568284E-08, 5.605521036390507E-08, -4.925553366022761E-08, 4.328067952283362E-08, -3.803059434473390E-08, 3.341736133872807E-08, -2.936372828943425E-08, 2.580181391877248E-08, -2.267197117462836E-08, 1.992178838990867E-08, -1.750521159700888E-08, 1.538177331647477E-08, -1.351591490408599E-08, 1.187639109711096E-08, -1.043574678473461E-08, 9.169857246988264E-09, -8.057524168015392E-09, 7.080120656351000E-09, -6.221279323637567E-09, 5.466618198282681E-09, -4.803499887007487E-09, 4.220819952418786E-09, -3.708820961440479E-09, 3.258929089378474E-09, -2.863610543832675E-09, 2.516245405206862E-09, -2.211016771314404E-09, 1.942813349072686E-09, -1.707143861761559E-09, 1.500061838825614E-09, -1.318099529115311E-09, 1.158209830829835E-09, -1.017715265474667E-09, 8.942631413031228E-10, -7.857861555682931E-10, 6.904677759378704E-10, -6.067118212948776E-10, 5.331157324405220E-10, -4.684470851019305E-10, 4.116229519995125E-10, -3.616917683963526E-10, 3.178173974200357E-10, -2.792651282909316E-10, 2.453893729983475E-10, -2.156228554187546E-10, 1.894671118403349E-10, -1.664841438026135E-10, 1.462890834648734E-10, -1.285437486867098E-10, 1.129509799028343E-10, -9.924966395649082E-11, 8.721036155589632E-11, -7.663146513121262E-11, 6.733582275589511E-11, -5.916777159927192E-11, 5.199053123157253E-11, -4.568391312831626E-11, 4.014230801823632E-11, -3.527291737272422E-11, 3.099419942203976E-11, -2.723450367478780E-11, 2.393087107406673E-11, -2.102797969829416E-11, 1.847721835214320E-11, -1.623587253411553E-11, 1.426640914879302E-11, -1.253584798559500E-11, 1.101520943914518E-11, -9.679029223044069E-12, 8.504931950483330E-12, -7.473256440847272E-12, 6.566726477759826E-12, -5.770161505244737E-12, 5.070222417415932E-12, -4.455188184705872E-12, 3.914759576021876E-12, -3.439886690015256E-12, 3.022617407370815E-12, -2.655964226336168E-12, 2.333787251527801E-12, -2.050691376558676E-12, 1.801935938738539E-12, -1.583355332954674E-12, 1.391289255348560E-12, -1.222521408656179E-12, 1.074225642782795E-12, -9.439186286983481E-13, 8.294182731437524E-13, -7.288071777679118E-13, 6.404005307872462E-13, -5.627178934884672E-13, 4.944584091193514E-13, -4.344790190215893E-13, 3.817753212167385E-13, -3.354647509064286E-13, 2.947718012314345E-13, -2.590150368003291E-13, 2.275956825191015E-13, -1.999875966322778E-13, 1.757284600660376E-13, -1.544120345321836E-13, 1.356813597490631E-13, -1.192227758615040E-13, 1.047606709603187E-13, -9.205286574443716E-14, 8.088655803832021E-14, -7.107475925247343E-14, 6.245316311274798E-14, -5.487739422278246E-14, 4.822059038461202E-14, -4.237127819154857E-14, 3.723150631847816E-14, -3.271520525003134E-14, 2.874674597896990E-14, -2.525967353907224E-14, 2.219559416454687E-14, -1.950319744058413E-14, 1.713739707017873E-14, -1.505857586868545E-14, 1.323192234295437E-14, -1.162684774554722E-14, 1.021647384214807E-14, -8.977182814427699E-15, 7.888221761131355E-15, -6.931355174452619E-15, 6.090559572138626E-15, -5.351755171700232E-15, 4.702570113399845E-15, -4.132133283746073E-15, 3.630892270162917E-15, -3.190453398341683E-15, 2.803441173574897E-15, -2.463374772306652E-15, 2.164559515653694E-15, -1.901991507536473E-15, 1.671273840510759E-15, -1.468542966100438E-15, 1.290403996644843E-15, -1.133873855239388E-15, 9.963313217707399E-16, -8.754731385280971E-16, 7.692754403444974E-16, -6.759598633855865E-16, 5.939637650509565E-16, -5.219140562969427E-16, 4.586042081825544E-16, -4.029740475950767E-16, 3.540920038189227E-16, -3.111395086526072E-16, 2.733972888415509E-16, -2.402333212827215E-16, 2.110922493015534E-16, -1.854860827684001E-16, 1.629860263206755E-16, -1.432152988478505E-16, 1.258428239959391E-16, -1.105776860340182E-16, 9.716425824191095E-17, -8.537792224005708E-17, 7.502130657839168E-17, -6.592098159645411E-17, 5.792455520756561E-17, -5.089812097369260E-17, 4.472401573699795E-17, -3.929884925786503E-17, 3.453177286415005E-17, -3.034295811884372E-17, 2.666226003023219E-17, -2.342804241895063E-17, 2.058614577177349E-17, -1.808898029804633E-17, 1.589472900128195E-17, -1.396664742072978E-17, 1.227244831653922E-17, -1.078376099458355E-17, 9.475656216910048E-18, -8.326228742065685E-18, 7.316230504610306E-18, -6.428748291129759E-18, 5.648920515191333E-18, -4.963688348418389E-18, 4.361577040171507E-18, -3.832503763852548E-18, 3.367608772061774E-18, -2.959107033168789E-18, 2.600157864838119E-18, -2.284750381424515E-18, 2.007602836968745E-18, -1.764074178215185E-18, 1.550086326535024E-18, -1.362055887301009E-18, 1.196834143131819E-18, -1.051654326148005E-18, 9.240852862763527E-19, -8.119907797435101E-19, 7.134936960083838E-19, -6.269446240781204E-19, 5.508942318228495E-19, -4.840689957627215E-19, 4.253498749090647E-19, -3.737535715383304E-19, 3.284160650943604E-19, -2.885781434802982E-19, 2.535726894517719E-19, -2.228135092144265E-19, 1.957855161528666E-19, -1.720361053077579E-19, 1.511675741544441E-19, -1.328304627571508E-19, 1.167177017717951E-19, -1.025594703000911E-19, 9.011867747602604E-20, -7.918699208456320E-20, 6.958135363559505E-20, -6.114090626414241E-20, 5.372430364847189E-20, -4.720733874362162E-20, 4.148085614846149E-20, -3.644890635898519E-20, 3.202709755606534E-20, -2.814108611035396E-20, 2.472510802483146E-20, -2.172035832750181E-20, 1.907280017594962E-20, -7.276967157651721E-21; } } // end of namespace Lemma