/***
* This code is a part of EvoApproxLib library (ehw.fit.vutbr.cz/approxlib) distributed under The MIT License.
* When used, please cite the following article(s): V. Mrazek, Z. Vasicek, L. Sekanina, H. Jiang and J. Han, "Scalable Construction of Approximate Multipliers With Formally Guaranteed Worst Case Error" in IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 26, no. 11, pp. 2572-2576, Nov. 2018. doi: 10.1109/TVLSI.2018.2856362 
* This file contains a circuit from a sub-set of pareto optimal circuits with respect to the pwr and mae parameters
***/
// MAE% = 0.081 %
// MAE = 53 
// WCE% = 0.39 %
// WCE = 255 
// WCRE% = 300.00 %
// EP% = 74.61 %
// MRE% = 4.41 %
// MSE = 5462 
// PDK45_PWR = 0.301 mW
// PDK45_AREA = 558.9 um2
// PDK45_DELAY = 1.36 ns
#include <stdint.h>
#include <stdlib.h>

uint16_t mul8s_1L2J(uint8_t A, uint8_t B)
{
 uint16_t O;
 uint8_t n162,O13,n85,O15,n38,n39,n88,O10,n290,n319,n95,O5,n36,n37,n349,n348,O11,n303,n341,O2,n343,n345,n117,n346,n132,n133,n228,n229,n136,n137,n134,n135,n222,n223,n138,n139,n226,n227,n224,O1,n160,n87,n327,n86,n316,n151,n231,O4,n325,n80,n235,n234,n237,n236,n81,n233,n83,n82,n200,n232,n239,n238,n320,n201,n169,n129,n128,n168,n334,n335,n127,n126,n330,n331,n332,n122,n89,O12,n64,n155,O6,n211,n317,n240,n98,n99,n245,n246,n247,n92,n93,n90,n91,n96,n97,n94,O0,n158,n159,n342,n329,n328,n150,n152,n153,n323,n322,n321,n157,n67,n66,n65,n333,n63,n62,n60,n284,n291,n307,n69,n230,n125,n175,n124,n301,n68,n173,n253,n252,n304,n257,n170,n255,n254,n121,O3,n171,n318,n120,n161,n149,n148,n123,n340,n143,n142,n310,n140,n147,n146,n145,n144,n74,n75,n76,n77,n70,n71,n72,n73,O9,n262,n339,n78,n79,n263,n338,n294,n178,n293,n261,n176,n177,n174,n306,n172,n300,n268,n269,n266,n267,n264,n265,n309,n308,n260,n179,n248,n131,n289,n326,n344,n49,n48,n286,n287,n280,n282,n283,n40,n43,n42,n45,n44,n47,O14,n250,n299,n251,O8,n298,n220,n256,n279,n278,n163,n221,n165,n164,n167,n166,n271,n270,n273,n272,n275,n274,n277,n276,n209,n324,n130,n225,n259,n315,n297,n296,n295,n258,n156,n292,n58,n59,n56,n57,n54,n55,n52,n53,n50,n51,n350,n314,n305,n351,n337,n198,n199,n106,n195,n196,n190,n191,n192,n193,n114,n116,n302,n110,n111,n112,n113,n204,n205,n206,n207,n118,n119,n202,n203,n219,n249,n218,n288,n100,n242,n285,O7,n312,n243,n313,n244,n208,n141,n214,n189,n188,n187,n186,n185,n184,n183,n182,n181,n180,n107,n194,n105,n104,n103,n102,n101,n217,n216,n215,n210,n213,n212,n109,n108;
 O0=0;
 O1=0;
 O2=((B >> 1)&1)&((A >> 1)&1);
 n108=((B >> 4)&1)&((A >> 3)&1);
 n110=((B >> 6)&1)&((A >> 1)&1);
 n111=((B >> 5)&1)&((A >> 2)&1);
 n112=((B >> 3)&1)&((A >> 4)&1);
 n113=((B >> 2)&1)&((A >> 5)&1);
 n114=((B >> 1)&1)&((A >> 6)&1);
 n122=((B >> 1)&1)&((A >> 7)&1);
 n147=((B >> 5)&1)&((A >> 3)&1);
 n149=((B >> 7)&1)&((A >> 1)&1);
 n150=((B >> 6)&1)&((A >> 2)&1);
 n151=((B >> 4)&1)&((A >> 4)&1);
 n152=((B >> 3)&1)&((A >> 5)&1);
 n153=((B >> 2)&1)&((A >> 6)&1);
 n167=((B >> 2)&1)&((A >> 7)&1);
 n192=((B >> 6)&1)&((A >> 3)&1);
 n193=((B >> 7)&1)&((A >> 2)&1);
 n194=((B >> 5)&1)&((A >> 4)&1);
 n195=((B >> 4)&1)&((A >> 5)&1);
 n196=((B >> 3)&1)&((A >> 6)&1);
 n212=((B >> 3)&1)&((A >> 7)&1);
 n227=((B >> 5)&1)&((A >> 5)&1);
 n235=((B >> 6)&1)&((A >> 4)&1);
 n238=~(((A >> 3)&1)|((A >> 2)&1));
 n240=((B >> 4)&1)&((A >> 6)&1);
 n260=((B >> 4)&1)&((A >> 7)&1);
 n277=((B >> 7)&1)&((A >> 4)&1);
 n279=((B >> 6)&1)&((A >> 5)&1);
 n280=((B >> 5)&1)&((A >> 6)&1);
 n300=((B >> 5)&1)&((A >> 7)&1);
 n308=((B >> 6)&1)&((A >> 6)&1);
 n310=((B >> 7)&1)&((A >> 5)&1);
 n330=((B >> 6)&1)&((A >> 7)&1);
 n334=((B >> 7)&1)&((A >> 6)&1);
 n346=((B >> 7)&1)&((A >> 7)&1);
 n37=((B >> 2)&1)&((A >> 2)&1);
 n39=((B >> 1)&1)&((A >> 2)&1);
 n40=((B >> 2)&1)&((A >> 1)&1);
 n43=((B >> 1)&1)&((A >> 3)&1);
 n45=((B >> 3)&1)&((A >> 1)&1);
 n56=((B >> 2)&1)&((A >> 3)&1);
 n58=((B >> 4)&1)&((A >> 1)&1);
 n59=((B >> 3)&1)&((A >> 2)&1);
 n60=((B >> 1)&1)&((A >> 4)&1);
 n78=((B >> 3)&1)&((A >> 3)&1);
 n80=((B >> 5)&1)&((A >> 1)&1);
 n81=((B >> 4)&1)&((A >> 2)&1);
 n82=((B >> 2)&1)&((A >> 4)&1);
 n83=((B >> 1)&1)&((A >> 5)&1);
 n107=n81&n80;
 n109=n111^n110;
 n146=n111&n110;
 n148=~(n150^n149);
 n191=n150&~n149;
 n233=n192&n193;
 n237=((B >> 7)&1)&~n238;
 n239=((A >> 3)&1)&n193;
 n36=n37&O2;
 n38=~(n40|n39);
 n44=n45^n37;
 n55=n45&n37;
 n57=n59^n58;
 n77=n59&n58;
 n79=n81^n80;
 O3=~(n38|n36);
 n102=n78&n77;
 n103=n78&n79;
 n104=n79&n77;
 n106=~(n108^n107);
 n141=n108&n107;
 n142=n108&n109;
 n143=n109&n107;
 n145=~(n147^n146);
 n186=n147&n146;
 n187=n147&n148;
 n188=n148&n146;
 n190=~(n192^n191);
 n232=n192&n191;
 n234=n193&n191;
 n236=~n239&n237;
 n276=~(n277|n237);
 n278=((A >> 4)&1)&n237;
 n42=~(n43^n36);
 n50=n43&n36;
 n51=n43&n44;
 n52=n44&n36;
 n54=~(n56^n55);
 n72=n56&n55;
 n73=n56&n57;
 n74=n57&n55;
 n76=~(n78^n77);
 O4=~(n44^n42);
 n101=~(n103|n102);
 n105=n109^n106;
 n140=~(n142|n141);
 n144=n148^n145;
 n185=~(n187|n186);
 n189=n193^n190;
 n231=~(n233|n232);
 n273=n235&n236;
 n275=~(n278|n276);
 n309=~(n310^n276);
 n333=~n310&n276;
 n49=~(n51|n50);
 n53=n57^n54;
 n71=~(n73|n72);
 n75=n79^n76;
 n100=~n104&n101;
 n135=n112&~n105;
 n139=~n143&n140;
 n180=n151&~n144;
 n184=~n188&n185;
 n225=n194&~n189;
 n230=~n234&n231;
 n306=n279&n275;
 n328=n308&n309;
 n332=~n334&n333;
 n335=((A >> 6)&1)&~n333;
 n48=~n52&n49;
 n66=n60&~n53;
 n70=~n74&n71;
 n96=n82&~n75;
 n134=~(n105|n100);
 n136=n112&~n100;
 n138=~(n144^n139);
 n179=~(n144|n139);
 n181=n151&~n139;
 n183=~(n189^n184);
 n224=~(n189|n184);
 n226=n194&~n184;
 n229=n235^n230;
 n272=n235&~n230;
 n274=n236&~n230;
 n331=~(n335|n332);
 n345=~(n346^n332);
 n350=n346&n332;
 n47=~(n53^n48);
 n65=~(n53|n48);
 n67=n60&~n48;
 n69=~(n75^n70);
 n95=~(n75|n70);
 n97=n82&~n70;
 n99=~(n105^n100);
 O5=~(n60^n47);
 n133=~(n135|n134);
 n137=n151^n138;
 n178=~(n180|n179);
 n182=n194^n183;
 n223=~(n225|n224);
 n228=n236^n229;
 n271=~(n273|n272);
 n64=~(n66|n65);
 n68=n82^n69;
 n94=~(n96|n95);
 n98=n112^n99;
 n129=n113&~n98;
 n132=~n136&n133;
 n174=n152&~n137;
 n177=~n181&n178;
 n219=n195&~n182;
 n222=~n226&n223;
 n266=n227&~n228;
 n270=~n274&n271;
 n63=~n67&n64;
 n90=n83&~n68;
 n93=~n97&n94;
 n127=~(n98|n93);
 n128=n113&~n93;
 n131=~(n137^n132);
 n172=~(n137|n132);
 n173=n152&~n132;
 n176=~(n182^n177);
 n217=~(n182|n177);
 n218=n195&~n177;
 n221=n227^n222;
 n265=n227&~n222;
 n267=~(n228|n222);
 n269=n275^n270;
 n305=n275&~n270;
 n307=n279&~n270;
 n62=~(n68^n63);
 n88=~(n68|n63);
 n89=n83&~n63;
 n92=~(n98^n93);
 O6=~(n83^n62);
 n126=~(n128|n127);
 n130=n152^n131;
 n171=~(n173|n172);
 n175=n195^n176;
 n216=~(n218|n217);
 n220=~(n228^n221);
 n264=~(n266|n265);
 n268=n279^n269;
 n304=~(n306|n305);
 n87=~(n89|n88);
 n91=n113^n92;
 n121=n114&~n91;
 n125=~n129&n126;
 n166=n153&~n130;
 n170=~n174&n171;
 n211=n196&~n175;
 n215=~n219&n216;
 n258=n240&~n220;
 n263=~n267&n264;
 n298=n280&~n268;
 n303=~n307&n304;
 n86=~n90&n87;
 n119=~(n91|n86);
 n120=n114&~n86;
 n124=~(n130^n125);
 n164=~(n130|n125);
 n165=n153&~n125;
 n169=~(n175^n170);
 n209=~(n175|n170);
 n210=n196&~n170;
 n214=~(n220^n215);
 n257=~(n220|n215);
 n259=n240&~n215;
 n262=~(n268^n263);
 n297=~(n268|n263);
 n299=n280&~n263;
 n302=n308^n303;
 n327=n308&~n303;
 n329=n309&~n303;
 n85=~(n91^n86);
 O7=~(n114^n85);
 n118=~(n120|n119);
 n123=n153^n124;
 n163=~(n165|n164);
 n168=n196^n169;
 n208=~(n210|n209);
 n213=n240^n214;
 n256=~(n258|n257);
 n261=n280^n262;
 n296=~(n298|n297);
 n301=n309^n302;
 n326=~(n328|n327);
 n117=~n121&n118;
 n158=~(n122|n123);
 n162=~n166&n163;
 n203=~(n167|n168);
 n207=~n211&n208;
 n251=~(n212|n213);
 n255=~n259&n256;
 n291=~(n260|n261);
 n295=~n299&n296;
 n321=~(n300|n301);
 n325=~n329&n326;
 n116=~(n122^n117);
 n157=~(n122|n117);
 n159=~(n123|n117);
 n161=~(n167^n162);
 n202=~(n167|n162);
 n204=~(n168|n162);
 n206=~(n212^n207);
 n250=~(n212|n207);
 n252=~(n213|n207);
 n254=~(n260^n255);
 n290=~(n260|n255);
 n292=~(n261|n255);
 n294=~(n300^n295);
 n320=~(n300|n295);
 n322=~(n301|n295);
 n324=n330^n325;
 n343=~(n330|n325);
 O8=n123^n116;
 n156=~(n158|n157);
 n160=~(n168^n161);
 n201=~(n203|n202);
 n205=~(n213^n206);
 n249=~(n251|n250);
 n253=~(n261^n254);
 n289=~(n291|n290);
 n293=~(n301^n294);
 n319=~(n321|n320);
 n323=n331^n324;
 n342=~(n331|n343);
 n155=~n159&n156;
 n200=~n204&n201;
 n248=~n252&n249;
 n288=~n292&n289;
 n318=~n322&n319;
 O9=n160^n155;
 n198=~(n160|n155);
 n199=~(n205^n200);
 n246=~(n205|n200);
 n286=~(n253|n248);
 n316=~(n293|n288);
 n341=n323&~n318;
 O10=~(n199^n198);
 n245=~n205&n198;
 n247=~n200&n198;
 n340=n342&~n341;
 n244=~(n246|n245);
 n243=~n247&n244;
 n242=~(n248^n243);
 n285=~(n248|n243);
 n287=~(n253|n243);
 O11=n253^n242;
 n284=~(n286|n285);
 n283=~n287&n284;
 n282=~(n288^n283);
 n315=~(n288|n283);
 n317=~(n293|n283);
 O12=n293^n282;
 n314=~(n316|n315);
 n313=~n317&n314;
 n312=~(n318^n313);
 n339=~(n318|n313);
 n344=n323&~n313;
 O13=~(n323^n312);
 n338=n340&~n339;
 n337=~n344&n338;
 O14=n345^n337;
 n349=n346&~n337;
 n351=n332&~n337;
 n348=~(n350|n349);
 O15=~n351&n348;
 O = (O0 << 0)|(O1 << 1)|(O2 << 2)|(O3 << 3)|(O4 << 4)|(O5 << 5)|(O6 << 6)|(O7 << 7)|(O8 << 8)|(O9 << 9)|(O10 << 10)|(O11 << 11)|(O12 << 12)|(O13 << 13)|(O14 << 14)|(O15 << 15);
 return O;
}