Santa, Not Sheep — A Festive AI Experiment

I’ve been buried in “real work” lately, so my fun side‑projects have been piling up… Today’s tale starts somewhere far stranger.

A few weeks ago, my Google feed served me something I didn’t know I needed: a mathematical formula for a sheep.

Graph of a sheep drawn using the formula by Wolfram alpha.
Formula (x,y) for t (0-2pi) that will plot a sheep.

Yes, really. Courtesy of the brilliant folks at Wolfram|Alpha, who apparently spend their time turning livestock into parametric art. Naturally, I clicked. Naturally, there were more animals. Naturally, my life was briefly complete.

But then the engineer in me kicked in.

How on earth did they derive those formulas? If you’ve never tried to reverse‑engineer an image into pure maths, it’s easy to underestimate how absurdly hard it is. So I set myself a challenge:

Could I generate my own formula‑based picture?

Scroll further down and you’ll find my attempt at a sheep – smaller, simpler, and definitely not line art. But with Christmas approaching, I wanted to push things further.

What if I made a formula for Santa?

No vector lines. No hand‑crafted curves. Just raw RGB pixels, learned automatically.

Stable Diffusion has nothing to fear from my efforts, but still – it felt like a fun seasonal challenge.

So I fed a Santa image into a neural network, let it learn the weights and biases, and then dumped out the resulting “formula”. The network takes x and y (ranging from –0.5 to +0.5) and outputs R, G, B values. That’s it. A mathematical Santa.

If you’ve ever wondered what a neural network thinks Santa looks like in pure maths… well, here you go. It’s not tiny – the three colour channels add up – but the goal wasn’t compression. The goal was festive nerd joy.

h1_0 = Tanh(-5.623048610336961 + (-38.226694165676456 * x) + (-16.93664543564806 * y));
h1_1 = Tanh(-1.0023071874956213 + (-21.20967911223546 * x) + (-31.50027201931792 * y));
h1_2 = Tanh(7.344204638117395 + (17.24747726320865 * x) + (-9.978832140918165 * y));
h1_3 = Tanh(3.99970068324839 + (-11.003247087100444 * x) + (17.767708902065795 * y));
h1_4 = Tanh(11.248626710425466 + (3.941514903438316 * x) + (27.917823013085794 * y));
h1_5 = Tanh(9.063721887169029 + (1.1059932689670329 * x) + (-36.15247105540886 * y));
h1_6 = Tanh(-7.3052765683829755 + (47.57407993905088 * x) + (4.352904362011327 * y));
h1_7 = Tanh(-0.9424281383762471 + (44.95489005438664 * x) + (0.8376101707030428 * y));
h1_8 = Tanh(-22.958841289824 + (-1.5509911218274257 * x) + (49.49301713167851 * y));
h1_9 = Tanh(-21.305679817555838 + (-2.688234758424392 * x) + (56.30718080503887 * y));
h1_10 = Tanh(-6.351796810068903 + (1.991744861382816 * x) + (-20.768009105680942 * y));
h1_11 = Tanh(-8.513917977777977 + (-20.956991427773232 * x) + (-26.768320990810025 * y));
h1_12 = Tanh(-3.6814352756989153 + (16.606679388387338 * x) + (11.719303223739121 * y));
h1_13 = Tanh(-4.715022021266904 + (-2.089870780222223 * x) + (-0.58583748826821 * y));
h1_14 = Tanh(-6.778506476698793 + (-28.317730349506494 * x) + (-10.333473152578431 * y));
h1_15 = Tanh(13.167475054637986 + (-54.109392001598025 * x) + (20.698055519441837 * y));
h1_16 = Tanh(-11.537041330555466 + (28.149565080315572 * x) + (8.027957310023865 * y));
h1_17 = Tanh(1.8656113916326735 + (12.31122406489157 * x) + (-1.2181279296258452 * y));
h1_18 = Tanh(-0.14910159232785877 + (-7.2209951900391 * x) + (8.47201567785883 * y));
h1_19 = Tanh(-3.7222608645736073 + (-0.15136748570610015 * x) + (-0.9258695028009856 * y));
h1_20 = Tanh(-4.336869998479299 + (19.30930012897977 * x) + (0.8750631194200355 * y));
h1_21 = Tanh(16.87962718822768 + (-18.85879936854751 * x) + (39.692002094536385 * y));
h1_22 = Tanh(-3.7701866662831423 + (-0.34178102773816305 * x) + (-0.9092273297489765 * y));
h1_23 = Tanh(-0.5326841640524008 + (-1.7670433154969112 * x) + (16.04134584276544 * y));
h1_24 = Tanh(-4.177061488792743 + (-8.499450920605003 * x) + (13.293471101100415 * y));
h1_25 = Tanh(6.3858809738156 + (0.8616789298972289 * x) + (43.261452098541675 * y));
h1_26 = Tanh(3.7885468010124934 + (0.023583462745114765 * x) + (0.8575504797811275 * y));
h1_27 = Tanh(4.0978989442647675 + (-0.1223025510913578 * x) + (0.48899428818863694 * y));
h1_28 = Tanh(5.28778061482203 + (-8.36928013709649 * x) + (-18.871055407733113 * y));
h1_29 = Tanh(-0.45647572944735565 + (-6.492554254789128 * x) + (-10.088843428348362 * y));

