diff --git a/README.md b/README.md index 7ce1e210..0c4ffdf3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Coverage Status](https://coveralls.io/repos/github/BayesWitnesses/m2cgen/badge.svg?branch=master)](https://coveralls.io/github/BayesWitnesses/m2cgen?branch=master) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -**m2cgen** (Model 2 Code Generator) - is a lightweight library which provides an easy way to transpile trained statistical models into a native code (Python, C, Java, Go). +**m2cgen** (Model 2 Code Generator) - is a lightweight library which provides an easy way to transpile trained statistical models into a native code (Python, C, Java, Go, JavaScript). * [Installation](#installation) * [Supported Languages](#supported-languages) @@ -27,6 +27,7 @@ pip install m2cgen - Java - C - Go +- JavaScript ## Supported Models diff --git a/generated_code_examples/javascript/classification/decision_tree.js b/generated_code_examples/javascript/classification/decision_tree.js new file mode 100644 index 00000000..4ce679ad --- /dev/null +++ b/generated_code_examples/javascript/classification/decision_tree.js @@ -0,0 +1,21 @@ +function score(input) { + var var0; + if ((input[2]) <= (2.6)) { + var0 = [1.0, 0.0, 0.0]; + } else { + if ((input[2]) <= (4.8500004)) { + if ((input[3]) <= (1.6500001)) { + var0 = [0.0, 1.0, 0.0]; + } else { + var0 = [0.0, 0.3333333333333333, 0.6666666666666666]; + } + } else { + if ((input[3]) <= (1.75)) { + var0 = [0.0, 0.42857142857142855, 0.5714285714285714]; + } else { + var0 = [0.0, 0.0, 1.0]; + } + } + } + return var0; +} diff --git a/generated_code_examples/javascript/classification/lightgbm.js b/generated_code_examples/javascript/classification/lightgbm.js new file mode 100644 index 00000000..f4e5bb44 --- /dev/null +++ b/generated_code_examples/javascript/classification/lightgbm.js @@ -0,0 +1,79 @@ +function score(input) { + var var0; + if ((input[2]) > (1.8)) { + if ((input[2]) > (4.250000000000001)) { + var0 = -1.1736122903444903; + } else { + var0 = -1.1633850173886202; + } + } else { + var0 = -0.9486122853153485; + } + var var1; + if ((input[2]) > (1.8)) { + if ((input[1]) > (3.0500000000000003)) { + var1 = -0.06193194743580539; + } else { + var1 = -0.07237070828653688; + } + } else { + var1 = 0.12984943093573026; + } + var var2; + var2 = Math.exp(((0) + (var0)) + (var1)); + var var3; + if ((input[2]) > (1.8)) { + if ((input[2]) > (4.8500000000000005)) { + var3 = -1.1807342692411888; + } else { + var3 = -0.9831932134295853; + } + } else { + var3 = -1.1952609652674462; + } + var var4; + if ((input[2]) > (1.8)) { + if ((input[2]) > (4.8500000000000005)) { + var4 = -0.05694282927518771; + } else { + var4 = 0.11960489254350348; + } + } else { + var4 = -0.07151978915296087; + } + var var5; + var5 = Math.exp(((0) + (var3)) + (var4)); + var var6; + if ((input[2]) > (4.8500000000000005)) { + if ((input[3]) > (1.9500000000000002)) { + var6 = -0.9298942558407184; + } else { + var6 = -0.9632815288936335; + } + } else { + if ((input[2]) > (4.250000000000001)) { + var6 = -1.1322413652523249; + } else { + var6 = -1.1524760761934856; + } + } + var var7; + if ((input[2]) > (4.8500000000000005)) { + if ((input[3]) > (1.9500000000000002)) { + var7 = 0.12809276954555665; + } else { + var7 = 0.09898817876916756; + } + } else { + if ((input[2]) > (4.250000000000001)) { + var7 = -0.052710589717642864; + } else { + var7 = -0.07292857712854424; + } + } + var var8; + var8 = Math.exp(((0) + (var6)) + (var7)); + var var9; + var9 = ((var2) + (var5)) + (var8); + return [(var2) / (var9), (var5) / (var9), (var8) / (var9)]; +} diff --git a/generated_code_examples/javascript/classification/linear.js b/generated_code_examples/javascript/classification/linear.js new file mode 100644 index 00000000..40407a2e --- /dev/null +++ b/generated_code_examples/javascript/classification/linear.js @@ -0,0 +1,3 @@ +function score(input) { + return [((((0.26145874358806076) + ((input[0]) * (0.4247411605356963))) + ((input[1]) * (1.3963906033045022))) + ((input[2]) * (-2.215054318516674))) + ((input[3]) * (-0.9587396176450291)), ((((1.1348839223808753) + ((input[0]) * (0.25679659769994584))) + ((input[1]) * (-1.3904789369835584))) + ((input[2]) * (0.5966830233112762))) + ((input[3]) * (-1.269002272638834)), ((((-1.216280201256021) + ((input[0]) * (-1.635776698917701))) + ((input[1]) * (-1.504063872842283))) + ((input[2]) * (2.4278359331292623))) + ((input[3]) * (2.346931069336734))]; +} diff --git a/generated_code_examples/javascript/classification/random_forest.js b/generated_code_examples/javascript/classification/random_forest.js new file mode 100644 index 00000000..b1bd61b6 --- /dev/null +++ b/generated_code_examples/javascript/classification/random_forest.js @@ -0,0 +1,53 @@ +function score(input) { + var var0; + if ((input[3]) <= (0.8)) { + var0 = [1.0, 0.0, 0.0]; + } else { + if ((input[2]) <= (4.8500004)) { + var0 = [0.0, 0.9795918367346939, 0.02040816326530612]; + } else { + if ((input[3]) <= (1.75)) { + if ((input[3]) <= (1.6500001)) { + var0 = [0.0, 0.25, 0.75]; + } else { + var0 = [0.0, 1.0, 0.0]; + } + } else { + var0 = [0.0, 0.0, 1.0]; + } + } + } + var var1; + if ((input[3]) <= (0.8)) { + var1 = [1.0, 0.0, 0.0]; + } else { + if ((input[0]) <= (6.05)) { + if ((input[2]) <= (4.9)) { + var1 = [0.0, 0.9032258064516129, 0.0967741935483871]; + } else { + var1 = [0.0, 0.0, 1.0]; + } + } else { + if ((input[3]) <= (1.75)) { + var1 = [0.0, 0.8, 0.2]; + } else { + var1 = [0.0, 0.0, 1.0]; + } + } + } + return addVectors(mulVectorNumber(var0, 0.5), mulVectorNumber(var1, 0.5)); +} +function addVectors(v1, v2) { + let result = new Array(v1.length); + for (let i = 0; i < v1.length; i++) { + result[i] = v1[i] + v2[i]; + } + return result; +} +function mulVectorNumber(v1, num) { + let result = new Array(v1.length); + for (let i = 0; i < v1.length; i++) { + result[i] = v1[i] * num; + } + return result; +} diff --git a/generated_code_examples/javascript/classification/svm.js b/generated_code_examples/javascript/classification/svm.js new file mode 100644 index 00000000..6076de9e --- /dev/null +++ b/generated_code_examples/javascript/classification/svm.js @@ -0,0 +1,69 @@ +function score(input) { + var var0; + var0 = (0) - (0.25); + var var1; + var1 = Math.exp((var0) * ((((Math.pow((5.4) - (input[0]), 2)) + (Math.pow((3.0) - (input[1]), 2))) + (Math.pow((4.5) - (input[2]), 2))) + (Math.pow((1.5) - (input[3]), 2)))); + var var2; + var2 = Math.exp((var0) * ((((Math.pow((6.2) - (input[0]), 2)) + (Math.pow((2.2) - (input[1]), 2))) + (Math.pow((4.5) - (input[2]), 2))) + (Math.pow((1.5) - (input[3]), 2)))); + var var3; + var3 = Math.exp((var0) * ((((Math.pow((5.0) - (input[0]), 2)) + (Math.pow((2.3) - (input[1]), 2))) + (Math.pow((3.3) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2)))); + var var4; + var4 = Math.exp((var0) * ((((Math.pow((5.9) - (input[0]), 2)) + (Math.pow((3.2) - (input[1]), 2))) + (Math.pow((4.8) - (input[2]), 2))) + (Math.pow((1.8) - (input[3]), 2)))); + var var5; + var5 = Math.exp((var0) * ((((Math.pow((5.0) - (input[0]), 2)) + (Math.pow((2.0) - (input[1]), 2))) + (Math.pow((3.5) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2)))); + var var6; + var6 = Math.exp((var0) * ((((Math.pow((6.7) - (input[0]), 2)) + (Math.pow((3.0) - (input[1]), 2))) + (Math.pow((5.0) - (input[2]), 2))) + (Math.pow((1.7) - (input[3]), 2)))); + var var7; + var7 = Math.exp((var0) * ((((Math.pow((7.0) - (input[0]), 2)) + (Math.pow((3.2) - (input[1]), 2))) + (Math.pow((4.7) - (input[2]), 2))) + (Math.pow((1.4) - (input[3]), 2)))); + var var8; + var8 = Math.exp((var0) * ((((Math.pow((4.9) - (input[0]), 2)) + (Math.pow((2.4) - (input[1]), 2))) + (Math.pow((3.3) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2)))); + var var9; + var9 = Math.exp((var0) * ((((Math.pow((6.3) - (input[0]), 2)) + (Math.pow((2.5) - (input[1]), 2))) + (Math.pow((4.9) - (input[2]), 2))) + (Math.pow((1.5) - (input[3]), 2)))); + var var10; + var10 = Math.exp((var0) * ((((Math.pow((6.0) - (input[0]), 2)) + (Math.pow((2.7) - (input[1]), 2))) + (Math.pow((5.1) - (input[2]), 2))) + (Math.pow((1.6) - (input[3]), 2)))); + var var11; + var11 = Math.exp((var0) * ((((Math.pow((5.7) - (input[0]), 2)) + (Math.pow((2.6) - (input[1]), 2))) + (Math.pow((3.5) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2)))); + var var12; + var12 = Math.exp((var0) * ((((Math.pow((5.1) - (input[0]), 2)) + (Math.pow((3.8) - (input[1]), 2))) + (Math.pow((1.9) - (input[2]), 2))) + (Math.pow((0.4) - (input[3]), 2)))); + var var13; + var13 = Math.exp((var0) * ((((Math.pow((4.4) - (input[0]), 2)) + (Math.pow((2.9) - (input[1]), 2))) + (Math.pow((1.4) - (input[2]), 2))) + (Math.pow((0.2) - (input[3]), 2)))); + var var14; + var14 = Math.exp((var0) * ((((Math.pow((5.7) - (input[0]), 2)) + (Math.pow((4.4) - (input[1]), 2))) + (Math.pow((1.5) - (input[2]), 2))) + (Math.pow((0.4) - (input[3]), 2)))); + var var15; + var15 = Math.exp((var0) * ((((Math.pow((5.8) - (input[0]), 2)) + (Math.pow((4.0) - (input[1]), 2))) + (Math.pow((1.2) - (input[2]), 2))) + (Math.pow((0.2) - (input[3]), 2)))); + var var16; + var16 = Math.exp((var0) * ((((Math.pow((5.1) - (input[0]), 2)) + (Math.pow((3.3) - (input[1]), 2))) + (Math.pow((1.7) - (input[2]), 2))) + (Math.pow((0.5) - (input[3]), 2)))); + var var17; + var17 = Math.exp((var0) * ((((Math.pow((5.7) - (input[0]), 2)) + (Math.pow((3.8) - (input[1]), 2))) + (Math.pow((1.7) - (input[2]), 2))) + (Math.pow((0.3) - (input[3]), 2)))); + var var18; + var18 = Math.exp((var0) * ((((Math.pow((4.3) - (input[0]), 2)) + (Math.pow((3.0) - (input[1]), 2))) + (Math.pow((1.1) - (input[2]), 2))) + (Math.pow((0.1) - (input[3]), 2)))); + var var19; + var19 = Math.exp((var0) * ((((Math.pow((4.5) - (input[0]), 2)) + (Math.pow((2.3) - (input[1]), 2))) + (Math.pow((1.3) - (input[2]), 2))) + (Math.pow((0.3) - (input[3]), 2)))); + var var20; + var20 = Math.exp((var0) * ((((Math.pow((6.3) - (input[0]), 2)) + (Math.pow((2.7) - (input[1]), 2))) + (Math.pow((4.9) - (input[2]), 2))) + (Math.pow((1.8) - (input[3]), 2)))); + var var21; + var21 = Math.exp((var0) * ((((Math.pow((6.0) - (input[0]), 2)) + (Math.pow((3.0) - (input[1]), 2))) + (Math.pow((4.8) - (input[2]), 2))) + (Math.pow((1.8) - (input[3]), 2)))); + var var22; + var22 = Math.exp((var0) * ((((Math.pow((6.3) - (input[0]), 2)) + (Math.pow((2.8) - (input[1]), 2))) + (Math.pow((5.1) - (input[2]), 2))) + (Math.pow((1.5) - (input[3]), 2)))); + var var23; + var23 = Math.exp((var0) * ((((Math.pow((5.8) - (input[0]), 2)) + (Math.pow((2.8) - (input[1]), 2))) + (Math.pow((5.1) - (input[2]), 2))) + (Math.pow((2.4) - (input[3]), 2)))); + var var24; + var24 = Math.exp((var0) * ((((Math.pow((6.1) - (input[0]), 2)) + (Math.pow((3.0) - (input[1]), 2))) + (Math.pow((4.9) - (input[2]), 2))) + (Math.pow((1.8) - (input[3]), 2)))); + var var25; + var25 = Math.exp((var0) * ((((Math.pow((7.7) - (input[0]), 2)) + (Math.pow((2.6) - (input[1]), 2))) + (Math.pow((6.9) - (input[2]), 2))) + (Math.pow((2.3) - (input[3]), 2)))); + var var26; + var26 = Math.exp((var0) * ((((Math.pow((6.9) - (input[0]), 2)) + (Math.pow((3.1) - (input[1]), 2))) + (Math.pow((5.1) - (input[2]), 2))) + (Math.pow((2.3) - (input[3]), 2)))); + var var27; + var27 = Math.exp((var0) * ((((Math.pow((6.3) - (input[0]), 2)) + (Math.pow((3.3) - (input[1]), 2))) + (Math.pow((6.0) - (input[2]), 2))) + (Math.pow((2.5) - (input[3]), 2)))); + var var28; + var28 = Math.exp((var0) * ((((Math.pow((4.9) - (input[0]), 2)) + (Math.pow((2.5) - (input[1]), 2))) + (Math.pow((4.5) - (input[2]), 2))) + (Math.pow((1.7) - (input[3]), 2)))); + var var29; + var29 = Math.exp((var0) * ((((Math.pow((6.0) - (input[0]), 2)) + (Math.pow((2.2) - (input[1]), 2))) + (Math.pow((5.0) - (input[2]), 2))) + (Math.pow((1.5) - (input[3]), 2)))); + var var30; + var30 = Math.exp((var0) * ((((Math.pow((7.9) - (input[0]), 2)) + (Math.pow((3.8) - (input[1]), 2))) + (Math.pow((6.4) - (input[2]), 2))) + (Math.pow((2.0) - (input[3]), 2)))); + var var31; + var31 = Math.exp((var0) * ((((Math.pow((7.2) - (input[0]), 2)) + (Math.pow((3.0) - (input[1]), 2))) + (Math.pow((5.8) - (input[2]), 2))) + (Math.pow((1.6) - (input[3]), 2)))); + var var32; + var32 = Math.exp((var0) * ((((Math.pow((7.7) - (input[0]), 2)) + (Math.pow((3.8) - (input[1]), 2))) + (Math.pow((6.7) - (input[2]), 2))) + (Math.pow((2.2) - (input[3]), 2)))); + return [(((((((((((((((((((-0.08359187780790468) + ((var1) * (-0.0))) + ((var2) * (-0.0))) + ((var3) * (-0.4393498355605194))) + ((var4) * (-0.009465620856664334))) + ((var5) * (-0.16223369966927))) + ((var6) * (-0.26861888775075243))) + ((var7) * (-0.4393498355605194))) + ((var8) * (-0.4393498355605194))) + ((var9) * (-0.0))) + ((var10) * (-0.0))) + ((var11) * (-0.19673905328606292))) + ((var12) * (0.3340655283922188))) + ((var13) * (0.3435087305152051))) + ((var14) * (0.4393498355605194))) + ((var15) * (0.0))) + ((var16) * (0.28614124535416424))) + ((var17) * (0.11269159286168087))) + ((var18) * (0.0))) + ((var19) * (0.4393498355605194)), (((((((((((((((((((((-0.18563912331454907) + ((var20) * (-0.0))) + ((var21) * (-0.06014273244194299))) + ((var22) * (-0.0))) + ((var23) * (-0.031132453078851926))) + ((var24) * (-0.0))) + ((var25) * (-0.3893079321588921))) + ((var26) * (-0.06738007627290196))) + ((var27) * (-0.1225075748937126))) + ((var28) * (-0.3893079321588921))) + ((var29) * (-0.29402231709614085))) + ((var30) * (-0.3893079321588921))) + ((var31) * (-0.0))) + ((var32) * (-0.028242141062729226))) + ((var12) * (0.16634667752431267))) + ((var13) * (0.047772685163074764))) + ((var14) * (0.3893079321588921))) + ((var15) * (0.3893079321588921))) + ((var16) * (0.0))) + ((var17) * (0.0))) + ((var18) * (0.3893079321588921))) + ((var19) * (0.3893079321588921)), ((((((((((((((((((((((((0.5566649875797668) + ((var20) * (-25.563066587228416))) + ((var21) * (-38.35628154976547))) + ((var22) * (-38.35628154976547))) + ((var23) * (-0.0))) + ((var24) * (-38.35628154976547))) + ((var25) * (-0.0))) + ((var26) * (-0.0))) + ((var27) * (-0.0))) + ((var28) * (-6.2260303727828745))) + ((var29) * (-18.42781911624364))) + ((var30) * (-0.14775026537286423))) + ((var31) * (-7.169755983020096))) + ((var32) * (-0.0))) + ((var1) * (12.612328267927264))) + ((var2) * (6.565812506955159))) + ((var3) * (0.0))) + ((var4) * (38.35628154976547))) + ((var5) * (0.0))) + ((var6) * (38.35628154976547))) + ((var7) * (0.0))) + ((var8) * (0.0))) + ((var9) * (38.35628154976547))) + ((var10) * (38.35628154976547))) + ((var11) * (0.0))]; +} diff --git a/generated_code_examples/javascript/classification/xgboost.js b/generated_code_examples/javascript/classification/xgboost.js new file mode 100644 index 00000000..b944668b --- /dev/null +++ b/generated_code_examples/javascript/classification/xgboost.js @@ -0,0 +1,71 @@ +function score(input) { + var var0; + if ((input[2]) >= (2.5999999)) { + var0 = -0.0731707439; + } else { + var0 = 0.142857149; + } + var var1; + if ((input[2]) >= (2.5999999)) { + var1 = -0.0705206916; + } else { + var1 = 0.12477719; + } + var var2; + var2 = Math.exp(((0.5) + (var0)) + (var1)); + var var3; + if ((input[2]) >= (2.5999999)) { + if ((input[2]) >= (4.85000038)) { + var3 = -0.0578680299; + } else { + var3 = 0.132596686; + } + } else { + var3 = -0.0714285821; + } + var var4; + if ((input[2]) >= (2.5999999)) { + if ((input[2]) >= (4.85000038)) { + var4 = -0.0552999191; + } else { + var4 = 0.116139404; + } + } else { + var4 = -0.0687687024; + } + var var5; + var5 = Math.exp(((0.5) + (var3)) + (var4)); + var var6; + if ((input[2]) >= (4.85000038)) { + if ((input[3]) >= (1.75)) { + var6 = 0.142011836; + } else { + var6 = 0.0405405387; + } + } else { + if ((input[3]) >= (1.6500001)) { + var6 = 0.0428571403; + } else { + var6 = -0.0730659068; + } + } + var var7; + if ((input[2]) >= (4.85000038)) { + if ((input[3]) >= (1.75)) { + var7 = 0.124653712; + } else { + var7 = 0.035562478; + } + } else { + if ((input[3]) >= (1.6500001)) { + var7 = 0.0425687581; + } else { + var7 = -0.0704230517; + } + } + var var8; + var8 = Math.exp(((0.5) + (var6)) + (var7)); + var var9; + var9 = ((var2) + (var5)) + (var8); + return [(var2) / (var9), (var5) / (var9), (var8) / (var9)]; +} diff --git a/generated_code_examples/javascript/regression/decision_tree.js b/generated_code_examples/javascript/regression/decision_tree.js new file mode 100644 index 00000000..c2456faf --- /dev/null +++ b/generated_code_examples/javascript/regression/decision_tree.js @@ -0,0 +1,21 @@ +function score(input) { + var var0; + if ((input[5]) <= (6.941)) { + if ((input[12]) <= (14.395)) { + if ((input[7]) <= (1.43365)) { + var0 = 45.58; + } else { + var0 = 22.865022421524642; + } + } else { + var0 = 14.924358974358983; + } + } else { + if ((input[5]) <= (7.4370003)) { + var0 = 32.09534883720931; + } else { + var0 = 45.275; + } + } + return var0; +} diff --git a/generated_code_examples/javascript/regression/lightgbm.js b/generated_code_examples/javascript/regression/lightgbm.js new file mode 100644 index 00000000..bb714b50 --- /dev/null +++ b/generated_code_examples/javascript/regression/lightgbm.js @@ -0,0 +1,31 @@ +function score(input) { + var var0; + if ((input[5]) > (6.8455)) { + if ((input[5]) > (7.437)) { + var0 = 24.906664851995615; + } else { + var0 = 23.513674700555555; + } + } else { + if ((input[12]) > (14.395000000000001)) { + var0 = 21.863487452747595; + } else { + var0 = 22.70305627629392; + } + } + var var1; + if ((input[12]) > (9.63)) { + if ((input[12]) > (19.830000000000002)) { + var1 = -0.9644646678713786; + } else { + var1 = -0.30629733662250097; + } + } else { + if ((input[5]) > (7.437)) { + var1 = 2.0368334157126293; + } else { + var1 = 0.4576204330349962; + } + } + return ((0) + (var0)) + (var1); +} diff --git a/generated_code_examples/javascript/regression/linear.js b/generated_code_examples/javascript/regression/linear.js new file mode 100644 index 00000000..9d83a2ca --- /dev/null +++ b/generated_code_examples/javascript/regression/linear.js @@ -0,0 +1,3 @@ +function score(input) { + return (((((((((((((36.006810733650326) + ((input[0]) * (-0.10081655845910455))) + ((input[1]) * (0.044035569560798626))) + ((input[2]) * (0.030804434213339508))) + ((input[3]) * (2.9326736094672414))) + ((input[4]) * (-17.093360132148693))) + ((input[5]) * (3.7450682208635504))) + ((input[6]) * (0.0033774353698582506))) + ((input[7]) * (-1.4348015681660866))) + ((input[8]) * (0.2901581119428326))) + ((input[9]) * (-0.011463487956327852))) + ((input[10]) * (-0.9500012437313152))) + ((input[11]) * (0.010374330909981539))) + ((input[12]) * (-0.571389044929473)); +} diff --git a/generated_code_examples/javascript/regression/random_forest.js b/generated_code_examples/javascript/regression/random_forest.js new file mode 100644 index 00000000..351c1ce5 --- /dev/null +++ b/generated_code_examples/javascript/regression/random_forest.js @@ -0,0 +1,39 @@ +function score(input) { + var var0; + if ((input[5]) <= (6.92)) { + if ((input[12]) <= (14.3)) { + if ((input[7]) <= (1.47415)) { + var0 = 50.0; + } else { + var0 = 23.203669724770638; + } + } else { + var0 = 15.177333333333326; + } + } else { + if ((input[5]) <= (7.4370003)) { + var0 = 32.92407407407408; + } else { + var0 = 45.04827586206897; + } + } + var var1; + if ((input[12]) <= (9.725)) { + if ((input[5]) <= (7.4525)) { + if ((input[5]) <= (6.7539997)) { + var1 = 24.805; + } else { + var1 = 32.55238095238095; + } + } else { + var1 = 47.88333333333334; + } + } else { + if ((input[12]) <= (15.0)) { + var1 = 20.52100840336134; + } else { + var1 = 14.718709677419358; + } + } + return ((var0) * (0.5)) + ((var1) * (0.5)); +} diff --git a/generated_code_examples/javascript/regression/svm.js b/generated_code_examples/javascript/regression/svm.js new file mode 100644 index 00000000..1ed7dfd2 --- /dev/null +++ b/generated_code_examples/javascript/regression/svm.js @@ -0,0 +1,5 @@ +function score(input) { + var var0; + var0 = (0) - (0.07692307692307693); + return ((((((((((((((((((((((((((((((((((((((((((((((((((((27.02162490523095) + ((Math.exp((var0) * (((((((((((((Math.pow((25.9406) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.679) - (input[4]), 2))) + (Math.pow((5.304) - (input[5]), 2))) + (Math.pow((89.1) - (input[6]), 2))) + (Math.pow((1.6475) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((127.36) - (input[11]), 2))) + (Math.pow((26.64) - (input[12]), 2))))) * (-0.11849528386764518))) + ((Math.exp((var0) * (((((((((((((Math.pow((6.53876) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2))) + (Math.pow((0.631) - (input[4]), 2))) + (Math.pow((7.016) - (input[5]), 2))) + (Math.pow((97.5) - (input[6]), 2))) + (Math.pow((1.2024) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((392.05) - (input[11]), 2))) + (Math.pow((2.96) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((22.5971) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.7) - (input[4]), 2))) + (Math.pow((5.0) - (input[5]), 2))) + (Math.pow((89.5) - (input[6]), 2))) + (Math.pow((1.5184) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((396.9) - (input[11]), 2))) + (Math.pow((31.99) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((45.7461) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.693) - (input[4]), 2))) + (Math.pow((4.519) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.6582) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((88.27) - (input[11]), 2))) + (Math.pow((36.98) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((11.8123) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.718) - (input[4]), 2))) + (Math.pow((6.824) - (input[5]), 2))) + (Math.pow((76.5) - (input[6]), 2))) + (Math.pow((1.794) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((48.45) - (input[11]), 2))) + (Math.pow((22.74) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.08187) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((2.89) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.445) - (input[4]), 2))) + (Math.pow((7.82) - (input[5]), 2))) + (Math.pow((36.9) - (input[6]), 2))) + (Math.pow((3.4952) - (input[7]), 2))) + (Math.pow((2.0) - (input[8]), 2))) + (Math.pow((276.0) - (input[9]), 2))) + (Math.pow((18.0) - (input[10]), 2))) + (Math.pow((393.53) - (input[11]), 2))) + (Math.pow((3.57) - (input[12]), 2))))) * (0.2750000000382897))) + ((Math.exp((var0) * (((((((((((((Math.pow((7.67202) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.693) - (input[4]), 2))) + (Math.pow((5.747) - (input[5]), 2))) + (Math.pow((98.9) - (input[6]), 2))) + (Math.pow((1.6334) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((393.1) - (input[11]), 2))) + (Math.pow((19.92) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((1.46336) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((19.58) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.605) - (input[4]), 2))) + (Math.pow((7.489) - (input[5]), 2))) + (Math.pow((90.8) - (input[6]), 2))) + (Math.pow((1.9709) - (input[7]), 2))) + (Math.pow((5.0) - (input[8]), 2))) + (Math.pow((403.0) - (input[9]), 2))) + (Math.pow((14.7) - (input[10]), 2))) + (Math.pow((374.43) - (input[11]), 2))) + (Math.pow((1.73) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((20.0849) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.7) - (input[4]), 2))) + (Math.pow((4.368) - (input[5]), 2))) + (Math.pow((91.2) - (input[6]), 2))) + (Math.pow((1.4395) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((285.83) - (input[11]), 2))) + (Math.pow((30.63) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((1.83377) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((19.58) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2))) + (Math.pow((0.605) - (input[4]), 2))) + (Math.pow((7.802) - (input[5]), 2))) + (Math.pow((98.2) - (input[6]), 2))) + (Math.pow((2.0407) - (input[7]), 2))) + (Math.pow((5.0) - (input[8]), 2))) + (Math.pow((403.0) - (input[9]), 2))) + (Math.pow((14.7) - (input[10]), 2))) + (Math.pow((389.61) - (input[11]), 2))) + (Math.pow((1.92) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((73.5341) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.679) - (input[4]), 2))) + (Math.pow((5.957) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.8026) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((16.45) - (input[11]), 2))) + (Math.pow((20.62) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.33147) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((6.2) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.507) - (input[4]), 2))) + (Math.pow((8.247) - (input[5]), 2))) + (Math.pow((70.4) - (input[6]), 2))) + (Math.pow((3.6519) - (input[7]), 2))) + (Math.pow((8.0) - (input[8]), 2))) + (Math.pow((307.0) - (input[9]), 2))) + (Math.pow((17.4) - (input[10]), 2))) + (Math.pow((378.95) - (input[11]), 2))) + (Math.pow((3.95) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((25.0461) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.693) - (input[4]), 2))) + (Math.pow((5.987) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.5888) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((396.9) - (input[11]), 2))) + (Math.pow((26.77) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.57834) - (input[0]), 2)) + (Math.pow((20.0) - (input[1]), 2))) + (Math.pow((3.97) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.575) - (input[4]), 2))) + (Math.pow((8.297) - (input[5]), 2))) + (Math.pow((67.0) - (input[6]), 2))) + (Math.pow((2.4216) - (input[7]), 2))) + (Math.pow((5.0) - (input[8]), 2))) + (Math.pow((264.0) - (input[9]), 2))) + (Math.pow((13.0) - (input[10]), 2))) + (Math.pow((384.54) - (input[11]), 2))) + (Math.pow((7.44) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((16.8118) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.7) - (input[4]), 2))) + (Math.pow((5.277) - (input[5]), 2))) + (Math.pow((98.1) - (input[6]), 2))) + (Math.pow((1.4261) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((396.9) - (input[11]), 2))) + (Math.pow((30.81) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.31533) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((6.2) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.504) - (input[4]), 2))) + (Math.pow((8.266) - (input[5]), 2))) + (Math.pow((78.3) - (input[6]), 2))) + (Math.pow((2.8944) - (input[7]), 2))) + (Math.pow((8.0) - (input[8]), 2))) + (Math.pow((307.0) - (input[9]), 2))) + (Math.pow((17.4) - (input[10]), 2))) + (Math.pow((385.05) - (input[11]), 2))) + (Math.pow((4.14) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((67.9208) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.693) - (input[4]), 2))) + (Math.pow((5.683) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.4254) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((384.97) - (input[11]), 2))) + (Math.pow((22.98) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.18337) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((27.74) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.609) - (input[4]), 2))) + (Math.pow((5.414) - (input[5]), 2))) + (Math.pow((98.3) - (input[6]), 2))) + (Math.pow((1.7554) - (input[7]), 2))) + (Math.pow((4.0) - (input[8]), 2))) + (Math.pow((711.0) - (input[9]), 2))) + (Math.pow((20.1) - (input[10]), 2))) + (Math.pow((344.05) - (input[11]), 2))) + (Math.pow((23.97) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((14.3337) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.7) - (input[4]), 2))) + (Math.pow((4.88) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.5895) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((372.92) - (input[11]), 2))) + (Math.pow((30.62) - (input[12]), 2))))) * (-0.3179880503820858))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.20746) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((27.74) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.609) - (input[4]), 2))) + (Math.pow((5.093) - (input[5]), 2))) + (Math.pow((98.0) - (input[6]), 2))) + (Math.pow((1.8226) - (input[7]), 2))) + (Math.pow((4.0) - (input[8]), 2))) + (Math.pow((711.0) - (input[9]), 2))) + (Math.pow((20.1) - (input[10]), 2))) + (Math.pow((318.43) - (input[11]), 2))) + (Math.pow((29.68) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((41.5292) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.693) - (input[4]), 2))) + (Math.pow((5.531) - (input[5]), 2))) + (Math.pow((85.4) - (input[6]), 2))) + (Math.pow((1.6074) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((329.46) - (input[11]), 2))) + (Math.pow((27.38) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((1.51902) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((19.58) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2))) + (Math.pow((0.605) - (input[4]), 2))) + (Math.pow((8.375) - (input[5]), 2))) + (Math.pow((93.9) - (input[6]), 2))) + (Math.pow((2.162) - (input[7]), 2))) + (Math.pow((5.0) - (input[8]), 2))) + (Math.pow((403.0) - (input[9]), 2))) + (Math.pow((14.7) - (input[10]), 2))) + (Math.pow((388.45) - (input[11]), 2))) + (Math.pow((3.32) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((11.5779) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.7) - (input[4]), 2))) + (Math.pow((5.036) - (input[5]), 2))) + (Math.pow((97.0) - (input[6]), 2))) + (Math.pow((1.77) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((396.9) - (input[11]), 2))) + (Math.pow((25.68) - (input[12]), 2))))) * (-0.7698794401926943))) + ((Math.exp((var0) * (((((((((((((Math.pow((14.2362) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.693) - (input[4]), 2))) + (Math.pow((6.343) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.5741) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((396.9) - (input[11]), 2))) + (Math.pow((20.32) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((9.2323) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.631) - (input[4]), 2))) + (Math.pow((6.216) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.1691) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((366.15) - (input[11]), 2))) + (Math.pow((9.53) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((9.91655) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.693) - (input[4]), 2))) + (Math.pow((5.852) - (input[5]), 2))) + (Math.pow((77.8) - (input[6]), 2))) + (Math.pow((1.5004) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((338.16) - (input[11]), 2))) + (Math.pow((29.97) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((22.0511) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.74) - (input[4]), 2))) + (Math.pow((5.818) - (input[5]), 2))) + (Math.pow((92.4) - (input[6]), 2))) + (Math.pow((1.8662) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((391.45) - (input[11]), 2))) + (Math.pow((22.11) - (input[12]), 2))))) * (-0.017541052270521836))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.61154) - (input[0]), 2)) + (Math.pow((20.0) - (input[1]), 2))) + (Math.pow((3.97) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.647) - (input[4]), 2))) + (Math.pow((8.704) - (input[5]), 2))) + (Math.pow((86.9) - (input[6]), 2))) + (Math.pow((1.801) - (input[7]), 2))) + (Math.pow((5.0) - (input[8]), 2))) + (Math.pow((264.0) - (input[9]), 2))) + (Math.pow((13.0) - (input[10]), 2))) + (Math.pow((389.7) - (input[11]), 2))) + (Math.pow((5.12) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((10.8342) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.679) - (input[4]), 2))) + (Math.pow((6.782) - (input[5]), 2))) + (Math.pow((90.8) - (input[6]), 2))) + (Math.pow((1.8195) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((21.57) - (input[11]), 2))) + (Math.pow((25.79) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((15.8603) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.679) - (input[4]), 2))) + (Math.pow((5.896) - (input[5]), 2))) + (Math.pow((95.4) - (input[6]), 2))) + (Math.pow((1.9096) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((7.68) - (input[11]), 2))) + (Math.pow((24.39) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((17.8667) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.671) - (input[4]), 2))) + (Math.pow((6.223) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.3861) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((393.74) - (input[11]), 2))) + (Math.pow((21.78) - (input[12]), 2))))) * (-0.17127153707291753))) + ((Math.exp((var0) * (((((((((((((Math.pow((8.26725) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2))) + (Math.pow((0.668) - (input[4]), 2))) + (Math.pow((5.875) - (input[5]), 2))) + (Math.pow((89.6) - (input[6]), 2))) + (Math.pow((1.1296) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((347.88) - (input[11]), 2))) + (Math.pow((8.88) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.52693) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((6.2) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.504) - (input[4]), 2))) + (Math.pow((8.725) - (input[5]), 2))) + (Math.pow((83.0) - (input[6]), 2))) + (Math.pow((2.8944) - (input[7]), 2))) + (Math.pow((8.0) - (input[8]), 2))) + (Math.pow((307.0) - (input[9]), 2))) + (Math.pow((17.4) - (input[10]), 2))) + (Math.pow((382.0) - (input[11]), 2))) + (Math.pow((4.63) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.0351) - (input[0]), 2)) + (Math.pow((95.0) - (input[1]), 2))) + (Math.pow((2.68) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.4161) - (input[4]), 2))) + (Math.pow((7.853) - (input[5]), 2))) + (Math.pow((33.2) - (input[6]), 2))) + (Math.pow((5.118) - (input[7]), 2))) + (Math.pow((4.0) - (input[8]), 2))) + (Math.pow((224.0) - (input[9]), 2))) + (Math.pow((14.7) - (input[10]), 2))) + (Math.pow((392.78) - (input[11]), 2))) + (Math.pow((3.81) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((12.2472) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.584) - (input[4]), 2))) + (Math.pow((5.837) - (input[5]), 2))) + (Math.pow((59.7) - (input[6]), 2))) + (Math.pow((1.9976) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((24.65) - (input[11]), 2))) + (Math.pow((15.69) - (input[12]), 2))))) * (-0.31798805038208666))) + ((Math.exp((var0) * (((((((((((((Math.pow((14.4208) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.74) - (input[4]), 2))) + (Math.pow((6.461) - (input[5]), 2))) + (Math.pow((93.3) - (input[6]), 2))) + (Math.pow((2.0026) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((27.49) - (input[11]), 2))) + (Math.pow((18.05) - (input[12]), 2))))) * (-0.9183413019645936))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.29819) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((6.2) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.504) - (input[4]), 2))) + (Math.pow((7.686) - (input[5]), 2))) + (Math.pow((17.0) - (input[6]), 2))) + (Math.pow((3.3751) - (input[7]), 2))) + (Math.pow((8.0) - (input[8]), 2))) + (Math.pow((307.0) - (input[9]), 2))) + (Math.pow((17.4) - (input[10]), 2))) + (Math.pow((377.51) - (input[11]), 2))) + (Math.pow((3.92) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((38.3518) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.693) - (input[4]), 2))) + (Math.pow((5.453) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.4896) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((396.9) - (input[11]), 2))) + (Math.pow((30.59) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.06129) - (input[0]), 2)) + (Math.pow((20.0) - (input[1]), 2))) + (Math.pow((3.33) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2))) + (Math.pow((0.4429) - (input[4]), 2))) + (Math.pow((7.645) - (input[5]), 2))) + (Math.pow((49.7) - (input[6]), 2))) + (Math.pow((5.2119) - (input[7]), 2))) + (Math.pow((5.0) - (input[8]), 2))) + (Math.pow((216.0) - (input[9]), 2))) + (Math.pow((14.9) - (input[10]), 2))) + (Math.pow((377.07) - (input[11]), 2))) + (Math.pow((3.01) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((88.9762) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.671) - (input[4]), 2))) + (Math.pow((6.968) - (input[5]), 2))) + (Math.pow((91.9) - (input[6]), 2))) + (Math.pow((1.4165) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((396.9) - (input[11]), 2))) + (Math.pow((17.21) - (input[12]), 2))))) * (-0.11849528386764341))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.05602) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((2.46) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.488) - (input[4]), 2))) + (Math.pow((7.831) - (input[5]), 2))) + (Math.pow((53.6) - (input[6]), 2))) + (Math.pow((3.1992) - (input[7]), 2))) + (Math.pow((3.0) - (input[8]), 2))) + (Math.pow((193.0) - (input[9]), 2))) + (Math.pow((17.8) - (input[10]), 2))) + (Math.pow((392.63) - (input[11]), 2))) + (Math.pow((4.45) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.01501) - (input[0]), 2)) + (Math.pow((90.0) - (input[1]), 2))) + (Math.pow((1.21) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2))) + (Math.pow((0.401) - (input[4]), 2))) + (Math.pow((7.923) - (input[5]), 2))) + (Math.pow((24.8) - (input[6]), 2))) + (Math.pow((5.885) - (input[7]), 2))) + (Math.pow((1.0) - (input[8]), 2))) + (Math.pow((198.0) - (input[9]), 2))) + (Math.pow((13.6) - (input[10]), 2))) + (Math.pow((395.52) - (input[11]), 2))) + (Math.pow((3.16) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.02009) - (input[0]), 2)) + (Math.pow((95.0) - (input[1]), 2))) + (Math.pow((2.68) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.4161) - (input[4]), 2))) + (Math.pow((8.034) - (input[5]), 2))) + (Math.pow((31.9) - (input[6]), 2))) + (Math.pow((5.118) - (input[7]), 2))) + (Math.pow((4.0) - (input[8]), 2))) + (Math.pow((224.0) - (input[9]), 2))) + (Math.pow((14.7) - (input[10]), 2))) + (Math.pow((390.55) - (input[11]), 2))) + (Math.pow((2.88) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((15.1772) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.74) - (input[4]), 2))) + (Math.pow((6.152) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.9142) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((9.32) - (input[11]), 2))) + (Math.pow((26.45) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((18.0846) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.679) - (input[4]), 2))) + (Math.pow((6.434) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.8347) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((27.25) - (input[11]), 2))) + (Math.pow((29.05) - (input[12]), 2))))) * (-1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.01381) - (input[0]), 2)) + (Math.pow((80.0) - (input[1]), 2))) + (Math.pow((0.46) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.422) - (input[4]), 2))) + (Math.pow((7.875) - (input[5]), 2))) + (Math.pow((32.0) - (input[6]), 2))) + (Math.pow((5.6484) - (input[7]), 2))) + (Math.pow((4.0) - (input[8]), 2))) + (Math.pow((255.0) - (input[9]), 2))) + (Math.pow((14.4) - (input[10]), 2))) + (Math.pow((394.23) - (input[11]), 2))) + (Math.pow((2.97) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((5.66998) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((1.0) - (input[3]), 2))) + (Math.pow((0.631) - (input[4]), 2))) + (Math.pow((6.683) - (input[5]), 2))) + (Math.pow((96.8) - (input[6]), 2))) + (Math.pow((1.3567) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((375.33) - (input[11]), 2))) + (Math.pow((3.73) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.01538) - (input[0]), 2)) + (Math.pow((90.0) - (input[1]), 2))) + (Math.pow((3.75) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.394) - (input[4]), 2))) + (Math.pow((7.454) - (input[5]), 2))) + (Math.pow((34.2) - (input[6]), 2))) + (Math.pow((6.3361) - (input[7]), 2))) + (Math.pow((3.0) - (input[8]), 2))) + (Math.pow((244.0) - (input[9]), 2))) + (Math.pow((15.9) - (input[10]), 2))) + (Math.pow((386.34) - (input[11]), 2))) + (Math.pow((3.11) - (input[12]), 2))))) * (0.47499999996189857))) + ((Math.exp((var0) * (((((((((((((Math.pow((4.89822) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.631) - (input[4]), 2))) + (Math.pow((4.97) - (input[5]), 2))) + (Math.pow((100.0) - (input[6]), 2))) + (Math.pow((1.3325) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((375.52) - (input[11]), 2))) + (Math.pow((3.26) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((2.01019) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((19.58) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.605) - (input[4]), 2))) + (Math.pow((7.929) - (input[5]), 2))) + (Math.pow((96.2) - (input[6]), 2))) + (Math.pow((2.0459) - (input[7]), 2))) + (Math.pow((5.0) - (input[8]), 2))) + (Math.pow((403.0) - (input[9]), 2))) + (Math.pow((14.7) - (input[10]), 2))) + (Math.pow((369.3) - (input[11]), 2))) + (Math.pow((3.7) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((0.52014) - (input[0]), 2)) + (Math.pow((20.0) - (input[1]), 2))) + (Math.pow((3.97) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.647) - (input[4]), 2))) + (Math.pow((8.398) - (input[5]), 2))) + (Math.pow((91.5) - (input[6]), 2))) + (Math.pow((2.2885) - (input[7]), 2))) + (Math.pow((5.0) - (input[8]), 2))) + (Math.pow((264.0) - (input[9]), 2))) + (Math.pow((13.0) - (input[10]), 2))) + (Math.pow((386.86) - (input[11]), 2))) + (Math.pow((5.91) - (input[12]), 2))))) * (1.0))) + ((Math.exp((var0) * (((((((((((((Math.pow((9.33889) - (input[0]), 2)) + (Math.pow((0.0) - (input[1]), 2))) + (Math.pow((18.1) - (input[2]), 2))) + (Math.pow((0.0) - (input[3]), 2))) + (Math.pow((0.679) - (input[4]), 2))) + (Math.pow((6.38) - (input[5]), 2))) + (Math.pow((95.6) - (input[6]), 2))) + (Math.pow((1.9682) - (input[7]), 2))) + (Math.pow((24.0) - (input[8]), 2))) + (Math.pow((666.0) - (input[9]), 2))) + (Math.pow((20.2) - (input[10]), 2))) + (Math.pow((60.72) - (input[11]), 2))) + (Math.pow((24.08) - (input[12]), 2))))) * (-1.0)); +} diff --git a/generated_code_examples/javascript/regression/xgboost.js b/generated_code_examples/javascript/regression/xgboost.js new file mode 100644 index 00000000..883735bb --- /dev/null +++ b/generated_code_examples/javascript/regression/xgboost.js @@ -0,0 +1,31 @@ +function score(input) { + var var0; + if ((input[12]) >= (9.72500038)) { + if ((input[12]) >= (19.8299999)) { + var0 = 1.1551429; + } else { + var0 = 1.8613131; + } + } else { + if ((input[5]) >= (6.94099998)) { + var0 = 3.75848508; + } else { + var0 = 2.48056006; + } + } + var var1; + if ((input[12]) >= (7.68499994)) { + if ((input[12]) >= (15)) { + var1 = 1.24537706; + } else { + var1 = 1.92129695; + } + } else { + if ((input[5]) >= (7.43700027)) { + var1 = 3.96021533; + } else { + var1 = 2.51493931; + } + } + return ((0.5) + (var0)) + (var1); +} diff --git a/m2cgen/interpreters/javascript/code_generator.py b/m2cgen/interpreters/javascript/code_generator.py index 3442ee15..2c1726f9 100644 --- a/m2cgen/interpreters/javascript/code_generator.py +++ b/m2cgen/interpreters/javascript/code_generator.py @@ -9,7 +9,7 @@ def __init__(self, *args, **kwargs): def add_function_def(self, name, args): function_def = "function " + name + "(" - function_def += ",".join([n for is_vector, n in args]) + function_def += ",".join(args) function_def += ") {" self.add_code_line(function_def) self.increase_indent() diff --git a/m2cgen/interpreters/javascript/interpreter.py b/m2cgen/interpreters/javascript/interpreter.py index f807a880..68c2feb9 100644 --- a/m2cgen/interpreters/javascript/interpreter.py +++ b/m2cgen/interpreters/javascript/interpreter.py @@ -34,7 +34,7 @@ def interpret(self, expr): self._cg.reset_state() self._reset_reused_expr_cache() - args = [(True, self._feature_array_name)] + args = [self._feature_array_name] with self._cg.function_definition( name="score", diff --git a/tools/generate_code_examples.py b/tools/generate_code_examples.py index 4d003e53..6420740b 100644 --- a/tools/generate_code_examples.py +++ b/tools/generate_code_examples.py @@ -36,6 +36,7 @@ ("java", m2c.export_to_java, "java"), ("c", m2c.export_to_c, "c"), ("go", m2c.export_to_go, "go"), + ("javascript", m2c.export_to_javascript, "js"), ] EXAMPLE_MODELS = [