File: neural_function.c

    1   /*
    2    * File: neural_function.c
    3    *
    4    * MATLAB Coder version            : 3.0
    5    * C/C++ source code generated on  : 01-Oct-2018 18:42:48
    6    */
    7   
    8   /* Include Files */
    9   #include "rt_nonfinite.h"
   10   #include "neural_function.h"
   11   #include "bsxfun.h"
   12   
   13   /* Function Declarations */
   14   static void mapminmax_apply(const double x[87], const double settings_gain[87],
   15     const double settings_xoffset[87], double y[87]);
   16   
   17   /* Function Definitions */
   18   
   19   /*
   20    * Arguments    : const double x[87]
   21    *                const double settings_gain[87]
   22    *                const double settings_xoffset[87]
   23    *                double y[87]
   24    * Return Type  : void
   25    */
   26   static void mapminmax_apply(const double x[87], const double settings_gain[87],
   27     const double settings_xoffset[87], double y[87])
   28   {
   29     double bv[87];
   30     double av[87];
   31     int k;
   32   
   33     /*  ===== MODULE FUNCTIONS ======== */
   34     /*  Map Minimum and Maximum Input Processing Function */
   35     bsxfun(x, settings_xoffset, bv);
   36     memcpy(&av[0], &bv[0], 87U * sizeof(double));
   37     for (k = 0; k < 87; k++) {
   38       y[k] = av[k] * settings_gain[k];
   39     }
   40   
   41     for (k = 0; k < 87; k++) {
   42       av[k] = y[k] + -1.0;
   43     }
   44   
   45     memcpy(&y[0], &av[0], 87U * sizeof(double));
   46   }
   47   
   48   /*
   49    * NEURAL_FUNCTION neural network simulation function.
   50    *
   51    *  Generated by Neural Network Toolbox function genFunction, 01-Oct-2018 18:35:00.
   52    *
   53    *  [Y] = neural_function(X,~,~) takes these arguments:
   54    *
   55    *    X = 1xTS cell, 1 inputs over TS timesteps
   56    *    Each X{1,ts} = 87xQ matrix, input #1 at timestep ts.
   57    *
   58    *  and returns:
   59    *    Y = 1xTS cell of 1 outputs over TS timesteps.
   60    *    Each Y{1,ts} = 3xQ matrix, output #1 at timestep ts.
   61    *
   62    *  where Q is number of samples (or series) and TS is the number of timesteps.
   63    * Arguments    : const double X[87]
   64    *                double Y[3]
   65    * Return Type  : void
   66    */
   67   void neural_function(const double X[87], double Y[3])
   68   {
   69     double dv0[87];
   70     static const double dv1[87] = { -3.93358162325573, -4.7005389351864,
   71       -4.17691575624323, -4.19603037687426, -4.24094862044763, -3.71117466932456,
   72       -3.64052551016929, -2.39437691096801, -2.36705370150794, -1.89475660103364,
   73       -1.87871918918137, -1.57157228707323, -1.20011871674397, -0.810944426141116,
   74       -0.662032627032511, -0.956311706629162, -0.845930356522473,
   75       -1.16936608915729, -1.39629731012193, -1.29905202198026, -1.4564877422106,
   76       -1.58750706589727, -1.77751999303987, -2.0703741508203, -2.33579156864261,
   77       -2.65329782922328, -3.3579239298296, -4.00650910828663, -4.48412955433827,
   78       -5.28339353087632, -5.38082724356509, -4.72473154987194, -4.81390867801994,
   79       -4.52533913850157, -4.55546284225742, -5.10576809517968, -5.36744840800978,
   80       -5.52775208337947, -5.34535960705908, -5.0786798631313, -4.8954857330568,
   81       -4.52356075123602, -4.42613841511285, -4.08166190793305, -4.06947400328473,
   82       -3.46464996229915, -3.16034782045202, -3.03682095581605, -3.07569726494871,
   83       -2.97889488400619, -2.68135113203762, -2.8071620758414, -2.99507176859322,
   84       -3.0380400813079, -3.25921390889523, -3.19987420335154, -3.35460289806095,
   85       -3.52090292974416, -3.6255135555423, -3.52960963346527, -4.21793923319817,
   86       -4.18648941345696, -4.86191302230411, -4.61464622664525, -4.68644532142178,
   87       -4.3060123087063, -4.15341461504635, -4.08539194750866, -4.05089377445154,
   88       -4.49850304412451, -4.47268770726707, -4.71240054302569, -4.82967664541423,
   89       -4.80950364566299, -5.08775060624053, -5.21696357135953, -5.29553820241571,
   90       -5.28236459560578, -5.3497388527466, -5.63136811993728, -5.43144206613029,
   91       -5.5621130892755, -4.87680603056546, -4.839662467674, -4.48803536222872,
   92       -3.5155890484586, -3.06204372041065 };
   93   
   94     static const double dv2[87] = { 0.350123729291923, 0.310306694862397,
   95       0.330289865790475, 0.320555805444016, 0.314437909244984, 0.341119031224766,
   96       0.299535627019141, 0.376932944740204, 0.37426408030959, 0.403992777509957,
   97       0.385007042584086, 0.405886442776289, 0.427292823872727, 0.488045810050552,
   98       0.534522201354226, 0.494162928493379, 0.516220888171863, 0.500543073092887,
   99       0.460843462187998, 0.475706742343186, 0.483563987547145, 0.457722198808448,
  100       0.48513572417292, 0.449810257720805, 0.461329081470528, 0.486305711044667,
  101       0.433716789827896, 0.403614656968077, 0.409643535243235, 0.374904107328359,
  102       0.363859701758097, 0.42280276440439, 0.419987952915447, 0.44725581821976,
  103       0.439092725337682, 0.391713334647472, 0.366003190391681, 0.353952776973158,
  104       0.371062938557826, 0.385996133731071, 0.388195112243647, 0.402823772500652,
  105       0.405979831784203, 0.39785630729736, 0.395760845114842, 0.444424959611998,
  106       0.534890136970141, 0.569684015150813, 0.533982571663888, 0.541840707011217,
  107       0.595931552560612, 0.688714678287541, 0.629623426262478, 0.628865510723891,
  108       0.598306839944129, 0.6031436328936, 0.582787173814482, 0.546024801270456,
  109       0.543143488354881, 0.543785690766324, 0.461495883470795, 0.413159465875324,
  110       0.330707525146053, 0.35924773659937, 0.360546164696299, 0.353557875910774,
  111       0.369451419835682, 0.416397720785669, 0.4712415678985, 0.423343722174895,
  112       0.428645411367945, 0.395720291722239, 0.396637814545147, 0.400298162900016,
  113       0.379645473209065, 0.373238460700493, 0.36828707498269, 0.374103654515404,
  114       0.363387758853434, 0.349223454326535, 0.367426775569484, 0.359270001146643,
  115       0.402184893391046, 0.39947130080122, 0.408017529044216, 0.355987200560011,
  116       0.333739285962095 };
  117   
  118     double b[7];
  119     double b_b[7];
  120     double x[7];
  121     int ixstart;
  122     static const double a[7] = { 1.3303388563824017, 0.48430607093416322,
  123       -0.13996164446191606, -0.48286858201237504, 1.4403474171763477,
  124       0.7568606439201272, 1.2778579032993866 };
  125   
  126     double mtmp;
  127     int ix;
  128     static const double b_a[609] = { -0.096980280681273928, -0.53925901922831787,
  129       -0.2336607017957241, -0.08492148076503811, 0.73247697097362652,
  130       0.41121972764967918, 0.25736146574183838, -0.05126948744558453,
  131       -0.15697181119224168, 0.27627396018656675, 0.10855240923328056,
  132       0.50295054527493388, 0.15398997817318763, -0.016418390702866006,
  133       0.059166614479941704, 0.14602929902659267, 0.12084911568586068,
  134       -0.046931230083819636, -0.20660902435243714, 0.1306790930971469,
  135       0.11525290864099327, 0.57493676383350734, 0.049200565380991282,
  136       -0.22256558884053379, -0.51144297768280078, -0.086229231452175231,
  137       0.061775683918295667, 0.36728611671918127, -0.40372704568557954,
  138       -0.26174389316855884, 0.35770782214914321, 0.04976538719458784,
  139       0.12830118814603714, -0.18510520311213324, 0.0735402844883886,
  140       -0.33142815952548249, -0.04083897936233237, -0.030420509120051724,
  141       0.29719886133105489, 0.36071535484791512, 0.14881990064039086,
  142       0.18089046352587257, 0.028750612139460459, 0.13945152253353507,
  143       0.40871128033260434, 0.241131368609686, -0.19060565105065683,
  144       0.33557457848856914, -0.25931270135049644, 0.93332495272790827,
  145       0.33721278291390372, -0.6849062735204805, -0.2385316292356251,
  146       0.10567327327797074, -0.010588546534660202, -0.015527968337368928,
  147       0.12495785938014936, -0.03075865867111563, -0.18914414166399776,
  148       0.46366301280291555, -0.44714641242336128, 0.07583982521480151,
  149       -0.33068671968890867, -0.0030962486959824256, -0.2137780659729831,
  150       -0.39511007272621357, -0.22378311103977913, -0.26981855843668973,
  151       0.2562172466810041, -0.1339521878691107, 0.30544471284695823,
  152       0.25229048449337665, -0.11683381026373024, -0.068101066008155173,
  153       -0.2585287760863188, 0.1596800793930033, 0.22093085509116406,
  154       0.13963049312268061, 0.15362879635662297, -0.10394131160200992,
  155       -0.38263816470980289, -0.17604866275531264, -0.04905872991920756,
  156       0.23604346979055821, 0.2301836469921566, 0.068131782834044557,
  157       0.056770613216140742, -0.32876486533489291, 0.45705343662074471,
  158       -0.20128726552190465, 0.20091882134377959, -0.18608439342474231,
  159       -0.014496366032474006, -0.031438332223428886, -0.52300750687780551,
  160       0.51502292007459249, 0.098961815888513979, 0.30633584506524614,
  161       -0.28225104878913482, 0.21001427837065148, -0.31572516444615467,
  162       -0.37143730081179804, 0.12268700572856285, 0.063733308350814435,
  163       0.38816778798247015, -0.43451580010226387, -0.22916026168231224,
  164       0.38583246086959611, -0.37434445234968944, 0.85389537613069277,
  165       -0.39833315092383537, 0.1957678484553016, -0.17339172058235591,
  166       -0.1921534707033728, 0.17883736424564134, -0.24836176972170168,
  167       0.43941471911169094, -0.18989072248375913, 0.0373691939527188,
  168       -0.17794680622691506, -0.19711793583117382, 0.3805687729419695,
  169       -0.35662057285202819, 0.22023764581231339, -0.36788093348043993,
  170       0.36833984805147413, -0.15101514604532928, -0.011264075583990715,
  171       0.17556216385515741, -0.38080306893903665, 0.14038126528781161,
  172       0.013658323678677541, 0.20697648304280392, 0.050307562774164233,
  173       0.12382567186271962, -0.12257687282899428, -0.19106084302074042,
  174       -0.0088973135731430231, -0.27821589670861158, -0.0377691973548426,
  175       -0.41397401706289694, -0.11993728057955313, 0.24486094819443271,
  176       0.22296663892683527, -0.080124021245137331, 0.029902990639075207,
  177       0.11937382272461147, -0.14010170156342405, 0.36263056094330315,
  178       0.4206510122774772, 0.10422663059178314, 0.35907099002817144,
  179       -0.1181793472297067, 0.14123606216826476, -0.45310084404226442,
  180       -0.10866064184256766, 0.062419369636676381, 0.43621062565974678,
  181       -0.24331697714374698, -0.19686982540593947, -0.16936485307181975,
  182       -0.43016864493412588, -0.16599862609527183, 0.027024118294658964,
  183       0.22989354833633951, -0.36109726187386226, -0.0061403852068276608,
  184       -0.4732640312417124, 0.072323920054999852, 0.38765911742443693,
  185       -0.22651859790972323, 0.23448948324798952, -0.345146198382994,
  186       -0.32384027684404781, -0.13504322754913084, -0.29375974791915649,
  187       -0.15069769912025194, 0.54440734732983831, 0.30177036252683831,
  188       -0.391786815566677, 0.25545964568230778, -0.22504816550474077,
  189       0.2099474024906717, -0.11587410917130472, 0.06278458871511132,
  190       -0.085602673452154915, 0.098769809326487337, 0.11560466497798094,
  191       -0.22359900922723402, 0.8491828912940933, -0.18988889790869531,
  192       -0.65474887294856821, -0.19816101665630087, 0.12118076073183884,
  193       -0.10378912494779813, 0.067248356369669846, 0.22421141499700559,
  194       0.10297432279838356, -0.34781572289161866, 0.20669975076169589,
  195       0.015385624014233559, 0.1652721239137134, -0.032624609613659504,
  196       0.09998748100060717, -0.33071264929681488, -0.13832928457522531,
  197       -0.0231146554520325, 0.35051830580765359, 0.0058019874721854693,
  198       -0.088980960671997136, 0.45372283925334772, -0.21395363120729821,
  199       0.26374046491885955, 0.36868949846270149, 0.11597015488006537,
  200       -0.046323354839511222, -0.24979972874813128, -0.26104290113674744,
  201       -0.67209503579979668, 0.82297261039374292, 0.12750096205392752,
  202       0.38471097954459021, -0.02298137869059701, -0.028088939604939134,
  203       0.056903064744558696, -0.51899697255572508, 0.27270479329367209,
  204       -0.18810592972132414, 0.1950199372502128, -0.22159486839204418,
  205       0.14757111983236904, 0.43470253007940346, -0.040936610667725193,
  206       -0.2069906099251192, -0.026381251273397979, 0.001359295445295082,
  207       -0.20582302789606222, -0.35601319425269584, 0.26589436837100555,
  208       -0.063668310012914536, -0.19343352848313472, 0.059991570050013737,
  209       0.030737410845168407, -0.2565123307951957, -0.2399919678004705,
  210       -0.540560680596019, -0.3724334735079175, 0.64370035563739381,
  211       0.53326870780846958, -0.033862728782170767, 0.024308012445123837,
  212       0.060964021023144049, -0.95332830076688047, -0.21241586378720306,
  213       0.8634550687528223, 0.37100359066385008, 0.22890099323196103,
  214       -0.23285724736067309, 0.25027362028852029, -1.3240933140067166,
  215       -0.03415695561438814, 0.84002836852127694, 0.659884278925901,
  216       -0.52370422711651976, 0.088651095913326913, 0.139211455759452,
  217       -0.66049781203618207, 0.31493379876803018, 0.11710549103088638,
  218       -0.31486307017592369, -0.40855542746040807, 0.19927901845358159,
  219       0.29385537444333032, -0.49235127971744458, -0.081529590924325365,
  220       0.42440613234277491, 0.41243177246657409, -0.51187571960224587,
  221       -0.24943055402143294, -0.1179077890637705, 0.083935257658885126,
  222       0.22587345703934691, -0.13269384451373967, -0.19120241376770553,
  223       -0.089087796314263487, -0.024888122550690367, 0.14652345114098561,
  224       0.15582791446988037, 0.67822048861321638, -0.37374848530486504,
  225       0.079939218987974681, -0.071379955870411557, 0.12482125417734138,
  226       -0.06094696288415416, -0.066393683992108835, 0.311754293366945,
  227       0.030319982607798151, -0.18884472316539386, -0.41325705071617597,
  228       0.21485902704911994, -0.10837756042161514, 0.51623218697681272,
  229       0.42873283536130463, -0.43436428463526555, -0.40332704343399867,
  230       -0.057956769098904508, 0.39310528000324918, 0.088651783160239389,
  231       0.38970459314068945, 0.24947409036659485, -0.2643523840242,
  232       -0.44763049603968658, 0.11435743565754072, 0.16759915925966742,
  233       0.14863242098221902, 0.99699403395554254, 0.93163363593262538,
  234       -0.77493497043168147, -0.2396998706439156, 0.28068148739424165,
  235       0.044357938295021306, 0.42147799094323768, 0.67479201506520892,
  236       0.30047649915232616, -0.64009142520902151, -0.22362154422390962,
  237       -0.062087749549458365, 0.14199325151825182, 0.10345454092730669,
  238       -0.33785374600314044, 0.36526630174277924, -0.20337741137545223,
  239       0.32471120803744496, -0.38727203564037505, 0.257164869385884,
  240       0.0089518950158614975, -0.22194391699987379, 0.24309703766296606,
  241       -0.28273519527234464, -0.27246343724921751, 0.42208307797294808,
  242       0.2092224871645717, 0.33447030029674973, 0.99680472396599284,
  243       0.70573983806417451, -0.42750877872865539, -0.620347634563173,
  244       0.69601503659608777, 0.016817161723158461, 0.25754125347086348,
  245       -0.043051618697342323, -0.14368200175581375, -0.32867527987598744,
  246       -0.20951868839773702, -0.23659198308897811, 0.41789991706901203,
  247       0.0509681126131345, 0.45662072932202558, 0.61901602930590072,
  248       -0.37904122163819137, -0.20427774850022096, 0.235074160329133,
  249       -0.0026080307830618071, 0.20927004189711271, 0.11224238143127165,
  250       -0.062047481893304418, -0.32663919684669351, -0.13547672360289337,
  251       0.24343535617467044, -0.1039620270346973, 0.51605264041165211,
  252       0.37203733748562129, 0.12232352959482579, -0.2911810851564372,
  253       0.035266078864770053, 0.050841960084369725, 0.30777118782357693,
  254       0.19353960725605229, -0.1277298254579643, 0.25003693345290423,
  255       0.18156394571807249, 0.28110233310842525, -0.35696929246306891,
  256       0.10093974961800528, 0.019744296100355024, -0.15248893268510263,
  257       0.12654252978178149, -0.297891601650051, 0.21652933326120566,
  258       -0.15396867904083314, 0.25048036581243821, -0.088430387092279863,
  259       0.21086384363207711, -0.041052568007557376, -0.0035296225641382045,
  260       -0.094863367516833913, -0.37138105654946618, 0.21729543078216035,
  261       -0.095075976664470041, -0.19027332510237749, 0.23500415436738789,
  262       0.047160454415025962, 0.18545467324188153, -0.18113655525128411,
  263       0.17840302145320408, -0.21726095487989316, 0.25829624791629258,
  264       0.25848089312297484, -0.20521509651985889, -0.25694611362739639,
  265       -0.23848272939090132, 0.3379497637848134, 0.12195442730604597,
  266       -0.0065515803239256376, 0.40606437464618789, 0.27300861137817933,
  267       0.20270846757705674, -0.72659567225492716, 0.12362569565579891,
  268       -0.084946484905938258, -0.18811664322305763, 0.18499730936598546,
  269       -0.0743326431017227, 0.051585593116900065, -0.16673175374534172,
  270       0.26946435932701945, -0.21864473879214802, 0.18478825050399367,
  271       0.15631396203481723, -0.067235984342301408, 0.10353395705410076,
  272       -0.20190555991107123, 0.31575521302468562, 0.077652453300935259,
  273       0.0082902836978532915, 0.20844982249337846, 0.21165591994488922,
  274       0.40998322980749258, -0.30175666783376848, 0.28750722572970744,
  275       0.14524664732667292, 0.61521903123439936, -0.00026603380031256507,
  276       0.11644856880863728, 0.068335223819787017, 0.38891341229798282,
  277       0.044609633710683272, 0.031211740269690109, -0.20366708333858996,
  278       -0.31785762529456779, 0.029519936631241424, 0.37445016416129434,
  279       -0.3539247497662138, 0.2405177487867266, -0.52344715195375913,
  280       0.11192111621560633, 0.056235501382976588, 0.091976701396118049,
  281       0.042562106518622571, 0.20590235355722908, 0.0058374732332592376,
  282       0.0686260735924795, 0.635437330465892, -0.24362926609456351,
  283       -0.039809596995156779, 0.28462461071303946, -0.054188713842255765,
  284       -0.11080299494950008, -0.26882059433948591, 0.22750992720245872,
  285       0.0663358750480181, 0.0091444837809973728, 0.31521711425085958,
  286       0.15273894709312713, 0.12491720011222457, 0.16710679527722008,
  287       -0.25443664736536, -0.0068350967125102233, 0.4853669557822532,
  288       0.2529419825607247, -0.18452667061275108, 0.354794842534171,
  289       -0.1103737216770071, -0.44262069602359672, 0.17091492542458819,
  290       0.52011016482496353, 0.37374996559420587, -0.37719696709535888,
  291       0.2095085639460231, -0.2928809203080569, -0.28633613519921308,
  292       0.042309560612733346, 0.52245167117697955, 0.55629769193677736,
  293       -0.49599016017944836, -0.057272822070158928, -0.23633014087459758,
  294       0.092092794773306258, 0.2586471965468517, 0.064528582701037632,
  295       0.32835044201555164, 0.21447160503201237, 0.061431486327923432,
  296       0.16897610164429308, -0.082710049062752422, 0.019332171679381,
  297       -0.34297791583242071, -0.021958989093254229, -0.32618399400875092,
  298       -0.057678221189215534, -0.18561831020943936, 0.3456111676796404,
  299       0.24202524501385492, -0.26590283806361409, 0.022526389841741074,
  300       -0.25437131322023826, 0.20220630971658998, -0.056059719247841464,
  301       0.075255593143145047, 0.19519357371224025, -0.16268919502812845,
  302       -0.10571329955546893, 0.087090692536121811, -0.19816724824478033,
  303       0.039796780301173174, -0.237259869704325, 0.23920016350651582,
  304       0.15762912321525169, -0.098761436065629246, -0.43415737523324588,
  305       0.014764759880255886, -0.022904974038449336, -0.46231502653222939,
  306       0.14505285507300994, 0.015754488749759092, 0.22996399525538114,
  307       0.28177026104516234, -0.051448468209040414, 0.24459328116181128,
  308       -0.17011237679831551, -0.1363427992661726, -0.019243947010018442,
  309       0.21674030946875766, 0.094984155098177481, -0.15364310750417939,
  310       -0.22893223142702931, 0.169183860425828, 0.016518259336585989,
  311       0.079163353342053017, 0.1465959229148929, 0.13576873775234816,
  312       0.10873091720319816, -0.25987566377879312, 0.39796359158464067,
  313       0.071775905177259139, -0.42924029585073786, 0.26917033898471415,
  314       -0.012906606340457715, 0.31661942055833836, 0.091316071772359772,
  315       -0.18594616851301077, -0.38904082950119512, -0.029606654934983205,
  316       -0.010076263596847705, -0.12939138552978863, 0.1638478351607775,
  317       -0.22359258669807017, 0.070625622996685025, 0.1664558365307286,
  318       -0.30177965908539639, -0.053349099695005939, 0.22742350480439394,
  319       0.29837532607268269, -0.09297638402912578, 0.34796608550998087,
  320       0.14960627399183951, -0.32193749354040552, -0.066884663580669024,
  321       0.024209197265779511, 0.020091028329137471, -0.17380774835495816,
  322       0.1065617147197816, -0.073899365495549152, 0.35694031884245114,
  323       -0.060733646189359905, 0.29566619652745629, -0.27973167630284362,
  324       -0.11692420921430537, 0.016393728144700422, -0.11494950417371554,
  325       -0.096983265407107222, 0.27730964218360771, -0.14220175887469197,
  326       -0.084407111060703949, -0.31825334590099547, -0.27513802237260232,
  327       0.27903759555472191, 0.63114514409479128, 0.47717553050670297,
  328       -0.29681246567546893, 0.19322859452974506, 0.19277470109246372,
  329       -0.87993739189858489, -0.48030056055137182, 0.81346968190082147,
  330       0.36138522882112056, 0.14168875166108405, -0.029009879240860632,
  331       -0.25244139944865052 };
  332   
  333     double av[3];
  334     static const double c_a[3] = { 1.8462877881569821, -0.057027038557283541,
  335       -1.3496395642347347 };
  336   
  337     double numer[3];
  338     static const double d_a[21] = { -1.6789813159209799, -2.0187084469138945,
  339       2.6073454615845915, 0.9724194856787185, -0.69912060811285071,
  340       1.3769938730758091, -1.4699771479786734, 1.681017497280942,
  341       -1.6865797663384852, 2.0125735931938911, 1.7885914298698502,
  342       -2.7144429677406947, -3.0355282630350708, 2.0620943255650568,
  343       1.2658729645764237, 0.0062420003061243014, -0.50200441674015572,
  344       -0.7344433812051353, -1.3644793930057564, 0.4718136850056871,
  345       -1.4361737233645488 };
  346   
  347     boolean_T exitg1;
  348     double denom;
  349   
  350     /*  ===== NEURAL NETWORK CONSTANTS ===== */
  351     /*  Input 1 */
  352     /*  Layer 1 */
  353     /*  Layer 2 */
  354     /*  ===== SIMULATION ======== */
  355     /*  Dimensions */
  356     /*  timesteps */
  357     /*  samples/series */
  358     /*  Input 1 */
  359     /*  Layer 1 */
  360     /*  Sigmoid Symmetric Transfer Function */
  361     mapminmax_apply(X, dv2, dv1, dv0);
  362     for (ixstart = 0; ixstart < 7; ixstart++) {
  363       b_b[ixstart] = a[ixstart];
  364       mtmp = 0.0;
  365       for (ix = 0; ix < 87; ix++) {
  366         mtmp += b_a[ixstart + 7 * ix] * dv0[ix];
  367       }
  368   
  369       b[ixstart] = b_b[ixstart] + mtmp;
  370       x[ixstart] = -2.0 * b[ixstart];
  371       x[ixstart] = exp(x[ixstart]);
  372     }
  373   
  374     /*  Layer 2 */
  375     for (ixstart = 0; ixstart < 3; ixstart++) {
  376       av[ixstart] = c_a[ixstart];
  377     }
  378   
  379     for (ix = 0; ix < 7; ix++) {
  380       b[ix] = 2.0 / (1.0 + x[ix]) - 1.0;
  381     }
  382   
  383     for (ix = 0; ix < 3; ix++) {
  384       mtmp = 0.0;
  385       for (ixstart = 0; ixstart < 7; ixstart++) {
  386         mtmp += d_a[ix + 3 * ixstart] * b[ixstart];
  387       }
  388   
  389       numer[ix] = av[ix] + mtmp;
  390     }
  391   
  392     /*  Competitive Soft Transfer Function */
  393     ixstart = 1;
  394     mtmp = numer[0];
  395     if (rtIsNaN(numer[0])) {
  396       ix = 2;
  397       exitg1 = false;
  398       while ((!exitg1) && (ix < 4)) {
  399         ixstart = ix;
  400         if (!rtIsNaN(numer[ix - 1])) {
  401           mtmp = numer[ix - 1];
  402           exitg1 = true;
  403         } else {
  404           ix++;
  405         }
  406       }
  407     }
  408   
  409     if (ixstart < 3) {
  410       while (ixstart + 1 < 4) {
  411         if (numer[ixstart] > mtmp) {
  412           mtmp = numer[ixstart];
  413         }
  414   
  415         ixstart++;
  416       }
  417     }
  418   
  419     for (ixstart = 0; ixstart < 3; ixstart++) {
  420       numer[ixstart] = exp(numer[ixstart] - mtmp);
  421     }
  422   
  423     denom = numer[0];
  424     for (ixstart = 0; ixstart < 2; ixstart++) {
  425       denom += numer[ixstart + 1];
  426     }
  427   
  428     mtmp = denom;
  429     for (ixstart = 0; ixstart < 1; ixstart++) {
  430       if (denom == 0.0) {
  431         mtmp = 1.0;
  432       }
  433     }
  434   
  435     for (ixstart = 0; ixstart < 3; ixstart++) {
  436       Y[ixstart] = numer[ixstart] / mtmp;
  437     }
  438   
  439     /*  Output 1 */
  440   }
  441   
  442   /*
  443    * File trailer for neural_function.c
  444    *
  445    * [EOF]
  446    */
  447