h2_0 = Tanh(-1.1878736227186062 + (-3.919719090121058 * h1_0) + (12.989112920432243 * h1_1) + (-0.1343295069532497 * h1_2) + (54.168464356703275 * h1_3) + (13.956357973671988 * h1_4) + (6.465155686232179 * h1_5) + (1.1123223869583094 * h1_6) + (0.036314517709657476 * h1_7) + (1.340682742107993 * h1_8) + (-1.4208699426309843 * h1_9) + (-12.970671890956318 * h1_10) + (4.590187497216977 * h1_11) + (-2.772958769837287 * h1_12) + (1.5158369788250972 * h1_13) + (-2.6345828593478093 * h1_14) + (4.571895077087319 * h1_15) + (-35.143391732151194 * h1_16) + (2.3048846832318266 * h1_17) + (8.658573903987568 * h1_18) + (1.2486389443225214 * h1_19) + (-36.98991996054969 * h1_20) + (1.5296290826986583 * h1_21) + (1.1729102216340168 * h1_22) + (10.842494995422273 * h1_23) + (2.774823676692448 * h1_24) + (32.635760196098246 * h1_25) + (-1.093428455633324 * h1_26) + (-1.0552064131355319 * h1_27) + (30.01031080472905 * h1_28) + (3.221635747859044 * h1_29));
h2_1 = Tanh(-9.649076940839207 + (24.2716322680747 * h1_0) + (-37.58190719184138 * h1_1) + (-10.461746389464036 * h1_2) + (-26.133766928908607 * h1_3) + (-7.165752039738086 * h1_4) + (14.766311906400219 * h1_5) + (-5.136794279626816 * h1_6) + (-10.441079841007275 * h1_7) + (9.306607909420814 * h1_8) + (8.50427824105856 * h1_9) + (-6.803869961361024 * h1_10) + (-10.720036856101116 * h1_11) + (1.6648151759795686 * h1_12) + (9.36993549677038 * h1_13) + (1.3888390786047258 * h1_14) + (-1.2343724143859849 * h1_15) + (11.990608100124213 * h1_16) + (-11.474721066674709 * h1_17) + (-32.57204310825471 * h1_18) + (9.329530851188437 * h1_19) + (4.534665082860719 * h1_20) + (-3.882804402239535 * h1_21) + (9.217403768635652 * h1_22) + (47.983731292770926 * h1_23) + (-55.40227095866674 * h1_24) + (-3.189474813614045 * h1_25) + (-9.292330958871908 * h1_26) + (-9.096126417024673 * h1_27) + (35.746969101793475 * h1_28) + (12.060107132998535 * h1_29));
h2_2 = Tanh(-1.9770300413466493 + (15.077947629754384 * h1_0) + (-1.3587343922131716 * h1_1) + (13.695780406669954 * h1_2) + (1.125118859423525 * h1_3) + (-0.8009008069688339 * h1_4) + (-58.76235457941437 * h1_5) + (-8.562171508412048 * h1_6) + (11.010543484646849 * h1_7) + (3.993837300063392 * h1_8) + (3.3396814167629008 * h1_9) + (1.5659441045416271 * h1_10) + (-2.988252852791416 * h1_11) + (2.0011239609958125 * h1_12) + (1.64616039384741 * h1_13) + (-3.5367406815190545 * h1_14) + (-2.801265408028679 * h1_15) + (3.2975112747703563 * h1_16) + (6.073705450902556 * h1_17) + (-0.7167846483345216 * h1_18) + (1.782841839932012 * h1_19) + (1.109395708497261 * h1_20) + (-0.3868273701530587 * h1_21) + (1.5146765192318747 * h1_22) + (78.40557752927418 * h1_23) + (24.506697940801637 * h1_24) + (2.0723345681487406 * h1_25) + (-2.111747540283205 * h1_26) + (-2.008252977873276 * h1_27) + (1.487699504799264 * h1_28) + (-3.6490775247541114 * h1_29));
h2_3 = Tanh(-3.509884408828905 + (2.2059434387839043 * h1_0) + (11.04049053705978 * h1_1) + (-2.5572233738933186 * h1_2) + (-25.176629582640228 * h1_3) + (-3.7472453802423367 * h1_4) + (-8.499473854434882 * h1_5) + (0.28958964679284227 * h1_6) + (7.2915948459680475 * h1_7) + (0.8016494720788462 * h1_8) + (8.992786875042615 * h1_9) + (2.9312224377821496 * h1_10) + (6.381772364577102 * h1_11) + (-2.7195855366141033 * h1_12) + (3.2809563496065715 * h1_13) + (2.4293290710146502 * h1_14) + (8.818040216975993 * h1_15) + (0.5460296493336979 * h1_16) + (3.6569517560296965 * h1_17) + (-6.018421196232081 * h1_18) + (3.6045695058944456 * h1_19) + (0.8900442468401022 * h1_20) + (-2.9456773927273434 * h1_21) + (3.0323334446964267 * h1_22) + (-10.867863502263337 * h1_23) + (7.039141779952338 * h1_24) + (58.519743005761896 * h1_25) + (-3.8270595023949494 * h1_26) + (-3.497997465314006 * h1_27) + (-8.398040960292374 * h1_28) + (11.19911389562037 * h1_29));
h2_4 = Tanh(-4.725262178918688 + (11.305574591003722 * h1_0) + (4.040614126794077 * h1_1) + (-5.520844920898641 * h1_2) + (-6.9127837265095575 * h1_3) + (-17.742000643803696 * h1_4) + (28.37455871190301 * h1_5) + (-7.158257795478804 * h1_6) + (3.8243348343939734 * h1_7) + (3.5194904326230745 * h1_8) + (4.137557578183602 * h1_9) + (-23.552433357876012 * h1_10) + (5.2964130587654425 * h1_11) + (-3.398913902094767 * h1_12) + (4.513227401826402 * h1_13) + (-7.991318266182827 * h1_14) + (5.357560655110871 * h1_15) + (5.021518211489679 * h1_16) + (4.227522501029882 * h1_17) + (-6.762022304439986 * h1_18) + (4.621418102620817 * h1_19) + (-12.690302364201385 * h1_20) + (-1.008003074246106 * h1_21) + (4.314943727085245 * h1_22) + (4.388855456188274 * h1_23) + (-3.5208361535660626 * h1_24) + (3.932609809088128 * h1_25) + (-4.302906979756651 * h1_26) + (-4.764477184264791 * h1_27) + (-21.427565829937183 * h1_28) + (-7.101253106154626 * h1_29));
h2_5 = Tanh(-2.300531160839228 + (-4.72454473245912 * h1_0) + (16.709358568578683 * h1_1) + (-5.2173270731905905 * h1_2) + (10.351732555717259 * h1_3) + (-10.9647736249191 * h1_4) + (0.8657139513326048 * h1_5) + (1.3906869291853798 * h1_6) + (2.0272514499616805 * h1_7) + (2.439430343716578 * h1_8) + (1.7691296310055564 * h1_9) + (2.476944811262193 * h1_10) + (7.6127046386867026 * h1_11) + (2.3815777512482508 * h1_12) + (2.5361736281036147 * h1_13) + (15.074710375046088 * h1_14) + (4.823998278421457 * h1_15) + (2.0940740057084697 * h1_16) + (-3.0033286034903353 * h1_17) + (-7.431590829148336 * h1_18) + (2.010496397304937 * h1_19) + (-7.4465319468343 * h1_20) + (-8.156137079752549 * h1_21) + (2.117465507088425 * h1_22) + (3.7333696263472667 * h1_23) + (-0.5927439066331086 * h1_24) + (3.290148449146185 * h1_25) + (-2.142167282036839 * h1_26) + (-2.385255383968388 * h1_27) + (-2.014358648569988 * h1_28) + (3.6327675233948002 * h1_29));
h2_6 = Tanh(-1.1642368359607476 + (-0.15119347175076941 * h1_0) + (-0.46277528902205334 * h1_1) + (-8.12087478523093 * h1_2) + (-0.5876928654449669 * h1_3) + (-0.14668899839184402 * h1_4) + (-4.237242313265127 * h1_5) + (2.5729391151791035 * h1_6) + (2.1426805260458393 * h1_7) + (1.617527920296423 * h1_8) + (-5.869387876092355 * h1_9) + (0.35716696359868005 * h1_10) + (-0.1920622526673782 * h1_11) + (1.1232590328501149 * h1_12) + (0.998724783531752 * h1_13) + (-5.738932287541462 * h1_14) + (6.423705441263063 * h1_15) + (5.081780493555575 * h1_16) + (-8.89083843809054 * h1_17) + (-1.276371722974206 * h1_18) + (0.6915768597073689 * h1_19) + (6.066188363344529 * h1_20) + (-0.30136691498556073 * h1_21) + (0.5229449227105595 * h1_22) + (1.4661415646991363 * h1_23) + (19.509079926338856 * h1_24) + (0.11580049293381633 * h1_25) + (-0.42235656337951305 * h1_26) + (-0.522770134226589 * h1_27) + (-20.101371900443507 * h1_28) + (-0.46091515600834904 * h1_29));
h2_7 = Tanh(1.7950937644226472 + (0.5787715571271927 * h1_0) + (-3.589087031375653 * h1_1) + (17.307138236276398 * h1_2) + (1.451010122685975 * h1_3) + (1.7982471997943192 * h1_4) + (11.197677514753844 * h1_5) + (-1.6732451824224632 * h1_6) + (-1.2323975647599879 * h1_7) + (6.562820650965413 * h1_8) + (3.0773487679758476 * h1_9) + (-1.6710381328706376 * h1_10) + (-0.9306192483876732 * h1_11) + (-0.8890825742475569 * h1_12) + (-1.6296701892124013 * h1_13) + (-4.510440397534173 * h1_14) + (1.740446633901975 * h1_15) + (-1.6149979125224765 * h1_16) + (-0.8417299046591421 * h1_17) + (1.6717228318775523 * h1_18) + (-1.5158303452586823 * h1_19) + (-1.6423666733710058 * h1_20) + (1.535847200073382 * h1_21) + (-1.734346977359504 * h1_22) + (-0.12291361770038049 * h1_23) + (-9.398107773783062 * h1_24) + (1.4412176118262745 * h1_25) + (1.8637233323766085 * h1_26) + (1.7388176020237713 * h1_27) + (0.7544419133941653 * h1_28) + (-4.999060098212478 * h1_29));
h2_8 = Tanh(-11.826285954583586 + (-24.835114832197846 * h1_0) + (-5.877344108956168 * h1_1) + (-0.5156595751699395 * h1_2) + (3.5972275769755893 * h1_3) + (-9.055606422445443 * h1_4) + (-77.83167571561724 * h1_5) + (2.1517218007755647 * h1_6) + (11.378468851982852 * h1_7) + (-19.565548632827532 * h1_8) + (-7.798730468940707 * h1_9) + (-1.820985001975888 * h1_10) + (6.362844587452684 * h1_11) + (0.9525251761636608 * h1_12) + (11.735406381613306 * h1_13) + (-3.548995642405721 * h1_14) + (5.178702028606582 * h1_15) + (-13.365462297071858 * h1_16) + (-13.274823242497877 * h1_17) + (-2.3767693910622594 * h1_18) + (11.569398588077448 * h1_19) + (-26.548542370304762 * h1_20) + (2.428055074973621 * h1_21) + (11.41762222031451 * h1_22) + (9.55526053342812 * h1_23) + (-28.31381678218086 * h1_24) + (4.496328854250777 * h1_25) + (-11.638372581985596 * h1_26) + (-11.750272759859602 * h1_27) + (30.43424249058324 * h1_28) + (16.783708967998127 * h1_29));
h2_9 = Tanh(1.3299422909905645 + (-3.816180312220593 * h1_0) + (-2.6111067954119185 * h1_1) + (2.4608470583954243 * h1_2) + (-13.447157252537336 * h1_3) + (16.08789392417272 * h1_4) + (-0.980676439558575 * h1_5) + (1.6186821284738773 * h1_6) + (-5.010510144557185 * h1_7) + (-1.2290462012659118 * h1_8) + (-0.7700994450625491 * h1_9) + (8.485050086518225 * h1_10) + (3.8895182809865045 * h1_11) + (-0.5918326057633785 * h1_12) + (-1.0372982283024994 * h1_13) + (-8.976817254069365 * h1_14) + (1.5229582813377311 * h1_15) + (-1.3718009079621587 * h1_16) + (-3.7445040707509794 * h1_17) + (2.427285212933115 * h1_18) + (-1.5060928670343376 * h1_19) + (-2.2840871934332396 * h1_20) + (6.086583119639987 * h1_21) + (-1.2747333076340948 * h1_22) + (-3.6148156500437825 * h1_23) + (-0.2671139648303764 * h1_24) + (11.221720308540796 * h1_25) + (1.276536559618615 * h1_26) + (1.0436314224246603 * h1_27) + (0.8345317917322737 * h1_28) + (-9.992048772781587 * h1_29));
h2_10 = Tanh(1.9206377624254687 + (36.04756974567079 * h1_0) + (-34.48131942017855 * h1_1) + (2.2570527972896075 * h1_2) + (-15.337278328011612 * h1_3) + (2.0687251148548786 * h1_4) + (-21.549881816468908 * h1_5) + (-13.784475548439456 * h1_6) + (-3.047093570713396 * h1_7) + (-0.5685152863613087 * h1_8) + (-0.8876595477952044 * h1_9) + (-1.6427103353751145 * h1_10) + (-3.100037128484347 * h1_11) + (0.9193207119034691 * h1_12) + (-1.5169996850395684 * h1_13) + (8.664040474805839 * h1_14) + (-21.502923674575186 * h1_15) + (-1.3385368573966674 * h1_16) + (-6.6876582277056995 * h1_17) + (-4.964829641710342 * h1_18) + (-1.763178499269864 * h1_19) + (7.410207327482639 * h1_20) + (1.6295027421201282 * h1_21) + (-1.7279966603526085 * h1_22) + (32.495023098212656 * h1_23) + (13.286385204994966 * h1_24) + (2.690863624388401 * h1_25) + (1.8605092012316342 * h1_26) + (1.768008252690336 * h1_27) + (-25.761230748424573 * h1_28) + (0.7199341356620218 * h1_29));
h2_11 = Tanh(-2.2825414283391097 + (0.4609348803118983 * h1_0) + (5.847197234999291 * h1_1) + (0.894431700403908 * h1_2) + (-3.8592140994473354 * h1_3) + (24.791946463722912 * h1_4) + (20.357961904263835 * h1_5) + (2.8922058864714884 * h1_6) + (-2.809101607196405 * h1_7) + (3.311813316093038 * h1_8) + (2.619501578689793 * h1_9) + (10.116076324614335 * h1_10) + (0.6517450498860204 * h1_11) + (0.22385633243663747 * h1_12) + (2.200495820645635 * h1_13) + (5.5580303355466265 * h1_14) + (-9.086998088619348 * h1_15) + (-7.0718973461080195 * h1_16) + (10.975544922008057 * h1_17) + (3.0682645824566963 * h1_18) + (2.621647678902115 * h1_19) + (0.05781112936374787 * h1_20) + (-4.978755158497943 * h1_21) + (2.148575620359805 * h1_22) + (11.91846121162973 * h1_23) + (-2.1642930526121957 * h1_24) + (19.819485483590263 * h1_25) + (-2.2173618437749893 * h1_26) + (-2.4238284920914794 * h1_27) + (8.565940701409362 * h1_28) + (8.059619078475398 * h1_29));
h2_12 = Tanh(-2.3321928579374704 + (30.36644870165187 * h1_0) + (-1.5790252498435438 * h1_1) + (-1.8931281365265347 * h1_2) + (0.33618864318340247 * h1_3) + (-5.555251141081421 * h1_4) + (-2.394734991392634 * h1_5) + (-7.926062254969843 * h1_6) + (19.404305503667878 * h1_7) + (2.250790969377718 * h1_8) + (2.396944005402247 * h1_9) + (5.532774258129841 * h1_10) + (0.6945844667174558 * h1_11) + (2.717047327309153 * h1_12) + (1.7740527943696793 * h1_13) + (-22.969002771224215 * h1_14) + (-2.5565331157440627 * h1_15) + (1.5783231127811599 * h1_16) + (3.1007224539189595 * h1_17) + (-0.6685684632143037 * h1_18) + (1.7866882444318353 * h1_19) + (1.5596628193030273 * h1_20) + (-10.97367082873289 * h1_21) + (1.7869899724327 * h1_22) + (2.0527702576098665 * h1_23) + (2.985483464789618 * h1_24) + (1.8984805590024934 * h1_25) + (-2.261390589579075 * h1_26) + (-1.7066814255895502 * h1_27) + (-2.6237753072232284 * h1_28) + (-0.22855637969616963 * h1_29));
h2_13 = Tanh(-2.359994234943333 + (1.8032599088906365 * h1_0) + (1.7372363115356677 * h1_1) + (-1.968613342503467 * h1_2) + (6.4323120307002855 * h1_3) + (-1.8375182197903521 * h1_4) + (4.709370295145183 * h1_5) + (-1.5287877688345752 * h1_6) + (-1.639784539114313 * h1_7) + (0.8479020453672845 * h1_8) + (-2.0421206654530524 * h1_9) + (2.04318829448639 * h1_10) + (1.7644174358391818 * h1_11) + (1.4227364989324836 * h1_12) + (2.0820989766313858 * h1_13) + (2.034199789341383 * h1_14) + (-3.4397868027577205 * h1_15) + (26.147038159688304 * h1_16) + (-2.08500679517716 * h1_17) + (-4.337286415533494 * h1_18) + (1.6388997058323247 * h1_19) + (-0.34972075669244007 * h1_20) + (-1.7421649111484467 * h1_21) + (2.1550849315877247 * h1_22) + (5.612387336497993 * h1_23) + (1.267647086770939 * h1_24) + (-1.5014161099052268 * h1_25) + (-2.0567114479062387 * h1_26) + (-2.162016017281287 * h1_27) + (-3.8528791771409643 * h1_28) + (1.9058069990874145 * h1_29));
h2_14 = Tanh(5.129822300192284 + (4.61475434891425 * h1_0) + (4.295400879822931 * h1_1) + (3.324823008836688 * h1_2) + (-4.737863883262421 * h1_3) + (-7.7458248703346735 * h1_4) + (1.1929513049331075 * h1_5) + (10.852706474750534 * h1_6) + (-1.5594260134545446 * h1_7) + (-1.4906636144060454 * h1_8) + (-0.8601434458689313 * h1_9) + (-12.150783568448192 * h1_10) + (3.2572985034579567 * h1_11) + (-4.235764343194057 * h1_12) + (-4.5721744505373225 * h1_13) + (-12.523447226409226 * h1_14) + (7.617825668129355 * h1_15) + (-4.117083083892345 * h1_16) + (-10.404733664476671 * h1_17) + (-0.8032310181065367 * h1_18) + (-4.416123773636885 * h1_19) + (0.29946816469451376 * h1_20) + (-31.205992433108563 * h1_21) + (-4.435931549598062 * h1_22) + (5.372542604055242 * h1_23) + (0.7900471897296832 * h1_24) + (13.924931333660815 * h1_25) + (4.522496890702362 * h1_26) + (4.7242624298707065 * h1_27) + (0.8735345386248609 * h1_28) + (-2.5387614555910614 * h1_29));
h2_15 = Tanh(-1.922470341083642 + (13.280694352453972 * h1_0) + (-1.1499151014826492 * h1_1) + (-1.4339754853097486 * h1_2) + (0.9380419096477486 * h1_3) + (-25.548089275822456 * h1_4) + (-1.1606125396275986 * h1_5) + (-19.020727517209895 * h1_6) + (6.600167308008769 * h1_7) + (1.4539566826468202 * h1_8) + (1.0983060434039316 * h1_9) + (3.2609143708903106 * h1_10) + (-9.67010956188869 * h1_11) + (2.1432050101297904 * h1_12) + (1.4085720391755676 * h1_13) + (0.8171524702416322 * h1_14) + (-3.8803729356239303 * h1_15) + (1.0518344513558504 * h1_16) + (-0.537031904808426 * h1_17) + (-0.8334656156239348 * h1_18) + (1.5942389831860777 * h1_19) + (20.20544914182825 * h1_20) + (-12.724843352973144 * h1_21) + (1.4300315147637257 * h1_22) + (1.2393783756811023 * h1_23) + (1.4159824622618205 * h1_24) + (1.0130146852014903 * h1_25) + (-1.6404132556309552 * h1_26) + (-1.7595527408804275 * h1_27) + (-1.176210073421046 * h1_28) + (-0.865972331113072 * h1_29));
h2_16 = Tanh(-5.057287490669733 + (4.803149125242517 * h1_0) + (-4.011131949653514 * h1_1) + (-3.9959433254105696 * h1_2) + (27.145443707871642 * h1_3) + (-1.5069315524436138 * h1_4) + (-4.5919403986723815 * h1_5) + (4.855292379912405 * h1_6) + (-1.286942512934472 * h1_7) + (4.400381590916684 * h1_8) + (4.371109887166503 * h1_9) + (-17.45138149828815 * h1_10) + (-10.050274777752279 * h1_11) + (4.888375343026125 * h1_12) + (5.272939299304274 * h1_13) + (20.879600831803945 * h1_14) + (-5.040797679134139 * h1_15) + (4.926638126062169 * h1_16) + (6.352036305934262 * h1_17) + (-3.083882656091477 * h1_18) + (5.072141400088993 * h1_19) + (4.262149163146646 * h1_20) + (-0.49059984790301076 * h1_21) + (4.719449481624397 * h1_22) + (-0.6575532836412871 * h1_23) + (2.749622416976477 * h1_24) + (-42.06187907227938 * h1_25) + (-4.616914032237341 * h1_26) + (-4.331220629998065 * h1_27) + (-4.442164808821321 * h1_28) + (-1.9665033192483239 * h1_29));
h2_17 = Tanh(-4.272104003364687 + (-23.570583794715922 * h1_0) + (-0.7910347690185138 * h1_1) + (-2.6375252214048306 * h1_2) + (13.385045791348428 * h1_3) + (-6.599383651277661 * h1_4) + (-2.655999437387623 * h1_5) + (-48.03216747981109 * h1_6) + (42.07717487020225 * h1_7) + (13.6830373262563 * h1_8) + (3.405135941502293 * h1_9) + (34.70884392514292 * h1_10) + (8.80290139742366 * h1_11) + (5.054216545932272 * h1_12) + (4.087226628862683 * h1_13) + (-9.653980307352473 * h1_14) + (-13.374686680007741 * h1_15) + (2.3675226930341777 * h1_16) + (3.7152284803466924 * h1_17) + (-12.406874432009039 * h1_18) + (4.915120251289089 * h1_19) + (-36.79788228069684 * h1_20) + (-5.644154577699628 * h1_21) + (4.890391810252255 * h1_22) + (-67.44991533427759 * h1_23) + (2.184838520405927 * h1_24) + (8.172888277303617 * h1_25) + (-4.873412057599163 * h1_26) + (-4.580349406328491 * h1_27) + (-0.9600801564084311 * h1_28) + (13.358528173454932 * h1_29));
h2_18 = Tanh(-6.608836922205436 + (0.013346509125669155 * h1_0) + (-15.855369441426982 * h1_1) + (-21.423276846093948 * h1_2) + (-21.23538363723894 * h1_3) + (5.66248100611838 * h1_4) + (-17.915061464294375 * h1_5) + (1.3381850995359952 * h1_6) + (1.6499867823791485 * h1_7) + (-1.2892411037503124 * h1_8) + (-15.538676105628872 * h1_9) + (-9.210773698835695 * h1_10) + (6.27211313228828 * h1_11) + (13.54109691710149 * h1_12) + (6.027141329430341 * h1_13) + (-20.672261344830446 * h1_14) + (-25.092072808108217 * h1_15) + (5.018762985659695 * h1_16) + (15.438271544207923 * h1_17) + (-6.180296324700231 * h1_18) + (5.587072860989995 * h1_19) + (-27.882512560595675 * h1_20) + (-2.880871309771747 * h1_21) + (6.1738609380773735 * h1_22) + (-16.076385103206484 * h1_23) + (40.936423104569265 * h1_24) + (-0.18460441098295163 * h1_25) + (-6.335924149070434 * h1_26) + (-6.024856710493767 * h1_27) + (-2.898015864382075 * h1_28) + (11.18357390655966 * h1_29));
h2_19 = Tanh(-1.3720541125849783 + (1.2177703742664747 * h1_0) + (-5.266244870709683 * h1_1) + (0.805735581350629 * h1_2) + (-0.23335728766799732 * h1_3) + (-1.4644618365748283 * h1_4) + (1.7515223042006216 * h1_5) + (0.41830233173364506 * h1_6) + (-0.16905232799990413 * h1_7) + (18.32178098265341 * h1_8) + (-2.79737213373944 * h1_9) + (1.593264418057226 * h1_10) + (1.8294254824985723 * h1_11) + (3.185955799172913 * h1_12) + (1.6501472956069134 * h1_13) + (-8.179616971716582 * h1_14) + (10.068228694064551 * h1_15) + (12.268303124130476 * h1_16) + (-2.6072307594898554 * h1_17) + (4.14638015619648 * h1_18) + (1.4077310068460702 * h1_19) + (0.9720395651743591 * h1_20) + (-1.3707080587323854 * h1_21) + (1.9434667637606404 * h1_22) + (9.297276114869373 * h1_23) + (4.778215029932571 * h1_24) + (-0.9675854902333635 * h1_25) + (-1.8549935294716606 * h1_26) + (-1.654612948075431 * h1_27) + (-3.539099753632423 * h1_28) + (-11.776410151029213 * h1_29));
h2_20 = Tanh(1.3735981353083917 + (-0.39520224506025403 * h1_0) + (0.5669909197276723 * h1_1) + (11.119437483552888 * h1_2) + (0.5191996810940992 * h1_3) + (2.0151331641954835 * h1_4) + (-12.49386320309027 * h1_5) + (-1.8939483319378219 * h1_6) + (1.161438730592895 * h1_7) + (-0.6509830820538927 * h1_8) + (1.85949515971525 * h1_9) + (2.3109861354206127 * h1_10) + (-3.521673709336247 * h1_11) + (0.47516695137947673 * h1_12) + (-1.0753760082235253 * h1_13) + (7.035188561703561 * h1_14) + (0.012841110718425346 * h1_15) + (-0.07886915141706922 * h1_16) + (-0.8840787890651073 * h1_17) + (-0.5455419886911206 * h1_18) + (-0.8771267973097816 * h1_19) + (-0.4139427967934195 * h1_20) + (1.2720418940013813 * h1_21) + (-1.2713705447717383 * h1_22) + (-0.6847559395142376 * h1_23) + (-0.9392017571423399 * h1_24) + (-2.422848602004772 * h1_25) + (0.8974023354693191 * h1_26) + (1.1876511397290275 * h1_27) + (-0.8717070531354667 * h1_28) + (-1.2110397690129626 * h1_29));
h2_21 = Tanh(-5.332714280176832 + (2.1865872892336173 * h1_0) + (-4.219453046265043 * h1_1) + (-38.4644307476747 * h1_2) + (6.3546882644838565 * h1_3) + (-2.542403122000181 * h1_4) + (-18.931519801014534 * h1_5) + (2.8221119072159313 * h1_6) + (7.126702251679891 * h1_7) + (1.7986238825780656 * h1_8) + (-6.822287683497187 * h1_9) + (-41.46567988052433 * h1_10) + (-9.487711976644555 * h1_11) + (4.629266670825738 * h1_12) + (5.347280516892994 * h1_13) + (4.165534334848639 * h1_14) + (0.8857365488419583 * h1_15) + (7.978250425477604 * h1_16) + (16.528409846094647 * h1_17) + (-13.513018048879777 * h1_18) + (5.412817241034421 * h1_19) + (-1.0060315644155735 * h1_20) + (-1.1342461874479208 * h1_21) + (5.191639698648226 * h1_22) + (-17.864759696816733 * h1_23) + (6.011052563184432 * h1_24) + (-3.6439039356441913 * h1_25) + (-5.436991030670236 * h1_26) + (-5.713153181494057 * h1_27) + (11.047535558941124 * h1_28) + (17.01815479705314 * h1_29));
h2_22 = Tanh(-3.518577097168331 + (-1.0526824754044677 * h1_0) + (-12.124498706322994 * h1_1) + (-56.21991447874103 * h1_2) + (34.14048697322717 * h1_3) + (-1.9633274973351547 * h1_4) + (57.15657635028787 * h1_5) + (2.3381458580551744 * h1_6) + (-1.9173128063605247 * h1_7) + (-1.8197243387725837 * h1_8) + (-5.447354006905184 * h1_9) + (-13.324896804831981 * h1_10) + (-36.333025627213075 * h1_11) + (8.98314611188609 * h1_12) + (3.7150668096628388 * h1_13) + (-6.010667518933093 * h1_14) + (-38.095069775923626 * h1_15) + (0.2187671184157674 * h1_16) + (-3.012838542015206 * h1_17) + (35.641002270763835 * h1_18) + (3.016505698668828 * h1_19) + (31.767472981473215 * h1_20) + (4.371098229722082 * h1_21) + (3.183273172119063 * h1_22) + (-44.851764440963294 * h1_23) + (-11.17873434491382 * h1_24) + (18.125440544876902 * h1_25) + (-3.3684678096830103 * h1_26) + (-3.284044363514518 * h1_27) + (-8.760853284386451 * h1_28) + (10.699675514170385 * h1_29));
h2_23 = Tanh(-5.30957731949337 + (-14.081981336669063 * h1_0) + (-11.868450100237384 * h1_1) + (12.84150386790746 * h1_2) + (9.727288589021384 * h1_3) + (35.671399332267114 * h1_4) + (68.66987406765585 * h1_5) + (0.6105115319096164 * h1_6) + (-2.952780762454346 * h1_7) + (12.09545821737691 * h1_8) + (62.60312554802732 * h1_9) + (-12.11793144403033 * h1_10) + (-7.038568570511799 * h1_11) + (-4.026615926319394 * h1_12) + (5.101986272341441 * h1_13) + (-8.651715946333347 * h1_14) + (22.417438346983747 * h1_15) + (1.0006797680762716 * h1_16) + (38.6955542693944 * h1_17) + (-4.56006856172208 * h1_18) + (5.3848217166539145 * h1_19) + (-14.354646786504071 * h1_20) + (15.362024831888618 * h1_21) + (5.244998951214525 * h1_22) + (8.351960224171256 * h1_23) + (-22.54710475892384 * h1_24) + (7.902655474505902 * h1_25) + (-4.978659771067777 * h1_26) + (-5.144603410075635 * h1_27) + (52.28474088176749 * h1_28) + (0.23098853022728288 * h1_29));
h2_24 = Tanh(-0.010293969586387276 + (4.356856314098979 * h1_0) + (7.521597201626184 * h1_1) + (-8.175873663792204 * h1_2) + (-9.034320045349755 * h1_3) + (-1.5110397462070368 * h1_4) + (0.9600038252599817 * h1_5) + (-0.8497656083344063 * h1_6) + (-3.6924527907649085 * h1_7) + (-0.8494547721140864 * h1_8) + (-0.8973748360192288 * h1_9) + (12.913636541011138 * h1_10) + (7.214386635933582 * h1_11) + (-3.682214012795638 * h1_12) + (-0.18003078959631028 * h1_13) + (13.538415333419135 * h1_14) + (-0.7178210531107523 * h1_15) + (0.640799951769311 * h1_16) + (17.332587517860347 * h1_17) + (2.9105917525486635 * h1_18) + (-0.8364228293655633 * h1_19) + (13.130840549129204 * h1_20) + (-3.129258827915762 * h1_21) + (-0.3973197780302327 * h1_22) + (-11.25964880559467 * h1_23) + (-2.2153124849232144 * h1_24) + (-2.194479507402158 * h1_25) + (0.40731503471775615 * h1_26) + (0.4974116949739972 * h1_27) + (0.9998446947150972 * h1_28) + (8.297904990790506 * h1_29));
h2_25 = Tanh(-6.129365262952356 + (6.6042489116814505 * h1_0) + (-18.092844645906062 * h1_1) + (-15.673520480648614 * h1_2) + (-3.0454154539856075 * h1_3) + (-5.025226409869896 * h1_4) + (42.452066555452774 * h1_5) + (-10.029611549868616 * h1_6) + (-11.840386331422426 * h1_7) + (-1.978850220653479 * h1_8) + (-6.153384940400275 * h1_9) + (5.008181058209686 * h1_10) + (3.507562639822757 * h1_11) + (4.572264732458074 * h1_12) + (6.002050713118555 * h1_13) + (-8.84681786033546 * h1_14) + (-26.20516527538241 * h1_15) + (-20.26529457651153 * h1_16) + (8.790487091316704 * h1_17) + (-0.2073161826869477 * h1_18) + (5.849030867305652 * h1_19) + (-3.1265468531005483 * h1_20) + (-4.846455159318148 * h1_21) + (5.948336592828161 * h1_22) + (7.3087784665286195 * h1_23) + (32.27719909009042 * h1_24) + (-3.585196849603131 * h1_25) + (-5.900176625611403 * h1_26) + (-5.619205468915049 * h1_27) + (-17.49854224060516 * h1_28) + (-9.676274357953218 * h1_29));
h2_26 = Tanh(-1.5705682348201275 + (5.3833004063730705 * h1_0) + (-6.565273104971002 * h1_1) + (-2.8676788771610657 * h1_2) + (-5.851749618208149 * h1_3) + (8.06864368767067 * h1_4) + (-2.676169470389573 * h1_5) + (-14.616173019546471 * h1_6) + (1.3453462891385777 * h1_7) + (2.3459249995740934 * h1_8) + (2.342219340530527 * h1_9) + (-49.10879166469804 * h1_10) + (-22.754243361328882 * h1_11) + (2.1966241002014635 * h1_12) + (1.8831110221231577 * h1_13) + (-23.186565639754104 * h1_14) + (2.924247512139436 * h1_15) + (1.5745097915162607 * h1_16) + (4.167865448194691 * h1_17) + (-1.6956019683595525 * h1_18) + (1.5295404702223565 * h1_19) + (8.046950944160752 * h1_20) + (15.829816418803242 * h1_21) + (1.8103684225204328 * h1_22) + (5.284975990546887 * h1_23) + (2.771938176000044 * h1_24) + (14.182434809339927 * h1_25) + (-1.7464379758418376 * h1_26) + (-2.136376412296837 * h1_27) + (-2.647376236646124 * h1_28) + (-0.578005255202271 * h1_29));
h2_27 = Tanh(1.8245909553209447 + (-7.92143181781656 * h1_0) + (-2.7836656275205827 * h1_1) + (-0.6436412944471814 * h1_2) + (-24.247751802962792 * h1_3) + (-25.79921481205488 * h1_4) + (6.86852809501804 * h1_5) + (4.281892576084288 * h1_6) + (2.8364490434120118 * h1_7) + (-12.503293778363416 * h1_8) + (8.143859233795824 * h1_9) + (-42.985271932209216 * h1_10) + (0.3957505307598073 * h1_11) + (-6.079855230224929 * h1_12) + (-2.2841191544259094 * h1_13) + (0.6131019680102846 * h1_14) + (4.433207468099982 * h1_15) + (-0.1546622891035523 * h1_16) + (2.5273351739142447 * h1_17) + (1.7727218341774416 * h1_18) + (-2.435446711899667 * h1_19) + (-5.925905819912437 * h1_20) + (-16.746727302263977 * h1_21) + (-2.062772949766658 * h1_22) + (0.14279431117006516 * h1_23) + (-0.4729544757810683 * h1_24) + (-0.20832957146427183 * h1_25) + (2.3739377365026297 * h1_26) + (2.0586288994863304 * h1_27) + (2.9711982351913724 * h1_28) + (-1.192820879485438 * h1_29));
h2_28 = Tanh(5.707040906778498 + (-0.42070130938966593 * h1_0) + (6.942633435494972 * h1_1) + (-26.768452493427212 * h1_2) + (6.020249841369523 * h1_3) + (-16.10330072117956 * h1_4) + (-17.49958475060085 * h1_5) + (5.576444290842078 * h1_6) + (-5.175830025709169 * h1_7) + (2.8796369415843546 * h1_8) + (-5.143544716919965 * h1_9) + (-1.8797034815896732 * h1_10) + (7.509132995740817 * h1_11) + (-2.7636374338532343 * h1_12) + (-3.555165371072835 * h1_13) + (6.689554266063174 * h1_14) + (0.022421398450208567 * h1_15) + (-6.016929249487721 * h1_16) + (-9.459034824956705 * h1_17) + (4.901790326950819 * h1_18) + (-5.2957548843895506 * h1_19) + (29.13802545505421 * h1_20) + (-6.79908741189808 * h1_21) + (-5.243241325985073 * h1_22) + (-3.802644001316329 * h1_23) + (-15.40292353180017 * h1_24) + (-9.226435443478355 * h1_25) + (5.237253471059983 * h1_26) + (5.563134331301849 * h1_27) + (3.435853729388923 * h1_28) + (1.8296072864268877 * h1_29));
h2_29 = Tanh(-5.105851673994637 + (3.956141832737536 * h1_0) + (4.461676975072009 * h1_1) + (-4.123804427291396 * h1_2) + (44.984400802700584 * h1_3) + (-4.430366945703657 * h1_4) + (-26.281648906363223 * h1_5) + (-1.3297737974741446 * h1_6) + (-3.2699392101720024 * h1_7) + (-0.1932711610481893 * h1_8) + (-10.747685153683959 * h1_9) + (4.945758919926021 * h1_10) + (4.627540353825582 * h1_11) + (10.107030959086982 * h1_12) + (4.500064519755959 * h1_13) + (4.368470524742479 * h1_14) + (-27.56581352877989 * h1_15) + (13.678024173830527 * h1_16) + (-4.036099816480286 * h1_17) + (-1.661769202682114 * h1_18) + (4.7337506450791516 * h1_19) + (7.877822770370296 * h1_20) + (-5.104585624142485 * h1_21) + (4.618520962317276 * h1_22) + (12.457382224154431 * h1_23) + (-15.044511795357137 * h1_24) + (-2.852785340658709 * h1_25) + (-4.774288428037538 * h1_26) + (-4.5175869650469265 * h1_27) + (-5.193092183440349 * h1_28) + (4.392139136991374 * h1_29));

r = Tanh(4.397304757507351 + (-9.557864311404998 * h2_0) + (-0.271998488640644 * h2_1) + (1.0010959980865644 * h2_2) + (-0.9113688599243038 * h2_3) + (-0.6851115942453065 * h2_4) + (-0.5092745629292157 * h2_5) + (-0.1081640824078369 * h2_6) + (3.3668039398571774 * h2_7) + (-1.1116449534993769 * h2_8) + (3.864216051965595 * h2_9) + (-0.6360632278505419 * h2_10) + (-0.3689820518283496 * h2_11) + (-1.0310628337839367 * h2_12) + (-0.7042401983398517 * h2_13) + (1.017567772633964 * h2_14) + (-6.549338277035859 * h2_15) + (4.166940897935642 * h2_16) + (0.3241720738922094 * h2_17) + (-0.5382120527885478 * h2_18) + (-0.06798723653297938 * h2_19) + (-0.30456439287689374 * h2_20) + (0.6241937537383939 * h2_21) + (-0.44265426325849716 * h2_22) + (-0.45017918747422664 * h2_23) + (0.9463125280640337 * h2_24) + (-0.7239616227957903 * h2_25) + (0.7630639069469454 * h2_26) + (-0.3893011707087698 * h2_27) + (7.223257839293124 * h2_28) + (1.1753107683751358 * h2_29));

g = Tanh(3.2828494481453943 + (-12.133727455086085 * h2_0) + (0.01094086359299951 * h2_1) + (1.468271811733145 * h2_2) + (-1.115233717795433 * h2_3) + (-0.448894661869042 * h2_4) + (-0.06369322760163561 * h2_5) + (0.04994257224497932 * h2_6) + (3.5295899276860094 * h2_7) + (-1.266432196864943 * h2_8) + (2.3409151900251226 * h2_9) + (-0.7791131433235309 * h2_10) + (-0.16137273415869716 * h2_11) + (-1.1617815354139005 * h2_12) + (-0.6499186223021145 * h2_13) + (1.1998370793671287 * h2_14) + (-10.433945379922761 * h2_15) + (3.2424465662256123 * h2_16) + (0.61292674060401 * h2_17) + (-0.7129939611927778 * h2_18) + (-0.05739907219758194 * h2_19) + (-0.024903400761690394 * h2_20) + (0.5521464026773347 * h2_21) + (-0.43472044465544446 * h2_22) + (-0.6380793484098536 * h2_23) + (1.1520770117320787 * h2_24) + (-0.6568053786289213 * h2_25) + (0.9931574126237981 * h2_26) + (-0.014444464623456907 * h2_27) + (6.708586013707128 * h2_28) + (1.4745520182276175 * h2_29));

b = Tanh(3.0226374978338444 + (-12.034507789960063 * h2_0) + (0.007589154889853518 * h2_1) + (1.6078460326208148 * h2_2) + (-1.1656125928100272 * h2_3) + (-0.34777359732952734 * h2_4) + (-0.060245200260990214 * h2_5) + (0.037385873861103903 * h2_6) + (3.424934225689203 * h2_7) + (-1.155228344140972 * h2_8) + (1.822635314236292 * h2_9) + (-0.8735132773483851 * h2_10) + (-0.12073076043419614 * h2_11) + (-1.1864216884420222 * h2_12) + (-0.7060471476935237 * h2_13) + (1.2223204686877156 * h2_14) + (-10.80310059603699 * h2_15) + (2.8194139938781397 * h2_16) + (0.7086991163847673 * h2_17) + (-0.8496046517588332 * h2_18) + (-0.047614303121964144 * h2_19) + (-0.018620632495958654 * h2_20) + (0.48532950136437614 * h2_21) + (-0.31578869072903576 * h2_22) + (-0.7825633736708266 * h2_23) + (1.3442339036875213 * h2_24) + (-0.7056060292069584 * h2_25) + (1.1435978607302848 * h2_26) + (-0.015121533121005722 * h2_27) + (6.615861523561984 * h2_28) + (1.611290547652078 * h2_29));

If you’re wondering what all those numbers mean: they’re simply the learned parameters of a small neural network. Nothing hand‑tuned, nothing manually sculpted. Just a machine trying its best to recreate Father Christmas using nothing but maths.

For the curious, the network architecture was:

[2, 30, 30, 3]; // x,y → 30 → 30 → RGB

And the C# implementation looks like this:

 /// <summary>
 /// Runs the Santa neural network function (generated).
 /// </summary>
 /// <param name="input"></param>
 /// <returns></returns>
 public static double[] Santa(double x, double y)
 {
    var L1 = new double[30];
    L1[0] = Math.Tanh(-5.623048610336961 + (-38.226694165676456 * x) + (-16.93664543564806 * y));
    L1[1] = Math.Tanh(-1.0023071874956213 + (-21.20967911223546 * x) + (-31.50027201931792 * y));
    L1[2] = Math.Tanh(7.344204638117395 + (17.24747726320865 * x) + (-9.978832140918165 * y));
    L1[3] = Math.Tanh(3.99970068324839 + (-11.003247087100444 * x) + (17.767708902065795 * y));
    L1[4] = Math.Tanh(11.248626710425466 + (3.941514903438316 * x) + (27.917823013085794 * y));
    L1[5] = Math.Tanh(9.063721887169029 + (1.1059932689670329 * x) + (-36.15247105540886 * y));
    L1[6] = Math.Tanh(-7.3052765683829755 + (47.57407993905088 * x) + (4.352904362011327 * y));
    L1[7] = Math.Tanh(-0.9424281383762471 + (44.95489005438664 * x) + (0.8376101707030428 * y));
    L1[8] = Math.Tanh(-22.958841289824 + (-1.5509911218274257 * x) + (49.49301713167851 * y));
    L1[9] = Math.Tanh(-21.305679817555838 + (-2.688234758424392 * x) + (56.30718080503887 * y));
    L1[10] = Math.Tanh(-6.351796810068903 + (1.991744861382816 * x) + (-20.768009105680942 * y));
    L1[11] = Math.Tanh(-8.513917977777977 + (-20.956991427773232 * x) + (-26.768320990810025 * y));
    L1[12] = Math.Tanh(-3.6814352756989153 + (16.606679388387338 * x) + (11.719303223739121 * y));
    L1[13] = Math.Tanh(-4.715022021266904 + (-2.089870780222223 * x) + (-0.58583748826821 * y));
    L1[14] = Math.Tanh(-6.778506476698793 + (-28.317730349506494 * x) + (-10.333473152578431 * y));
    L1[15] = Math.Tanh(13.167475054637986 + (-54.109392001598025 * x) + (20.698055519441837 * y));
    L1[16] = Math.Tanh(-11.537041330555466 + (28.149565080315572 * x) + (8.027957310023865 * y));
    L1[17] = Math.Tanh(1.8656113916326735 + (12.31122406489157 * x) + (-1.2181279296258452 * y));
    L1[18] = Math.Tanh(-0.14910159232785877 + (-7.2209951900391 * x) + (8.47201567785883 * y));
    L1[19] = Math.Tanh(-3.7222608645736073 + (-0.15136748570610015 * x) + (-0.9258695028009856 * y));
    L1[20] = Math.Tanh(-4.336869998479299 + (19.30930012897977 * x) + (0.8750631194200355 * y));
    L1[21] = Math.Tanh(16.87962718822768 + (-18.85879936854751 * x) + (39.692002094536385 * y));
    L1[22] = Math.Tanh(-3.7701866662831423 + (-0.34178102773816305 * x) + (-0.9092273297489765 * y));
    L1[23] = Math.Tanh(-0.5326841640524008 + (-1.7670433154969112 * x) + (16.04134584276544 * y));
    L1[24] = Math.Tanh(-4.177061488792743 + (-8.499450920605003 * x) + (13.293471101100415 * y));
    L1[25] = Math.Tanh(6.3858809738156 + (0.8616789298972289 * x) + (43.261452098541675 * y));
    L1[26] = Math.Tanh(3.7885468010124934 + (0.023583462745114765 * x) + (0.8575504797811275 * y));
    L1[27] = Math.Tanh(4.0978989442647675 + (-0.1223025510913578 * x) + (0.48899428818863694 * y));
    L1[28] = Math.Tanh(5.28778061482203 + (-8.36928013709649 * x) + (-18.871055407733113 * y));
    L1[29] = Math.Tanh(-0.45647572944735565 + (-6.492554254789128 * x) + (-10.088843428348362 * y));

    var L2 = new double[30];
    L2[0] = Math.Tanh(-1.1878736227186062 + (-3.919719090121058 * L1[0]) + (12.989112920432243 * L1[1]) + (-0.1343295069532497 * L1[2]) + (54.168464356703275 * L1[3]) + (13.956357973671988 * L1[4]) + (6.465155686232179 * L1[5]) + (1.1123223869583094 * L1[6]) + (0.036314517709657476 * L1[7]) + (1.340682742107993 * L1[8]) + (-1.4208699426309843 * L1[9]) + (-12.970671890956318 * L1[10]) + (4.590187497216977 * L1[11]) + (-2.772958769837287 * L1[12]) + (1.5158369788250972 * L1[13]) + (-2.6345828593478093 * L1[14]) + (4.571895077087319 * L1[15]) + (-35.143391732151194 * L1[16]) + (2.3048846832318266 * L1[17]) + (8.658573903987568 * L1[18]) + (1.2486389443225214 * L1[19]) + (-36.98991996054969 * L1[20]) + (1.5296290826986583 * L1[21]) + (1.1729102216340168 * L1[22]) + (10.842494995422273 * L1[23]) + (2.774823676692448 * L1[24]) + (32.635760196098246 * L1[25]) + (-1.093428455633324 * L1[26]) + (-1.0552064131355319 * L1[27]) + (30.01031080472905 * L1[28]) + (3.221635747859044 * L1[29]));
    L2[1] = Math.Tanh(-9.649076940839207 + (24.2716322680747 * L1[0]) + (-37.58190719184138 * L1[1]) + (-10.461746389464036 * L1[2]) + (-26.133766928908607 * L1[3]) + (-7.165752039738086 * L1[4]) + (14.766311906400219 * L1[5]) + (-5.136794279626816 * L1[6]) + (-10.441079841007275 * L1[7]) + (9.306607909420814 * L1[8]) + (8.50427824105856 * L1[9]) + (-6.803869961361024 * L1[10]) + (-10.720036856101116 * L1[11]) + (1.6648151759795686 * L1[12]) + (9.36993549677038 * L1[13]) + (1.3888390786047258 * L1[14]) + (-1.2343724143859849 * L1[15]) + (11.990608100124213 * L1[16]) + (-11.474721066674709 * L1[17]) + (-32.57204310825471 * L1[18]) + (9.329530851188437 * L1[19]) + (4.534665082860719 * L1[20]) + (-3.882804402239535 * L1[21]) + (9.217403768635652 * L1[22]) + (47.983731292770926 * L1[23]) + (-55.40227095866674 * L1[24]) + (-3.189474813614045 * L1[25]) + (-9.292330958871908 * L1[26]) + (-9.096126417024673 * L1[27]) + (35.746969101793475 * L1[28]) + (12.060107132998535 * L1[29]));
    L2[2] = Math.Tanh(-1.9770300413466493 + (15.077947629754384 * L1[0]) + (-1.3587343922131716 * L1[1]) + (13.695780406669954 * L1[2]) + (1.125118859423525 * L1[3]) + (-0.8009008069688339 * L1[4]) + (-58.76235457941437 * L1[5]) + (-8.562171508412048 * L1[6]) + (11.010543484646849 * L1[7]) + (3.993837300063392 * L1[8]) + (3.3396814167629008 * L1[9]) + (1.5659441045416271 * L1[10]) + (-2.988252852791416 * L1[11]) + (2.0011239609958125 * L1[12]) + (1.64616039384741 * L1[13]) + (-3.5367406815190545 * L1[14]) + (-2.801265408028679 * L1[15]) + (3.2975112747703563 * L1[16]) + (6.073705450902556 * L1[17]) + (-0.7167846483345216 * L1[18]) + (1.782841839932012 * L1[19]) + (1.109395708497261 * L1[20]) + (-0.3868273701530587 * L1[21]) + (1.5146765192318747 * L1[22]) + (78.40557752927418 * L1[23]) + (24.506697940801637 * L1[24]) + (2.0723345681487406 * L1[25]) + (-2.111747540283205 * L1[26]) + (-2.008252977873276 * L1[27]) + (1.487699504799264 * L1[28]) + (-3.6490775247541114 * L1[29]));
    L2[3] = Math.Tanh(-3.509884408828905 + (2.2059434387839043 * L1[0]) + (11.04049053705978 * L1[1]) + (-2.5572233738933186 * L1[2]) + (-25.176629582640228 * L1[3]) + (-3.7472453802423367 * L1[4]) + (-8.499473854434882 * L1[5]) + (0.28958964679284227 * L1[6]) + (7.2915948459680475 * L1[7]) + (0.8016494720788462 * L1[8]) + (8.992786875042615 * L1[9]) + (2.9312224377821496 * L1[10]) + (6.381772364577102 * L1[11]) + (-2.7195855366141033 * L1[12]) + (3.2809563496065715 * L1[13]) + (2.4293290710146502 * L1[14]) + (8.818040216975993 * L1[15]) + (0.5460296493336979 * L1[16]) + (3.6569517560296965 * L1[17]) + (-6.018421196232081 * L1[18]) + (3.6045695058944456 * L1[19]) + (0.8900442468401022 * L1[20]) + (-2.9456773927273434 * L1[21]) + (3.0323334446964267 * L1[22]) + (-10.867863502263337 * L1[23]) + (7.039141779952338 * L1[24]) + (58.519743005761896 * L1[25]) + (-3.8270595023949494 * L1[26]) + (-3.497997465314006 * L1[27]) + (-8.398040960292374 * L1[28]) + (11.19911389562037 * L1[29]));
    L2[4] = Math.Tanh(-4.725262178918688 + (11.305574591003722 * L1[0]) + (4.040614126794077 * L1[1]) + (-5.520844920898641 * L1[2]) + (-6.9127837265095575 * L1[3]) + (-17.742000643803696 * L1[4]) + (28.37455871190301 * L1[5]) + (-7.158257795478804 * L1[6]) + (3.8243348343939734 * L1[7]) + (3.5194904326230745 * L1[8]) + (4.137557578183602 * L1[9]) + (-23.552433357876012 * L1[10]) + (5.2964130587654425 * L1[11]) + (-3.398913902094767 * L1[12]) + (4.513227401826402 * L1[13]) + (-7.991318266182827 * L1[14]) + (5.357560655110871 * L1[15]) + (5.021518211489679 * L1[16]) + (4.227522501029882 * L1[17]) + (-6.762022304439986 * L1[18]) + (4.621418102620817 * L1[19]) + (-12.690302364201385 * L1[20]) + (-1.008003074246106 * L1[21]) + (4.314943727085245 * L1[22]) + (4.388855456188274 * L1[23]) + (-3.5208361535660626 * L1[24]) + (3.932609809088128 * L1[25]) + (-4.302906979756651 * L1[26]) + (-4.764477184264791 * L1[27]) + (-21.427565829937183 * L1[28]) + (-7.101253106154626 * L1[29]));
    L2[5] = Math.Tanh(-2.300531160839228 + (-4.72454473245912 * L1[0]) + (16.709358568578683 * L1[1]) + (-5.2173270731905905 * L1[2]) + (10.351732555717259 * L1[3]) + (-10.9647736249191 * L1[4]) + (0.8657139513326048 * L1[5]) + (1.3906869291853798 * L1[6]) + (2.0272514499616805 * L1[7]) + (2.439430343716578 * L1[8]) + (1.7691296310055564 * L1[9]) + (2.476944811262193 * L1[10]) + (7.6127046386867026 * L1[11]) + (2.3815777512482508 * L1[12]) + (2.5361736281036147 * L1[13]) + (15.074710375046088 * L1[14]) + (4.823998278421457 * L1[15]) + (2.0940740057084697 * L1[16]) + (-3.0033286034903353 * L1[17]) + (-7.431590829148336 * L1[18]) + (2.010496397304937 * L1[19]) + (-7.4465319468343 * L1[20]) + (-8.156137079752549 * L1[21]) + (2.117465507088425 * L1[22]) + (3.7333696263472667 * L1[23]) + (-0.5927439066331086 * L1[24]) + (3.290148449146185 * L1[25]) + (-2.142167282036839 * L1[26]) + (-2.385255383968388 * L1[27]) + (-2.014358648569988 * L1[28]) + (3.6327675233948002 * L1[29]));
    L2[6] = Math.Tanh(-1.1642368359607476 + (-0.15119347175076941 * L1[0]) + (-0.46277528902205334 * L1[1]) + (-8.12087478523093 * L1[2]) + (-0.5876928654449669 * L1[3]) + (-0.14668899839184402 * L1[4]) + (-4.237242313265127 * L1[5]) + (2.5729391151791035 * L1[6]) + (2.1426805260458393 * L1[7]) + (1.617527920296423 * L1[8]) + (-5.869387876092355 * L1[9]) + (0.35716696359868005 * L1[10]) + (-0.1920622526673782 * L1[11]) + (1.1232590328501149 * L1[12]) + (0.998724783531752 * L1[13]) + (-5.738932287541462 * L1[14]) + (6.423705441263063 * L1[15]) + (5.081780493555575 * L1[16]) + (-8.89083843809054 * L1[17]) + (-1.276371722974206 * L1[18]) + (0.6915768597073689 * L1[19]) + (6.066188363344529 * L1[20]) + (-0.30136691498556073 * L1[21]) + (0.5229449227105595 * L1[22]) + (1.4661415646991363 * L1[23]) + (19.509079926338856 * L1[24]) + (0.11580049293381633 * L1[25]) + (-0.42235656337951305 * L1[26]) + (-0.522770134226589 * L1[27]) + (-20.101371900443507 * L1[28]) + (-0.46091515600834904 * L1[29]));
    L2[7] = Math.Tanh(1.7950937644226472 + (0.5787715571271927 * L1[0]) + (-3.589087031375653 * L1[1]) + (17.307138236276398 * L1[2]) + (1.451010122685975 * L1[3]) + (1.7982471997943192 * L1[4]) + (11.197677514753844 * L1[5]) + (-1.6732451824224632 * L1[6]) + (-1.2323975647599879 * L1[7]) + (6.562820650965413 * L1[8]) + (3.0773487679758476 * L1[9]) + (-1.6710381328706376 * L1[10]) + (-0.9306192483876732 * L1[11]) + (-0.8890825742475569 * L1[12]) + (-1.6296701892124013 * L1[13]) + (-4.510440397534173 * L1[14]) + (1.740446633901975 * L1[15]) + (-1.6149979125224765 * L1[16]) + (-0.8417299046591421 * L1[17]) + (1.6717228318775523 * L1[18]) + (-1.5158303452586823 * L1[19]) + (-1.6423666733710058 * L1[20]) + (1.535847200073382 * L1[21]) + (-1.734346977359504 * L1[22]) + (-0.12291361770038049 * L1[23]) + (-9.398107773783062 * L1[24]) + (1.4412176118262745 * L1[25]) + (1.8637233323766085 * L1[26]) + (1.7388176020237713 * L1[27]) + (0.7544419133941653 * L1[28]) + (-4.999060098212478 * L1[29]));
    L2[8] = Math.Tanh(-11.826285954583586 + (-24.835114832197846 * L1[0]) + (-5.877344108956168 * L1[1]) + (-0.5156595751699395 * L1[2]) + (3.5972275769755893 * L1[3]) + (-9.055606422445443 * L1[4]) + (-77.83167571561724 * L1[5]) + (2.1517218007755647 * L1[6]) + (11.378468851982852 * L1[7]) + (-19.565548632827532 * L1[8]) + (-7.798730468940707 * L1[9]) + (-1.820985001975888 * L1[10]) + (6.362844587452684 * L1[11]) + (0.9525251761636608 * L1[12]) + (11.735406381613306 * L1[13]) + (-3.548995642405721 * L1[14]) + (5.178702028606582 * L1[15]) + (-13.365462297071858 * L1[16]) + (-13.274823242497877 * L1[17]) + (-2.3767693910622594 * L1[18]) + (11.569398588077448 * L1[19]) + (-26.548542370304762 * L1[20]) + (2.428055074973621 * L1[21]) + (11.41762222031451 * L1[22]) + (9.55526053342812 * L1[23]) + (-28.31381678218086 * L1[24]) + (4.496328854250777 * L1[25]) + (-11.638372581985596 * L1[26]) + (-11.750272759859602 * L1[27]) + (30.43424249058324 * L1[28]) + (16.783708967998127 * L1[29]));
    L2[9] = Math.Tanh(1.3299422909905645 + (-3.816180312220593 * L1[0]) + (-2.6111067954119185 * L1[1]) + (2.4608470583954243 * L1[2]) + (-13.447157252537336 * L1[3]) + (16.08789392417272 * L1[4]) + (-0.980676439558575 * L1[5]) + (1.6186821284738773 * L1[6]) + (-5.010510144557185 * L1[7]) + (-1.2290462012659118 * L1[8]) + (-0.7700994450625491 * L1[9]) + (8.485050086518225 * L1[10]) + (3.8895182809865045 * L1[11]) + (-0.5918326057633785 * L1[12]) + (-1.0372982283024994 * L1[13]) + (-8.976817254069365 * L1[14]) + (1.5229582813377311 * L1[15]) + (-1.3718009079621587 * L1[16]) + (-3.7445040707509794 * L1[17]) + (2.427285212933115 * L1[18]) + (-1.5060928670343376 * L1[19]) + (-2.2840871934332396 * L1[20]) + (6.086583119639987 * L1[21]) + (-1.2747333076340948 * L1[22]) + (-3.6148156500437825 * L1[23]) + (-0.2671139648303764 * L1[24]) + (11.221720308540796 * L1[25]) + (1.276536559618615 * L1[26]) + (1.0436314224246603 * L1[27]) + (0.8345317917322737 * L1[28]) + (-9.992048772781587 * L1[29]));
    L2[10] = Math.Tanh(1.9206377624254687 + (36.04756974567079 * L1[0]) + (-34.48131942017855 * L1[1]) + (2.2570527972896075 * L1[2]) + (-15.337278328011612 * L1[3]) + (2.0687251148548786 * L1[4]) + (-21.549881816468908 * L1[5]) + (-13.784475548439456 * L1[6]) + (-3.047093570713396 * L1[7]) + (-0.5685152863613087 * L1[8]) + (-0.8876595477952044 * L1[9]) + (-1.6427103353751145 * L1[10]) + (-3.100037128484347 * L1[11]) + (0.9193207119034691 * L1[12]) + (-1.5169996850395684 * L1[13]) + (8.664040474805839 * L1[14]) + (-21.502923674575186 * L1[15]) + (-1.3385368573966674 * L1[16]) + (-6.6876582277056995 * L1[17]) + (-4.964829641710342 * L1[18]) + (-1.763178499269864 * L1[19]) + (7.410207327482639 * L1[20]) + (1.6295027421201282 * L1[21]) + (-1.7279966603526085 * L1[22]) + (32.495023098212656 * L1[23]) + (13.286385204994966 * L1[24]) + (2.690863624388401 * L1[25]) + (1.8605092012316342 * L1[26]) + (1.768008252690336 * L1[27]) + (-25.761230748424573 * L1[28]) + (0.7199341356620218 * L1[29]));
    L2[11] = Math.Tanh(-2.2825414283391097 + (0.4609348803118983 * L1[0]) + (5.847197234999291 * L1[1]) + (0.894431700403908 * L1[2]) + (-3.8592140994473354 * L1[3]) + (24.791946463722912 * L1[4]) + (20.357961904263835 * L1[5]) + (2.8922058864714884 * L1[6]) + (-2.809101607196405 * L1[7]) + (3.311813316093038 * L1[8]) + (2.619501578689793 * L1[9]) + (10.116076324614335 * L1[10]) + (0.6517450498860204 * L1[11]) + (0.22385633243663747 * L1[12]) + (2.200495820645635 * L1[13]) + (5.5580303355466265 * L1[14]) + (-9.086998088619348 * L1[15]) + (-7.0718973461080195 * L1[16]) + (10.975544922008057 * L1[17]) + (3.0682645824566963 * L1[18]) + (2.621647678902115 * L1[19]) + (0.05781112936374787 * L1[20]) + (-4.978755158497943 * L1[21]) + (2.148575620359805 * L1[22]) + (11.91846121162973 * L1[23]) + (-2.1642930526121957 * L1[24]) + (19.819485483590263 * L1[25]) + (-2.2173618437749893 * L1[26]) + (-2.4238284920914794 * L1[27]) + (8.565940701409362 * L1[28]) + (8.059619078475398 * L1[29]));
    L2[12] = Math.Tanh(-2.3321928579374704 + (30.36644870165187 * L1[0]) + (-1.5790252498435438 * L1[1]) + (-1.8931281365265347 * L1[2]) + (0.33618864318340247 * L1[3]) + (-5.555251141081421 * L1[4]) + (-2.394734991392634 * L1[5]) + (-7.926062254969843 * L1[6]) + (19.404305503667878 * L1[7]) + (2.250790969377718 * L1[8]) + (2.396944005402247 * L1[9]) + (5.532774258129841 * L1[10]) + (0.6945844667174558 * L1[11]) + (2.717047327309153 * L1[12]) + (1.7740527943696793 * L1[13]) + (-22.969002771224215 * L1[14]) + (-2.5565331157440627 * L1[15]) + (1.5783231127811599 * L1[16]) + (3.1007224539189595 * L1[17]) + (-0.6685684632143037 * L1[18]) + (1.7866882444318353 * L1[19]) + (1.5596628193030273 * L1[20]) + (-10.97367082873289 * L1[21]) + (1.7869899724327 * L1[22]) + (2.0527702576098665 * L1[23]) + (2.985483464789618 * L1[24]) + (1.8984805590024934 * L1[25]) + (-2.261390589579075 * L1[26]) + (-1.7066814255895502 * L1[27]) + (-2.6237753072232284 * L1[28]) + (-0.22855637969616963 * L1[29]));
    L2[13] = Math.Tanh(-2.359994234943333 + (1.8032599088906365 * L1[0]) + (1.7372363115356677 * L1[1]) + (-1.968613342503467 * L1[2]) + (6.4323120307002855 * L1[3]) + (-1.8375182197903521 * L1[4]) + (4.709370295145183 * L1[5]) + (-1.5287877688345752 * L1[6]) + (-1.639784539114313 * L1[7]) + (0.8479020453672845 * L1[8]) + (-2.0421206654530524 * L1[9]) + (2.04318829448639 * L1[10]) + (1.7644174358391818 * L1[11]) + (1.4227364989324836 * L1[12]) + (2.0820989766313858 * L1[13]) + (2.034199789341383 * L1[14]) + (-3.4397868027577205 * L1[15]) + (26.147038159688304 * L1[16]) + (-2.08500679517716 * L1[17]) + (-4.337286415533494 * L1[18]) + (1.6388997058323247 * L1[19]) + (-0.34972075669244007 * L1[20]) + (-1.7421649111484467 * L1[21]) + (2.1550849315877247 * L1[22]) + (5.612387336497993 * L1[23]) + (1.267647086770939 * L1[24]) + (-1.5014161099052268 * L1[25]) + (-2.0567114479062387 * L1[26]) + (-2.162016017281287 * L1[27]) + (-3.8528791771409643 * L1[28]) + (1.9058069990874145 * L1[29]));
    L2[14] = Math.Tanh(5.129822300192284 + (4.61475434891425 * L1[0]) + (4.295400879822931 * L1[1]) + (3.324823008836688 * L1[2]) + (-4.737863883262421 * L1[3]) + (-7.7458248703346735 * L1[4]) + (1.1929513049331075 * L1[5]) + (10.852706474750534 * L1[6]) + (-1.5594260134545446 * L1[7]) + (-1.4906636144060454 * L1[8]) + (-0.8601434458689313 * L1[9]) + (-12.150783568448192 * L1[10]) + (3.2572985034579567 * L1[11]) + (-4.235764343194057 * L1[12]) + (-4.5721744505373225 * L1[13]) + (-12.523447226409226 * L1[14]) + (7.617825668129355 * L1[15]) + (-4.117083083892345 * L1[16]) + (-10.404733664476671 * L1[17]) + (-0.8032310181065367 * L1[18]) + (-4.416123773636885 * L1[19]) + (0.29946816469451376 * L1[20]) + (-31.205992433108563 * L1[21]) + (-4.435931549598062 * L1[22]) + (5.372542604055242 * L1[23]) + (0.7900471897296832 * L1[24]) + (13.924931333660815 * L1[25]) + (4.522496890702362 * L1[26]) + (4.7242624298707065 * L1[27]) + (0.8735345386248609 * L1[28]) + (-2.5387614555910614 * L1[29]));
    L2[15] = Math.Tanh(-1.922470341083642 + (13.280694352453972 * L1[0]) + (-1.1499151014826492 * L1[1]) + (-1.4339754853097486 * L1[2]) + (0.9380419096477486 * L1[3]) + (-25.548089275822456 * L1[4]) + (-1.1606125396275986 * L1[5]) + (-19.020727517209895 * L1[6]) + (6.600167308008769 * L1[7]) + (1.4539566826468202 * L1[8]) + (1.0983060434039316 * L1[9]) + (3.2609143708903106 * L1[10]) + (-9.67010956188869 * L1[11]) + (2.1432050101297904 * L1[12]) + (1.4085720391755676 * L1[13]) + (0.8171524702416322 * L1[14]) + (-3.8803729356239303 * L1[15]) + (1.0518344513558504 * L1[16]) + (-0.537031904808426 * L1[17]) + (-0.8334656156239348 * L1[18]) + (1.5942389831860777 * L1[19]) + (20.20544914182825 * L1[20]) + (-12.724843352973144 * L1[21]) + (1.4300315147637257 * L1[22]) + (1.2393783756811023 * L1[23]) + (1.4159824622618205 * L1[24]) + (1.0130146852014903 * L1[25]) + (-1.6404132556309552 * L1[26]) + (-1.7595527408804275 * L1[27]) + (-1.176210073421046 * L1[28]) + (-0.865972331113072 * L1[29]));
    L2[16] = Math.Tanh(-5.057287490669733 + (4.803149125242517 * L1[0]) + (-4.011131949653514 * L1[1]) + (-3.9959433254105696 * L1[2]) + (27.145443707871642 * L1[3]) + (-1.5069315524436138 * L1[4]) + (-4.5919403986723815 * L1[5]) + (4.855292379912405 * L1[6]) + (-1.286942512934472 * L1[7]) + (4.400381590916684 * L1[8]) + (4.371109887166503 * L1[9]) + (-17.45138149828815 * L1[10]) + (-10.050274777752279 * L1[11]) + (4.888375343026125 * L1[12]) + (5.272939299304274 * L1[13]) + (20.879600831803945 * L1[14]) + (-5.040797679134139 * L1[15]) + (4.926638126062169 * L1[16]) + (6.352036305934262 * L1[17]) + (-3.083882656091477 * L1[18]) + (5.072141400088993 * L1[19]) + (4.262149163146646 * L1[20]) + (-0.49059984790301076 * L1[21]) + (4.719449481624397 * L1[22]) + (-0.6575532836412871 * L1[23]) + (2.749622416976477 * L1[24]) + (-42.06187907227938 * L1[25]) + (-4.616914032237341 * L1[26]) + (-4.331220629998065 * L1[27]) + (-4.442164808821321 * L1[28]) + (-1.9665033192483239 * L1[29]));
    L2[17] = Math.Tanh(-4.272104003364687 + (-23.570583794715922 * L1[0]) + (-0.7910347690185138 * L1[1]) + (-2.6375252214048306 * L1[2]) + (13.385045791348428 * L1[3]) + (-6.599383651277661 * L1[4]) + (-2.655999437387623 * L1[5]) + (-48.03216747981109 * L1[6]) + (42.07717487020225 * L1[7]) + (13.6830373262563 * L1[8]) + (3.405135941502293 * L1[9]) + (34.70884392514292 * L1[10]) + (8.80290139742366 * L1[11]) + (5.054216545932272 * L1[12]) + (4.087226628862683 * L1[13]) + (-9.653980307352473 * L1[14]) + (-13.374686680007741 * L1[15]) + (2.3675226930341777 * L1[16]) + (3.7152284803466924 * L1[17]) + (-12.406874432009039 * L1[18]) + (4.915120251289089 * L1[19]) + (-36.79788228069684 * L1[20]) + (-5.644154577699628 * L1[21]) + (4.890391810252255 * L1[22]) + (-67.44991533427759 * L1[23]) + (2.184838520405927 * L1[24]) + (8.172888277303617 * L1[25]) + (-4.873412057599163 * L1[26]) + (-4.580349406328491 * L1[27]) + (-0.9600801564084311 * L1[28]) + (13.358528173454932 * L1[29]));
    L2[18] = Math.Tanh(-6.608836922205436 + (0.013346509125669155 * L1[0]) + (-15.855369441426982 * L1[1]) + (-21.423276846093948 * L1[2]) + (-21.23538363723894 * L1[3]) + (5.66248100611838 * L1[4]) + (-17.915061464294375 * L1[5]) + (1.3381850995359952 * L1[6]) + (1.6499867823791485 * L1[7]) + (-1.2892411037503124 * L1[8]) + (-15.538676105628872 * L1[9]) + (-9.210773698835695 * L1[10]) + (6.27211313228828 * L1[11]) + (13.54109691710149 * L1[12]) + (6.027141329430341 * L1[13]) + (-20.672261344830446 * L1[14]) + (-25.092072808108217 * L1[15]) + (5.018762985659695 * L1[16]) + (15.438271544207923 * L1[17]) + (-6.180296324700231 * L1[18]) + (5.587072860989995 * L1[19]) + (-27.882512560595675 * L1[20]) + (-2.880871309771747 * L1[21]) + (6.1738609380773735 * L1[22]) + (-16.076385103206484 * L1[23]) + (40.936423104569265 * L1[24]) + (-0.18460441098295163 * L1[25]) + (-6.335924149070434 * L1[26]) + (-6.024856710493767 * L1[27]) + (-2.898015864382075 * L1[28]) + (11.18357390655966 * L1[29]));
    L2[19] = Math.Tanh(-1.3720541125849783 + (1.2177703742664747 * L1[0]) + (-5.266244870709683 * L1[1]) + (0.805735581350629 * L1[2]) + (-0.23335728766799732 * L1[3]) + (-1.4644618365748283 * L1[4]) + (1.7515223042006216 * L1[5]) + (0.41830233173364506 * L1[6]) + (-0.16905232799990413 * L1[7]) + (18.32178098265341 * L1[8]) + (-2.79737213373944 * L1[9]) + (1.593264418057226 * L1[10]) + (1.8294254824985723 * L1[11]) + (3.185955799172913 * L1[12]) + (1.6501472956069134 * L1[13]) + (-8.179616971716582 * L1[14]) + (10.068228694064551 * L1[15]) + (12.268303124130476 * L1[16]) + (-2.6072307594898554 * L1[17]) + (4.14638015619648 * L1[18]) + (1.4077310068460702 * L1[19]) + (0.9720395651743591 * L1[20]) + (-1.3707080587323854 * L1[21]) + (1.9434667637606404 * L1[22]) + (9.297276114869373 * L1[23]) + (4.778215029932571 * L1[24]) + (-0.9675854902333635 * L1[25]) + (-1.8549935294716606 * L1[26]) + (-1.654612948075431 * L1[27]) + (-3.539099753632423 * L1[28]) + (-11.776410151029213 * L1[29]));
    L2[20] = Math.Tanh(1.3735981353083917 + (-0.39520224506025403 * L1[0]) + (0.5669909197276723 * L1[1]) + (11.119437483552888 * L1[2]) + (0.5191996810940992 * L1[3]) + (2.0151331641954835 * L1[4]) + (-12.49386320309027 * L1[5]) + (-1.8939483319378219 * L1[6]) + (1.161438730592895 * L1[7]) + (-0.6509830820538927 * L1[8]) + (1.85949515971525 * L1[9]) + (2.3109861354206127 * L1[10]) + (-3.521673709336247 * L1[11]) + (0.47516695137947673 * L1[12]) + (-1.0753760082235253 * L1[13]) + (7.035188561703561 * L1[14]) + (0.012841110718425346 * L1[15]) + (-0.07886915141706922 * L1[16]) + (-0.8840787890651073 * L1[17]) + (-0.5455419886911206 * L1[18]) + (-0.8771267973097816 * L1[19]) + (-0.4139427967934195 * L1[20]) + (1.2720418940013813 * L1[21]) + (-1.2713705447717383 * L1[22]) + (-0.6847559395142376 * L1[23]) + (-0.9392017571423399 * L1[24]) + (-2.422848602004772 * L1[25]) + (0.8974023354693191 * L1[26]) + (1.1876511397290275 * L1[27]) + (-0.8717070531354667 * L1[28]) + (-1.2110397690129626 * L1[29]));
    L2[21] = Math.Tanh(-5.332714280176832 + (2.1865872892336173 * L1[0]) + (-4.219453046265043 * L1[1]) + (-38.4644307476747 * L1[2]) + (6.3546882644838565 * L1[3]) + (-2.542403122000181 * L1[4]) + (-18.931519801014534 * L1[5]) + (2.8221119072159313 * L1[6]) + (7.126702251679891 * L1[7]) + (1.7986238825780656 * L1[8]) + (-6.822287683497187 * L1[9]) + (-41.46567988052433 * L1[10]) + (-9.487711976644555 * L1[11]) + (4.629266670825738 * L1[12]) + (5.347280516892994 * L1[13]) + (4.165534334848639 * L1[14]) + (0.8857365488419583 * L1[15]) + (7.978250425477604 * L1[16]) + (16.528409846094647 * L1[17]) + (-13.513018048879777 * L1[18]) + (5.412817241034421 * L1[19]) + (-1.0060315644155735 * L1[20]) + (-1.1342461874479208 * L1[21]) + (5.191639698648226 * L1[22]) + (-17.864759696816733 * L1[23]) + (6.011052563184432 * L1[24]) + (-3.6439039356441913 * L1[25]) + (-5.436991030670236 * L1[26]) + (-5.713153181494057 * L1[27]) + (11.047535558941124 * L1[28]) + (17.01815479705314 * L1[29]));
    L2[22] = Math.Tanh(-3.518577097168331 + (-1.0526824754044677 * L1[0]) + (-12.124498706322994 * L1[1]) + (-56.21991447874103 * L1[2]) + (34.14048697322717 * L1[3]) + (-1.9633274973351547 * L1[4]) + (57.15657635028787 * L1[5]) + (2.3381458580551744 * L1[6]) + (-1.9173128063605247 * L1[7]) + (-1.8197243387725837 * L1[8]) + (-5.447354006905184 * L1[9]) + (-13.324896804831981 * L1[10]) + (-36.333025627213075 * L1[11]) + (8.98314611188609 * L1[12]) + (3.7150668096628388 * L1[13]) + (-6.010667518933093 * L1[14]) + (-38.095069775923626 * L1[15]) + (0.2187671184157674 * L1[16]) + (-3.012838542015206 * L1[17]) + (35.641002270763835 * L1[18]) + (3.016505698668828 * L1[19]) + (31.767472981473215 * L1[20]) + (4.371098229722082 * L1[21]) + (3.183273172119063 * L1[22]) + (-44.851764440963294 * L1[23]) + (-11.17873434491382 * L1[24]) + (18.125440544876902 * L1[25]) + (-3.3684678096830103 * L1[26]) + (-3.284044363514518 * L1[27]) + (-8.760853284386451 * L1[28]) + (10.699675514170385 * L1[29]));
    L2[23] = Math.Tanh(-5.30957731949337 + (-14.081981336669063 * L1[0]) + (-11.868450100237384 * L1[1]) + (12.84150386790746 * L1[2]) + (9.727288589021384 * L1[3]) + (35.671399332267114 * L1[4]) + (68.66987406765585 * L1[5]) + (0.6105115319096164 * L1[6]) + (-2.952780762454346 * L1[7]) + (12.09545821737691 * L1[8]) + (62.60312554802732 * L1[9]) + (-12.11793144403033 * L1[10]) + (-7.038568570511799 * L1[11]) + (-4.026615926319394 * L1[12]) + (5.101986272341441 * L1[13]) + (-8.651715946333347 * L1[14]) + (22.417438346983747 * L1[15]) + (1.0006797680762716 * L1[16]) + (38.6955542693944 * L1[17]) + (-4.56006856172208 * L1[18]) + (5.3848217166539145 * L1[19]) + (-14.354646786504071 * L1[20]) + (15.362024831888618 * L1[21]) + (5.244998951214525 * L1[22]) + (8.351960224171256 * L1[23]) + (-22.54710475892384 * L1[24]) + (7.902655474505902 * L1[25]) + (-4.978659771067777 * L1[26]) + (-5.144603410075635 * L1[27]) + (52.28474088176749 * L1[28]) + (0.23098853022728288 * L1[29]));
    L2[24] = Math.Tanh(-0.010293969586387276 + (4.356856314098979 * L1[0]) + (7.521597201626184 * L1[1]) + (-8.175873663792204 * L1[2]) + (-9.034320045349755 * L1[3]) + (-1.5110397462070368 * L1[4]) + (0.9600038252599817 * L1[5]) + (-0.8497656083344063 * L1[6]) + (-3.6924527907649085 * L1[7]) + (-0.8494547721140864 * L1[8]) + (-0.8973748360192288 * L1[9]) + (12.913636541011138 * L1[10]) + (7.214386635933582 * L1[11]) + (-3.682214012795638 * L1[12]) + (-0.18003078959631028 * L1[13]) + (13.538415333419135 * L1[14]) + (-0.7178210531107523 * L1[15]) + (0.640799951769311 * L1[16]) + (17.332587517860347 * L1[17]) + (2.9105917525486635 * L1[18]) + (-0.8364228293655633 * L1[19]) + (13.130840549129204 * L1[20]) + (-3.129258827915762 * L1[21]) + (-0.3973197780302327 * L1[22]) + (-11.25964880559467 * L1[23]) + (-2.2153124849232144 * L1[24]) + (-2.194479507402158 * L1[25]) + (0.40731503471775615 * L1[26]) + (0.4974116949739972 * L1[27]) + (0.9998446947150972 * L1[28]) + (8.297904990790506 * L1[29]));
    L2[25] = Math.Tanh(-6.129365262952356 + (6.6042489116814505 * L1[0]) + (-18.092844645906062 * L1[1]) + (-15.673520480648614 * L1[2]) + (-3.0454154539856075 * L1[3]) + (-5.025226409869896 * L1[4]) + (42.452066555452774 * L1[5]) + (-10.029611549868616 * L1[6]) + (-11.840386331422426 * L1[7]) + (-1.978850220653479 * L1[8]) + (-6.153384940400275 * L1[9]) + (5.008181058209686 * L1[10]) + (3.507562639822757 * L1[11]) + (4.572264732458074 * L1[12]) + (6.002050713118555 * L1[13]) + (-8.84681786033546 * L1[14]) + (-26.20516527538241 * L1[15]) + (-20.26529457651153 * L1[16]) + (8.790487091316704 * L1[17]) + (-0.2073161826869477 * L1[18]) + (5.849030867305652 * L1[19]) + (-3.1265468531005483 * L1[20]) + (-4.846455159318148 * L1[21]) + (5.948336592828161 * L1[22]) + (7.3087784665286195 * L1[23]) + (32.27719909009042 * L1[24]) + (-3.585196849603131 * L1[25]) + (-5.900176625611403 * L1[26]) + (-5.619205468915049 * L1[27]) + (-17.49854224060516 * L1[28]) + (-9.676274357953218 * L1[29]));
    L2[26] = Math.Tanh(-1.5705682348201275 + (5.3833004063730705 * L1[0]) + (-6.565273104971002 * L1[1]) + (-2.8676788771610657 * L1[2]) + (-5.851749618208149 * L1[3]) + (8.06864368767067 * L1[4]) + (-2.676169470389573 * L1[5]) + (-14.616173019546471 * L1[6]) + (1.3453462891385777 * L1[7]) + (2.3459249995740934 * L1[8]) + (2.342219340530527 * L1[9]) + (-49.10879166469804 * L1[10]) + (-22.754243361328882 * L1[11]) + (2.1966241002014635 * L1[12]) + (1.8831110221231577 * L1[13]) + (-23.186565639754104 * L1[14]) + (2.924247512139436 * L1[15]) + (1.5745097915162607 * L1[16]) + (4.167865448194691 * L1[17]) + (-1.6956019683595525 * L1[18]) + (1.5295404702223565 * L1[19]) + (8.046950944160752 * L1[20]) + (15.829816418803242 * L1[21]) + (1.8103684225204328 * L1[22]) + (5.284975990546887 * L1[23]) + (2.771938176000044 * L1[24]) + (14.182434809339927 * L1[25]) + (-1.7464379758418376 * L1[26]) + (-2.136376412296837 * L1[27]) + (-2.647376236646124 * L1[28]) + (-0.578005255202271 * L1[29]));
    L2[27] = Math.Tanh(1.8245909553209447 + (-7.92143181781656 * L1[0]) + (-2.7836656275205827 * L1[1]) + (-0.6436412944471814 * L1[2]) + (-24.247751802962792 * L1[3]) + (-25.79921481205488 * L1[4]) + (6.86852809501804 * L1[5]) + (4.281892576084288 * L1[6]) + (2.8364490434120118 * L1[7]) + (-12.503293778363416 * L1[8]) + (8.143859233795824 * L1[9]) + (-42.985271932209216 * L1[10]) + (0.3957505307598073 * L1[11]) + (-6.079855230224929 * L1[12]) + (-2.2841191544259094 * L1[13]) + (0.6131019680102846 * L1[14]) + (4.433207468099982 * L1[15]) + (-0.1546622891035523 * L1[16]) + (2.5273351739142447 * L1[17]) + (1.7727218341774416 * L1[18]) + (-2.435446711899667 * L1[19]) + (-5.925905819912437 * L1[20]) + (-16.746727302263977 * L1[21]) + (-2.062772949766658 * L1[22]) + (0.14279431117006516 * L1[23]) + (-0.4729544757810683 * L1[24]) + (-0.20832957146427183 * L1[25]) + (2.3739377365026297 * L1[26]) + (2.0586288994863304 * L1[27]) + (2.9711982351913724 * L1[28]) + (-1.192820879485438 * L1[29]));
    L2[28] = Math.Tanh(5.707040906778498 + (-0.42070130938966593 * L1[0]) + (6.942633435494972 * L1[1]) + (-26.768452493427212 * L1[2]) + (6.020249841369523 * L1[3]) + (-16.10330072117956 * L1[4]) + (-17.49958475060085 * L1[5]) + (5.576444290842078 * L1[6]) + (-5.175830025709169 * L1[7]) + (2.8796369415843546 * L1[8]) + (-5.143544716919965 * L1[9]) + (-1.8797034815896732 * L1[10]) + (7.509132995740817 * L1[11]) + (-2.7636374338532343 * L1[12]) + (-3.555165371072835 * L1[13]) + (6.689554266063174 * L1[14]) + (0.022421398450208567 * L1[15]) + (-6.016929249487721 * L1[16]) + (-9.459034824956705 * L1[17]) + (4.901790326950819 * L1[18]) + (-5.2957548843895506 * L1[19]) + (29.13802545505421 * L1[20]) + (-6.79908741189808 * L1[21]) + (-5.243241325985073 * L1[22]) + (-3.802644001316329 * L1[23]) + (-15.40292353180017 * L1[24]) + (-9.226435443478355 * L1[25]) + (5.237253471059983 * L1[26]) + (5.563134331301849 * L1[27]) + (3.435853729388923 * L1[28]) + (1.8296072864268877 * L1[29]));
    L2[29] = Math.Tanh(-5.105851673994637 + (3.956141832737536 * L1[0]) + (4.461676975072009 * L1[1]) + (-4.123804427291396 * L1[2]) + (44.984400802700584 * L1[3]) + (-4.430366945703657 * L1[4]) + (-26.281648906363223 * L1[5]) + (-1.3297737974741446 * L1[6]) + (-3.2699392101720024 * L1[7]) + (-0.1932711610481893 * L1[8]) + (-10.747685153683959 * L1[9]) + (4.945758919926021 * L1[10]) + (4.627540353825582 * L1[11]) + (10.107030959086982 * L1[12]) + (4.500064519755959 * L1[13]) + (4.368470524742479 * L1[14]) + (-27.56581352877989 * L1[15]) + (13.678024173830527 * L1[16]) + (-4.036099816480286 * L1[17]) + (-1.661769202682114 * L1[18]) + (4.7337506450791516 * L1[19]) + (7.877822770370296 * L1[20]) + (-5.104585624142485 * L1[21]) + (4.618520962317276 * L1[22]) + (12.457382224154431 * L1[23]) + (-15.044511795357137 * L1[24]) + (-2.852785340658709 * L1[25]) + (-4.774288428037538 * L1[26]) + (-4.5175869650469265 * L1[27]) + (-5.193092183440349 * L1[28]) + (4.392139136991374 * L1[29]));

    var L3 = new double[3];

    L3[0] = Math.Tanh(4.397304757507351 + (-9.557864311404998 * L2[0]) + (-0.271998488640644 * L2[1]) + (1.0010959980865644 * L2[2]) + (-0.9113688599243038 * L2[3]) + (-0.6851115942453065 * L2[4]) + (-0.5092745629292157 * L2[5]) + (-0.1081640824078369 * L2[6]) + (3.3668039398571774 * L2[7]) + (-1.1116449534993769 * L2[8]) + (3.864216051965595 * L2[9]) + (-0.6360632278505419 * L2[10]) + (-0.3689820518283496 * L2[11]) + (-1.0310628337839367 * L2[12]) + (-0.7042401983398517 * L2[13]) + (1.017567772633964 * L2[14]) + (-6.549338277035859 * L2[15]) + (4.166940897935642 * L2[16]) + (0.3241720738922094 * L2[17]) + (-0.5382120527885478 * L2[18]) + (-0.06798723653297938 * L2[19]) + (-0.30456439287689374 * L2[20]) + (0.6241937537383939 * L2[21]) + (-0.44265426325849716 * L2[22]) + (-0.45017918747422664 * L2[23]) + (0.9463125280640337 * L2[24]) + (-0.7239616227957903 * L2[25]) + (0.7630639069469454 * L2[26]) + (-0.3893011707087698 * L2[27]) + (7.223257839293124 * L2[28]) + (1.1753107683751358 * L2[29]));

    L3[1] = Math.Tanh(3.2828494481453943 + (-12.133727455086085 * L2[0]) + (0.01094086359299951 * L2[1]) + (1.468271811733145 * L2[2]) + (-1.115233717795433 * L2[3]) + (-0.448894661869042 * L2[4]) + (-0.06369322760163561 * L2[5]) + (0.04994257224497932 * L2[6]) + (3.5295899276860094 * L2[7]) + (-1.266432196864943 * L2[8]) + (2.3409151900251226 * L2[9]) + (-0.7791131433235309 * L2[10]) + (-0.16137273415869716 * L2[11]) + (-1.1617815354139005 * L2[12]) + (-0.6499186223021145 * L2[13]) + (1.1998370793671287 * L2[14]) + (-10.433945379922761 * L2[15]) + (3.2424465662256123 * L2[16]) + (0.61292674060401 * L2[17]) + (-0.7129939611927778 * L2[18]) + (-0.05739907219758194 * L2[19]) + (-0.024903400761690394 * L2[20]) + (0.5521464026773347 * L2[21]) + (-0.43472044465544446 * L2[22]) + (-0.6380793484098536 * L2[23]) + (1.1520770117320787 * L2[24]) + (-0.6568053786289213 * L2[25]) + (0.9931574126237981 * L2[26]) + (-0.014444464623456907 * L2[27]) + (6.708586013707128 * L2[28]) + (1.4745520182276175 * L2[29]));

    L3[2] = Math.Tanh(3.0226374978338444 + (-12.034507789960063 * L2[0]) + (0.007589154889853518 * L2[1]) + (1.6078460326208148 * L2[2]) + (-1.1656125928100272 * L2[3]) + (-0.34777359732952734 * L2[4]) + (-0.060245200260990214 * L2[5]) + (0.037385873861103903 * L2[6]) + (3.424934225689203 * L2[7]) + (-1.155228344140972 * L2[8]) + (1.822635314236292 * L2[9]) + (-0.8735132773483851 * L2[10]) + (-0.12073076043419614 * L2[11]) + (-1.1864216884420222 * L2[12]) + (-0.7060471476935237 * L2[13]) + (1.2223204686877156 * L2[14]) + (-10.80310059603699 * L2[15]) + (2.8194139938781397 * L2[16]) + (0.7086991163847673 * L2[17]) + (-0.8496046517588332 * L2[18]) + (-0.047614303121964144 * L2[19]) + (-0.018620632495958654 * L2[20]) + (0.48532950136437614 * L2[21]) + (-0.31578869072903576 * L2[22]) + (-0.7825633736708266 * L2[23]) + (1.3442339036875213 * L2[24]) + (-0.7056060292069584 * L2[25]) + (1.1435978607302848 * L2[26]) + (-0.015121533121005722 * L2[27]) + (6.615861523561984 * L2[28]) + (1.611290547652078 * L2[29]));

    return L3;
}

You can paint Santa with a wrapper like this: (provide _width, _height, _pixelSize and a way to plot it).

private void SaveImageOfSanta()
{
  int _width = 203;
  int _height = 300;
  int _pixelSize = 4;

  using Bitmap b = new(_width, _height);
  Graphics g = Graphics.FromImage(b);

  for (int x = 0; x < _width; x += _pixelSize)
  {
    for (int y = 0; y < _height; y += _pixelSize)
    {
      double[] result = Santa((float)x / _width - 0.5f, (float)y / _height - 0.5f);

      int red = (int) (Math.Min(Math.Max(result[0],0), 1)*255f);
      int green = (int) (Math.Min(Math.Max(result[1],0), 1)*255f);
      int blue = (int) (Math.Min(Math.Max(result[2], 0), 1)*255f);

      g.FillRectangle(new SolidBrush(Color.FromArgb(255,red,green,blue)),x, y, _pixelSize, _pixelSize);
    }
  }

  g.Flush();

  b.Save(@"c:\temp\santa_output.png");
}

🎁 And that’s how Santa was created

A festive neural network, a sprinkle of curiosity, and a whole lot of hyperbolic tangents.

I present (pun intended), a sheep.

Here’s a sheep formula. Notice how small it is?

h10 = Tanh(11.974692 +3.4754715 * x + 18.87281 * y)
h11 = Tanh(14.42742 -30.7606 * x -12.601673 * y)
h12 = Tanh(-13.8183365 +7.234082 * x -26.2146 * y)
h13 = Tanh(-16.035349 -0.422775 * x + 29.647745 * y)
h14 = Tanh(-3.8718042 +19.157236 * x + 21.01577 * y)
h15 = Tanh(44.028168 -37.99455 * x + 21.138437 * y)
h16 = Tanh(-0.923388 +16.533854 * x -1.6720089 * y)
h17 = Tanh(-24.687817 +36.14859 * x + 9.414832 * y)
h18 = Tanh(-18.639078 +7.1956353 * x + 36.794533 * y)
h19 = Tanh(-0.5997342 -41.822807 * x + 8.694118 * y)
h110 = Tanh(23.160685 -30.851086 * x -19.754408 * y)
h111 = Tanh(14.63558 +18.626186 * x -5.1416683 * y)
h112 = Tanh(2.1326132 +12.4726515 * x -8.569361 * y)
h113 = Tanh(-7.004907 -4.286988 * x -9.646921 * y)
h114 = Tanh(-7.00428 +16.834711 * x -0.8109108 * y)

h20 = Tanh(-3.9955814 +2.168977 * h10 -37.84876 * h11 -53.02744 * h12 + 30.510677 * h13 -61.934906 * h14 + 31.990265 * h15 + 28.993256 * h16 + 61.34662 * h17 + 64.01892 * h18 + 8.855809 * h19 + 2.552737 * h110 -25.101805 * h111 -36.303795 * h112 -3.439722 * h113 + 11.350956 * h114)
h21 = Tanh(-2.102444 +3.990947 * h10 + 0.21563633 * h11 + 2.15178 * h12 + 34.907627 * h13 -5.615863 * h14 -0.3812066 * h15 + 0.7953807 * h16 -0.7900636 * h17 -0.8079542 * h18 -3.3025095 * h19 + 0.2202082 * h110 -26.361868 * h111 -0.66228724 * h112 + 7.7888355 * h113 + 0.98390853 * h114)
h22 = Tanh(43.72924 +24.370539 * h10 -2.364507 * h11 + 2.691033 * h12 + 0.10316938 * h13 -4.023252 * h14 -13.210653 * h15 -2.061406 * h16 -6.4115543 * h17 -2.9608147 * h18 + 1.3966566 * h19 + 7.9996767 * h110 + 0.6616229 * h111 -2.4790223 * h112 + 29.122158 * h113 + 3.687954 * h114)
h23 = Tanh(6.0503507 +4.6384387 * h10 + 6.7292037 * h11 + 0.22877517 * h12 -81.17829 * h13 -0.54276955 * h14 -1.688851 * h15 -18.919384 * h16 -48.10894 * h17 -50.514187 * h18 + 9.075714 * h19 + 10.017494 * h110 -15.084178 * h111 -24.65632 * h112 -5.552364 * h113 -10.397211 * h114)
h24 = Tanh(4.094107 +4.289172 * h10 + 6.3429503 * h11 + 0.7142199 * h12 -72.399796 * h13 -2.233932 * h14 -1.7830354 * h15 -23.274122 * h16 -1.2579216 * h17 -3.2112567 * h18 + 5.73802 * h19 + 1.9540935 * h110 -10.204817 * h111 -17.546597 * h112 -3.993056 * h113 -19.627493 * h114)
h25 = Tanh(42.788982 -15.346013 * h10 -5.3881817 * h11 + 3.076687 * h12 + 11.491022 * h13 -8.578932 * h14 -8.531487 * h15 + 21.60841 * h16 + 26.649714 * h17 -2.2177558 * h18 -20.237734 * h19 + 34.371292 * h110 -61.37711 * h111 -1.292645 * h112 + 45.666367 * h113 -8.390348 * h114)
h26 = Tanh(-16.9043 +30.650688 * h10 + 5.718693 * h11 -4.931273 * h12 -35.969444 * h13 + 16.639038 * h14 + 42.547306 * h15 -5.305292 * h16 -4.6765423 * h17 + 10.593192 * h18 + 37.052135 * h19 + 22.802187 * h110 -16.90429 * h111 -15.480547 * h112 + 9.23884 * h113 -31.050468 * h114)
h27 = Tanh(-10.921314 -95.365364 * h10 + 47.003246 * h11 + 84.592316 * h12 + 31.419865 * h13 -13.799633 * h14 + 0.08698853 * h15 + 22.761314 * h16 + 10.919065 * h17 -16.976286 * h18 -5.4393444 * h19 -10.921314 * h110 -113.24007 * h111 -84.86886 * h112 + 18.53108 * h113 -16.610312 * h114)
h28 = Tanh(0.063389674 -39.00049 * h10 + 0.9107353 * h11 + 17.877851 * h12 -6.7916064 * h13 -0.15764175 * h14 + 0.31147805 * h15 + 10.359559 * h16 -0.36827818 * h17 -0.05636165 * h18 -3.0248504 * h19 + 0.2786291 * h110 -43.251743 * h111 -26.254917 * h112 + 12.583348 * h113 -6.87991 * h114)
h29 = Tanh(14.350969 -32.848743 * h10 -1.8645449 * h11 -5.0111322 * h12 + 3.529768 * h13 + 6.1908507 * h14 -3.186955 * h15 + 9.071397 * h16 + 51.01942 * h17 + 27.651062 * h18 -11.112385 * h19 -31.240995 * h110 + 14.350969 * h111 + 37.747086 * h112 -2.0371785 * h113 + 10.368305 * h114)
h210 = Tanh(-19.207561 -35.50862 * h10 -7.8491244 * h11 + 7.854043 * h12 + 4.231986 * h13 -24.33462 * h14 + 15.6539 * h15 + 3.188685 * h16 -2.3221507 * h17 + 4.23199 * h18 -20.448612 * h19 + 8.645962 * h110 -19.380627 * h111 -10.167482 * h112 -4.9947577 * h113 + 46.25767 * h114)
h211 = Tanh(-9.950424 -73.80213 * h10 -16.028 * h11 + 81.35009 * h12 + 9.3572445 * h13 + 41.61704 * h14 -66.28029 * h15 -9.168955 * h16 + 56.084396 * h17 + 8.689743 * h18 + 8.471443 * h19 -28.911457 * h110 -9.752832 * h111 -9.223967 * h112 + 7.6834397 * h113 -6.8520765 * h114)
h212 = Tanh(-25.242832 +19.859747 * h10 -2.1413379 * h11 + 7.8476024 * h12 -0.44783404 * h13 -32.00054 * h14 + 1.5869284 * h15 + 9.265292 * h16 + 11.209888 * h17 + 0.14050622 * h18 + 7.9948573 * h19 -29.068796 * h110 -6.9945383 * h111 -4.4041944 * h112 -2.7546732 * h113 -6.3920603 * h114)
h213 = Tanh(7.436113 +7.0916276 * h10 + 1.025923 * h11 -5.7061324 * h12 -35.325035 * h13 -62.191986 * h14 + 36.548206 * h15 + 7.3306637 * h16 -5.703189 * h17 + 9.29104 * h18 + 2.4995916 * h19 + 25.096645 * h110 -2.0863597 * h111 -16.978682 * h112 -7.4390807 * h113 -32.32538 * h114)
h214 = Tanh(-24.684599 -32.098328 * h10 -1.84824 * h11 -5.009405 * h12 + 9.326845 * h13 + 5.685402 * h14 -3.0161672 * h15 + 46.90995 * h16 + 50.546627 * h17 + 32.560383 * h18 -91.810165 * h19 -31.066107 * h110 -24.298311 * h111 + 0.75663674 * h112 -1.9126313 * h113 + 16.62555 * h114)

Output  = Tanh(-4.3399367 -0.48069686 * h20 + 0.43482098 * h21 -0.32121685 * h22 -0.4743099 * h23 + 0.557465 * h24 -0.1255494 * h25 + 0.1340169 * h26 -0.37671217 * h27 -0.048000205 * h28 -0.5212498 * h29 + 0.1379039 * h210 -0.45781517 * h211 -4.228657 * h212 -0.112140514 * h213 + 0.55422395 * h214)

And as a function…

public static float[] Sheep(float x, float y)
{

    // Layer 1
    float L10 = MathF.Tanh(11.974692f + 3.4754715f * x + 18.87281f * y);
    float L11 = MathF.Tanh(14.42742f - 30.7606f * x - 12.601673f * y);
    float L12 = MathF.Tanh(-13.8183365f + 7.234082f * x - 26.2146f * y);
    float L13 = MathF.Tanh(-16.035349f - 0.422775f * x + 29.647745f * y);
    float L14 = MathF.Tanh(-3.8718042f + 19.157236f * x + 21.01577f * y);
    float L15 = MathF.Tanh(44.028168f - 37.99455f * x + 21.138437f * y);
    float L16 = MathF.Tanh(-0.923388f + 16.533854f * x - 1.6720089f * y);
    float L17 = MathF.Tanh(-24.687817f + 36.14859f * x + 9.414832f * y);
    float L18 = MathF.Tanh(-18.639078f + 7.1956353f * x + 36.794533f * y);
    float L19 = MathF.Tanh(-0.5997342f - 41.822807f * x + 8.694118f * y);
    float L110 = MathF.Tanh(23.160685f - 30.851086f * x - 19.754408f * y);
    float L111 = MathF.Tanh(14.63558f + 18.626186f * x - 5.1416683f * y);
    float L112 = MathF.Tanh(2.1326132f + 12.4726515f * x - 8.569361f * y);
    float L113 = MathF.Tanh(-7.004907f - 4.286988f * x - 9.646921f * y);
    float L114 = MathF.Tanh(-7.00428f + 16.834711f * x - 0.8109108f * y);

    // Layer 2
    float L20 = MathF.Tanh(-3.9955814f + 2.168977f * L10 - 37.84876f * L11 - 53.02744f * L12 + 30.510677f * L13 - 61.934906f * L14 + 31.990265f * L15 + 28.993256f * L16 + 61.34662f * L17 + 64.01892f * L18 + 8.855809f * L19 + 2.552737f * L110 - 25.101805f * L111 - 36.303795f * L112 - 3.439722f * L113 + 11.350956f * L114);
    float L21 = MathF.Tanh(-2.102444f + 3.990947f * L10 + 0.21563633f * L11 + 2.15178f * L12 + 34.907627f * L13 - 5.615863f * L14 - 0.3812066f * L15 + 0.7953807f * L16 - 0.7900636f * L17 - 0.8079542f * L18 - 3.3025095f * L19 + 0.2202082f * L110 - 26.361868f * L111 - 0.66228724f * L112 + 7.7888355f * L113 + 0.98390853f * L114);
    float L22 = MathF.Tanh(43.72924f + 24.370539f * L10 - 2.364507f * L11 + 2.691033f * L12 + 0.10316938f * L13 - 4.023252f * L14 - 13.210653f * L15 - 2.061406f * L16 - 6.4115543f * L17 - 2.9608147f * L18 + 1.3966566f * L19 + 7.9996767f * L110 + 0.6616229f * L111 - 2.4790223f * L112 + 29.122158f * L113 + 3.687954f * L114);
    float L23 = MathF.Tanh(6.0503507f + 4.6384387f * L10 + 6.7292037f * L11 + 0.22877517f * L12 - 81.17829f * L13 - 0.54276955f * L14 - 1.688851f * L15 - 18.919384f * L16 - 48.10894f * L17 - 50.514187f * L18 + 9.075714f * L19 + 10.017494f * L110 - 15.084178f * L111 - 24.65632f * L112 - 5.552364f * L113 - 10.397211f * L114);
    float L24 = MathF.Tanh(4.094107f + 4.289172f * L10 + 6.3429503f * L11 + 0.7142199f * L12 - 72.399796f * L13 - 2.233932f * L14 - 1.7830354f * L15 - 23.274122f * L16 - 1.2579216f * L17 - 3.2112567f * L18 + 5.73802f * L19 + 1.9540935f * L110 - 10.204817f * L111 - 17.546597f * L112 - 3.993056f * L113 - 19.627493f * L114);
    float L25 = MathF.Tanh(42.788982f - 15.346013f * L10 - 5.3881817f * L11 + 3.076687f * L12 + 11.491022f * L13 - 8.578932f * L14 - 8.531487f * L15 + 21.60841f * L16 + 26.649714f * L17 - 2.2177558f * L18 - 20.237734f * L19 + 34.371292f * L110 - 61.37711f * L111 - 1.292645f * L112 + 45.666367f * L113 - 8.390348f * L114);
    float L26 = MathF.Tanh(-16.9043f + 30.650688f * L10 + 5.718693f * L11 - 4.931273f * L12 - 35.969444f * L13 + 16.639038f * L14 + 42.547306f * L15 - 5.305292f * L16 - 4.6765423f * L17 + 10.593192f * L18 + 37.052135f * L19 + 22.802187f * L110 - 16.90429f * L111 - 15.480547f * L112 + 9.23884f * L113 - 31.050468f * L114);
    float L27 = MathF.Tanh(-10.921314f - 95.365364f * L10 + 47.003246f * L11 + 84.592316f * L12 + 31.419865f * L13 - 13.799633f * L14 + 0.08698853f * L15 + 22.761314f * L16 + 10.919065f * L17 - 16.976286f * L18 - 5.4393444f * L19 - 10.921314f * L110 - 113.24007f * L111 - 84.86886f * L112 + 18.53108f * L113 - 16.610312f * L114);
    float L28 = MathF.Tanh(0.063389674f - 39.00049f * L10 + 0.9107353f * L11 + 17.877851f * L12 - 6.7916064f * L13 - 0.15764175f * L14 + 0.31147805f * L15 + 10.359559f * L16 - 0.36827818f * L17 - 0.05636165f * L18 - 3.0248504f * L19 + 0.2786291f * L110 - 43.251743f * L111 - 26.254917f * L112 + 12.583348f * L113 - 6.87991f * L114);
    float L29 = MathF.Tanh(14.350969f - 32.848743f * L10 - 1.8645449f * L11 - 5.0111322f * L12 + 3.529768f * L13 + 6.1908507f * L14 - 3.186955f * L15 + 9.071397f * L16 + 51.01942f * L17 + 27.651062f * L18 - 11.112385f * L19 - 31.240995f * L110 + 14.350969f * L111 + 37.747086f * L112 - 2.0371785f * L113 + 10.368305f * L114);
    float L210 = MathF.Tanh(-19.207561f - 35.50862f * L10 - 7.8491244f * L11 + 7.854043f * L12 + 4.231986f * L13 - 24.33462f * L14 + 15.6539f * L15 + 3.188685f * L16 - 2.3221507f * L17 + 4.23199f * L18 - 20.448612f * L19 + 8.645962f * L110 - 19.380627f * L111 - 10.167482f * L112 - 4.9947577f * L113 + 46.25767f * L114);
    float L211 = MathF.Tanh(-9.950424f - 73.80213f * L10 - 16.028f * L11 + 81.35009f * L12 + 9.3572445f * L13 + 41.61704f * L14 - 66.28029f * L15 - 9.168955f * L16 + 56.084396f * L17 + 8.689743f * L18 + 8.471443f * L19 - 28.911457f * L110 - 9.752832f * L111 - 9.223967f * L112 + 7.6834397f * L113 - 6.8520765f * L114);
    float L212 = MathF.Tanh(-25.242832f + 19.859747f * L10 - 2.1413379f * L11 + 7.8476024f * L12 - 0.44783404f * L13 - 32.00054f * L14 + 1.5869284f * L15 + 9.265292f * L16 + 11.209888f * L17 + 0.14050622f * L18 + 7.9948573f * L19 - 29.068796f * L110 - 6.9945383f * L111 - 4.4041944f * L112 - 2.7546732f * L113 - 6.3920603f * L114);
    float L213 = MathF.Tanh(7.436113f + 7.0916276f * L10 + 1.025923f * L11 - 5.7061324f * L12 - 35.325035f * L13 - 62.191986f * L14 + 36.548206f * L15 + 7.3306637f * L16 - 5.703189f * L17 + 9.29104f * L18 + 2.4995916f * L19 + 25.096645f * L110 - 2.0863597f * L111 - 16.978682f * L112 - 7.4390807f * L113 - 32.32538f * L114);
    float L214 = MathF.Tanh(-24.684599f - 32.098328f * L10 - 1.84824f * L11 - 5.009405f * L12 + 9.326845f * L13 + 5.685402f * L14 - 3.0161672f * L15 + 46.90995f * L16 + 50.546627f * L17 + 32.560383f * L18 - 91.810165f * L19 - 31.066107f * L110 - 24.298311f * L111 + 0.75663674f * L112 - 1.9126313f * L113 + 16.62555f * L114);

    // Layer 3
    return [MathF.Tanh(-4.3399367f - 0.48069686f * L20 + 0.43482098f * L21 - 0.32121685f * L22 - 0.4743099f * L23 + 0.557465f * L24 - 0.1255494f * L25 + 0.1340169f * L26 - 0.37671217f * L27 - 0.048000205f * L28 - 0.5212498f * L29 + 0.1379039f * L210 - 0.45781517f * L211 - 4.228657f * L212 - 0.112140514f * L213 + 0.55422395f * L214)];
}

If you think you can do better – sheep, Santa, or something even more ridiculous – give it a go and drop a comment. I’d love to see what you come up with.

For the curious…

You provide it “image coordinates”, and it returns the “RGB for that pixel”. Think about the complexity of determining such an algorithm, well beyond anyone less than a savant could manage. Somehow, it has managed to ensure that non-adjacent areas end up the correct colour in two dimensions, not just one.

Compression & Upscaling

It was trained on 203x300px, that’s 60,900 pixels. At 3 colours per pixel, that’s 182,700 distinct 0-255 values (raw size). However, PNGs are compressed, and for this image, it is approximately 8KB.

Our format is less than optimal, the formula as text with all the “double”s is around 33.4KB – smaller than uncompressed, however…

  • If we wrote a binary file instead with weightings and biases stored optimally, a double is 8 bytes vs. 18 as text.
  • And we don’t need to store “TanH” or spaces etc., it would be around 9KB

Only slightly less optimal than a PNG, not too terrible. But probably the world’s slowest compression algorithm, more on that shortly.

Does it upscale?

Kind of, albeit not perfectly (simply redraw with _pixelSize = 1px spacing, instead of _pixelSize = 4px). Look, not pixellated like a zoomed PNG.

Santa now looks like something fit for “South Park” cartoon. His left glove, the ball on the hat, etc., are not quite right. But you can still tell who it is.

If you recreate the image as 2030px x 3000px (increasing axis by 10x), the picture doesn’t degrade further… That was quite surprising. 532KB image, condensed into a simple formula – so we have achieved a compression.

Isn’t that crazy?

If you look closely, inherently, R, G & B all share the same prior layer albeit with slightly different weightings, they achieve the correct representation!

r = Tanh(4.397304757507351 + (-9.557864311404998 * h2_0) + (-0.271998488640644 * h2_1) + (1.0010959980865644 * h2_2) + (-0.9113688599243038 * h2_3) + (-0.6851115942453065 * h2_4) + (-0.5092745629292157 * h2_5) + (-0.1081640824078369 * h2_6) + (3.3668039398571774 * h2_7) + (-1.1116449534993769 * h2_8) + (3.864216051965595 * h2_9) + (-0.6360632278505419 * h2_10) + (-0.3689820518283496 * h2_11) + (-1.0310628337839367 * h2_12) + (-0.7042401983398517 * h2_13) + (1.017567772633964 * h2_14) + (-6.549338277035859 * h2_15) + (4.166940897935642 * h2_16) + (0.3241720738922094 * h2_17) + (-0.5382120527885478 * h2_18) + (-0.06798723653297938 * h2_19) + (-0.30456439287689374 * h2_20) + (0.6241937537383939 * h2_21) + (-0.44265426325849716 * h2_22) + (-0.45017918747422664 * h2_23) + (0.9463125280640337 * h2_24) + (-0.7239616227957903 * h2_25) + (0.7630639069469454 * h2_26) + (-0.3893011707087698 * h2_27) + (7.223257839293124 * h2_28) + (1.1753107683751358 * h2_29));

g = Tanh(3.2828494481453943 + (-12.133727455086085 * h2_0) + (0.01094086359299951 * h2_1) + (1.468271811733145 * h2_2) + (-1.115233717795433 * h2_3) + (-0.448894661869042 * h2_4) + (-0.06369322760163561 * h2_5) + (0.04994257224497932 * h2_6) + (3.5295899276860094 * h2_7) + (-1.266432196864943 * h2_8) + (2.3409151900251226 * h2_9) + (-0.7791131433235309 * h2_10) + (-0.16137273415869716 * h2_11) + (-1.1617815354139005 * h2_12) + (-0.6499186223021145 * h2_13) + (1.1998370793671287 * h2_14) + (-10.433945379922761 * h2_15) + (3.2424465662256123 * h2_16) + (0.61292674060401 * h2_17) + (-0.7129939611927778 * h2_18) + (-0.05739907219758194 * h2_19) + (-0.024903400761690394 * h2_20) + (0.5521464026773347 * h2_21) + (-0.43472044465544446 * h2_22) + (-0.6380793484098536 * h2_23) + (1.1520770117320787 * h2_24) + (-0.6568053786289213 * h2_25) + (0.9931574126237981 * h2_26) + (-0.014444464623456907 * h2_27) + (6.708586013707128 * h2_28) + (1.4745520182276175 * h2_29));

b = Tanh(3.0226374978338444 + (-12.034507789960063 * h2_0) + (0.007589154889853518 * h2_1) + (1.6078460326208148 * h2_2) + (-1.1656125928100272 * h2_3) + (-0.34777359732952734 * h2_4) + (-0.060245200260990214 * h2_5) + (0.037385873861103903 * h2_6) + (3.424934225689203 * h2_7) + (-1.155228344140972 * h2_8) + (1.822635314236292 * h2_9) + (-0.8735132773483851 * h2_10) + (-0.12073076043419614 * h2_11) + (-1.1864216884420222 * h2_12) + (-0.7060471476935237 * h2_13) + (1.2223204686877156 * h2_14) + (-10.80310059603699 * h2_15) + (2.8194139938781397 * h2_16) + (0.7086991163847673 * h2_17) + (-0.8496046517588332 * h2_18) + (-0.047614303121964144 * h2_19) + (-0.018620632495958654 * h2_20) + (0.48532950136437614 * h2_21) + (-0.31578869072903576 * h2_22) + (-0.7825633736708266 * h2_23) + (1.3442339036875213 * h2_24) + (-0.7056060292069584 * h2_25) + (1.1435978607302848 * h2_26) + (-0.015121533121005722 * h2_27) + (6.615861523561984 * h2_28) + (1.611290547652078 * h2_29));

All 3 colour channels are derived from the same hidden layer. In essence, the layers preceding indicate a pixel of value, and the final layer adjusts the core pixels into the colour.

What about a smaller formula?

Actually yes.

But not necessarily in the way I hoped. I thought maybe 20,20 hidden would be possible. Nope – it doesn’t seem to converge. Even after lots of epochs, the quality was still quite poor. I tried 30,20, still no joy… I tried deeper but lower. Still no.

We can use “float” instead of “double”. The output is in the middle image. Santa’s beard and nose are not ideal, the ball isn’t great – and that’s after 3.8 million epochs – it didn’t improve after 6 million.

The code is smaller (using the singles):

public static float[] Santa(float x, float y)
{

    // Layer 1
    var L1 = new float[30];
    L1[0] = MathF.Tanh(6.0911236f + (20.309132f * x) + (8.95491f * y));
    L1[1] = MathF.Tanh(8.30367f + (-7.1678357f * x) + (-26.998474f * y));
    L1[2] = MathF.Tanh(5.003134f + (10.214591f * x) + (4.074449f * y));
    L1[3] = MathF.Tanh(-10.063573f + (14.169306f * x) + (-8.00575f * y));
    L1[4] = MathF.Tanh(7.976708f + (9.508268f * x) + (-14.283936f * y));
    L1[5] = MathF.Tanh(-1.0610986f + (23.641125f * x) + (-16.615435f * y));
    L1[6] = MathF.Tanh(-10.316435f + (5.922069f * x) + (-12.14409f * y));
    L1[7] = MathF.Tanh(8.176614f + (-10.427249f * x) + (-7.254795f * y));
    L1[8] = MathF.Tanh(16.376925f + (-2.2730434f * x) + (-32.39085f * y));
    L1[9] = MathF.Tanh(-3.4088697f + (28.403383f * x) + (2.981745f * y));
    L1[10] = MathF.Tanh(-3.6594405f + (21.882586f * x) + (-5.1575623f * y));
    L1[11] = MathF.Tanh(0.60860926f + (-10.846691f * x) + (-5.189642f * y));
    L1[12] = MathF.Tanh(-8.428768f + (-24.644365f * x) + (-1.5658166f * y));
    L1[13] = MathF.Tanh(7.4110045f + (1.2612998f * x) + (28.663258f * y));
    L1[14] = MathF.Tanh(29.18391f + (0.76499236f * x) + (-31.847527f * y));
    L1[15] = MathF.Tanh(13.819229f + (17.630905f * x) + (20.380888f * y));
    L1[16] = MathF.Tanh(7.5198636f + (6.3157434f * x) + (-7.869667f * y));
    L1[17] = MathF.Tanh(-0.37629664f + (0.4535034f * x) + (-9.940725f * y));
    L1[18] = MathF.Tanh(1.7639357f + (0.84006286f * x) + (0.70169085f * y));
    L1[19] = MathF.Tanh(5.64654f + (2.6778362f * x) + (-14.399893f * y));
    L1[20] = MathF.Tanh(-21.83647f + (-1.0773152f * x) + (30.738707f * y));
    L1[21] = MathF.Tanh(-8.093437f + (3.9051654f * x) + (14.5497265f * y));
    L1[22] = MathF.Tanh(6.3180647f + (-10.117807f * x) + (11.715452f * y));
    L1[23] = MathF.Tanh(5.715019f + (-21.029333f * x) + (-9.272984f * y));
    L1[24] = MathF.Tanh(4.729574f + (-8.131314f * x) + (1.5212991f * y));
    L1[25] = MathF.Tanh(-3.0082104f + (-3.790488f * x) + (-5.7946634f * y));
    L1[26] = MathF.Tanh(-20.322554f + (16.225674f * x) + (20.805447f * y));
    L1[27] = MathF.Tanh(1.0348377f + (0.21471202f * x) + (-5.7943172f * y));
    L1[28] = MathF.Tanh(6.0455704f + (1.0474421f * x) + (-30.769722f * y));
    L1[29] = MathF.Tanh(-8.848757f + (-13.5618925f * x) + (-6.9606495f * y));

    // Layer 2
    var L2 = new float[30];
    L2[0] = MathF.Tanh(-6.40007f + (-10.750847f * L1[0]) + (16.612787f * L1[1]) + (-0.4269756f * L1[2]) + (6.3839197f * L1[3]) + (1.4161305f * L1[4]) + (-15.053315f * L1[5]) + (6.400163f * L1[6]) + (-6.9712844f * L1[7]) + (-13.697266f * L1[8]) + (-17.598774f * L1[9]) + (-2.0001993f * L1[10]) + (3.1902437f * L1[11]) + (0.033664703f * L1[12]) + (12.18165f * L1[13]) + (0.15093438f * L1[14]) + (-2.740128f * L1[15]) + (-5.362122f * L1[16]) + (-1.8006746f * L1[17]) + (-6.509266f * L1[18]) + (-17.034267f * L1[19]) + (-6.7794585f * L1[20]) + (20.795582f * L1[21]) + (-6.406141f * L1[22]) + (29.427032f * L1[23]) + (7.790048f * L1[24]) + (-6.858061f * L1[25]) + (-2.1223733f * L1[26]) + (3.0630996f * L1[27]) + (-18.638361f * L1[28]) + (-16.49801f * L1[29]));
    L2[1] = MathF.Tanh(5.083693f + (-22.625587f * L1[0]) + (-1.3342962f * L1[1]) + (-6.74929f * L1[2]) + (-6.684716f * L1[3]) + (-26.24053f * L1[4]) + (-22.13475f * L1[5]) + (40.38734f * L1[6]) + (5.1517634f * L1[7]) + (2.8670363f * L1[8]) + (-5.75605f * L1[9]) + (-11.436106f * L1[10]) + (7.3152223f * L1[11]) + (8.048747f * L1[12]) + (-16.923912f * L1[13]) + (-21.59614f * L1[14]) + (-23.810411f * L1[15]) + (-33.447453f * L1[16]) + (-2.9628065f * L1[17]) + (2.59181f * L1[18]) + (4.643194f * L1[19]) + (2.2949402f * L1[20]) + (-0.9450175f * L1[21]) + (-25.419468f * L1[22]) + (5.1516747f * L1[23]) + (5.120417f * L1[24]) + (15.489679f * L1[25]) + (-4.5806394f * L1[26]) + (-2.4430883f * L1[27]) + (-0.8953343f * L1[28]) + (22.414165f * L1[29]));
    L2[2] = MathF.Tanh(0.21455278f + (0.53097486f * L1[0]) + (-49.181877f * L1[1]) + (0.52927107f * L1[2]) + (11.216673f * L1[3]) + (2.0018384f * L1[4]) + (3.1111486f * L1[5]) + (29.742489f * L1[6]) + (-9.083795f * L1[7]) + (4.1382523f * L1[8]) + (12.098117f * L1[9]) + (4.830826f * L1[10]) + (-26.49045f * L1[11]) + (-0.53099346f * L1[12]) + (-49.13845f * L1[13]) + (0.56956255f * L1[14]) + (-1.2493163f * L1[15]) + (8.144036f * L1[16]) + (-10.155125f * L1[17]) + (-0.0033428145f * L1[18]) + (-19.145765f * L1[19]) + (13.222275f * L1[20]) + (-15.321197f * L1[21]) + (17.095264f * L1[22]) + (-74.46759f * L1[23]) + (-67.67809f * L1[24]) + (-22.642702f * L1[25]) + (0.3076561f * L1[26]) + (7.1674194f * L1[27]) + (48.163754f * L1[28]) + (-0.33092362f * L1[29]));
    L2[3] = MathF.Tanh(-4.504681f + (-18.6157f * L1[0]) + (6.1631694f * L1[1]) + (0.99838233f * L1[2]) + (5.4539714f * L1[3]) + (-11.139815f * L1[4]) + (0.67259425f * L1[5]) + (5.1986136f * L1[6]) + (-13.716335f * L1[7]) + (-19.457788f * L1[8]) + (-0.13941786f * L1[9]) + (-0.1704839f * L1[10]) + (-0.23450986f * L1[11]) + (0.3396103f * L1[12]) + (-4.7779317f * L1[13]) + (0.76183707f * L1[14]) + (5.7146583f * L1[15]) + (-0.934725f * L1[16]) + (4.072983f * L1[17]) + (-2.5187447f * L1[18]) + (-8.5618105f * L1[19]) + (0.37893087f * L1[20]) + (1.551665f * L1[21]) + (-5.3369966f * L1[22]) + (-0.2565626f * L1[23]) + (23.874798f * L1[24]) + (4.9583454f * L1[25]) + (-1.844926f * L1[26]) + (-4.817191f * L1[27]) + (-3.6045647f * L1[28]) + (5.5595326f * L1[29]));
    L2[4] = MathF.Tanh(7.375579f + (-13.797617f * L1[0]) + (18.933277f * L1[1]) + (-8.656866f * L1[2]) + (44.484043f * L1[3]) + (-3.1835318f * L1[4]) + (-26.62151f * L1[5]) + (13.346281f * L1[6]) + (3.1997178f * L1[7]) + (-2.1561022f * L1[8]) + (-2.167846f * L1[9]) + (28.470436f * L1[10]) + (-2.7725215f * L1[11]) + (-0.75013715f * L1[12]) + (0.6517191f * L1[13]) + (-11.512592f * L1[14]) + (7.161198f * L1[15]) + (-25.960846f * L1[16]) + (8.42093f * L1[17]) + (0.4522863f * L1[18]) + (22.376905f * L1[19]) + (6.070648f * L1[20]) + (-15.251667f * L1[21]) + (-6.446804f * L1[22]) + (24.382195f * L1[23]) + (56.602955f * L1[24]) + (0.3000182f * L1[25]) + (-7.9999547f * L1[26]) + (0.8263711f * L1[27]) + (15.545479f * L1[28]) + (-6.050521f * L1[29]));
    L2[5] = MathF.Tanh(-14.04544f + (-7.2323604f * L1[0]) + (-15.84959f * L1[1]) + (-10.547652f * L1[2]) + (-49.888397f * L1[3]) + (-0.462981f * L1[4]) + (16.21327f * L1[5]) + (19.783747f * L1[6]) + (-17.695395f * L1[7]) + (-7.5053926f * L1[8]) + (2.709551f * L1[9]) + (4.2482524f * L1[10]) + (9.968176f * L1[11]) + (9.291852f * L1[12]) + (6.116388f * L1[13]) + (-6.712407f * L1[14]) + (0.023065494f * L1[15]) + (-17.262012f * L1[16]) + (5.561982f * L1[17]) + (-6.0270414f * L1[18]) + (34.95451f * L1[19]) + (5.214459f * L1[20]) + (5.8527126f * L1[21]) + (-30.489729f * L1[22]) + (-9.902795f * L1[23]) + (42.113827f * L1[24]) + (-17.448868f * L1[25]) + (18.682257f * L1[26]) + (9.468462f * L1[27]) + (-4.259767f * L1[28]) + (27.884445f * L1[29]));
    L2[6] = MathF.Tanh(-1.5627282f + (8.796055f * L1[0]) + (2.5788698f * L1[1]) + (11.716298f * L1[2]) + (-8.790987f * L1[3]) + (12.589086f * L1[4]) + (16.965717f * L1[5]) + (-1.7872821f * L1[6]) + (-0.24582464f * L1[7]) + (-11.328856f * L1[8]) + (-16.1177f * L1[9]) + (1.0314175f * L1[10]) + (-7.1645722f * L1[11]) + (-8.775007f * L1[12]) + (-13.323963f * L1[13]) + (-4.211527f * L1[14]) + (4.559334f * L1[15]) + (4.6440144f * L1[16]) + (-1.6938614f * L1[17]) + (-8.023552f * L1[18]) + (12.788322f * L1[19]) + (7.1265793f * L1[20]) + (0.46624544f * L1[21]) + (-8.000029f * L1[22]) + (1.7517488f * L1[23]) + (-5.995377f * L1[24]) + (11.592967f * L1[25]) + (10.675883f * L1[26]) + (2.1300347f * L1[27]) + (-0.5231833f * L1[28]) + (2.8163083f * L1[29]));
    L2[7] = MathF.Tanh(-0.21395974f + (0.18895295f * L1[0]) + (-4.7103558f * L1[1]) + (16.425474f * L1[2]) + (-14.614442f * L1[3]) + (6.740644f * L1[4]) + (14.126908f * L1[5]) + (-18.39336f * L1[6]) + (3.353316f * L1[7]) + (-0.5906103f * L1[8]) + (-13.023324f * L1[9]) + (3.406738f * L1[10]) + (-15.94523f * L1[11]) + (-32.495693f * L1[12]) + (23.715921f * L1[13]) + (-0.19319873f * L1[14]) + (21.42476f * L1[15]) + (-1.100901f * L1[16]) + (2.4511313f * L1[17]) + (6.7425194f * L1[18]) + (-5.1737075f * L1[19]) + (0.6091799f * L1[20]) + (0.5745006f * L1[21]) + (56.235744f * L1[22]) + (14.165353f * L1[23]) + (6.3124113f * L1[24]) + (19.689867f * L1[25]) + (0.59772307f * L1[26]) + (-13.237834f * L1[27]) + (-27.791618f * L1[28]) + (-21.460949f * L1[29]));
    L2[8] = MathF.Tanh(-14.38929f + (-22.572033f * L1[0]) + (-9.491038f * L1[1]) + (3.177502f * L1[2]) + (32.00004f * L1[3]) + (-18.064026f * L1[4]) + (-11.211279f * L1[5]) + (-16.288618f * L1[6]) + (-5.5996294f * L1[7]) + (3.7705934f * L1[8]) + (-21.283684f * L1[9]) + (-0.89926875f * L1[10]) + (-0.7592427f * L1[11]) + (-9.342505f * L1[12]) + (15.999708f * L1[13]) + (-4.1530547f * L1[14]) + (-34.121178f * L1[15]) + (29.663366f * L1[16]) + (-8.407669f * L1[17]) + (-10.452494f * L1[18]) + (-3.4182966f * L1[19]) + (31.477955f * L1[20]) + (5.707396f * L1[21]) + (13.176033f * L1[22]) + (-4.9198675f * L1[23]) + (64.00002f * L1[24]) + (21.827003f * L1[25]) + (-33.135204f * L1[26]) + (1.9205617f * L1[27]) + (-6.857002f * L1[28]) + (12.257487f * L1[29]));
    L2[9] = MathF.Tanh(-0.5996797f + (0.23621227f * L1[0]) + (-4.6673346f * L1[1]) + (16.375187f * L1[2]) + (-21.953955f * L1[3]) + (1.4935852f * L1[4]) + (-8.759631f * L1[5]) + (-32f * L1[6]) + (-6.241734f * L1[7]) + (-4.2151513f * L1[8]) + (-9.032766f * L1[9]) + (-8.751012f * L1[10]) + (3.233343f * L1[11]) + (-9.095606f * L1[12]) + (5.813672f * L1[13]) + (-0.5993974f * L1[14]) + (23.037468f * L1[15]) + (-4.423963f * L1[16]) + (-5.3831754f * L1[17]) + (-1.9205197f * L1[18]) + (-0.60364425f * L1[19]) + (4.4017844f * L1[20]) + (3.8755312f * L1[21]) + (32.47529f * L1[22]) + (0.66715705f * L1[23]) + (10.575102f * L1[24]) + (-53.31102f * L1[25]) + (4.6255326f * L1[26]) + (-14.585819f * L1[27]) + (-4.405893f * L1[28]) + (-8.754876f * L1[29]));
    L2[10] = MathF.Tanh(-1.5815572f + (19.084866f * L1[0]) + (9.493423f * L1[1]) + (1.0782368f * L1[2]) + (1.0504538f * L1[3]) + (13.233377f * L1[4]) + (19.090769f * L1[5]) + (1.5815572f * L1[6]) + (53.593987f * L1[7]) + (10.922847f * L1[8]) + (-5.5525675f * L1[9]) + (23.664076f * L1[10]) + (-10.308793f * L1[11]) + (-5.6189866f * L1[12]) + (-2.0358822f * L1[13]) + (-1.4103554f * L1[14]) + (3.8681464f * L1[15]) + (17.919947f * L1[16]) + (2.0258005f * L1[17]) + (-0.9770785f * L1[18]) + (43.461296f * L1[19]) + (-15.138268f * L1[20]) + (-29.224545f * L1[21]) + (-2.0329435f * L1[22]) + (-2.7506945f * L1[23]) + (-8.341727f * L1[24]) + (-2.088504f * L1[25]) + (-7.6556573f * L1[26]) + (2.7555985f * L1[27]) + (-0.2500789f * L1[28]) + (-25.262152f * L1[29]));
    L2[11] = MathF.Tanh(6.000256f + (12.813751f * L1[0]) + (2.444956f * L1[1]) + (18.85362f * L1[2]) + (0.43228912f * L1[3]) + (0.18488055f * L1[4]) + (5.4777403f * L1[5]) + (-1.0582649f * L1[6]) + (6.000209f * L1[7]) + (11.948671f * L1[8]) + (12.960653f * L1[9]) + (-15.325763f * L1[10]) + (2.8385422f * L1[11]) + (-4.3681273f * L1[12]) + (37.782616f * L1[13]) + (16.07869f * L1[14]) + (31.67204f * L1[15]) + (-9.988959f * L1[16]) + (4.142111f * L1[17]) + (10.322428f * L1[18]) + (3.8303573f * L1[19]) + (-16.000067f * L1[20]) + (27.305765f * L1[21]) + (-30.031248f * L1[22]) + (-95.30655f * L1[23]) + (-3.5914257f * L1[24]) + (-2.1756883f * L1[25]) + (-5.9951158f * L1[26]) + (-2.0520003f * L1[27]) + (-15.875381f * L1[28]) + (-6.468622f * L1[29]));
    L2[12] = MathF.Tanh(-0.036970325f + (1.2242554f * L1[0]) + (8.863268f * L1[1]) + (-1.69117f * L1[2]) + (-2.7133f * L1[3]) + (14.593468f * L1[4]) + (-0.43991357f * L1[5]) + (0.30241522f * L1[6]) + (4.8384824f * L1[7]) + (15.114947f * L1[8]) + (-1.9102454f * L1[9]) + (6.2074327f * L1[10]) + (8.489642f * L1[11]) + (-3.994426f * L1[12]) + (-0.32015f * L1[13]) + (0.085364625f * L1[14]) + (-0.07758786f * L1[15]) + (3.676811f * L1[16]) + (0.44375882f * L1[17]) + (0.30547473f * L1[18]) + (1.4362656f * L1[19]) + (-0.24990153f * L1[20]) + (4.4314375f * L1[21]) + (2.9188087f * L1[22]) + (4.7399607f * L1[23]) + (-10.049677f * L1[24]) + (-0.71599036f * L1[25]) + (-12.320964f * L1[26]) + (10.211265f * L1[27]) + (23.950924f * L1[28]) + (-4.1548347f * L1[29]));
    L2[13] = MathF.Tanh(0.4163224f + (30.517048f * L1[0]) + (-13.602797f * L1[1]) + (-11.811097f * L1[2]) + (5.9441113f * L1[3]) + (1.1794261f * L1[4]) + (11.250725f * L1[5]) + (-0.028128223f * L1[6]) + (-0.6814949f * L1[7]) + (6.943173f * L1[8]) + (-1.4714305f * L1[9]) + (-19.733408f * L1[10]) + (1.1270763f * L1[11]) + (-4.4405212f * L1[12]) + (0.16295545f * L1[13]) + (0.3978679f * L1[14]) + (3.5147247f * L1[15]) + (-14.889953f * L1[16]) + (-7.532886f * L1[17]) + (-3.86012f * L1[18]) + (-21.415924f * L1[19]) + (2.8237205f * L1[20]) + (-3.9429305f * L1[21]) + (4.380275f * L1[22]) + (-6.3094425f * L1[23]) + (0.24954818f * L1[24]) + (-6.3602705f * L1[25]) + (7.8681016f * L1[26]) + (-2.848903f * L1[27]) + (1.2973866f * L1[28]) + (9.740314f * L1[29]));
    L2[14] = MathF.Tanh(6.840895f + (-36.23154f * L1[0]) + (2.4630606f * L1[1]) + (-9.653404f * L1[2]) + (-0.8680916f * L1[3]) + (-3.9660118f * L1[4]) + (-17.008266f * L1[5]) + (-12.839138f * L1[6]) + (-2.3786545f * L1[7]) + (-3.0911975f * L1[8]) + (18.84636f * L1[9]) + (-15.472482f * L1[10]) + (25.654882f * L1[11]) + (13.371934f * L1[12]) + (-0.84346104f * L1[13]) + (5.884344f * L1[14]) + (18.392744f * L1[15]) + (2.4514022f * L1[16]) + (-64.00009f * L1[17]) + (-0.3726577f * L1[18]) + (-0.5819825f * L1[19]) + (4.975969f * L1[20]) + (-2.8287022f * L1[21]) + (-1.7056162f * L1[22]) + (-15.968595f * L1[23]) + (3.714455f * L1[24]) + (10.851766f * L1[25]) + (4.7177124f * L1[26]) + (-3.0641537f * L1[27]) + (-1.1869779f * L1[28]) + (2.0063722f * L1[29]));
    L2[15] = MathF.Tanh(-0.7546353f + (2.5525749f * L1[0]) + (1.8333294f * L1[1]) + (1.7147772f * L1[2]) + (-4.9608245f * L1[3]) + (0.43395397f * L1[4]) + (17.413275f * L1[5]) + (7.8684683f * L1[6]) + (-26.608479f * L1[7]) + (27.061792f * L1[8]) + (11.871897f * L1[9]) + (46.96097f * L1[10]) + (1.3637351f * L1[11]) + (-6.724452f * L1[12]) + (-0.18004009f * L1[13]) + (12.313021f * L1[14]) + (-3.858253f * L1[15]) + (7.999966f * L1[16]) + (-3.771321f * L1[17]) + (-2.204157f * L1[18]) + (5.9264016f * L1[19]) + (-8.000006f * L1[20]) + (15.926548f * L1[21]) + (63.999794f * L1[22]) + (-16.88547f * L1[23]) + (-5.4206753f * L1[24]) + (-12.696603f * L1[25]) + (9.033974f * L1[26]) + (0.7361434f * L1[27]) + (-3.9999382f * L1[28]) + (1.3218229f * L1[29]));
    L2[16] = MathF.Tanh(12.345454f + (-3.5284023f * L1[0]) + (-1.7557294f * L1[1]) + (13.922265f * L1[2]) + (9.426163f * L1[3]) + (3.006587f * L1[4]) + (-20.495888f * L1[5]) + (-12.497826f * L1[6]) + (8.995719f * L1[7]) + (5.950519f * L1[8]) + (5.0384836f * L1[9]) + (2.195552f * L1[10]) + (-1.6019205f * L1[11]) + (-3.1752563f * L1[12]) + (11.874825f * L1[13]) + (12.345399f * L1[14]) + (8.093294f * L1[15]) + (-20.157797f * L1[16]) + (-8.158984f * L1[17]) + (9.558876f * L1[18]) + (-13.523861f * L1[19]) + (-8.195863f * L1[20]) + (57.03225f * L1[21]) + (-0.7853844f * L1[22]) + (-20.93933f * L1[23]) + (3.5727618f * L1[24]) + (-8.042158f * L1[25]) + (26.609123f * L1[26]) + (2.6624238f * L1[27]) + (-6.3961186f * L1[28]) + (0.24940972f * L1[29]));
    L2[17] = MathF.Tanh(7.9998555f + (36.1706f * L1[0]) + (2.0267699f * L1[1]) + (-19.374865f * L1[2]) + (-7.967119f * L1[3]) + (19.58254f * L1[4]) + (7.7538457f * L1[5]) + (-7.9998555f * L1[6]) + (-1.6788238f * L1[7]) + (17.630444f * L1[8]) + (16.57333f * L1[9]) + (15.182549f * L1[10]) + (18.92762f * L1[11]) + (3.7429905f * L1[12]) + (13.768176f * L1[13]) + (-5.454833f * L1[14]) + (-22.62415f * L1[15]) + (-15.637054f * L1[16]) + (-4.2101455f * L1[17]) + (6.6667614f * L1[18]) + (20.910528f * L1[19]) + (-4.5065536f * L1[20]) + (-6.324577f * L1[21]) + (7.9998555f * L1[22]) + (-9.207242f * L1[23]) + (6.0156326f * L1[24]) + (-11.785894f * L1[25]) + (-4.5940657f * L1[26]) + (5.860795f * L1[27]) + (15.6165495f * L1[28]) + (-2.6020167f * L1[29]));
    L2[18] = MathF.Tanh(-0.10154065f + (-0.7241697f * L1[0]) + (-0.36315376f * L1[1]) + (-30.164185f * L1[2]) + (-18.127459f * L1[3]) + (-1.7355889f * L1[4]) + (3.7035165f * L1[5]) + (2.440997f * L1[6]) + (-14.551883f * L1[7]) + (-0.2598803f * L1[8]) + (-6.5358195f * L1[9]) + (12.21059f * L1[10]) + (-4.1581845f * L1[11]) + (-7.445013f * L1[12]) + (15.477308f * L1[13]) + (0.18552768f * L1[14]) + (14.318733f * L1[15]) + (0.5614992f * L1[16]) + (-0.49487597f * L1[17]) + (3.2164936f * L1[18]) + (-0.36344713f * L1[19]) + (0.0049020248f * L1[20]) + (1.2414074f * L1[21]) + (21.287975f * L1[22]) + (-14.428358f * L1[23]) + (14.207696f * L1[24]) + (-30.619062f * L1[25]) + (0.31550622f * L1[26]) + (-2.2059367f * L1[27]) + (-0.29371062f * L1[28]) + (-16.83633f * L1[29]));
    L2[19] = MathF.Tanh(-26.624008f + (1.4955761f * L1[0]) + (-0.07172729f * L1[1]) + (0.3240918f * L1[2]) + (-4.6325107f * L1[3]) + (3.0488496f * L1[4]) + (-7.224693f * L1[5]) + (-182.79483f * L1[6]) + (-1.124576f * L1[7]) + (-29.91395f * L1[8]) + (8.587512f * L1[9]) + (-2.727503f * L1[10]) + (-0.76992226f * L1[11]) + (1.1493913f * L1[12]) + (3.126207f * L1[13]) + (-26.624008f * L1[14]) + (-3.9087365f * L1[15]) + (-2.3039591f * L1[16]) + (-2.4961715f * L1[17]) + (-18.743082f * L1[18]) + (-3.1615107f * L1[19]) + (26.624203f * L1[20]) + (27.476213f * L1[21]) + (1.4607671f * L1[22]) + (-1.5876089f * L1[23]) + (-11.024996f * L1[24]) + (-5.918917f * L1[25]) + (26.624008f * L1[26]) + (4.3331904f * L1[27]) + (-3.1546988f * L1[28]) + (-0.31537426f * L1[29]));
    L2[20] = MathF.Tanh(-3.1076248f + (-32.000145f * L1[0]) + (0.16061078f * L1[1]) + (7.4323173f * L1[2]) + (0.04399202f * L1[3]) + (-2.8516967f * L1[4]) + (7.2201796f * L1[5]) + (-10.823929f * L1[6]) + (0.016809955f * L1[7]) + (-0.1455732f * L1[8]) + (7.145256f * L1[9]) + (8.992836f * L1[10]) + (-3.2000182f * L1[11]) + (6.174645f * L1[12]) + (0.6763739f * L1[13]) + (2.2880251f * L1[14]) + (-10.266117f * L1[15]) + (-5.014154f * L1[16]) + (0.083999164f * L1[17]) + (-8.234229f * L1[18]) + (6.3013697f * L1[19]) + (-4.935197f * L1[20]) + (2.385119f * L1[21]) + (-0.15454611f * L1[22]) + (-11.590246f * L1[23]) + (0.07482785f * L1[24]) + (2.8350565f * L1[25]) + (-5.7665706f * L1[26]) + (-0.5854878f * L1[27]) + (0.058404207f * L1[28]) + (3.5904703f * L1[29]));
    L2[21] = MathF.Tanh(-3.4043999f + (-26.481632f * L1[0]) + (16.000175f * L1[1]) + (-5.9162393f * L1[2]) + (-30.074306f * L1[3]) + (-15.780024f * L1[4]) + (-16.670925f * L1[5]) + (6.526472f * L1[6]) + (-5.3494973f * L1[7]) + (2.6936295f * L1[8]) + (25.026934f * L1[9]) + (-12.144975f * L1[10]) + (23.970634f * L1[11]) + (-13.689954f * L1[12]) + (22.493166f * L1[13]) + (30.337223f * L1[14]) + (-13.43098f * L1[15]) + (15.294766f * L1[16]) + (-13.074686f * L1[17]) + (-0.0109558385f * L1[18]) + (-7.5383887f * L1[19]) + (-7.6835113f * L1[20]) + (-8.343468f * L1[21]) + (-12.329787f * L1[22]) + (22.50428f * L1[23]) + (-7.815752f * L1[24]) + (-25.229954f * L1[25]) + (-10.373686f * L1[26]) + (-2.7140105f * L1[27]) + (6.2544556f * L1[28]) + (3.4132946f * L1[29]));
    L2[22] = MathF.Tanh(-5.719221f + (10.219413f * L1[0]) + (-8.510421f * L1[1]) + (-9.130538f * L1[2]) + (9.363868f * L1[3]) + (-5.5242558f * L1[4]) + (5.050353f * L1[5]) + (28.552286f * L1[6]) + (-24.82333f * L1[7]) + (-4.488101f * L1[8]) + (3.3830678f * L1[9]) + (-6.0473537f * L1[10]) + (-19.493359f * L1[11]) + (5.1971645f * L1[12]) + (-5.199252f * L1[13]) + (-5.539504f * L1[14]) + (-11.26374f * L1[15]) + (-5.5500507f * L1[16]) + (30.995623f * L1[17]) + (-1.2583069f * L1[18]) + (-5.5665507f * L1[19]) + (5.6383076f * L1[20]) + (-17.880001f * L1[21]) + (-11.069457f * L1[22]) + (-5.83259f * L1[23]) + (-14.881721f * L1[24]) + (31.999874f * L1[25]) + (-8.961126f * L1[26]) + (7.10765f * L1[27]) + (35.660755f * L1[28]) + (4.6574244f * L1[29]));
    L2[23] = MathF.Tanh(0.38022932f + (0.12408879f * L1[0]) + (48.50291f * L1[1]) + (-33.36273f * L1[2]) + (11.774874f * L1[3]) + (-12.038288f * L1[4]) + (-10.561764f * L1[5]) + (-0.68065625f * L1[6]) + (-2.1826673f * L1[7]) + (-6.19164f * L1[8]) + (-23.918272f * L1[9]) + (6.009472f * L1[10]) + (21.674532f * L1[11]) + (-13.431698f * L1[12]) + (0.00806864f * L1[13]) + (17.925234f * L1[14]) + (-0.053933132f * L1[15]) + (24.104275f * L1[16]) + (-24.062302f * L1[17]) + (-0.960913f * L1[18]) + (1.2047065f * L1[19]) + (-24.35197f * L1[20]) + (-25.413464f * L1[21]) + (15.17241f * L1[22]) + (11.131995f * L1[23]) + (1.8211179f * L1[24]) + (-0.34889236f * L1[25]) + (-21.48039f * L1[26]) + (9.393872f * L1[27]) + (-1.5553609f * L1[28]) + (-6.003176f * L1[29]));
    L2[24] = MathF.Tanh(-13.018184f + (0.3027794f * L1[0]) + (1.793447f * L1[1]) + (3.5152535f * L1[2]) + (8.000269f * L1[3]) + (0.16638885f * L1[4]) + (0.3250837f * L1[5]) + (12.292499f * L1[6]) + (-0.31560796f * L1[7]) + (-4.6056542f * L1[8]) + (0.24859591f * L1[9]) + (-0.26877987f * L1[10]) + (-0.17762996f * L1[11]) + (0.12785807f * L1[12]) + (-11.403459f * L1[13]) + (0.30662015f * L1[14]) + (0.902024f * L1[15]) + (-0.30715546f * L1[16]) + (-57.901867f * L1[17]) + (-15.510666f * L1[18]) + (2.4061894f * L1[19]) + (0.75282884f * L1[20]) + (-0.08498667f * L1[21]) + (9.045584f * L1[22]) + (-0.12907094f * L1[23]) + (-4.8030667f * L1[24]) + (1.0568422f * L1[25]) + (0.27349526f * L1[26]) + (2.3847342f * L1[27]) + (-0.7317412f * L1[28]) + (4.4274974f * L1[29]));
    L2[25] = MathF.Tanh(7.457423f + (8.52892f * L1[0]) + (-15.669896f * L1[1]) + (-34.78138f * L1[2]) + (3.3134332f * L1[3]) + (-8.090065f * L1[4]) + (26.326496f * L1[5]) + (4.762363f * L1[6]) + (12.649532f * L1[7]) + (2.1209655f * L1[8]) + (2.9477558f * L1[9]) + (16.607367f * L1[10]) + (29.408117f * L1[11]) + (-9.557712f * L1[12]) + (-10.349646f * L1[13]) + (21.32491f * L1[14]) + (-20.72057f * L1[15]) + (-22.560747f * L1[16]) + (-2.3755076f * L1[17]) + (2.0014098f * L1[18]) + (11.489964f * L1[19]) + (13.632858f * L1[20]) + (-11.484407f * L1[21]) + (2.9754517f * L1[22]) + (7.377281f * L1[23]) + (-15.017823f * L1[24]) + (9.245134f * L1[25]) + (-24.042772f * L1[26]) + (5.5939274f * L1[27]) + (-2.8747463f * L1[28]) + (1.0005615f * L1[29]));
    L2[26] = MathF.Tanh(0.7289413f + (-10.491299f * L1[0]) + (-20.071392f * L1[1]) + (-3.72223f * L1[2]) + (-0.97098625f * L1[3]) + (-8.853161f * L1[4]) + (13.433592f * L1[5]) + (-0.6414026f * L1[6]) + (-6.211562f * L1[7]) + (-25.14598f * L1[8]) + (-2.6637533f * L1[9]) + (-16.94737f * L1[10]) + (16.63345f * L1[11]) + (0.5766565f * L1[12]) + (1.7300315f * L1[13]) + (-7.1625557f * L1[14]) + (8.889289f * L1[15]) + (-13.426439f * L1[16]) + (-1.7224903f * L1[17]) + (-3.03984f * L1[18]) + (-26.837637f * L1[19]) + (5.9576945f * L1[20]) + (-2.1230628f * L1[21]) + (0.79481626f * L1[22]) + (-12.3528f * L1[23]) + (4.212346f * L1[24]) + (-1.2177457f * L1[25]) + (-1.2625229f * L1[26]) + (5.5593143f * L1[27]) + (-0.8195571f * L1[28]) + (14.196889f * L1[29]));
    L2[27] = MathF.Tanh(-2.6963174f + (-1.5174907f * L1[0]) + (22.589088f * L1[1]) + (-0.40726072f * L1[2]) + (6.2710023f * L1[3]) + (20.998013f * L1[4]) + (-2.5626283f * L1[5]) + (3.1811776f * L1[6]) + (90.98608f * L1[7]) + (27.168095f * L1[8]) + (-9.549899f * L1[9]) + (2.3916223f * L1[10]) + (12.57792f * L1[11]) + (-17.53873f * L1[12]) + (-3.0837348f * L1[13]) + (-2.69359f * L1[14]) + (3.2037125f * L1[15]) + (-0.4686821f * L1[16]) + (5.227374f * L1[17]) + (-1.4765997f * L1[18]) + (-0.7140362f * L1[19]) + (2.6935675f * L1[20]) + (1.1540606f * L1[21]) + (-18.196775f * L1[22]) + (-4.8791595f * L1[23]) + (-32.465168f * L1[24]) + (0.5562639f * L1[25]) + (2.0394454f * L1[26]) + (15.999994f * L1[27]) + (33.58717f * L1[28]) + (-1.8518064f * L1[29]));
    L2[28] = MathF.Tanh(4.585943f + (-29.32521f * L1[0]) + (4.4945583f * L1[1]) + (-20.768023f * L1[2]) + (3.1620946f * L1[3]) + (4.585943f * L1[4]) + (1.4756199f * L1[5]) + (63.743706f * L1[6]) + (7.0733995f * L1[7]) + (4.585943f * L1[8]) + (9.773002f * L1[9]) + (21.393576f * L1[10]) + (-6.496798f * L1[11]) + (-12.864734f * L1[12]) + (-9.251635f * L1[13]) + (4.539748f * L1[14]) + (1.6375102f * L1[15]) + (4.585943f * L1[16]) + (1.5520244f * L1[17]) + (12.791532f * L1[18]) + (4.585943f * L1[19]) + (-4.585943f * L1[20]) + (-4.585943f * L1[21]) + (-22.280806f * L1[22]) + (-21.640057f * L1[23]) + (-8.546835f * L1[24]) + (54.306583f * L1[25]) + (-4.4878016f * L1[26]) + (-7.750582f * L1[27]) + (4.462755f * L1[28]) + (-2.4760056f * L1[29]));
    L2[29] = MathF.Tanh(11.757092f + (7.5166807f * L1[0]) + (2.0904067f * L1[1]) + (-0.44136393f * L1[2]) + (53.725487f * L1[3]) + (1.1623172f * L1[4]) + (-24.195251f * L1[5]) + (-11.757092f * L1[6]) + (21.271296f * L1[7]) + (-45.7136f * L1[8]) + (-1.2509902f * L1[9]) + (-18.342548f * L1[10]) + (-0.024617413f * L1[11]) + (5.370928f * L1[12]) + (11.757092f * L1[13]) + (11.757092f * L1[14]) + (12.819749f * L1[15]) + (-2.8072429f * L1[16]) + (-11.595566f * L1[17]) + (11.692692f * L1[18]) + (-0.7304063f * L1[19]) + (-11.757086f * L1[20]) + (73.200615f * L1[21]) + (16.078682f * L1[22]) + (4.229402f * L1[23]) + (-10.75438f * L1[24]) + (-16.84392f * L1[25]) + (11.740371f * L1[26]) + (-1.5688872f * L1[27]) + (-3.9128125f * L1[28]) + (2.3254514f * L1[29]));

    // Layer 3
    var L3 = new float[3];
    L3[0] = MathF.Tanh(0.958246f + (0.05635867f * L2[0]) + (0.4296013f * L2[1]) + (-0.33283707f * L2[2]) + (-0.11028845f * L2[3]) + (-0.21837333f * L2[4]) + (-0.3441499f * L2[5]) + (-0.24230269f * L2[6]) + (0.18282698f * L2[7]) + (-0.38522324f * L2[8]) + (0.30685022f * L2[9]) + (-0.2513349f * L2[10]) + (-0.37777323f * L2[11]) + (0.24747807f * L2[12]) + (0.4154954f * L2[13]) + (-0.11517179f * L2[14]) + (0.32657838f * L2[15]) + (-0.43372336f * L2[16]) + (-0.22712722f * L2[17]) + (-0.33894154f * L2[18]) + (-0.17339687f * L2[19]) + (0.40460008f * L2[20]) + (-0.49143496f * L2[21]) + (0.25281307f * L2[22]) + (0.34231237f * L2[23]) + (0.10027346f * L2[24]) + (-0.36842087f * L2[25]) + (-0.23972724f * L2[26]) + (-0.15914212f * L2[27]) + (0.2116519f * L2[28]) + (0.35320404f * L2[29]));
    L3[1] = MathF.Tanh(1.0184717f + (-0.2146079f * L2[0]) + (0.47074944f * L2[1]) + (-0.45836937f * L2[2]) + (-0.29229555f * L2[3]) + (-0.050786223f * L2[4]) + (-0.3846504f * L2[5]) + (-0.5457049f * L2[6]) + (0.096010804f * L2[7]) + (-0.388227f * L2[8]) + (0.4847932f * L2[9]) + (-0.47872287f * L2[10]) + (-0.36324245f * L2[11]) + (0.16779916f * L2[12]) + (0.4334508f * L2[13]) + (-0.3995102f * L2[14]) + (0.35069495f * L2[15]) + (-0.46932504f * L2[16]) + (-0.43654287f * L2[17]) + (-0.4525445f * L2[18]) + (-0.16911468f * L2[19]) + (0.3925828f * L2[20]) + (-0.5609603f * L2[21]) + (0.51313823f * L2[22]) + (0.4424861f * L2[23]) + (0.42461786f * L2[24]) + (-0.4296223f * L2[25]) + (-0.47217956f * L2[26]) + (-0.20755763f * L2[27]) + (0.013045892f * L2[28]) + (0.5018477f * L2[29]));
    L3[2] = MathF.Tanh(1.0057501f + (-0.22189775f * L2[0]) + (0.49134526f * L2[1]) + (-0.44668978f * L2[2]) + (-0.32341865f * L2[3]) + (-0.036765307f * L2[4]) + (-0.40679938f * L2[5]) + (-0.5559894f * L2[6]) + (0.10121907f * L2[7]) + (-0.3798867f * L2[8]) + (0.5127606f * L2[9]) + (-0.5036204f * L2[10]) + (-0.34732544f * L2[11]) + (0.13486455f * L2[12]) + (0.4707671f * L2[13]) + (-0.4294598f * L2[14]) + (0.33407187f * L2[15]) + (-0.5189466f * L2[16]) + (-0.44515818f * L2[17]) + (-0.49007356f * L2[18]) + (-0.18686642f * L2[19]) + (0.3978529f * L2[20]) + (-0.5593266f * L2[21]) + (0.52301383f * L2[22]) + (0.4556051f * L2[23]) + (0.42416206f * L2[24]) + (-0.46474305f * L2[25]) + (-0.50049686f * L2[26]) + (-0.24107598f * L2[27]) + (0.010791813f * L2[28]) + (0.5014473f * L2[29]));

    return L3;
}

I also tried “Half” instead of “float” out of curiosity. With the same size network, the training jumped around and didn’t stabilise into anything worthy of putting here.

What I conclude is that the number of digits is key to the quality of the image. Not a shocking revelation.

Santa Image Credit

The image I used for training is as follows:

I chose it for aesthetics and jolliness. I would love to attribute credit to the original artist. However, if you reverse-lookup using Google, so many people have used the image that it is nearly impossible to know who… Happy to update if the real author comes forward.

Merry Christmas everyone!

Now you know why Santa is fat, not the mince pies, it’s something to do with that very big formula that makes him.

Ok, the Santa formula was a bit large. The sheep formula was more impressive.

Think you can beat my Santa formula? Try generating your own festive character and share it in the comments.

Not bad for a festive side‑quest. Now… what should I encode next? Add suggestions in the comments.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *