diff options
Diffstat (limited to 'examples/takagi-sugeno')
56 files changed, 8745 insertions, 6772 deletions
diff --git a/examples/takagi-sugeno/ObstacleAvoidance.R b/examples/takagi-sugeno/ObstacleAvoidance.R new file mode 100644 index 0000000..eb96813 --- /dev/null +++ b/examples/takagi-sugeno/ObstacleAvoidance.R @@ -0,0 +1,57 @@ +#Code automatically generated with fuzzylite 6.0. + +library(ggplot2); + +engine.name = "ObstacleAvoidance" +engine.fll = "Engine: ObstacleAvoidance +InputVariable: obstacle + enabled: true + range: 0.000 1.000 + lock-range: false + term: left Ramp 1.000 0.000 + term: right Ramp 0.000 1.000 +OutputVariable: tsSteer + enabled: true + range: 0.000 1.000 + lock-range: false + aggregation: Maximum + defuzzifier: WeightedAverage Automatic + default: nan + lock-previous: false + term: left Constant 0.333 + term: right Constant 0.666 +RuleBlock: takagiSugeno + enabled: true + conjunction: none + disjunction: none + implication: none + activation: General + rule: if obstacle is left then tsSteer is right + rule: if obstacle is right then tsSteer is left" + +engine.fldFile = "ObstacleAvoidance.fld" +if (require(data.table)) { + engine.df = data.table::fread(engine.fldFile, sep="auto", header="auto") +} else { + engine.df = read.table(engine.fldFile, header=TRUE) +} + +engine.plot.i1_o1 = ggplot(engine.df, aes(obstacle, tsSteer)) + + geom_line(aes(color=tsSteer), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + ggtitle("obstacle vs tsSteer") + +engine.plot.o1_i1 = ggplot(engine.df, aes(obstacle, tsSteer)) + + geom_line(aes(color=tsSteer), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + coord_flip() + + ggtitle("tsSteer vs obstacle") + +if (require(gridExtra)) { + engine.plots = arrangeGrob(engine.plot.i1_o1, engine.plot.o1_i1, ncol=2, top=engine.name) + ggsave(paste0(engine.name, ".pdf"), engine.plots) + if (require(grid)) { + grid.newpage() + grid.draw(engine.plots) + } +} diff --git a/examples/takagi-sugeno/ObstacleAvoidance.cpp b/examples/takagi-sugeno/ObstacleAvoidance.cpp new file mode 100644 index 0000000..32d6ba9 --- /dev/null +++ b/examples/takagi-sugeno/ObstacleAvoidance.cpp @@ -0,0 +1,49 @@ +#include <fl/Headers.h> + +int main(int argc, char** argv){ +//Code automatically generated with fuzzylite 6.0. + +using namespace fl; + +Engine* engine = new Engine; +engine->setName("ObstacleAvoidance"); +engine->setDescription(""); + +InputVariable* obstacle = new InputVariable; +obstacle->setName("obstacle"); +obstacle->setDescription(""); +obstacle->setEnabled(true); +obstacle->setRange(0.000, 1.000); +obstacle->setLockValueInRange(false); +obstacle->addTerm(new Ramp("left", 1.000, 0.000)); +obstacle->addTerm(new Ramp("right", 0.000, 1.000)); +engine->addInputVariable(obstacle); + +OutputVariable* tsSteer = new OutputVariable; +tsSteer->setName("tsSteer"); +tsSteer->setDescription(""); +tsSteer->setEnabled(true); +tsSteer->setRange(0.000, 1.000); +tsSteer->setLockValueInRange(false); +tsSteer->setAggregation(new Maximum); +tsSteer->setDefuzzifier(new WeightedAverage("Automatic")); +tsSteer->setDefaultValue(fl::nan); +tsSteer->setLockPreviousValue(false); +tsSteer->addTerm(new Constant("left", 0.333)); +tsSteer->addTerm(new Constant("right", 0.666)); +engine->addOutputVariable(tsSteer); + +RuleBlock* takagiSugeno = new RuleBlock; +takagiSugeno->setName("takagiSugeno"); +takagiSugeno->setDescription(""); +takagiSugeno->setEnabled(true); +takagiSugeno->setConjunction(fl::null); +takagiSugeno->setDisjunction(fl::null); +takagiSugeno->setImplication(fl::null); +takagiSugeno->setActivation(new General); +takagiSugeno->addRule(Rule::parse("if obstacle is left then tsSteer is right", engine)); +takagiSugeno->addRule(Rule::parse("if obstacle is right then tsSteer is left", engine)); +engine->addRuleBlock(takagiSugeno); + + +} diff --git a/examples/takagi-sugeno/ObstacleAvoidance.fcl b/examples/takagi-sugeno/ObstacleAvoidance.fcl new file mode 100644 index 0000000..fc4348b --- /dev/null +++ b/examples/takagi-sugeno/ObstacleAvoidance.fcl @@ -0,0 +1,33 @@ +//Code automatically generated with fuzzylite 6.0. + +FUNCTION_BLOCK ObstacleAvoidance + +VAR_INPUT + obstacle: REAL; +END_VAR + +VAR_OUTPUT + tsSteer: REAL; +END_VAR + +FUZZIFY obstacle + RANGE := (0.000 .. 1.000); + TERM left := Ramp 1.000 0.000; + TERM right := Ramp 0.000 1.000; +END_FUZZIFY + +DEFUZZIFY tsSteer + RANGE := (0.000 .. 1.000); + TERM left := 0.333; + TERM right := 0.666; + METHOD : COGS; + ACCU : MAX; + DEFAULT := nan; +END_DEFUZZIFY + +RULEBLOCK takagiSugeno + RULE 1 : if obstacle is left then tsSteer is right + RULE 2 : if obstacle is right then tsSteer is left +END_RULEBLOCK + +END_FUNCTION_BLOCK diff --git a/examples/takagi-sugeno/ObstacleAvoidance.fis b/examples/takagi-sugeno/ObstacleAvoidance.fis new file mode 100644 index 0000000..16c5791 --- /dev/null +++ b/examples/takagi-sugeno/ObstacleAvoidance.fis @@ -0,0 +1,32 @@ +#Code automatically generated with fuzzylite 6.0. + +[System] +Name='ObstacleAvoidance' +Type='sugeno' +Version=6.0 +NumInputs=1 +NumOutputs=1 +NumRules=2 +AndMethod='min' +OrMethod='max' +ImpMethod='min' +AggMethod='max' +DefuzzMethod='wtaver' + +[Input1] +Name='obstacle' +Range=[0.000 1.000] +NumMFs=2 +MF1='left':'rampmf',[1.000 0.000] +MF2='right':'rampmf',[0.000 1.000] + +[Output1] +Name='tsSteer' +Range=[0.000 1.000] +NumMFs=2 +MF1='left':'constant',[0.333] +MF2='right':'constant',[0.666] + +[Rules] +1.000 , 2.000 (1.000) : 1 +2.000 , 1.000 (1.000) : 1 diff --git a/examples/takagi-sugeno/ObstacleAvoidance.fld b/examples/takagi-sugeno/ObstacleAvoidance.fld new file mode 100644 index 0000000..00467f3 --- /dev/null +++ b/examples/takagi-sugeno/ObstacleAvoidance.fld @@ -0,0 +1,1025 @@ +obstacle tsSteer +0.000000000 0.666000000 +0.000977517 0.665674487 +0.001955034 0.665348974 +0.002932551 0.665023460 +0.003910068 0.664697947 +0.004887586 0.664372434 +0.005865103 0.664046921 +0.006842620 0.663721408 +0.007820137 0.663395894 +0.008797654 0.663070381 +0.009775171 0.662744868 +0.010752688 0.662419355 +0.011730205 0.662093842 +0.012707722 0.661768328 +0.013685239 0.661442815 +0.014662757 0.661117302 +0.015640274 0.660791789 +0.016617791 0.660466276 +0.017595308 0.660140762 +0.018572825 0.659815249 +0.019550342 0.659489736 +0.020527859 0.659164223 +0.021505376 0.658838710 +0.022482893 0.658513196 +0.023460411 0.658187683 +0.024437928 0.657862170 +0.025415445 0.657536657 +0.026392962 0.657211144 +0.027370479 0.656885630 +0.028347996 0.656560117 +0.029325513 0.656234604 +0.030303030 0.655909091 +0.031280547 0.655583578 +0.032258065 0.655258065 +0.033235582 0.654932551 +0.034213099 0.654607038 +0.035190616 0.654281525 +0.036168133 0.653956012 +0.037145650 0.653630499 +0.038123167 0.653304985 +0.039100684 0.652979472 +0.040078201 0.652653959 +0.041055718 0.652328446 +0.042033236 0.652002933 +0.043010753 0.651677419 +0.043988270 0.651351906 +0.044965787 0.651026393 +0.045943304 0.650700880 +0.046920821 0.650375367 +0.047898338 0.650049853 +0.048875855 0.649724340 +0.049853372 0.649398827 +0.050830890 0.649073314 +0.051808407 0.648747801 +0.052785924 0.648422287 +0.053763441 0.648096774 +0.054740958 0.647771261 +0.055718475 0.647445748 +0.056695992 0.647120235 +0.057673509 0.646794721 +0.058651026 0.646469208 +0.059628543 0.646143695 +0.060606061 0.645818182 +0.061583578 0.645492669 +0.062561095 0.645167155 +0.063538612 0.644841642 +0.064516129 0.644516129 +0.065493646 0.644190616 +0.066471163 0.643865103 +0.067448680 0.643539589 +0.068426197 0.643214076 +0.069403715 0.642888563 +0.070381232 0.642563050 +0.071358749 0.642237537 +0.072336266 0.641912023 +0.073313783 0.641586510 +0.074291300 0.641260997 +0.075268817 0.640935484 +0.076246334 0.640609971 +0.077223851 0.640284457 +0.078201369 0.639958944 +0.079178886 0.639633431 +0.080156403 0.639307918 +0.081133920 0.638982405 +0.082111437 0.638656891 +0.083088954 0.638331378 +0.084066471 0.638005865 +0.085043988 0.637680352 +0.086021505 0.637354839 +0.086999022 0.637029326 +0.087976540 0.636703812 +0.088954057 0.636378299 +0.089931574 0.636052786 +0.090909091 0.635727273 +0.091886608 0.635401760 +0.092864125 0.635076246 +0.093841642 0.634750733 +0.094819159 0.634425220 +0.095796676 0.634099707 +0.096774194 0.633774194 +0.097751711 0.633448680 +0.098729228 0.633123167 +0.099706745 0.632797654 +0.100684262 0.632472141 +0.101661779 0.632146628 +0.102639296 0.631821114 +0.103616813 0.631495601 +0.104594330 0.631170088 +0.105571848 0.630844575 +0.106549365 0.630519062 +0.107526882 0.630193548 +0.108504399 0.629868035 +0.109481916 0.629542522 +0.110459433 0.629217009 +0.111436950 0.628891496 +0.112414467 0.628565982 +0.113391984 0.628240469 +0.114369501 0.627914956 +0.115347019 0.627589443 +0.116324536 0.627263930 +0.117302053 0.626938416 +0.118279570 0.626612903 +0.119257087 0.626287390 +0.120234604 0.625961877 +0.121212121 0.625636364 +0.122189638 0.625310850 +0.123167155 0.624985337 +0.124144673 0.624659824 +0.125122190 0.624334311 +0.126099707 0.624008798 +0.127077224 0.623683284 +0.128054741 0.623357771 +0.129032258 0.623032258 +0.130009775 0.622706745 +0.130987292 0.622381232 +0.131964809 0.622055718 +0.132942326 0.621730205 +0.133919844 0.621404692 +0.134897361 0.621079179 +0.135874878 0.620753666 +0.136852395 0.620428152 +0.137829912 0.620102639 +0.138807429 0.619777126 +0.139784946 0.619451613 +0.140762463 0.619126100 +0.141739980 0.618800587 +0.142717498 0.618475073 +0.143695015 0.618149560 +0.144672532 0.617824047 +0.145650049 0.617498534 +0.146627566 0.617173021 +0.147605083 0.616847507 +0.148582600 0.616521994 +0.149560117 0.616196481 +0.150537634 0.615870968 +0.151515152 0.615545455 +0.152492669 0.615219941 +0.153470186 0.614894428 +0.154447703 0.614568915 +0.155425220 0.614243402 +0.156402737 0.613917889 +0.157380254 0.613592375 +0.158357771 0.613266862 +0.159335288 0.612941349 +0.160312805 0.612615836 +0.161290323 0.612290323 +0.162267840 0.611964809 +0.163245357 0.611639296 +0.164222874 0.611313783 +0.165200391 0.610988270 +0.166177908 0.610662757 +0.167155425 0.610337243 +0.168132942 0.610011730 +0.169110459 0.609686217 +0.170087977 0.609360704 +0.171065494 0.609035191 +0.172043011 0.608709677 +0.173020528 0.608384164 +0.173998045 0.608058651 +0.174975562 0.607733138 +0.175953079 0.607407625 +0.176930596 0.607082111 +0.177908113 0.606756598 +0.178885630 0.606431085 +0.179863148 0.606105572 +0.180840665 0.605780059 +0.181818182 0.605454545 +0.182795699 0.605129032 +0.183773216 0.604803519 +0.184750733 0.604478006 +0.185728250 0.604152493 +0.186705767 0.603826979 +0.187683284 0.603501466 +0.188660802 0.603175953 +0.189638319 0.602850440 +0.190615836 0.602524927 +0.191593353 0.602199413 +0.192570870 0.601873900 +0.193548387 0.601548387 +0.194525904 0.601222874 +0.195503421 0.600897361 +0.196480938 0.600571848 +0.197458456 0.600246334 +0.198435973 0.599920821 +0.199413490 0.599595308 +0.200391007 0.599269795 +0.201368524 0.598944282 +0.202346041 0.598618768 +0.203323558 0.598293255 +0.204301075 0.597967742 +0.205278592 0.597642229 +0.206256109 0.597316716 +0.207233627 0.596991202 +0.208211144 0.596665689 +0.209188661 0.596340176 +0.210166178 0.596014663 +0.211143695 0.595689150 +0.212121212 0.595363636 +0.213098729 0.595038123 +0.214076246 0.594712610 +0.215053763 0.594387097 +0.216031281 0.594061584 +0.217008798 0.593736070 +0.217986315 0.593410557 +0.218963832 0.593085044 +0.219941349 0.592759531 +0.220918866 0.592434018 +0.221896383 0.592108504 +0.222873900 0.591782991 +0.223851417 0.591457478 +0.224828935 0.591131965 +0.225806452 0.590806452 +0.226783969 0.590480938 +0.227761486 0.590155425 +0.228739003 0.589829912 +0.229716520 0.589504399 +0.230694037 0.589178886 +0.231671554 0.588853372 +0.232649071 0.588527859 +0.233626588 0.588202346 +0.234604106 0.587876833 +0.235581623 0.587551320 +0.236559140 0.587225806 +0.237536657 0.586900293 +0.238514174 0.586574780 +0.239491691 0.586249267 +0.240469208 0.585923754 +0.241446725 0.585598240 +0.242424242 0.585272727 +0.243401760 0.584947214 +0.244379277 0.584621701 +0.245356794 0.584296188 +0.246334311 0.583970674 +0.247311828 0.583645161 +0.248289345 0.583319648 +0.249266862 0.582994135 +0.250244379 0.582668622 +0.251221896 0.582343109 +0.252199413 0.582017595 +0.253176931 0.581692082 +0.254154448 0.581366569 +0.255131965 0.581041056 +0.256109482 0.580715543 +0.257086999 0.580390029 +0.258064516 0.580064516 +0.259042033 0.579739003 +0.260019550 0.579413490 +0.260997067 0.579087977 +0.261974585 0.578762463 +0.262952102 0.578436950 +0.263929619 0.578111437 +0.264907136 0.577785924 +0.265884653 0.577460411 +0.266862170 0.577134897 +0.267839687 0.576809384 +0.268817204 0.576483871 +0.269794721 0.576158358 +0.270772239 0.575832845 +0.271749756 0.575507331 +0.272727273 0.575181818 +0.273704790 0.574856305 +0.274682307 0.574530792 +0.275659824 0.574205279 +0.276637341 0.573879765 +0.277614858 0.573554252 +0.278592375 0.573228739 +0.279569892 0.572903226 +0.280547410 0.572577713 +0.281524927 0.572252199 +0.282502444 0.571926686 +0.283479961 0.571601173 +0.284457478 0.571275660 +0.285434995 0.570950147 +0.286412512 0.570624633 +0.287390029 0.570299120 +0.288367546 0.569973607 +0.289345064 0.569648094 +0.290322581 0.569322581 +0.291300098 0.568997067 +0.292277615 0.568671554 +0.293255132 0.568346041 +0.294232649 0.568020528 +0.295210166 0.567695015 +0.296187683 0.567369501 +0.297165200 0.567043988 +0.298142717 0.566718475 +0.299120235 0.566392962 +0.300097752 0.566067449 +0.301075269 0.565741935 +0.302052786 0.565416422 +0.303030303 0.565090909 +0.304007820 0.564765396 +0.304985337 0.564439883 +0.305962854 0.564114370 +0.306940371 0.563788856 +0.307917889 0.563463343 +0.308895406 0.563137830 +0.309872923 0.562812317 +0.310850440 0.562486804 +0.311827957 0.562161290 +0.312805474 0.561835777 +0.313782991 0.561510264 +0.314760508 0.561184751 +0.315738025 0.560859238 +0.316715543 0.560533724 +0.317693060 0.560208211 +0.318670577 0.559882698 +0.319648094 0.559557185 +0.320625611 0.559231672 +0.321603128 0.558906158 +0.322580645 0.558580645 +0.323558162 0.558255132 +0.324535679 0.557929619 +0.325513196 0.557604106 +0.326490714 0.557278592 +0.327468231 0.556953079 +0.328445748 0.556627566 +0.329423265 0.556302053 +0.330400782 0.555976540 +0.331378299 0.555651026 +0.332355816 0.555325513 +0.333333333 0.555000000 +0.334310850 0.554674487 +0.335288368 0.554348974 +0.336265885 0.554023460 +0.337243402 0.553697947 +0.338220919 0.553372434 +0.339198436 0.553046921 +0.340175953 0.552721408 +0.341153470 0.552395894 +0.342130987 0.552070381 +0.343108504 0.551744868 +0.344086022 0.551419355 +0.345063539 0.551093842 +0.346041056 0.550768328 +0.347018573 0.550442815 +0.347996090 0.550117302 +0.348973607 0.549791789 +0.349951124 0.549466276 +0.350928641 0.549140762 +0.351906158 0.548815249 +0.352883675 0.548489736 +0.353861193 0.548164223 +0.354838710 0.547838710 +0.355816227 0.547513196 +0.356793744 0.547187683 +0.357771261 0.546862170 +0.358748778 0.546536657 +0.359726295 0.546211144 +0.360703812 0.545885630 +0.361681329 0.545560117 +0.362658847 0.545234604 +0.363636364 0.544909091 +0.364613881 0.544583578 +0.365591398 0.544258065 +0.366568915 0.543932551 +0.367546432 0.543607038 +0.368523949 0.543281525 +0.369501466 0.542956012 +0.370478983 0.542630499 +0.371456500 0.542304985 +0.372434018 0.541979472 +0.373411535 0.541653959 +0.374389052 0.541328446 +0.375366569 0.541002933 +0.376344086 0.540677419 +0.377321603 0.540351906 +0.378299120 0.540026393 +0.379276637 0.539700880 +0.380254154 0.539375367 +0.381231672 0.539049853 +0.382209189 0.538724340 +0.383186706 0.538398827 +0.384164223 0.538073314 +0.385141740 0.537747801 +0.386119257 0.537422287 +0.387096774 0.537096774 +0.388074291 0.536771261 +0.389051808 0.536445748 +0.390029326 0.536120235 +0.391006843 0.535794721 +0.391984360 0.535469208 +0.392961877 0.535143695 +0.393939394 0.534818182 +0.394916911 0.534492669 +0.395894428 0.534167155 +0.396871945 0.533841642 +0.397849462 0.533516129 +0.398826979 0.533190616 +0.399804497 0.532865103 +0.400782014 0.532539589 +0.401759531 0.532214076 +0.402737048 0.531888563 +0.403714565 0.531563050 +0.404692082 0.531237537 +0.405669599 0.530912023 +0.406647116 0.530586510 +0.407624633 0.530260997 +0.408602151 0.529935484 +0.409579668 0.529609971 +0.410557185 0.529284457 +0.411534702 0.528958944 +0.412512219 0.528633431 +0.413489736 0.528307918 +0.414467253 0.527982405 +0.415444770 0.527656891 +0.416422287 0.527331378 +0.417399804 0.527005865 +0.418377322 0.526680352 +0.419354839 0.526354839 +0.420332356 0.526029326 +0.421309873 0.525703812 +0.422287390 0.525378299 +0.423264907 0.525052786 +0.424242424 0.524727273 +0.425219941 0.524401760 +0.426197458 0.524076246 +0.427174976 0.523750733 +0.428152493 0.523425220 +0.429130010 0.523099707 +0.430107527 0.522774194 +0.431085044 0.522448680 +0.432062561 0.522123167 +0.433040078 0.521797654 +0.434017595 0.521472141 +0.434995112 0.521146628 +0.435972630 0.520821114 +0.436950147 0.520495601 +0.437927664 0.520170088 +0.438905181 0.519844575 +0.439882698 0.519519062 +0.440860215 0.519193548 +0.441837732 0.518868035 +0.442815249 0.518542522 +0.443792766 0.518217009 +0.444770283 0.517891496 +0.445747801 0.517565982 +0.446725318 0.517240469 +0.447702835 0.516914956 +0.448680352 0.516589443 +0.449657869 0.516263930 +0.450635386 0.515938416 +0.451612903 0.515612903 +0.452590420 0.515287390 +0.453567937 0.514961877 +0.454545455 0.514636364 +0.455522972 0.514310850 +0.456500489 0.513985337 +0.457478006 0.513659824 +0.458455523 0.513334311 +0.459433040 0.513008798 +0.460410557 0.512683284 +0.461388074 0.512357771 +0.462365591 0.512032258 +0.463343109 0.511706745 +0.464320626 0.511381232 +0.465298143 0.511055718 +0.466275660 0.510730205 +0.467253177 0.510404692 +0.468230694 0.510079179 +0.469208211 0.509753666 +0.470185728 0.509428152 +0.471163245 0.509102639 +0.472140762 0.508777126 +0.473118280 0.508451613 +0.474095797 0.508126100 +0.475073314 0.507800587 +0.476050831 0.507475073 +0.477028348 0.507149560 +0.478005865 0.506824047 +0.478983382 0.506498534 +0.479960899 0.506173021 +0.480938416 0.505847507 +0.481915934 0.505521994 +0.482893451 0.505196481 +0.483870968 0.504870968 +0.484848485 0.504545455 +0.485826002 0.504219941 +0.486803519 0.503894428 +0.487781036 0.503568915 +0.488758553 0.503243402 +0.489736070 0.502917889 +0.490713587 0.502592375 +0.491691105 0.502266862 +0.492668622 0.501941349 +0.493646139 0.501615836 +0.494623656 0.501290323 +0.495601173 0.500964809 +0.496578690 0.500639296 +0.497556207 0.500313783 +0.498533724 0.499988270 +0.499511241 0.499662757 +0.500488759 0.499337243 +0.501466276 0.499011730 +0.502443793 0.498686217 +0.503421310 0.498360704 +0.504398827 0.498035191 +0.505376344 0.497709677 +0.506353861 0.497384164 +0.507331378 0.497058651 +0.508308895 0.496733138 +0.509286413 0.496407625 +0.510263930 0.496082111 +0.511241447 0.495756598 +0.512218964 0.495431085 +0.513196481 0.495105572 +0.514173998 0.494780059 +0.515151515 0.494454545 +0.516129032 0.494129032 +0.517106549 0.493803519 +0.518084066 0.493478006 +0.519061584 0.493152493 +0.520039101 0.492826979 +0.521016618 0.492501466 +0.521994135 0.492175953 +0.522971652 0.491850440 +0.523949169 0.491524927 +0.524926686 0.491199413 +0.525904203 0.490873900 +0.526881720 0.490548387 +0.527859238 0.490222874 +0.528836755 0.489897361 +0.529814272 0.489571848 +0.530791789 0.489246334 +0.531769306 0.488920821 +0.532746823 0.488595308 +0.533724340 0.488269795 +0.534701857 0.487944282 +0.535679374 0.487618768 +0.536656891 0.487293255 +0.537634409 0.486967742 +0.538611926 0.486642229 +0.539589443 0.486316716 +0.540566960 0.485991202 +0.541544477 0.485665689 +0.542521994 0.485340176 +0.543499511 0.485014663 +0.544477028 0.484689150 +0.545454545 0.484363636 +0.546432063 0.484038123 +0.547409580 0.483712610 +0.548387097 0.483387097 +0.549364614 0.483061584 +0.550342131 0.482736070 +0.551319648 0.482410557 +0.552297165 0.482085044 +0.553274682 0.481759531 +0.554252199 0.481434018 +0.555229717 0.481108504 +0.556207234 0.480782991 +0.557184751 0.480457478 +0.558162268 0.480131965 +0.559139785 0.479806452 +0.560117302 0.479480938 +0.561094819 0.479155425 +0.562072336 0.478829912 +0.563049853 0.478504399 +0.564027370 0.478178886 +0.565004888 0.477853372 +0.565982405 0.477527859 +0.566959922 0.477202346 +0.567937439 0.476876833 +0.568914956 0.476551320 +0.569892473 0.476225806 +0.570869990 0.475900293 +0.571847507 0.475574780 +0.572825024 0.475249267 +0.573802542 0.474923754 +0.574780059 0.474598240 +0.575757576 0.474272727 +0.576735093 0.473947214 +0.577712610 0.473621701 +0.578690127 0.473296188 +0.579667644 0.472970674 +0.580645161 0.472645161 +0.581622678 0.472319648 +0.582600196 0.471994135 +0.583577713 0.471668622 +0.584555230 0.471343109 +0.585532747 0.471017595 +0.586510264 0.470692082 +0.587487781 0.470366569 +0.588465298 0.470041056 +0.589442815 0.469715543 +0.590420332 0.469390029 +0.591397849 0.469064516 +0.592375367 0.468739003 +0.593352884 0.468413490 +0.594330401 0.468087977 +0.595307918 0.467762463 +0.596285435 0.467436950 +0.597262952 0.467111437 +0.598240469 0.466785924 +0.599217986 0.466460411 +0.600195503 0.466134897 +0.601173021 0.465809384 +0.602150538 0.465483871 +0.603128055 0.465158358 +0.604105572 0.464832845 +0.605083089 0.464507331 +0.606060606 0.464181818 +0.607038123 0.463856305 +0.608015640 0.463530792 +0.608993157 0.463205279 +0.609970674 0.462879765 +0.610948192 0.462554252 +0.611925709 0.462228739 +0.612903226 0.461903226 +0.613880743 0.461577713 +0.614858260 0.461252199 +0.615835777 0.460926686 +0.616813294 0.460601173 +0.617790811 0.460275660 +0.618768328 0.459950147 +0.619745846 0.459624633 +0.620723363 0.459299120 +0.621700880 0.458973607 +0.622678397 0.458648094 +0.623655914 0.458322581 +0.624633431 0.457997067 +0.625610948 0.457671554 +0.626588465 0.457346041 +0.627565982 0.457020528 +0.628543500 0.456695015 +0.629521017 0.456369501 +0.630498534 0.456043988 +0.631476051 0.455718475 +0.632453568 0.455392962 +0.633431085 0.455067449 +0.634408602 0.454741935 +0.635386119 0.454416422 +0.636363636 0.454090909 +0.637341153 0.453765396 +0.638318671 0.453439883 +0.639296188 0.453114370 +0.640273705 0.452788856 +0.641251222 0.452463343 +0.642228739 0.452137830 +0.643206256 0.451812317 +0.644183773 0.451486804 +0.645161290 0.451161290 +0.646138807 0.450835777 +0.647116325 0.450510264 +0.648093842 0.450184751 +0.649071359 0.449859238 +0.650048876 0.449533724 +0.651026393 0.449208211 +0.652003910 0.448882698 +0.652981427 0.448557185 +0.653958944 0.448231672 +0.654936461 0.447906158 +0.655913978 0.447580645 +0.656891496 0.447255132 +0.657869013 0.446929619 +0.658846530 0.446604106 +0.659824047 0.446278592 +0.660801564 0.445953079 +0.661779081 0.445627566 +0.662756598 0.445302053 +0.663734115 0.444976540 +0.664711632 0.444651026 +0.665689150 0.444325513 +0.666666667 0.444000000 +0.667644184 0.443674487 +0.668621701 0.443348974 +0.669599218 0.443023460 +0.670576735 0.442697947 +0.671554252 0.442372434 +0.672531769 0.442046921 +0.673509286 0.441721408 +0.674486804 0.441395894 +0.675464321 0.441070381 +0.676441838 0.440744868 +0.677419355 0.440419355 +0.678396872 0.440093842 +0.679374389 0.439768328 +0.680351906 0.439442815 +0.681329423 0.439117302 +0.682306940 0.438791789 +0.683284457 0.438466276 +0.684261975 0.438140762 +0.685239492 0.437815249 +0.686217009 0.437489736 +0.687194526 0.437164223 +0.688172043 0.436838710 +0.689149560 0.436513196 +0.690127077 0.436187683 +0.691104594 0.435862170 +0.692082111 0.435536657 +0.693059629 0.435211144 +0.694037146 0.434885630 +0.695014663 0.434560117 +0.695992180 0.434234604 +0.696969697 0.433909091 +0.697947214 0.433583578 +0.698924731 0.433258065 +0.699902248 0.432932551 +0.700879765 0.432607038 +0.701857283 0.432281525 +0.702834800 0.431956012 +0.703812317 0.431630499 +0.704789834 0.431304985 +0.705767351 0.430979472 +0.706744868 0.430653959 +0.707722385 0.430328446 +0.708699902 0.430002933 +0.709677419 0.429677419 +0.710654936 0.429351906 +0.711632454 0.429026393 +0.712609971 0.428700880 +0.713587488 0.428375367 +0.714565005 0.428049853 +0.715542522 0.427724340 +0.716520039 0.427398827 +0.717497556 0.427073314 +0.718475073 0.426747801 +0.719452590 0.426422287 +0.720430108 0.426096774 +0.721407625 0.425771261 +0.722385142 0.425445748 +0.723362659 0.425120235 +0.724340176 0.424794721 +0.725317693 0.424469208 +0.726295210 0.424143695 +0.727272727 0.423818182 +0.728250244 0.423492669 +0.729227761 0.423167155 +0.730205279 0.422841642 +0.731182796 0.422516129 +0.732160313 0.422190616 +0.733137830 0.421865103 +0.734115347 0.421539589 +0.735092864 0.421214076 +0.736070381 0.420888563 +0.737047898 0.420563050 +0.738025415 0.420237537 +0.739002933 0.419912023 +0.739980450 0.419586510 +0.740957967 0.419260997 +0.741935484 0.418935484 +0.742913001 0.418609971 +0.743890518 0.418284457 +0.744868035 0.417958944 +0.745845552 0.417633431 +0.746823069 0.417307918 +0.747800587 0.416982405 +0.748778104 0.416656891 +0.749755621 0.416331378 +0.750733138 0.416005865 +0.751710655 0.415680352 +0.752688172 0.415354839 +0.753665689 0.415029326 +0.754643206 0.414703812 +0.755620723 0.414378299 +0.756598240 0.414052786 +0.757575758 0.413727273 +0.758553275 0.413401760 +0.759530792 0.413076246 +0.760508309 0.412750733 +0.761485826 0.412425220 +0.762463343 0.412099707 +0.763440860 0.411774194 +0.764418377 0.411448680 +0.765395894 0.411123167 +0.766373412 0.410797654 +0.767350929 0.410472141 +0.768328446 0.410146628 +0.769305963 0.409821114 +0.770283480 0.409495601 +0.771260997 0.409170088 +0.772238514 0.408844575 +0.773216031 0.408519062 +0.774193548 0.408193548 +0.775171065 0.407868035 +0.776148583 0.407542522 +0.777126100 0.407217009 +0.778103617 0.406891496 +0.779081134 0.406565982 +0.780058651 0.406240469 +0.781036168 0.405914956 +0.782013685 0.405589443 +0.782991202 0.405263930 +0.783968719 0.404938416 +0.784946237 0.404612903 +0.785923754 0.404287390 +0.786901271 0.403961877 +0.787878788 0.403636364 +0.788856305 0.403310850 +0.789833822 0.402985337 +0.790811339 0.402659824 +0.791788856 0.402334311 +0.792766373 0.402008798 +0.793743891 0.401683284 +0.794721408 0.401357771 +0.795698925 0.401032258 +0.796676442 0.400706745 +0.797653959 0.400381232 +0.798631476 0.400055718 +0.799608993 0.399730205 +0.800586510 0.399404692 +0.801564027 0.399079179 +0.802541544 0.398753666 +0.803519062 0.398428152 +0.804496579 0.398102639 +0.805474096 0.397777126 +0.806451613 0.397451613 +0.807429130 0.397126100 +0.808406647 0.396800587 +0.809384164 0.396475073 +0.810361681 0.396149560 +0.811339198 0.395824047 +0.812316716 0.395498534 +0.813294233 0.395173021 +0.814271750 0.394847507 +0.815249267 0.394521994 +0.816226784 0.394196481 +0.817204301 0.393870968 +0.818181818 0.393545455 +0.819159335 0.393219941 +0.820136852 0.392894428 +0.821114370 0.392568915 +0.822091887 0.392243402 +0.823069404 0.391917889 +0.824046921 0.391592375 +0.825024438 0.391266862 +0.826001955 0.390941349 +0.826979472 0.390615836 +0.827956989 0.390290323 +0.828934506 0.389964809 +0.829912023 0.389639296 +0.830889541 0.389313783 +0.831867058 0.388988270 +0.832844575 0.388662757 +0.833822092 0.388337243 +0.834799609 0.388011730 +0.835777126 0.387686217 +0.836754643 0.387360704 +0.837732160 0.387035191 +0.838709677 0.386709677 +0.839687195 0.386384164 +0.840664712 0.386058651 +0.841642229 0.385733138 +0.842619746 0.385407625 +0.843597263 0.385082111 +0.844574780 0.384756598 +0.845552297 0.384431085 +0.846529814 0.384105572 +0.847507331 0.383780059 +0.848484848 0.383454545 +0.849462366 0.383129032 +0.850439883 0.382803519 +0.851417400 0.382478006 +0.852394917 0.382152493 +0.853372434 0.381826979 +0.854349951 0.381501466 +0.855327468 0.381175953 +0.856304985 0.380850440 +0.857282502 0.380524927 +0.858260020 0.380199413 +0.859237537 0.379873900 +0.860215054 0.379548387 +0.861192571 0.379222874 +0.862170088 0.378897361 +0.863147605 0.378571848 +0.864125122 0.378246334 +0.865102639 0.377920821 +0.866080156 0.377595308 +0.867057674 0.377269795 +0.868035191 0.376944282 +0.869012708 0.376618768 +0.869990225 0.376293255 +0.870967742 0.375967742 +0.871945259 0.375642229 +0.872922776 0.375316716 +0.873900293 0.374991202 +0.874877810 0.374665689 +0.875855327 0.374340176 +0.876832845 0.374014663 +0.877810362 0.373689150 +0.878787879 0.373363636 +0.879765396 0.373038123 +0.880742913 0.372712610 +0.881720430 0.372387097 +0.882697947 0.372061584 +0.883675464 0.371736070 +0.884652981 0.371410557 +0.885630499 0.371085044 +0.886608016 0.370759531 +0.887585533 0.370434018 +0.888563050 0.370108504 +0.889540567 0.369782991 +0.890518084 0.369457478 +0.891495601 0.369131965 +0.892473118 0.368806452 +0.893450635 0.368480938 +0.894428152 0.368155425 +0.895405670 0.367829912 +0.896383187 0.367504399 +0.897360704 0.367178886 +0.898338221 0.366853372 +0.899315738 0.366527859 +0.900293255 0.366202346 +0.901270772 0.365876833 +0.902248289 0.365551320 +0.903225806 0.365225806 +0.904203324 0.364900293 +0.905180841 0.364574780 +0.906158358 0.364249267 +0.907135875 0.363923754 +0.908113392 0.363598240 +0.909090909 0.363272727 +0.910068426 0.362947214 +0.911045943 0.362621701 +0.912023460 0.362296188 +0.913000978 0.361970674 +0.913978495 0.361645161 +0.914956012 0.361319648 +0.915933529 0.360994135 +0.916911046 0.360668622 +0.917888563 0.360343109 +0.918866080 0.360017595 +0.919843597 0.359692082 +0.920821114 0.359366569 +0.921798631 0.359041056 +0.922776149 0.358715543 +0.923753666 0.358390029 +0.924731183 0.358064516 +0.925708700 0.357739003 +0.926686217 0.357413490 +0.927663734 0.357087977 +0.928641251 0.356762463 +0.929618768 0.356436950 +0.930596285 0.356111437 +0.931573803 0.355785924 +0.932551320 0.355460411 +0.933528837 0.355134897 +0.934506354 0.354809384 +0.935483871 0.354483871 +0.936461388 0.354158358 +0.937438905 0.353832845 +0.938416422 0.353507331 +0.939393939 0.353181818 +0.940371457 0.352856305 +0.941348974 0.352530792 +0.942326491 0.352205279 +0.943304008 0.351879765 +0.944281525 0.351554252 +0.945259042 0.351228739 +0.946236559 0.350903226 +0.947214076 0.350577713 +0.948191593 0.350252199 +0.949169110 0.349926686 +0.950146628 0.349601173 +0.951124145 0.349275660 +0.952101662 0.348950147 +0.953079179 0.348624633 +0.954056696 0.348299120 +0.955034213 0.347973607 +0.956011730 0.347648094 +0.956989247 0.347322581 +0.957966764 0.346997067 +0.958944282 0.346671554 +0.959921799 0.346346041 +0.960899316 0.346020528 +0.961876833 0.345695015 +0.962854350 0.345369501 +0.963831867 0.345043988 +0.964809384 0.344718475 +0.965786901 0.344392962 +0.966764418 0.344067449 +0.967741935 0.343741935 +0.968719453 0.343416422 +0.969696970 0.343090909 +0.970674487 0.342765396 +0.971652004 0.342439883 +0.972629521 0.342114370 +0.973607038 0.341788856 +0.974584555 0.341463343 +0.975562072 0.341137830 +0.976539589 0.340812317 +0.977517107 0.340486804 +0.978494624 0.340161290 +0.979472141 0.339835777 +0.980449658 0.339510264 +0.981427175 0.339184751 +0.982404692 0.338859238 +0.983382209 0.338533724 +0.984359726 0.338208211 +0.985337243 0.337882698 +0.986314761 0.337557185 +0.987292278 0.337231672 +0.988269795 0.336906158 +0.989247312 0.336580645 +0.990224829 0.336255132 +0.991202346 0.335929619 +0.992179863 0.335604106 +0.993157380 0.335278592 +0.994134897 0.334953079 +0.995112414 0.334627566 +0.996089932 0.334302053 +0.997067449 0.333976540 +0.998044966 0.333651026 +0.999022483 0.333325513 +1.000000000 0.333000000 diff --git a/examples/takagi-sugeno/ObstacleAvoidance.fll b/examples/takagi-sugeno/ObstacleAvoidance.fll new file mode 100644 index 0000000..10b53f4 --- /dev/null +++ b/examples/takagi-sugeno/ObstacleAvoidance.fll @@ -0,0 +1,25 @@ +Engine: ObstacleAvoidance +InputVariable: obstacle + enabled: true + range: 0.000 1.000 + lock-range: false + term: left Ramp 1.000 0.000 + term: right Ramp 0.000 1.000 +OutputVariable: tsSteer + enabled: true + range: 0.000 1.000 + lock-range: false + aggregation: Maximum + defuzzifier: WeightedAverage Automatic + default: nan + lock-previous: false + term: left Constant 0.333 + term: right Constant 0.666 +RuleBlock: takagiSugeno + enabled: true + conjunction: none + disjunction: none + implication: none + activation: General + rule: if obstacle is left then tsSteer is right + rule: if obstacle is right then tsSteer is left
\ No newline at end of file diff --git a/examples/takagi-sugeno/ObstacleAvoidance.java b/examples/takagi-sugeno/ObstacleAvoidance.java new file mode 100644 index 0000000..c7c7f67 --- /dev/null +++ b/examples/takagi-sugeno/ObstacleAvoidance.java @@ -0,0 +1,60 @@ +import com.fuzzylite.*; +import com.fuzzylite.activation.* +import com.fuzzylite.defuzzifier.*; +import com.fuzzylite.factory.*; +import com.fuzzylite.hedge.*; +import com.fuzzylite.imex.*; +import com.fuzzylite.norm.*; +import com.fuzzylite.norm.s.*; +import com.fuzzylite.norm.t.*; +import com.fuzzylite.rule.*; +import com.fuzzylite.term.*; +import com.fuzzylite.variable.*; + +public class ObstacleAvoidance{ +public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + +Engine engine = new Engine(); +engine.setName("ObstacleAvoidance"); +engine.setDescription(""); + +InputVariable obstacle = new InputVariable(); +obstacle.setName("obstacle"); +obstacle.setDescription(""); +obstacle.setEnabled(true); +obstacle.setRange(0.000, 1.000); +obstacle.setLockValueInRange(false); +obstacle.addTerm(new Ramp("left", 1.000, 0.000)); +obstacle.addTerm(new Ramp("right", 0.000, 1.000)); +engine.addInputVariable(obstacle); + +OutputVariable tsSteer = new OutputVariable(); +tsSteer.setName("tsSteer"); +tsSteer.setDescription(""); +tsSteer.setEnabled(true); +tsSteer.setRange(0.000, 1.000); +tsSteer.setLockValueInRange(false); +tsSteer.setAggregation(new Maximum()); +tsSteer.setDefuzzifier(new WeightedAverage("Automatic")); +tsSteer.setDefaultValue(Double.NaN); +tsSteer.setLockPreviousValue(false); +tsSteer.addTerm(new Constant("left", 0.333)); +tsSteer.addTerm(new Constant("right", 0.666)); +engine.addOutputVariable(tsSteer); + +RuleBlock takagiSugeno = new RuleBlock(); +takagiSugeno.setName("takagiSugeno"); +takagiSugeno.setDescription(""); +takagiSugeno.setEnabled(true); +takagiSugeno.setConjunction(null); +takagiSugeno.setDisjunction(null); +takagiSugeno.setImplication(null); +takagiSugeno.setActivation(new General()); +takagiSugeno.addRule(Rule.parse("if obstacle is left then tsSteer is right", engine)); +takagiSugeno.addRule(Rule.parse("if obstacle is right then tsSteer is left", engine)); +engine.addRuleBlock(takagiSugeno); + + +} +} diff --git a/examples/takagi-sugeno/ObstacleAvoidance.pdf b/examples/takagi-sugeno/ObstacleAvoidance.pdf Binary files differnew file mode 100644 index 0000000..28d0a7a --- /dev/null +++ b/examples/takagi-sugeno/ObstacleAvoidance.pdf diff --git a/examples/takagi-sugeno/SimpleDimmer.R b/examples/takagi-sugeno/SimpleDimmer.R new file mode 100644 index 0000000..8502922 --- /dev/null +++ b/examples/takagi-sugeno/SimpleDimmer.R @@ -0,0 +1,60 @@ +#Code automatically generated with fuzzylite 6.0. + +library(ggplot2); + +engine.name = "SimpleDimmer" +engine.fll = "Engine: SimpleDimmer +InputVariable: Ambient + enabled: true + range: 0.000 1.000 + lock-range: false + term: DARK Triangle 0.000 0.250 0.500 + term: MEDIUM Triangle 0.250 0.500 0.750 + term: BRIGHT Triangle 0.500 0.750 1.000 +OutputVariable: Power + enabled: true + range: 0.000 1.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage TakagiSugeno + default: nan + lock-previous: false + term: LOW Constant 0.250 + term: MEDIUM Constant 0.500 + term: HIGH Constant 0.750 +RuleBlock: + enabled: true + conjunction: none + disjunction: none + implication: none + activation: General + rule: if Ambient is DARK then Power is HIGH + rule: if Ambient is MEDIUM then Power is MEDIUM + rule: if Ambient is BRIGHT then Power is LOW" + +engine.fldFile = "SimpleDimmer.fld" +if (require(data.table)) { + engine.df = data.table::fread(engine.fldFile, sep="auto", header="auto") +} else { + engine.df = read.table(engine.fldFile, header=TRUE) +} + +engine.plot.i1_o1 = ggplot(engine.df, aes(Ambient, Power)) + + geom_line(aes(color=Power), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + ggtitle("Ambient vs Power") + +engine.plot.o1_i1 = ggplot(engine.df, aes(Ambient, Power)) + + geom_line(aes(color=Power), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + coord_flip() + + ggtitle("Power vs Ambient") + +if (require(gridExtra)) { + engine.plots = arrangeGrob(engine.plot.i1_o1, engine.plot.o1_i1, ncol=2, top=engine.name) + ggsave(paste0(engine.name, ".pdf"), engine.plots) + if (require(grid)) { + grid.newpage() + grid.draw(engine.plots) + } +} diff --git a/examples/takagi-sugeno/SimpleDimmer.cpp b/examples/takagi-sugeno/SimpleDimmer.cpp index bd7e6ee..735096b 100644 --- a/examples/takagi-sugeno/SimpleDimmer.cpp +++ b/examples/takagi-sugeno/SimpleDimmer.cpp @@ -1,43 +1,51 @@ #include <fl/Headers.h> int main(int argc, char** argv){ +//Code automatically generated with fuzzylite 6.0. + using namespace fl; Engine* engine = new Engine; -engine->setName("simple-dimmer"); - -InputVariable* inputVariable = new InputVariable; -inputVariable->setEnabled(true); -inputVariable->setName("Ambient"); -inputVariable->setRange(0.000, 1.000); -inputVariable->addTerm(new Triangle("DARK", 0.000, 0.250, 0.500)); -inputVariable->addTerm(new Triangle("MEDIUM", 0.250, 0.500, 0.750)); -inputVariable->addTerm(new Triangle("BRIGHT", 0.500, 0.750, 1.000)); -engine->addInputVariable(inputVariable); - -OutputVariable* outputVariable = new OutputVariable; -outputVariable->setEnabled(true); -outputVariable->setName("Power"); -outputVariable->setRange(0.000, 1.000); -outputVariable->fuzzyOutput()->setAccumulation(fl::null); -outputVariable->setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable->setDefaultValue(fl::nan); -outputVariable->setLockPreviousOutputValue(false); -outputVariable->setLockOutputValueInRange(false); -outputVariable->addTerm(new Constant("LOW", 0.250)); -outputVariable->addTerm(new Constant("MEDIUM", 0.500)); -outputVariable->addTerm(new Constant("HIGH", 0.750)); -engine->addOutputVariable(outputVariable); +engine->setName("SimpleDimmer"); +engine->setDescription(""); + +InputVariable* Ambient = new InputVariable; +Ambient->setName("Ambient"); +Ambient->setDescription(""); +Ambient->setEnabled(true); +Ambient->setRange(0.000, 1.000); +Ambient->setLockValueInRange(false); +Ambient->addTerm(new Triangle("DARK", 0.000, 0.250, 0.500)); +Ambient->addTerm(new Triangle("MEDIUM", 0.250, 0.500, 0.750)); +Ambient->addTerm(new Triangle("BRIGHT", 0.500, 0.750, 1.000)); +engine->addInputVariable(Ambient); + +OutputVariable* Power = new OutputVariable; +Power->setName("Power"); +Power->setDescription(""); +Power->setEnabled(true); +Power->setRange(0.000, 1.000); +Power->setLockValueInRange(false); +Power->setAggregation(fl::null); +Power->setDefuzzifier(new WeightedAverage("TakagiSugeno")); +Power->setDefaultValue(fl::nan); +Power->setLockPreviousValue(false); +Power->addTerm(new Constant("LOW", 0.250)); +Power->addTerm(new Constant("MEDIUM", 0.500)); +Power->addTerm(new Constant("HIGH", 0.750)); +engine->addOutputVariable(Power); RuleBlock* ruleBlock = new RuleBlock; -ruleBlock->setEnabled(true); ruleBlock->setName(""); +ruleBlock->setDescription(""); +ruleBlock->setEnabled(true); ruleBlock->setConjunction(fl::null); ruleBlock->setDisjunction(fl::null); -ruleBlock->setActivation(fl::null); -ruleBlock->addRule(fl::Rule::parse("if Ambient is DARK then Power is HIGH", engine)); -ruleBlock->addRule(fl::Rule::parse("if Ambient is MEDIUM then Power is MEDIUM", engine)); -ruleBlock->addRule(fl::Rule::parse("if Ambient is BRIGHT then Power is LOW", engine)); +ruleBlock->setImplication(fl::null); +ruleBlock->setActivation(new General); +ruleBlock->addRule(Rule::parse("if Ambient is DARK then Power is HIGH", engine)); +ruleBlock->addRule(Rule::parse("if Ambient is MEDIUM then Power is MEDIUM", engine)); +ruleBlock->addRule(Rule::parse("if Ambient is BRIGHT then Power is LOW", engine)); engine->addRuleBlock(ruleBlock); diff --git a/examples/takagi-sugeno/SimpleDimmer.fcl b/examples/takagi-sugeno/SimpleDimmer.fcl index 65ccd94..a30f2c9 100644 --- a/examples/takagi-sugeno/SimpleDimmer.fcl +++ b/examples/takagi-sugeno/SimpleDimmer.fcl @@ -1,4 +1,6 @@ -FUNCTION_BLOCK simple-dimmer +//Code automatically generated with fuzzylite 6.0. + +FUNCTION_BLOCK SimpleDimmer VAR_INPUT Ambient: REAL; diff --git a/examples/takagi-sugeno/SimpleDimmer.fis b/examples/takagi-sugeno/SimpleDimmer.fis index 9557f61..3988290 100644 --- a/examples/takagi-sugeno/SimpleDimmer.fis +++ b/examples/takagi-sugeno/SimpleDimmer.fis @@ -1,13 +1,16 @@ +#Code automatically generated with fuzzylite 6.0. + [System] -Name='simple-dimmer' +Name='SimpleDimmer' Type='sugeno' +Version=6.0 NumInputs=1 NumOutputs=1 NumRules=3 -AndMethod='' -OrMethod='' -ImpMethod='' -AggMethod='' +AndMethod='min' +OrMethod='max' +ImpMethod='min' +AggMethod='max' DefuzzMethod='wtaver' [Input1] diff --git a/examples/takagi-sugeno/SimpleDimmer.fld b/examples/takagi-sugeno/SimpleDimmer.fld index 6efef0a..9c2d25b 100644 --- a/examples/takagi-sugeno/SimpleDimmer.fld +++ b/examples/takagi-sugeno/SimpleDimmer.fld @@ -1,1026 +1,1025 @@ -#@Engine: simple-dimmer; -#@InputVariable: Ambient; @OutputVariable: Power; -0.00000000 nan -0.00097752 0.75000000 -0.00195503 0.75000000 -0.00293255 0.75000000 -0.00391007 0.75000000 -0.00488759 0.75000000 -0.00586510 0.75000000 -0.00684262 0.75000000 -0.00782014 0.75000000 -0.00879765 0.75000000 -0.00977517 0.75000000 -0.01075269 0.75000000 -0.01173021 0.75000000 -0.01270772 0.75000000 -0.01368524 0.75000000 -0.01466276 0.75000000 -0.01564027 0.75000000 -0.01661779 0.75000000 -0.01759531 0.75000000 -0.01857283 0.75000000 -0.01955034 0.75000000 -0.02052786 0.75000000 -0.02150538 0.75000000 -0.02248289 0.75000000 -0.02346041 0.75000000 -0.02443793 0.75000000 -0.02541544 0.75000000 -0.02639296 0.75000000 -0.02737048 0.75000000 -0.02834800 0.75000000 -0.02932551 0.75000000 -0.03030303 0.75000000 -0.03128055 0.75000000 -0.03225806 0.75000000 -0.03323558 0.75000000 -0.03421310 0.75000000 -0.03519062 0.75000000 -0.03616813 0.75000000 -0.03714565 0.75000000 -0.03812317 0.75000000 -0.03910068 0.75000000 -0.04007820 0.75000000 -0.04105572 0.75000000 -0.04203324 0.75000000 -0.04301075 0.75000000 -0.04398827 0.75000000 -0.04496579 0.75000000 -0.04594330 0.75000000 -0.04692082 0.75000000 -0.04789834 0.75000000 -0.04887586 0.75000000 -0.04985337 0.75000000 -0.05083089 0.75000000 -0.05180841 0.75000000 -0.05278592 0.75000000 -0.05376344 0.75000000 -0.05474096 0.75000000 -0.05571848 0.75000000 -0.05669599 0.75000000 -0.05767351 0.75000000 -0.05865103 0.75000000 -0.05962854 0.75000000 -0.06060606 0.75000000 -0.06158358 0.75000000 -0.06256109 0.75000000 -0.06353861 0.75000000 -0.06451613 0.75000000 -0.06549365 0.75000000 -0.06647116 0.75000000 -0.06744868 0.75000000 -0.06842620 0.75000000 -0.06940371 0.75000000 -0.07038123 0.75000000 -0.07135875 0.75000000 -0.07233627 0.75000000 -0.07331378 0.75000000 -0.07429130 0.75000000 -0.07526882 0.75000000 -0.07624633 0.75000000 -0.07722385 0.75000000 -0.07820137 0.75000000 -0.07917889 0.75000000 -0.08015640 0.75000000 -0.08113392 0.75000000 -0.08211144 0.75000000 -0.08308895 0.75000000 -0.08406647 0.75000000 -0.08504399 0.75000000 -0.08602151 0.75000000 -0.08699902 0.75000000 -0.08797654 0.75000000 -0.08895406 0.75000000 -0.08993157 0.75000000 -0.09090909 0.75000000 -0.09188661 0.75000000 -0.09286413 0.75000000 -0.09384164 0.75000000 -0.09481916 0.75000000 -0.09579668 0.75000000 -0.09677419 0.75000000 -0.09775171 0.75000000 -0.09872923 0.75000000 -0.09970674 0.75000000 -0.10068426 0.75000000 -0.10166178 0.75000000 -0.10263930 0.75000000 -0.10361681 0.75000000 -0.10459433 0.75000000 -0.10557185 0.75000000 -0.10654936 0.75000000 -0.10752688 0.75000000 -0.10850440 0.75000000 -0.10948192 0.75000000 -0.11045943 0.75000000 -0.11143695 0.75000000 -0.11241447 0.75000000 -0.11339198 0.75000000 -0.11436950 0.75000000 -0.11534702 0.75000000 -0.11632454 0.75000000 -0.11730205 0.75000000 -0.11827957 0.75000000 -0.11925709 0.75000000 -0.12023460 0.75000000 -0.12121212 0.75000000 -0.12218964 0.75000000 -0.12316716 0.75000000 -0.12414467 0.75000000 -0.12512219 0.75000000 -0.12609971 0.75000000 -0.12707722 0.75000000 -0.12805474 0.75000000 -0.12903226 0.75000000 -0.13000978 0.75000000 -0.13098729 0.75000000 -0.13196481 0.75000000 -0.13294233 0.75000000 -0.13391984 0.75000000 -0.13489736 0.75000000 -0.13587488 0.75000000 -0.13685239 0.75000000 -0.13782991 0.75000000 -0.13880743 0.75000000 -0.13978495 0.75000000 -0.14076246 0.75000000 -0.14173998 0.75000000 -0.14271750 0.75000000 -0.14369501 0.75000000 -0.14467253 0.75000000 -0.14565005 0.75000000 -0.14662757 0.75000000 -0.14760508 0.75000000 -0.14858260 0.75000000 -0.14956012 0.75000000 -0.15053763 0.75000000 -0.15151515 0.75000000 -0.15249267 0.75000000 -0.15347019 0.75000000 -0.15444770 0.75000000 -0.15542522 0.75000000 -0.15640274 0.75000000 -0.15738025 0.75000000 -0.15835777 0.75000000 -0.15933529 0.75000000 -0.16031281 0.75000000 -0.16129032 0.75000000 -0.16226784 0.75000000 -0.16324536 0.75000000 -0.16422287 0.75000000 -0.16520039 0.75000000 -0.16617791 0.75000000 -0.16715543 0.75000000 -0.16813294 0.75000000 -0.16911046 0.75000000 -0.17008798 0.75000000 -0.17106549 0.75000000 -0.17204301 0.75000000 -0.17302053 0.75000000 -0.17399804 0.75000000 -0.17497556 0.75000000 -0.17595308 0.75000000 -0.17693060 0.75000000 -0.17790811 0.75000000 -0.17888563 0.75000000 -0.17986315 0.75000000 -0.18084066 0.75000000 -0.18181818 0.75000000 -0.18279570 0.75000000 -0.18377322 0.75000000 -0.18475073 0.75000000 -0.18572825 0.75000000 -0.18670577 0.75000000 -0.18768328 0.75000000 -0.18866080 0.75000000 -0.18963832 0.75000000 -0.19061584 0.75000000 -0.19159335 0.75000000 -0.19257087 0.75000000 -0.19354839 0.75000000 -0.19452590 0.75000000 -0.19550342 0.75000000 -0.19648094 0.75000000 -0.19745846 0.75000000 -0.19843597 0.75000000 -0.19941349 0.75000000 -0.20039101 0.75000000 -0.20136852 0.75000000 -0.20234604 0.75000000 -0.20332356 0.75000000 -0.20430108 0.75000000 -0.20527859 0.75000000 -0.20625611 0.75000000 -0.20723363 0.75000000 -0.20821114 0.75000000 -0.20918866 0.75000000 -0.21016618 0.75000000 -0.21114370 0.75000000 -0.21212121 0.75000000 -0.21309873 0.75000000 -0.21407625 0.75000000 -0.21505376 0.75000000 -0.21603128 0.75000000 -0.21700880 0.75000000 -0.21798631 0.75000000 -0.21896383 0.75000000 -0.21994135 0.75000000 -0.22091887 0.75000000 -0.22189638 0.75000000 -0.22287390 0.75000000 -0.22385142 0.75000000 -0.22482893 0.75000000 -0.22580645 0.75000000 -0.22678397 0.75000000 -0.22776149 0.75000000 -0.22873900 0.75000000 -0.22971652 0.75000000 -0.23069404 0.75000000 -0.23167155 0.75000000 -0.23264907 0.75000000 -0.23362659 0.75000000 -0.23460411 0.75000000 -0.23558162 0.75000000 -0.23655914 0.75000000 -0.23753666 0.75000000 -0.23851417 0.75000000 -0.23949169 0.75000000 -0.24046921 0.75000000 -0.24144673 0.75000000 -0.24242424 0.75000000 -0.24340176 0.75000000 -0.24437928 0.75000000 -0.24535679 0.75000000 -0.24633431 0.75000000 -0.24731183 0.75000000 -0.24828935 0.75000000 -0.24926686 0.75000000 -0.25024438 0.74975562 -0.25122190 0.74877810 -0.25219941 0.74780059 -0.25317693 0.74682307 -0.25415445 0.74584555 -0.25513196 0.74486804 -0.25610948 0.74389052 -0.25708700 0.74291300 -0.25806452 0.74193548 -0.25904203 0.74095797 -0.26001955 0.73998045 -0.26099707 0.73900293 -0.26197458 0.73802542 -0.26295210 0.73704790 -0.26392962 0.73607038 -0.26490714 0.73509286 -0.26588465 0.73411535 -0.26686217 0.73313783 -0.26783969 0.73216031 -0.26881720 0.73118280 -0.26979472 0.73020528 -0.27077224 0.72922776 -0.27174976 0.72825024 -0.27272727 0.72727273 -0.27370479 0.72629521 -0.27468231 0.72531769 -0.27565982 0.72434018 -0.27663734 0.72336266 -0.27761486 0.72238514 -0.27859238 0.72140762 -0.27956989 0.72043011 -0.28054741 0.71945259 -0.28152493 0.71847507 -0.28250244 0.71749756 -0.28347996 0.71652004 -0.28445748 0.71554252 -0.28543500 0.71456500 -0.28641251 0.71358749 -0.28739003 0.71260997 -0.28836755 0.71163245 -0.28934506 0.71065494 -0.29032258 0.70967742 -0.29130010 0.70869990 -0.29227761 0.70772239 -0.29325513 0.70674487 -0.29423265 0.70576735 -0.29521017 0.70478983 -0.29618768 0.70381232 -0.29716520 0.70283480 -0.29814272 0.70185728 -0.29912023 0.70087977 -0.30009775 0.69990225 -0.30107527 0.69892473 -0.30205279 0.69794721 -0.30303030 0.69696970 -0.30400782 0.69599218 -0.30498534 0.69501466 -0.30596285 0.69403715 -0.30694037 0.69305963 -0.30791789 0.69208211 -0.30889541 0.69110459 -0.30987292 0.69012708 -0.31085044 0.68914956 -0.31182796 0.68817204 -0.31280547 0.68719453 -0.31378299 0.68621701 -0.31476051 0.68523949 -0.31573803 0.68426197 -0.31671554 0.68328446 -0.31769306 0.68230694 -0.31867058 0.68132942 -0.31964809 0.68035191 -0.32062561 0.67937439 -0.32160313 0.67839687 -0.32258065 0.67741935 -0.32355816 0.67644184 -0.32453568 0.67546432 -0.32551320 0.67448680 -0.32649071 0.67350929 -0.32746823 0.67253177 -0.32844575 0.67155425 -0.32942326 0.67057674 -0.33040078 0.66959922 -0.33137830 0.66862170 -0.33235582 0.66764418 -0.33333333 0.66666667 -0.33431085 0.66568915 -0.33528837 0.66471163 -0.33626588 0.66373412 -0.33724340 0.66275660 -0.33822092 0.66177908 -0.33919844 0.66080156 -0.34017595 0.65982405 -0.34115347 0.65884653 -0.34213099 0.65786901 -0.34310850 0.65689150 -0.34408602 0.65591398 -0.34506354 0.65493646 -0.34604106 0.65395894 -0.34701857 0.65298143 -0.34799609 0.65200391 -0.34897361 0.65102639 -0.34995112 0.65004888 -0.35092864 0.64907136 -0.35190616 0.64809384 -0.35288368 0.64711632 -0.35386119 0.64613881 -0.35483871 0.64516129 -0.35581623 0.64418377 -0.35679374 0.64320626 -0.35777126 0.64222874 -0.35874878 0.64125122 -0.35972630 0.64027370 -0.36070381 0.63929619 -0.36168133 0.63831867 -0.36265885 0.63734115 -0.36363636 0.63636364 -0.36461388 0.63538612 -0.36559140 0.63440860 -0.36656891 0.63343109 -0.36754643 0.63245357 -0.36852395 0.63147605 -0.36950147 0.63049853 -0.37047898 0.62952102 -0.37145650 0.62854350 -0.37243402 0.62756598 -0.37341153 0.62658847 -0.37438905 0.62561095 -0.37536657 0.62463343 -0.37634409 0.62365591 -0.37732160 0.62267840 -0.37829912 0.62170088 -0.37927664 0.62072336 -0.38025415 0.61974585 -0.38123167 0.61876833 -0.38220919 0.61779081 -0.38318671 0.61681329 -0.38416422 0.61583578 -0.38514174 0.61485826 -0.38611926 0.61388074 -0.38709677 0.61290323 -0.38807429 0.61192571 -0.38905181 0.61094819 -0.39002933 0.60997067 -0.39100684 0.60899316 -0.39198436 0.60801564 -0.39296188 0.60703812 -0.39393939 0.60606061 -0.39491691 0.60508309 -0.39589443 0.60410557 -0.39687195 0.60312805 -0.39784946 0.60215054 -0.39882698 0.60117302 -0.39980450 0.60019550 -0.40078201 0.59921799 -0.40175953 0.59824047 -0.40273705 0.59726295 -0.40371457 0.59628543 -0.40469208 0.59530792 -0.40566960 0.59433040 -0.40664712 0.59335288 -0.40762463 0.59237537 -0.40860215 0.59139785 -0.40957967 0.59042033 -0.41055718 0.58944282 -0.41153470 0.58846530 -0.41251222 0.58748778 -0.41348974 0.58651026 -0.41446725 0.58553275 -0.41544477 0.58455523 -0.41642229 0.58357771 -0.41739980 0.58260020 -0.41837732 0.58162268 -0.41935484 0.58064516 -0.42033236 0.57966764 -0.42130987 0.57869013 -0.42228739 0.57771261 -0.42326491 0.57673509 -0.42424242 0.57575758 -0.42521994 0.57478006 -0.42619746 0.57380254 -0.42717498 0.57282502 -0.42815249 0.57184751 -0.42913001 0.57086999 -0.43010753 0.56989247 -0.43108504 0.56891496 -0.43206256 0.56793744 -0.43304008 0.56695992 -0.43401760 0.56598240 -0.43499511 0.56500489 -0.43597263 0.56402737 -0.43695015 0.56304985 -0.43792766 0.56207234 -0.43890518 0.56109482 -0.43988270 0.56011730 -0.44086022 0.55913978 -0.44183773 0.55816227 -0.44281525 0.55718475 -0.44379277 0.55620723 -0.44477028 0.55522972 -0.44574780 0.55425220 -0.44672532 0.55327468 -0.44770283 0.55229717 -0.44868035 0.55131965 -0.44965787 0.55034213 -0.45063539 0.54936461 -0.45161290 0.54838710 -0.45259042 0.54740958 -0.45356794 0.54643206 -0.45454545 0.54545455 -0.45552297 0.54447703 -0.45650049 0.54349951 -0.45747801 0.54252199 -0.45845552 0.54154448 -0.45943304 0.54056696 -0.46041056 0.53958944 -0.46138807 0.53861193 -0.46236559 0.53763441 -0.46334311 0.53665689 -0.46432063 0.53567937 -0.46529814 0.53470186 -0.46627566 0.53372434 -0.46725318 0.53274682 -0.46823069 0.53176931 -0.46920821 0.53079179 -0.47018573 0.52981427 -0.47116325 0.52883675 -0.47214076 0.52785924 -0.47311828 0.52688172 -0.47409580 0.52590420 -0.47507331 0.52492669 -0.47605083 0.52394917 -0.47702835 0.52297165 -0.47800587 0.52199413 -0.47898338 0.52101662 -0.47996090 0.52003910 -0.48093842 0.51906158 -0.48191593 0.51808407 -0.48289345 0.51710655 -0.48387097 0.51612903 -0.48484848 0.51515152 -0.48582600 0.51417400 -0.48680352 0.51319648 -0.48778104 0.51221896 -0.48875855 0.51124145 -0.48973607 0.51026393 -0.49071359 0.50928641 -0.49169110 0.50830890 -0.49266862 0.50733138 -0.49364614 0.50635386 -0.49462366 0.50537634 -0.49560117 0.50439883 -0.49657869 0.50342131 -0.49755621 0.50244379 -0.49853372 0.50146628 -0.49951124 0.50048876 -0.50048876 0.49951124 -0.50146628 0.49853372 -0.50244379 0.49755621 -0.50342131 0.49657869 -0.50439883 0.49560117 -0.50537634 0.49462366 -0.50635386 0.49364614 -0.50733138 0.49266862 -0.50830890 0.49169110 -0.50928641 0.49071359 -0.51026393 0.48973607 -0.51124145 0.48875855 -0.51221896 0.48778104 -0.51319648 0.48680352 -0.51417400 0.48582600 -0.51515152 0.48484848 -0.51612903 0.48387097 -0.51710655 0.48289345 -0.51808407 0.48191593 -0.51906158 0.48093842 -0.52003910 0.47996090 -0.52101662 0.47898338 -0.52199413 0.47800587 -0.52297165 0.47702835 -0.52394917 0.47605083 -0.52492669 0.47507331 -0.52590420 0.47409580 -0.52688172 0.47311828 -0.52785924 0.47214076 -0.52883675 0.47116325 -0.52981427 0.47018573 -0.53079179 0.46920821 -0.53176931 0.46823069 -0.53274682 0.46725318 -0.53372434 0.46627566 -0.53470186 0.46529814 -0.53567937 0.46432063 -0.53665689 0.46334311 -0.53763441 0.46236559 -0.53861193 0.46138807 -0.53958944 0.46041056 -0.54056696 0.45943304 -0.54154448 0.45845552 -0.54252199 0.45747801 -0.54349951 0.45650049 -0.54447703 0.45552297 -0.54545455 0.45454545 -0.54643206 0.45356794 -0.54740958 0.45259042 -0.54838710 0.45161290 -0.54936461 0.45063539 -0.55034213 0.44965787 -0.55131965 0.44868035 -0.55229717 0.44770283 -0.55327468 0.44672532 -0.55425220 0.44574780 -0.55522972 0.44477028 -0.55620723 0.44379277 -0.55718475 0.44281525 -0.55816227 0.44183773 -0.55913978 0.44086022 -0.56011730 0.43988270 -0.56109482 0.43890518 -0.56207234 0.43792766 -0.56304985 0.43695015 -0.56402737 0.43597263 -0.56500489 0.43499511 -0.56598240 0.43401760 -0.56695992 0.43304008 -0.56793744 0.43206256 -0.56891496 0.43108504 -0.56989247 0.43010753 -0.57086999 0.42913001 -0.57184751 0.42815249 -0.57282502 0.42717498 -0.57380254 0.42619746 -0.57478006 0.42521994 -0.57575758 0.42424242 -0.57673509 0.42326491 -0.57771261 0.42228739 -0.57869013 0.42130987 -0.57966764 0.42033236 -0.58064516 0.41935484 -0.58162268 0.41837732 -0.58260020 0.41739980 -0.58357771 0.41642229 -0.58455523 0.41544477 -0.58553275 0.41446725 -0.58651026 0.41348974 -0.58748778 0.41251222 -0.58846530 0.41153470 -0.58944282 0.41055718 -0.59042033 0.40957967 -0.59139785 0.40860215 -0.59237537 0.40762463 -0.59335288 0.40664712 -0.59433040 0.40566960 -0.59530792 0.40469208 -0.59628543 0.40371457 -0.59726295 0.40273705 -0.59824047 0.40175953 -0.59921799 0.40078201 -0.60019550 0.39980450 -0.60117302 0.39882698 -0.60215054 0.39784946 -0.60312805 0.39687195 -0.60410557 0.39589443 -0.60508309 0.39491691 -0.60606061 0.39393939 -0.60703812 0.39296188 -0.60801564 0.39198436 -0.60899316 0.39100684 -0.60997067 0.39002933 -0.61094819 0.38905181 -0.61192571 0.38807429 -0.61290323 0.38709677 -0.61388074 0.38611926 -0.61485826 0.38514174 -0.61583578 0.38416422 -0.61681329 0.38318671 -0.61779081 0.38220919 -0.61876833 0.38123167 -0.61974585 0.38025415 -0.62072336 0.37927664 -0.62170088 0.37829912 -0.62267840 0.37732160 -0.62365591 0.37634409 -0.62463343 0.37536657 -0.62561095 0.37438905 -0.62658847 0.37341153 -0.62756598 0.37243402 -0.62854350 0.37145650 -0.62952102 0.37047898 -0.63049853 0.36950147 -0.63147605 0.36852395 -0.63245357 0.36754643 -0.63343109 0.36656891 -0.63440860 0.36559140 -0.63538612 0.36461388 -0.63636364 0.36363636 -0.63734115 0.36265885 -0.63831867 0.36168133 -0.63929619 0.36070381 -0.64027370 0.35972630 -0.64125122 0.35874878 -0.64222874 0.35777126 -0.64320626 0.35679374 -0.64418377 0.35581623 -0.64516129 0.35483871 -0.64613881 0.35386119 -0.64711632 0.35288368 -0.64809384 0.35190616 -0.64907136 0.35092864 -0.65004888 0.34995112 -0.65102639 0.34897361 -0.65200391 0.34799609 -0.65298143 0.34701857 -0.65395894 0.34604106 -0.65493646 0.34506354 -0.65591398 0.34408602 -0.65689150 0.34310850 -0.65786901 0.34213099 -0.65884653 0.34115347 -0.65982405 0.34017595 -0.66080156 0.33919844 -0.66177908 0.33822092 -0.66275660 0.33724340 -0.66373412 0.33626588 -0.66471163 0.33528837 -0.66568915 0.33431085 -0.66666667 0.33333333 -0.66764418 0.33235582 -0.66862170 0.33137830 -0.66959922 0.33040078 -0.67057674 0.32942326 -0.67155425 0.32844575 -0.67253177 0.32746823 -0.67350929 0.32649071 -0.67448680 0.32551320 -0.67546432 0.32453568 -0.67644184 0.32355816 -0.67741935 0.32258065 -0.67839687 0.32160313 -0.67937439 0.32062561 -0.68035191 0.31964809 -0.68132942 0.31867058 -0.68230694 0.31769306 -0.68328446 0.31671554 -0.68426197 0.31573803 -0.68523949 0.31476051 -0.68621701 0.31378299 -0.68719453 0.31280547 -0.68817204 0.31182796 -0.68914956 0.31085044 -0.69012708 0.30987292 -0.69110459 0.30889541 -0.69208211 0.30791789 -0.69305963 0.30694037 -0.69403715 0.30596285 -0.69501466 0.30498534 -0.69599218 0.30400782 -0.69696970 0.30303030 -0.69794721 0.30205279 -0.69892473 0.30107527 -0.69990225 0.30009775 -0.70087977 0.29912023 -0.70185728 0.29814272 -0.70283480 0.29716520 -0.70381232 0.29618768 -0.70478983 0.29521017 -0.70576735 0.29423265 -0.70674487 0.29325513 -0.70772239 0.29227761 -0.70869990 0.29130010 -0.70967742 0.29032258 -0.71065494 0.28934506 -0.71163245 0.28836755 -0.71260997 0.28739003 -0.71358749 0.28641251 -0.71456500 0.28543500 -0.71554252 0.28445748 -0.71652004 0.28347996 -0.71749756 0.28250244 -0.71847507 0.28152493 -0.71945259 0.28054741 -0.72043011 0.27956989 -0.72140762 0.27859238 -0.72238514 0.27761486 -0.72336266 0.27663734 -0.72434018 0.27565982 -0.72531769 0.27468231 -0.72629521 0.27370479 -0.72727273 0.27272727 -0.72825024 0.27174976 -0.72922776 0.27077224 -0.73020528 0.26979472 -0.73118280 0.26881720 -0.73216031 0.26783969 -0.73313783 0.26686217 -0.73411535 0.26588465 -0.73509286 0.26490714 -0.73607038 0.26392962 -0.73704790 0.26295210 -0.73802542 0.26197458 -0.73900293 0.26099707 -0.73998045 0.26001955 -0.74095797 0.25904203 -0.74193548 0.25806452 -0.74291300 0.25708700 -0.74389052 0.25610948 -0.74486804 0.25513196 -0.74584555 0.25415445 -0.74682307 0.25317693 -0.74780059 0.25219941 -0.74877810 0.25122190 -0.74975562 0.25024438 -0.75073314 0.25000000 -0.75171065 0.25000000 -0.75268817 0.25000000 -0.75366569 0.25000000 -0.75464321 0.25000000 -0.75562072 0.25000000 -0.75659824 0.25000000 -0.75757576 0.25000000 -0.75855327 0.25000000 -0.75953079 0.25000000 -0.76050831 0.25000000 -0.76148583 0.25000000 -0.76246334 0.25000000 -0.76344086 0.25000000 -0.76441838 0.25000000 -0.76539589 0.25000000 -0.76637341 0.25000000 -0.76735093 0.25000000 -0.76832845 0.25000000 -0.76930596 0.25000000 -0.77028348 0.25000000 -0.77126100 0.25000000 -0.77223851 0.25000000 -0.77321603 0.25000000 -0.77419355 0.25000000 -0.77517107 0.25000000 -0.77614858 0.25000000 -0.77712610 0.25000000 -0.77810362 0.25000000 -0.77908113 0.25000000 -0.78005865 0.25000000 -0.78103617 0.25000000 -0.78201369 0.25000000 -0.78299120 0.25000000 -0.78396872 0.25000000 -0.78494624 0.25000000 -0.78592375 0.25000000 -0.78690127 0.25000000 -0.78787879 0.25000000 -0.78885630 0.25000000 -0.78983382 0.25000000 -0.79081134 0.25000000 -0.79178886 0.25000000 -0.79276637 0.25000000 -0.79374389 0.25000000 -0.79472141 0.25000000 -0.79569892 0.25000000 -0.79667644 0.25000000 -0.79765396 0.25000000 -0.79863148 0.25000000 -0.79960899 0.25000000 -0.80058651 0.25000000 -0.80156403 0.25000000 -0.80254154 0.25000000 -0.80351906 0.25000000 -0.80449658 0.25000000 -0.80547410 0.25000000 -0.80645161 0.25000000 -0.80742913 0.25000000 -0.80840665 0.25000000 -0.80938416 0.25000000 -0.81036168 0.25000000 -0.81133920 0.25000000 -0.81231672 0.25000000 -0.81329423 0.25000000 -0.81427175 0.25000000 -0.81524927 0.25000000 -0.81622678 0.25000000 -0.81720430 0.25000000 -0.81818182 0.25000000 -0.81915934 0.25000000 -0.82013685 0.25000000 -0.82111437 0.25000000 -0.82209189 0.25000000 -0.82306940 0.25000000 -0.82404692 0.25000000 -0.82502444 0.25000000 -0.82600196 0.25000000 -0.82697947 0.25000000 -0.82795699 0.25000000 -0.82893451 0.25000000 -0.82991202 0.25000000 -0.83088954 0.25000000 -0.83186706 0.25000000 -0.83284457 0.25000000 -0.83382209 0.25000000 -0.83479961 0.25000000 -0.83577713 0.25000000 -0.83675464 0.25000000 -0.83773216 0.25000000 -0.83870968 0.25000000 -0.83968719 0.25000000 -0.84066471 0.25000000 -0.84164223 0.25000000 -0.84261975 0.25000000 -0.84359726 0.25000000 -0.84457478 0.25000000 -0.84555230 0.25000000 -0.84652981 0.25000000 -0.84750733 0.25000000 -0.84848485 0.25000000 -0.84946237 0.25000000 -0.85043988 0.25000000 -0.85141740 0.25000000 -0.85239492 0.25000000 -0.85337243 0.25000000 -0.85434995 0.25000000 -0.85532747 0.25000000 -0.85630499 0.25000000 -0.85728250 0.25000000 -0.85826002 0.25000000 -0.85923754 0.25000000 -0.86021505 0.25000000 -0.86119257 0.25000000 -0.86217009 0.25000000 -0.86314761 0.25000000 -0.86412512 0.25000000 -0.86510264 0.25000000 -0.86608016 0.25000000 -0.86705767 0.25000000 -0.86803519 0.25000000 -0.86901271 0.25000000 -0.86999022 0.25000000 -0.87096774 0.25000000 -0.87194526 0.25000000 -0.87292278 0.25000000 -0.87390029 0.25000000 -0.87487781 0.25000000 -0.87585533 0.25000000 -0.87683284 0.25000000 -0.87781036 0.25000000 -0.87878788 0.25000000 -0.87976540 0.25000000 -0.88074291 0.25000000 -0.88172043 0.25000000 -0.88269795 0.25000000 -0.88367546 0.25000000 -0.88465298 0.25000000 -0.88563050 0.25000000 -0.88660802 0.25000000 -0.88758553 0.25000000 -0.88856305 0.25000000 -0.88954057 0.25000000 -0.89051808 0.25000000 -0.89149560 0.25000000 -0.89247312 0.25000000 -0.89345064 0.25000000 -0.89442815 0.25000000 -0.89540567 0.25000000 -0.89638319 0.25000000 -0.89736070 0.25000000 -0.89833822 0.25000000 -0.89931574 0.25000000 -0.90029326 0.25000000 -0.90127077 0.25000000 -0.90224829 0.25000000 -0.90322581 0.25000000 -0.90420332 0.25000000 -0.90518084 0.25000000 -0.90615836 0.25000000 -0.90713587 0.25000000 -0.90811339 0.25000000 -0.90909091 0.25000000 -0.91006843 0.25000000 -0.91104594 0.25000000 -0.91202346 0.25000000 -0.91300098 0.25000000 -0.91397849 0.25000000 -0.91495601 0.25000000 -0.91593353 0.25000000 -0.91691105 0.25000000 -0.91788856 0.25000000 -0.91886608 0.25000000 -0.91984360 0.25000000 -0.92082111 0.25000000 -0.92179863 0.25000000 -0.92277615 0.25000000 -0.92375367 0.25000000 -0.92473118 0.25000000 -0.92570870 0.25000000 -0.92668622 0.25000000 -0.92766373 0.25000000 -0.92864125 0.25000000 -0.92961877 0.25000000 -0.93059629 0.25000000 -0.93157380 0.25000000 -0.93255132 0.25000000 -0.93352884 0.25000000 -0.93450635 0.25000000 -0.93548387 0.25000000 -0.93646139 0.25000000 -0.93743891 0.25000000 -0.93841642 0.25000000 -0.93939394 0.25000000 -0.94037146 0.25000000 -0.94134897 0.25000000 -0.94232649 0.25000000 -0.94330401 0.25000000 -0.94428152 0.25000000 -0.94525904 0.25000000 -0.94623656 0.25000000 -0.94721408 0.25000000 -0.94819159 0.25000000 -0.94916911 0.25000000 -0.95014663 0.25000000 -0.95112414 0.25000000 -0.95210166 0.25000000 -0.95307918 0.25000000 -0.95405670 0.25000000 -0.95503421 0.25000000 -0.95601173 0.25000000 -0.95698925 0.25000000 -0.95796676 0.25000000 -0.95894428 0.25000000 -0.95992180 0.25000000 -0.96089932 0.25000000 -0.96187683 0.25000000 -0.96285435 0.25000000 -0.96383187 0.25000000 -0.96480938 0.25000000 -0.96578690 0.25000000 -0.96676442 0.25000000 -0.96774194 0.25000000 -0.96871945 0.25000000 -0.96969697 0.25000000 -0.97067449 0.25000000 -0.97165200 0.25000000 -0.97262952 0.25000000 -0.97360704 0.25000000 -0.97458456 0.25000000 -0.97556207 0.25000000 -0.97653959 0.25000000 -0.97751711 0.25000000 -0.97849462 0.25000000 -0.97947214 0.25000000 -0.98044966 0.25000000 -0.98142717 0.25000000 -0.98240469 0.25000000 -0.98338221 0.25000000 -0.98435973 0.25000000 -0.98533724 0.25000000 -0.98631476 0.25000000 -0.98729228 0.25000000 -0.98826979 0.25000000 -0.98924731 0.25000000 -0.99022483 0.25000000 -0.99120235 0.25000000 -0.99217986 0.25000000 -0.99315738 0.25000000 -0.99413490 0.25000000 -0.99511241 0.25000000 -0.99608993 0.25000000 -0.99706745 0.25000000 -0.99804497 0.25000000 -0.99902248 0.25000000 -1.00000000 nan +Ambient Power +0.000000000 nan +0.000977517 0.750000000 +0.001955034 0.750000000 +0.002932551 0.750000000 +0.003910068 0.750000000 +0.004887586 0.750000000 +0.005865103 0.750000000 +0.006842620 0.750000000 +0.007820137 0.750000000 +0.008797654 0.750000000 +0.009775171 0.750000000 +0.010752688 0.750000000 +0.011730205 0.750000000 +0.012707722 0.750000000 +0.013685239 0.750000000 +0.014662757 0.750000000 +0.015640274 0.750000000 +0.016617791 0.750000000 +0.017595308 0.750000000 +0.018572825 0.750000000 +0.019550342 0.750000000 +0.020527859 0.750000000 +0.021505376 0.750000000 +0.022482893 0.750000000 +0.023460411 0.750000000 +0.024437928 0.750000000 +0.025415445 0.750000000 +0.026392962 0.750000000 +0.027370479 0.750000000 +0.028347996 0.750000000 +0.029325513 0.750000000 +0.030303030 0.750000000 +0.031280547 0.750000000 +0.032258065 0.750000000 +0.033235582 0.750000000 +0.034213099 0.750000000 +0.035190616 0.750000000 +0.036168133 0.750000000 +0.037145650 0.750000000 +0.038123167 0.750000000 +0.039100684 0.750000000 +0.040078201 0.750000000 +0.041055718 0.750000000 +0.042033236 0.750000000 +0.043010753 0.750000000 +0.043988270 0.750000000 +0.044965787 0.750000000 +0.045943304 0.750000000 +0.046920821 0.750000000 +0.047898338 0.750000000 +0.048875855 0.750000000 +0.049853372 0.750000000 +0.050830890 0.750000000 +0.051808407 0.750000000 +0.052785924 0.750000000 +0.053763441 0.750000000 +0.054740958 0.750000000 +0.055718475 0.750000000 +0.056695992 0.750000000 +0.057673509 0.750000000 +0.058651026 0.750000000 +0.059628543 0.750000000 +0.060606061 0.750000000 +0.061583578 0.750000000 +0.062561095 0.750000000 +0.063538612 0.750000000 +0.064516129 0.750000000 +0.065493646 0.750000000 +0.066471163 0.750000000 +0.067448680 0.750000000 +0.068426197 0.750000000 +0.069403715 0.750000000 +0.070381232 0.750000000 +0.071358749 0.750000000 +0.072336266 0.750000000 +0.073313783 0.750000000 +0.074291300 0.750000000 +0.075268817 0.750000000 +0.076246334 0.750000000 +0.077223851 0.750000000 +0.078201369 0.750000000 +0.079178886 0.750000000 +0.080156403 0.750000000 +0.081133920 0.750000000 +0.082111437 0.750000000 +0.083088954 0.750000000 +0.084066471 0.750000000 +0.085043988 0.750000000 +0.086021505 0.750000000 +0.086999022 0.750000000 +0.087976540 0.750000000 +0.088954057 0.750000000 +0.089931574 0.750000000 +0.090909091 0.750000000 +0.091886608 0.750000000 +0.092864125 0.750000000 +0.093841642 0.750000000 +0.094819159 0.750000000 +0.095796676 0.750000000 +0.096774194 0.750000000 +0.097751711 0.750000000 +0.098729228 0.750000000 +0.099706745 0.750000000 +0.100684262 0.750000000 +0.101661779 0.750000000 +0.102639296 0.750000000 +0.103616813 0.750000000 +0.104594330 0.750000000 +0.105571848 0.750000000 +0.106549365 0.750000000 +0.107526882 0.750000000 +0.108504399 0.750000000 +0.109481916 0.750000000 +0.110459433 0.750000000 +0.111436950 0.750000000 +0.112414467 0.750000000 +0.113391984 0.750000000 +0.114369501 0.750000000 +0.115347019 0.750000000 +0.116324536 0.750000000 +0.117302053 0.750000000 +0.118279570 0.750000000 +0.119257087 0.750000000 +0.120234604 0.750000000 +0.121212121 0.750000000 +0.122189638 0.750000000 +0.123167155 0.750000000 +0.124144673 0.750000000 +0.125122190 0.750000000 +0.126099707 0.750000000 +0.127077224 0.750000000 +0.128054741 0.750000000 +0.129032258 0.750000000 +0.130009775 0.750000000 +0.130987292 0.750000000 +0.131964809 0.750000000 +0.132942326 0.750000000 +0.133919844 0.750000000 +0.134897361 0.750000000 +0.135874878 0.750000000 +0.136852395 0.750000000 +0.137829912 0.750000000 +0.138807429 0.750000000 +0.139784946 0.750000000 +0.140762463 0.750000000 +0.141739980 0.750000000 +0.142717498 0.750000000 +0.143695015 0.750000000 +0.144672532 0.750000000 +0.145650049 0.750000000 +0.146627566 0.750000000 +0.147605083 0.750000000 +0.148582600 0.750000000 +0.149560117 0.750000000 +0.150537634 0.750000000 +0.151515152 0.750000000 +0.152492669 0.750000000 +0.153470186 0.750000000 +0.154447703 0.750000000 +0.155425220 0.750000000 +0.156402737 0.750000000 +0.157380254 0.750000000 +0.158357771 0.750000000 +0.159335288 0.750000000 +0.160312805 0.750000000 +0.161290323 0.750000000 +0.162267840 0.750000000 +0.163245357 0.750000000 +0.164222874 0.750000000 +0.165200391 0.750000000 +0.166177908 0.750000000 +0.167155425 0.750000000 +0.168132942 0.750000000 +0.169110459 0.750000000 +0.170087977 0.750000000 +0.171065494 0.750000000 +0.172043011 0.750000000 +0.173020528 0.750000000 +0.173998045 0.750000000 +0.174975562 0.750000000 +0.175953079 0.750000000 +0.176930596 0.750000000 +0.177908113 0.750000000 +0.178885630 0.750000000 +0.179863148 0.750000000 +0.180840665 0.750000000 +0.181818182 0.750000000 +0.182795699 0.750000000 +0.183773216 0.750000000 +0.184750733 0.750000000 +0.185728250 0.750000000 +0.186705767 0.750000000 +0.187683284 0.750000000 +0.188660802 0.750000000 +0.189638319 0.750000000 +0.190615836 0.750000000 +0.191593353 0.750000000 +0.192570870 0.750000000 +0.193548387 0.750000000 +0.194525904 0.750000000 +0.195503421 0.750000000 +0.196480938 0.750000000 +0.197458456 0.750000000 +0.198435973 0.750000000 +0.199413490 0.750000000 +0.200391007 0.750000000 +0.201368524 0.750000000 +0.202346041 0.750000000 +0.203323558 0.750000000 +0.204301075 0.750000000 +0.205278592 0.750000000 +0.206256109 0.750000000 +0.207233627 0.750000000 +0.208211144 0.750000000 +0.209188661 0.750000000 +0.210166178 0.750000000 +0.211143695 0.750000000 +0.212121212 0.750000000 +0.213098729 0.750000000 +0.214076246 0.750000000 +0.215053763 0.750000000 +0.216031281 0.750000000 +0.217008798 0.750000000 +0.217986315 0.750000000 +0.218963832 0.750000000 +0.219941349 0.750000000 +0.220918866 0.750000000 +0.221896383 0.750000000 +0.222873900 0.750000000 +0.223851417 0.750000000 +0.224828935 0.750000000 +0.225806452 0.750000000 +0.226783969 0.750000000 +0.227761486 0.750000000 +0.228739003 0.750000000 +0.229716520 0.750000000 +0.230694037 0.750000000 +0.231671554 0.750000000 +0.232649071 0.750000000 +0.233626588 0.750000000 +0.234604106 0.750000000 +0.235581623 0.750000000 +0.236559140 0.750000000 +0.237536657 0.750000000 +0.238514174 0.750000000 +0.239491691 0.750000000 +0.240469208 0.750000000 +0.241446725 0.750000000 +0.242424242 0.750000000 +0.243401760 0.750000000 +0.244379277 0.750000000 +0.245356794 0.750000000 +0.246334311 0.750000000 +0.247311828 0.750000000 +0.248289345 0.750000000 +0.249266862 0.750000000 +0.250244379 0.749755621 +0.251221896 0.748778104 +0.252199413 0.747800587 +0.253176931 0.746823069 +0.254154448 0.745845552 +0.255131965 0.744868035 +0.256109482 0.743890518 +0.257086999 0.742913001 +0.258064516 0.741935484 +0.259042033 0.740957967 +0.260019550 0.739980450 +0.260997067 0.739002933 +0.261974585 0.738025415 +0.262952102 0.737047898 +0.263929619 0.736070381 +0.264907136 0.735092864 +0.265884653 0.734115347 +0.266862170 0.733137830 +0.267839687 0.732160313 +0.268817204 0.731182796 +0.269794721 0.730205279 +0.270772239 0.729227761 +0.271749756 0.728250244 +0.272727273 0.727272727 +0.273704790 0.726295210 +0.274682307 0.725317693 +0.275659824 0.724340176 +0.276637341 0.723362659 +0.277614858 0.722385142 +0.278592375 0.721407625 +0.279569892 0.720430108 +0.280547410 0.719452590 +0.281524927 0.718475073 +0.282502444 0.717497556 +0.283479961 0.716520039 +0.284457478 0.715542522 +0.285434995 0.714565005 +0.286412512 0.713587488 +0.287390029 0.712609971 +0.288367546 0.711632454 +0.289345064 0.710654936 +0.290322581 0.709677419 +0.291300098 0.708699902 +0.292277615 0.707722385 +0.293255132 0.706744868 +0.294232649 0.705767351 +0.295210166 0.704789834 +0.296187683 0.703812317 +0.297165200 0.702834800 +0.298142717 0.701857283 +0.299120235 0.700879765 +0.300097752 0.699902248 +0.301075269 0.698924731 +0.302052786 0.697947214 +0.303030303 0.696969697 +0.304007820 0.695992180 +0.304985337 0.695014663 +0.305962854 0.694037146 +0.306940371 0.693059629 +0.307917889 0.692082111 +0.308895406 0.691104594 +0.309872923 0.690127077 +0.310850440 0.689149560 +0.311827957 0.688172043 +0.312805474 0.687194526 +0.313782991 0.686217009 +0.314760508 0.685239492 +0.315738025 0.684261975 +0.316715543 0.683284457 +0.317693060 0.682306940 +0.318670577 0.681329423 +0.319648094 0.680351906 +0.320625611 0.679374389 +0.321603128 0.678396872 +0.322580645 0.677419355 +0.323558162 0.676441838 +0.324535679 0.675464321 +0.325513196 0.674486804 +0.326490714 0.673509286 +0.327468231 0.672531769 +0.328445748 0.671554252 +0.329423265 0.670576735 +0.330400782 0.669599218 +0.331378299 0.668621701 +0.332355816 0.667644184 +0.333333333 0.666666667 +0.334310850 0.665689150 +0.335288368 0.664711632 +0.336265885 0.663734115 +0.337243402 0.662756598 +0.338220919 0.661779081 +0.339198436 0.660801564 +0.340175953 0.659824047 +0.341153470 0.658846530 +0.342130987 0.657869013 +0.343108504 0.656891496 +0.344086022 0.655913978 +0.345063539 0.654936461 +0.346041056 0.653958944 +0.347018573 0.652981427 +0.347996090 0.652003910 +0.348973607 0.651026393 +0.349951124 0.650048876 +0.350928641 0.649071359 +0.351906158 0.648093842 +0.352883675 0.647116325 +0.353861193 0.646138807 +0.354838710 0.645161290 +0.355816227 0.644183773 +0.356793744 0.643206256 +0.357771261 0.642228739 +0.358748778 0.641251222 +0.359726295 0.640273705 +0.360703812 0.639296188 +0.361681329 0.638318671 +0.362658847 0.637341153 +0.363636364 0.636363636 +0.364613881 0.635386119 +0.365591398 0.634408602 +0.366568915 0.633431085 +0.367546432 0.632453568 +0.368523949 0.631476051 +0.369501466 0.630498534 +0.370478983 0.629521017 +0.371456500 0.628543500 +0.372434018 0.627565982 +0.373411535 0.626588465 +0.374389052 0.625610948 +0.375366569 0.624633431 +0.376344086 0.623655914 +0.377321603 0.622678397 +0.378299120 0.621700880 +0.379276637 0.620723363 +0.380254154 0.619745846 +0.381231672 0.618768328 +0.382209189 0.617790811 +0.383186706 0.616813294 +0.384164223 0.615835777 +0.385141740 0.614858260 +0.386119257 0.613880743 +0.387096774 0.612903226 +0.388074291 0.611925709 +0.389051808 0.610948192 +0.390029326 0.609970674 +0.391006843 0.608993157 +0.391984360 0.608015640 +0.392961877 0.607038123 +0.393939394 0.606060606 +0.394916911 0.605083089 +0.395894428 0.604105572 +0.396871945 0.603128055 +0.397849462 0.602150538 +0.398826979 0.601173021 +0.399804497 0.600195503 +0.400782014 0.599217986 +0.401759531 0.598240469 +0.402737048 0.597262952 +0.403714565 0.596285435 +0.404692082 0.595307918 +0.405669599 0.594330401 +0.406647116 0.593352884 +0.407624633 0.592375367 +0.408602151 0.591397849 +0.409579668 0.590420332 +0.410557185 0.589442815 +0.411534702 0.588465298 +0.412512219 0.587487781 +0.413489736 0.586510264 +0.414467253 0.585532747 +0.415444770 0.584555230 +0.416422287 0.583577713 +0.417399804 0.582600196 +0.418377322 0.581622678 +0.419354839 0.580645161 +0.420332356 0.579667644 +0.421309873 0.578690127 +0.422287390 0.577712610 +0.423264907 0.576735093 +0.424242424 0.575757576 +0.425219941 0.574780059 +0.426197458 0.573802542 +0.427174976 0.572825024 +0.428152493 0.571847507 +0.429130010 0.570869990 +0.430107527 0.569892473 +0.431085044 0.568914956 +0.432062561 0.567937439 +0.433040078 0.566959922 +0.434017595 0.565982405 +0.434995112 0.565004888 +0.435972630 0.564027370 +0.436950147 0.563049853 +0.437927664 0.562072336 +0.438905181 0.561094819 +0.439882698 0.560117302 +0.440860215 0.559139785 +0.441837732 0.558162268 +0.442815249 0.557184751 +0.443792766 0.556207234 +0.444770283 0.555229717 +0.445747801 0.554252199 +0.446725318 0.553274682 +0.447702835 0.552297165 +0.448680352 0.551319648 +0.449657869 0.550342131 +0.450635386 0.549364614 +0.451612903 0.548387097 +0.452590420 0.547409580 +0.453567937 0.546432063 +0.454545455 0.545454545 +0.455522972 0.544477028 +0.456500489 0.543499511 +0.457478006 0.542521994 +0.458455523 0.541544477 +0.459433040 0.540566960 +0.460410557 0.539589443 +0.461388074 0.538611926 +0.462365591 0.537634409 +0.463343109 0.536656891 +0.464320626 0.535679374 +0.465298143 0.534701857 +0.466275660 0.533724340 +0.467253177 0.532746823 +0.468230694 0.531769306 +0.469208211 0.530791789 +0.470185728 0.529814272 +0.471163245 0.528836755 +0.472140762 0.527859238 +0.473118280 0.526881720 +0.474095797 0.525904203 +0.475073314 0.524926686 +0.476050831 0.523949169 +0.477028348 0.522971652 +0.478005865 0.521994135 +0.478983382 0.521016618 +0.479960899 0.520039101 +0.480938416 0.519061584 +0.481915934 0.518084066 +0.482893451 0.517106549 +0.483870968 0.516129032 +0.484848485 0.515151515 +0.485826002 0.514173998 +0.486803519 0.513196481 +0.487781036 0.512218964 +0.488758553 0.511241447 +0.489736070 0.510263930 +0.490713587 0.509286413 +0.491691105 0.508308895 +0.492668622 0.507331378 +0.493646139 0.506353861 +0.494623656 0.505376344 +0.495601173 0.504398827 +0.496578690 0.503421310 +0.497556207 0.502443793 +0.498533724 0.501466276 +0.499511241 0.500488759 +0.500488759 0.499511241 +0.501466276 0.498533724 +0.502443793 0.497556207 +0.503421310 0.496578690 +0.504398827 0.495601173 +0.505376344 0.494623656 +0.506353861 0.493646139 +0.507331378 0.492668622 +0.508308895 0.491691105 +0.509286413 0.490713587 +0.510263930 0.489736070 +0.511241447 0.488758553 +0.512218964 0.487781036 +0.513196481 0.486803519 +0.514173998 0.485826002 +0.515151515 0.484848485 +0.516129032 0.483870968 +0.517106549 0.482893451 +0.518084066 0.481915934 +0.519061584 0.480938416 +0.520039101 0.479960899 +0.521016618 0.478983382 +0.521994135 0.478005865 +0.522971652 0.477028348 +0.523949169 0.476050831 +0.524926686 0.475073314 +0.525904203 0.474095797 +0.526881720 0.473118280 +0.527859238 0.472140762 +0.528836755 0.471163245 +0.529814272 0.470185728 +0.530791789 0.469208211 +0.531769306 0.468230694 +0.532746823 0.467253177 +0.533724340 0.466275660 +0.534701857 0.465298143 +0.535679374 0.464320626 +0.536656891 0.463343109 +0.537634409 0.462365591 +0.538611926 0.461388074 +0.539589443 0.460410557 +0.540566960 0.459433040 +0.541544477 0.458455523 +0.542521994 0.457478006 +0.543499511 0.456500489 +0.544477028 0.455522972 +0.545454545 0.454545455 +0.546432063 0.453567937 +0.547409580 0.452590420 +0.548387097 0.451612903 +0.549364614 0.450635386 +0.550342131 0.449657869 +0.551319648 0.448680352 +0.552297165 0.447702835 +0.553274682 0.446725318 +0.554252199 0.445747801 +0.555229717 0.444770283 +0.556207234 0.443792766 +0.557184751 0.442815249 +0.558162268 0.441837732 +0.559139785 0.440860215 +0.560117302 0.439882698 +0.561094819 0.438905181 +0.562072336 0.437927664 +0.563049853 0.436950147 +0.564027370 0.435972630 +0.565004888 0.434995112 +0.565982405 0.434017595 +0.566959922 0.433040078 +0.567937439 0.432062561 +0.568914956 0.431085044 +0.569892473 0.430107527 +0.570869990 0.429130010 +0.571847507 0.428152493 +0.572825024 0.427174976 +0.573802542 0.426197458 +0.574780059 0.425219941 +0.575757576 0.424242424 +0.576735093 0.423264907 +0.577712610 0.422287390 +0.578690127 0.421309873 +0.579667644 0.420332356 +0.580645161 0.419354839 +0.581622678 0.418377322 +0.582600196 0.417399804 +0.583577713 0.416422287 +0.584555230 0.415444770 +0.585532747 0.414467253 +0.586510264 0.413489736 +0.587487781 0.412512219 +0.588465298 0.411534702 +0.589442815 0.410557185 +0.590420332 0.409579668 +0.591397849 0.408602151 +0.592375367 0.407624633 +0.593352884 0.406647116 +0.594330401 0.405669599 +0.595307918 0.404692082 +0.596285435 0.403714565 +0.597262952 0.402737048 +0.598240469 0.401759531 +0.599217986 0.400782014 +0.600195503 0.399804497 +0.601173021 0.398826979 +0.602150538 0.397849462 +0.603128055 0.396871945 +0.604105572 0.395894428 +0.605083089 0.394916911 +0.606060606 0.393939394 +0.607038123 0.392961877 +0.608015640 0.391984360 +0.608993157 0.391006843 +0.609970674 0.390029326 +0.610948192 0.389051808 +0.611925709 0.388074291 +0.612903226 0.387096774 +0.613880743 0.386119257 +0.614858260 0.385141740 +0.615835777 0.384164223 +0.616813294 0.383186706 +0.617790811 0.382209189 +0.618768328 0.381231672 +0.619745846 0.380254154 +0.620723363 0.379276637 +0.621700880 0.378299120 +0.622678397 0.377321603 +0.623655914 0.376344086 +0.624633431 0.375366569 +0.625610948 0.374389052 +0.626588465 0.373411535 +0.627565982 0.372434018 +0.628543500 0.371456500 +0.629521017 0.370478983 +0.630498534 0.369501466 +0.631476051 0.368523949 +0.632453568 0.367546432 +0.633431085 0.366568915 +0.634408602 0.365591398 +0.635386119 0.364613881 +0.636363636 0.363636364 +0.637341153 0.362658847 +0.638318671 0.361681329 +0.639296188 0.360703812 +0.640273705 0.359726295 +0.641251222 0.358748778 +0.642228739 0.357771261 +0.643206256 0.356793744 +0.644183773 0.355816227 +0.645161290 0.354838710 +0.646138807 0.353861193 +0.647116325 0.352883675 +0.648093842 0.351906158 +0.649071359 0.350928641 +0.650048876 0.349951124 +0.651026393 0.348973607 +0.652003910 0.347996090 +0.652981427 0.347018573 +0.653958944 0.346041056 +0.654936461 0.345063539 +0.655913978 0.344086022 +0.656891496 0.343108504 +0.657869013 0.342130987 +0.658846530 0.341153470 +0.659824047 0.340175953 +0.660801564 0.339198436 +0.661779081 0.338220919 +0.662756598 0.337243402 +0.663734115 0.336265885 +0.664711632 0.335288368 +0.665689150 0.334310850 +0.666666667 0.333333333 +0.667644184 0.332355816 +0.668621701 0.331378299 +0.669599218 0.330400782 +0.670576735 0.329423265 +0.671554252 0.328445748 +0.672531769 0.327468231 +0.673509286 0.326490714 +0.674486804 0.325513196 +0.675464321 0.324535679 +0.676441838 0.323558162 +0.677419355 0.322580645 +0.678396872 0.321603128 +0.679374389 0.320625611 +0.680351906 0.319648094 +0.681329423 0.318670577 +0.682306940 0.317693060 +0.683284457 0.316715543 +0.684261975 0.315738025 +0.685239492 0.314760508 +0.686217009 0.313782991 +0.687194526 0.312805474 +0.688172043 0.311827957 +0.689149560 0.310850440 +0.690127077 0.309872923 +0.691104594 0.308895406 +0.692082111 0.307917889 +0.693059629 0.306940371 +0.694037146 0.305962854 +0.695014663 0.304985337 +0.695992180 0.304007820 +0.696969697 0.303030303 +0.697947214 0.302052786 +0.698924731 0.301075269 +0.699902248 0.300097752 +0.700879765 0.299120235 +0.701857283 0.298142717 +0.702834800 0.297165200 +0.703812317 0.296187683 +0.704789834 0.295210166 +0.705767351 0.294232649 +0.706744868 0.293255132 +0.707722385 0.292277615 +0.708699902 0.291300098 +0.709677419 0.290322581 +0.710654936 0.289345064 +0.711632454 0.288367546 +0.712609971 0.287390029 +0.713587488 0.286412512 +0.714565005 0.285434995 +0.715542522 0.284457478 +0.716520039 0.283479961 +0.717497556 0.282502444 +0.718475073 0.281524927 +0.719452590 0.280547410 +0.720430108 0.279569892 +0.721407625 0.278592375 +0.722385142 0.277614858 +0.723362659 0.276637341 +0.724340176 0.275659824 +0.725317693 0.274682307 +0.726295210 0.273704790 +0.727272727 0.272727273 +0.728250244 0.271749756 +0.729227761 0.270772239 +0.730205279 0.269794721 +0.731182796 0.268817204 +0.732160313 0.267839687 +0.733137830 0.266862170 +0.734115347 0.265884653 +0.735092864 0.264907136 +0.736070381 0.263929619 +0.737047898 0.262952102 +0.738025415 0.261974585 +0.739002933 0.260997067 +0.739980450 0.260019550 +0.740957967 0.259042033 +0.741935484 0.258064516 +0.742913001 0.257086999 +0.743890518 0.256109482 +0.744868035 0.255131965 +0.745845552 0.254154448 +0.746823069 0.253176931 +0.747800587 0.252199413 +0.748778104 0.251221896 +0.749755621 0.250244379 +0.750733138 0.250000000 +0.751710655 0.250000000 +0.752688172 0.250000000 +0.753665689 0.250000000 +0.754643206 0.250000000 +0.755620723 0.250000000 +0.756598240 0.250000000 +0.757575758 0.250000000 +0.758553275 0.250000000 +0.759530792 0.250000000 +0.760508309 0.250000000 +0.761485826 0.250000000 +0.762463343 0.250000000 +0.763440860 0.250000000 +0.764418377 0.250000000 +0.765395894 0.250000000 +0.766373412 0.250000000 +0.767350929 0.250000000 +0.768328446 0.250000000 +0.769305963 0.250000000 +0.770283480 0.250000000 +0.771260997 0.250000000 +0.772238514 0.250000000 +0.773216031 0.250000000 +0.774193548 0.250000000 +0.775171065 0.250000000 +0.776148583 0.250000000 +0.777126100 0.250000000 +0.778103617 0.250000000 +0.779081134 0.250000000 +0.780058651 0.250000000 +0.781036168 0.250000000 +0.782013685 0.250000000 +0.782991202 0.250000000 +0.783968719 0.250000000 +0.784946237 0.250000000 +0.785923754 0.250000000 +0.786901271 0.250000000 +0.787878788 0.250000000 +0.788856305 0.250000000 +0.789833822 0.250000000 +0.790811339 0.250000000 +0.791788856 0.250000000 +0.792766373 0.250000000 +0.793743891 0.250000000 +0.794721408 0.250000000 +0.795698925 0.250000000 +0.796676442 0.250000000 +0.797653959 0.250000000 +0.798631476 0.250000000 +0.799608993 0.250000000 +0.800586510 0.250000000 +0.801564027 0.250000000 +0.802541544 0.250000000 +0.803519062 0.250000000 +0.804496579 0.250000000 +0.805474096 0.250000000 +0.806451613 0.250000000 +0.807429130 0.250000000 +0.808406647 0.250000000 +0.809384164 0.250000000 +0.810361681 0.250000000 +0.811339198 0.250000000 +0.812316716 0.250000000 +0.813294233 0.250000000 +0.814271750 0.250000000 +0.815249267 0.250000000 +0.816226784 0.250000000 +0.817204301 0.250000000 +0.818181818 0.250000000 +0.819159335 0.250000000 +0.820136852 0.250000000 +0.821114370 0.250000000 +0.822091887 0.250000000 +0.823069404 0.250000000 +0.824046921 0.250000000 +0.825024438 0.250000000 +0.826001955 0.250000000 +0.826979472 0.250000000 +0.827956989 0.250000000 +0.828934506 0.250000000 +0.829912023 0.250000000 +0.830889541 0.250000000 +0.831867058 0.250000000 +0.832844575 0.250000000 +0.833822092 0.250000000 +0.834799609 0.250000000 +0.835777126 0.250000000 +0.836754643 0.250000000 +0.837732160 0.250000000 +0.838709677 0.250000000 +0.839687195 0.250000000 +0.840664712 0.250000000 +0.841642229 0.250000000 +0.842619746 0.250000000 +0.843597263 0.250000000 +0.844574780 0.250000000 +0.845552297 0.250000000 +0.846529814 0.250000000 +0.847507331 0.250000000 +0.848484848 0.250000000 +0.849462366 0.250000000 +0.850439883 0.250000000 +0.851417400 0.250000000 +0.852394917 0.250000000 +0.853372434 0.250000000 +0.854349951 0.250000000 +0.855327468 0.250000000 +0.856304985 0.250000000 +0.857282502 0.250000000 +0.858260020 0.250000000 +0.859237537 0.250000000 +0.860215054 0.250000000 +0.861192571 0.250000000 +0.862170088 0.250000000 +0.863147605 0.250000000 +0.864125122 0.250000000 +0.865102639 0.250000000 +0.866080156 0.250000000 +0.867057674 0.250000000 +0.868035191 0.250000000 +0.869012708 0.250000000 +0.869990225 0.250000000 +0.870967742 0.250000000 +0.871945259 0.250000000 +0.872922776 0.250000000 +0.873900293 0.250000000 +0.874877810 0.250000000 +0.875855327 0.250000000 +0.876832845 0.250000000 +0.877810362 0.250000000 +0.878787879 0.250000000 +0.879765396 0.250000000 +0.880742913 0.250000000 +0.881720430 0.250000000 +0.882697947 0.250000000 +0.883675464 0.250000000 +0.884652981 0.250000000 +0.885630499 0.250000000 +0.886608016 0.250000000 +0.887585533 0.250000000 +0.888563050 0.250000000 +0.889540567 0.250000000 +0.890518084 0.250000000 +0.891495601 0.250000000 +0.892473118 0.250000000 +0.893450635 0.250000000 +0.894428152 0.250000000 +0.895405670 0.250000000 +0.896383187 0.250000000 +0.897360704 0.250000000 +0.898338221 0.250000000 +0.899315738 0.250000000 +0.900293255 0.250000000 +0.901270772 0.250000000 +0.902248289 0.250000000 +0.903225806 0.250000000 +0.904203324 0.250000000 +0.905180841 0.250000000 +0.906158358 0.250000000 +0.907135875 0.250000000 +0.908113392 0.250000000 +0.909090909 0.250000000 +0.910068426 0.250000000 +0.911045943 0.250000000 +0.912023460 0.250000000 +0.913000978 0.250000000 +0.913978495 0.250000000 +0.914956012 0.250000000 +0.915933529 0.250000000 +0.916911046 0.250000000 +0.917888563 0.250000000 +0.918866080 0.250000000 +0.919843597 0.250000000 +0.920821114 0.250000000 +0.921798631 0.250000000 +0.922776149 0.250000000 +0.923753666 0.250000000 +0.924731183 0.250000000 +0.925708700 0.250000000 +0.926686217 0.250000000 +0.927663734 0.250000000 +0.928641251 0.250000000 +0.929618768 0.250000000 +0.930596285 0.250000000 +0.931573803 0.250000000 +0.932551320 0.250000000 +0.933528837 0.250000000 +0.934506354 0.250000000 +0.935483871 0.250000000 +0.936461388 0.250000000 +0.937438905 0.250000000 +0.938416422 0.250000000 +0.939393939 0.250000000 +0.940371457 0.250000000 +0.941348974 0.250000000 +0.942326491 0.250000000 +0.943304008 0.250000000 +0.944281525 0.250000000 +0.945259042 0.250000000 +0.946236559 0.250000000 +0.947214076 0.250000000 +0.948191593 0.250000000 +0.949169110 0.250000000 +0.950146628 0.250000000 +0.951124145 0.250000000 +0.952101662 0.250000000 +0.953079179 0.250000000 +0.954056696 0.250000000 +0.955034213 0.250000000 +0.956011730 0.250000000 +0.956989247 0.250000000 +0.957966764 0.250000000 +0.958944282 0.250000000 +0.959921799 0.250000000 +0.960899316 0.250000000 +0.961876833 0.250000000 +0.962854350 0.250000000 +0.963831867 0.250000000 +0.964809384 0.250000000 +0.965786901 0.250000000 +0.966764418 0.250000000 +0.967741935 0.250000000 +0.968719453 0.250000000 +0.969696970 0.250000000 +0.970674487 0.250000000 +0.971652004 0.250000000 +0.972629521 0.250000000 +0.973607038 0.250000000 +0.974584555 0.250000000 +0.975562072 0.250000000 +0.976539589 0.250000000 +0.977517107 0.250000000 +0.978494624 0.250000000 +0.979472141 0.250000000 +0.980449658 0.250000000 +0.981427175 0.250000000 +0.982404692 0.250000000 +0.983382209 0.250000000 +0.984359726 0.250000000 +0.985337243 0.250000000 +0.986314761 0.250000000 +0.987292278 0.250000000 +0.988269795 0.250000000 +0.989247312 0.250000000 +0.990224829 0.250000000 +0.991202346 0.250000000 +0.992179863 0.250000000 +0.993157380 0.250000000 +0.994134897 0.250000000 +0.995112414 0.250000000 +0.996089932 0.250000000 +0.997067449 0.250000000 +0.998044966 0.250000000 +0.999022483 0.250000000 +1.000000000 nan diff --git a/examples/takagi-sugeno/SimpleDimmer.fll b/examples/takagi-sugeno/SimpleDimmer.fll index 038c785..f08e563 100644 --- a/examples/takagi-sugeno/SimpleDimmer.fll +++ b/examples/takagi-sugeno/SimpleDimmer.fll @@ -1,18 +1,19 @@ -Engine: simple-dimmer +Engine: SimpleDimmer InputVariable: Ambient enabled: true range: 0.000 1.000 + lock-range: false term: DARK Triangle 0.000 0.250 0.500 term: MEDIUM Triangle 0.250 0.500 0.750 term: BRIGHT Triangle 0.500 0.750 1.000 OutputVariable: Power enabled: true range: 0.000 1.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage TakagiSugeno default: nan lock-previous: false - lock-range: false term: LOW Constant 0.250 term: MEDIUM Constant 0.500 term: HIGH Constant 0.750 @@ -20,7 +21,8 @@ RuleBlock: enabled: true conjunction: none disjunction: none - activation: none + implication: none + activation: General rule: if Ambient is DARK then Power is HIGH rule: if Ambient is MEDIUM then Power is MEDIUM rule: if Ambient is BRIGHT then Power is LOW
\ No newline at end of file diff --git a/examples/takagi-sugeno/SimpleDimmer.java b/examples/takagi-sugeno/SimpleDimmer.java index 6d60f0e..c3c53e9 100644 --- a/examples/takagi-sugeno/SimpleDimmer.java +++ b/examples/takagi-sugeno/SimpleDimmer.java @@ -1,4 +1,5 @@ import com.fuzzylite.*; +import com.fuzzylite.activation.* import com.fuzzylite.defuzzifier.*; import com.fuzzylite.factory.*; import com.fuzzylite.hedge.*; @@ -12,38 +13,46 @@ import com.fuzzylite.variable.*; public class SimpleDimmer{ public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + Engine engine = new Engine(); -engine.setName("simple-dimmer"); +engine.setName("SimpleDimmer"); +engine.setDescription(""); -InputVariable inputVariable = new InputVariable(); -inputVariable.setEnabled(true); -inputVariable.setName("Ambient"); -inputVariable.setRange(0.000, 1.000); -inputVariable.addTerm(new Triangle("DARK", 0.000, 0.250, 0.500)); -inputVariable.addTerm(new Triangle("MEDIUM", 0.250, 0.500, 0.750)); -inputVariable.addTerm(new Triangle("BRIGHT", 0.500, 0.750, 1.000)); -engine.addInputVariable(inputVariable); +InputVariable Ambient = new InputVariable(); +Ambient.setName("Ambient"); +Ambient.setDescription(""); +Ambient.setEnabled(true); +Ambient.setRange(0.000, 1.000); +Ambient.setLockValueInRange(false); +Ambient.addTerm(new Triangle("DARK", 0.000, 0.250, 0.500)); +Ambient.addTerm(new Triangle("MEDIUM", 0.250, 0.500, 0.750)); +Ambient.addTerm(new Triangle("BRIGHT", 0.500, 0.750, 1.000)); +engine.addInputVariable(Ambient); -OutputVariable outputVariable = new OutputVariable(); -outputVariable.setEnabled(true); -outputVariable.setName("Power"); -outputVariable.setRange(0.000, 1.000); -outputVariable.fuzzyOutput().setAccumulation(null); -outputVariable.setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable.setDefaultValue(Double.NaN); -outputVariable.setLockPreviousOutputValue(false); -outputVariable.setLockOutputValueInRange(false); -outputVariable.addTerm(new Constant("LOW", 0.250)); -outputVariable.addTerm(new Constant("MEDIUM", 0.500)); -outputVariable.addTerm(new Constant("HIGH", 0.750)); -engine.addOutputVariable(outputVariable); +OutputVariable Power = new OutputVariable(); +Power.setName("Power"); +Power.setDescription(""); +Power.setEnabled(true); +Power.setRange(0.000, 1.000); +Power.setLockValueInRange(false); +Power.setAggregation(null); +Power.setDefuzzifier(new WeightedAverage("TakagiSugeno")); +Power.setDefaultValue(Double.NaN); +Power.setLockPreviousValue(false); +Power.addTerm(new Constant("LOW", 0.250)); +Power.addTerm(new Constant("MEDIUM", 0.500)); +Power.addTerm(new Constant("HIGH", 0.750)); +engine.addOutputVariable(Power); RuleBlock ruleBlock = new RuleBlock(); -ruleBlock.setEnabled(true); ruleBlock.setName(""); +ruleBlock.setDescription(""); +ruleBlock.setEnabled(true); ruleBlock.setConjunction(null); ruleBlock.setDisjunction(null); -ruleBlock.setActivation(null); +ruleBlock.setImplication(null); +ruleBlock.setActivation(new General()); ruleBlock.addRule(Rule.parse("if Ambient is DARK then Power is HIGH", engine)); ruleBlock.addRule(Rule.parse("if Ambient is MEDIUM then Power is MEDIUM", engine)); ruleBlock.addRule(Rule.parse("if Ambient is BRIGHT then Power is LOW", engine)); diff --git a/examples/takagi-sugeno/SimpleDimmer.pdf b/examples/takagi-sugeno/SimpleDimmer.pdf Binary files differnew file mode 100644 index 0000000..f35dec9 --- /dev/null +++ b/examples/takagi-sugeno/SimpleDimmer.pdf diff --git a/examples/takagi-sugeno/approximation.R b/examples/takagi-sugeno/approximation.R new file mode 100644 index 0000000..89c0654 --- /dev/null +++ b/examples/takagi-sugeno/approximation.R @@ -0,0 +1,119 @@ +#Code automatically generated with fuzzylite 6.0. + +library(ggplot2); + +engine.name = "approximation" +engine.fll = "Engine: approximation +InputVariable: inputX + enabled: true + range: 0.000 10.000 + lock-range: false + term: NEAR_1 Triangle 0.000 1.000 2.000 + term: NEAR_2 Triangle 1.000 2.000 3.000 + term: NEAR_3 Triangle 2.000 3.000 4.000 + term: NEAR_4 Triangle 3.000 4.000 5.000 + term: NEAR_5 Triangle 4.000 5.000 6.000 + term: NEAR_6 Triangle 5.000 6.000 7.000 + term: NEAR_7 Triangle 6.000 7.000 8.000 + term: NEAR_8 Triangle 7.000 8.000 9.000 + term: NEAR_9 Triangle 8.000 9.000 10.000 +OutputVariable: outputFx + enabled: true + range: -1.000 1.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage TakagiSugeno + default: nan + lock-previous: true + term: f1 Constant 0.840 + term: f2 Constant 0.450 + term: f3 Constant 0.040 + term: f4 Constant -0.180 + term: f5 Constant -0.190 + term: f6 Constant -0.040 + term: f7 Constant 0.090 + term: f8 Constant 0.120 + term: f9 Constant 0.040 +OutputVariable: trueFx + enabled: true + range: -1.000 1.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage Automatic + default: nan + lock-previous: true + term: fx Function sin(inputX)/inputX +OutputVariable: diffFx + enabled: true + range: -1.000 1.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage Automatic + default: nan + lock-previous: false + term: diff Function fabs(outputFx-trueFx) +RuleBlock: + enabled: true + conjunction: none + disjunction: none + implication: none + activation: General + rule: if inputX is NEAR_1 then outputFx is f1 + rule: if inputX is NEAR_2 then outputFx is f2 + rule: if inputX is NEAR_3 then outputFx is f3 + rule: if inputX is NEAR_4 then outputFx is f4 + rule: if inputX is NEAR_5 then outputFx is f5 + rule: if inputX is NEAR_6 then outputFx is f6 + rule: if inputX is NEAR_7 then outputFx is f7 + rule: if inputX is NEAR_8 then outputFx is f8 + rule: if inputX is NEAR_9 then outputFx is f9 + rule: if inputX is any then trueFx is fx and diffFx is diff" + +engine.fldFile = "approximation.fld" +if (require(data.table)) { + engine.df = data.table::fread(engine.fldFile, sep="auto", header="auto") +} else { + engine.df = read.table(engine.fldFile, header=TRUE) +} + +engine.plot.i1_o1 = ggplot(engine.df, aes(inputX, outputFx)) + + geom_line(aes(color=outputFx), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + ggtitle("inputX vs outputFx") + +engine.plot.o1_i1 = ggplot(engine.df, aes(inputX, outputFx)) + + geom_line(aes(color=outputFx), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + coord_flip() + + ggtitle("outputFx vs inputX") + +engine.plot.i1_o2 = ggplot(engine.df, aes(inputX, trueFx)) + + geom_line(aes(color=trueFx), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + ggtitle("inputX vs trueFx") + +engine.plot.o2_i1 = ggplot(engine.df, aes(inputX, trueFx)) + + geom_line(aes(color=trueFx), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + coord_flip() + + ggtitle("trueFx vs inputX") + +engine.plot.i1_o3 = ggplot(engine.df, aes(inputX, diffFx)) + + geom_line(aes(color=diffFx), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + ggtitle("inputX vs diffFx") + +engine.plot.o3_i1 = ggplot(engine.df, aes(inputX, diffFx)) + + geom_line(aes(color=diffFx), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + coord_flip() + + ggtitle("diffFx vs inputX") + +if (require(gridExtra)) { + engine.plots = arrangeGrob(engine.plot.i1_o1, engine.plot.o1_i1, engine.plot.i1_o2, engine.plot.o2_i1, engine.plot.i1_o3, engine.plot.o3_i1, ncol=2, top=engine.name) + ggsave(paste0(engine.name, ".pdf"), engine.plots) + if (require(grid)) { + grid.newpage() + grid.draw(engine.plots) + } +} diff --git a/examples/takagi-sugeno/approximation.cpp b/examples/takagi-sugeno/approximation.cpp index 178f162..da0a307 100644 --- a/examples/takagi-sugeno/approximation.cpp +++ b/examples/takagi-sugeno/approximation.cpp @@ -1,86 +1,96 @@ #include <fl/Headers.h> int main(int argc, char** argv){ +//Code automatically generated with fuzzylite 6.0. + using namespace fl; Engine* engine = new Engine; -engine->setName("approximation of sin(x)/x"); +engine->setName("approximation"); +engine->setDescription(""); -InputVariable* inputVariable = new InputVariable; -inputVariable->setEnabled(true); -inputVariable->setName("inputX"); -inputVariable->setRange(0.000, 10.000); -inputVariable->addTerm(new Triangle("NEAR_1", 0.000, 1.000, 2.000)); -inputVariable->addTerm(new Triangle("NEAR_2", 1.000, 2.000, 3.000)); -inputVariable->addTerm(new Triangle("NEAR_3", 2.000, 3.000, 4.000)); -inputVariable->addTerm(new Triangle("NEAR_4", 3.000, 4.000, 5.000)); -inputVariable->addTerm(new Triangle("NEAR_5", 4.000, 5.000, 6.000)); -inputVariable->addTerm(new Triangle("NEAR_6", 5.000, 6.000, 7.000)); -inputVariable->addTerm(new Triangle("NEAR_7", 6.000, 7.000, 8.000)); -inputVariable->addTerm(new Triangle("NEAR_8", 7.000, 8.000, 9.000)); -inputVariable->addTerm(new Triangle("NEAR_9", 8.000, 9.000, 10.000)); -engine->addInputVariable(inputVariable); +InputVariable* inputX = new InputVariable; +inputX->setName("inputX"); +inputX->setDescription(""); +inputX->setEnabled(true); +inputX->setRange(0.000, 10.000); +inputX->setLockValueInRange(false); +inputX->addTerm(new Triangle("NEAR_1", 0.000, 1.000, 2.000)); +inputX->addTerm(new Triangle("NEAR_2", 1.000, 2.000, 3.000)); +inputX->addTerm(new Triangle("NEAR_3", 2.000, 3.000, 4.000)); +inputX->addTerm(new Triangle("NEAR_4", 3.000, 4.000, 5.000)); +inputX->addTerm(new Triangle("NEAR_5", 4.000, 5.000, 6.000)); +inputX->addTerm(new Triangle("NEAR_6", 5.000, 6.000, 7.000)); +inputX->addTerm(new Triangle("NEAR_7", 6.000, 7.000, 8.000)); +inputX->addTerm(new Triangle("NEAR_8", 7.000, 8.000, 9.000)); +inputX->addTerm(new Triangle("NEAR_9", 8.000, 9.000, 10.000)); +engine->addInputVariable(inputX); -OutputVariable* outputVariable1 = new OutputVariable; -outputVariable1->setEnabled(true); -outputVariable1->setName("outputFx"); -outputVariable1->setRange(-1.000, 1.000); -outputVariable1->fuzzyOutput()->setAccumulation(fl::null); -outputVariable1->setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable1->setDefaultValue(fl::nan); -outputVariable1->setLockPreviousOutputValue(true); -outputVariable1->setLockOutputValueInRange(false); -outputVariable1->addTerm(new Constant("f1", 0.840)); -outputVariable1->addTerm(new Constant("f2", 0.450)); -outputVariable1->addTerm(new Constant("f3", 0.040)); -outputVariable1->addTerm(new Constant("f4", -0.180)); -outputVariable1->addTerm(new Constant("f5", -0.190)); -outputVariable1->addTerm(new Constant("f6", -0.040)); -outputVariable1->addTerm(new Constant("f7", 0.090)); -outputVariable1->addTerm(new Constant("f8", 0.120)); -outputVariable1->addTerm(new Constant("f9", 0.040)); -engine->addOutputVariable(outputVariable1); +OutputVariable* outputFx = new OutputVariable; +outputFx->setName("outputFx"); +outputFx->setDescription(""); +outputFx->setEnabled(true); +outputFx->setRange(-1.000, 1.000); +outputFx->setLockValueInRange(false); +outputFx->setAggregation(fl::null); +outputFx->setDefuzzifier(new WeightedAverage("TakagiSugeno")); +outputFx->setDefaultValue(fl::nan); +outputFx->setLockPreviousValue(true); +outputFx->addTerm(new Constant("f1", 0.840)); +outputFx->addTerm(new Constant("f2", 0.450)); +outputFx->addTerm(new Constant("f3", 0.040)); +outputFx->addTerm(new Constant("f4", -0.180)); +outputFx->addTerm(new Constant("f5", -0.190)); +outputFx->addTerm(new Constant("f6", -0.040)); +outputFx->addTerm(new Constant("f7", 0.090)); +outputFx->addTerm(new Constant("f8", 0.120)); +outputFx->addTerm(new Constant("f9", 0.040)); +engine->addOutputVariable(outputFx); -OutputVariable* outputVariable2 = new OutputVariable; -outputVariable2->setEnabled(true); -outputVariable2->setName("trueFx"); -outputVariable2->setRange(-1.000, 1.000); -outputVariable2->fuzzyOutput()->setAccumulation(fl::null); -outputVariable2->setDefuzzifier(new WeightedAverage("Automatic")); -outputVariable2->setDefaultValue(fl::nan); -outputVariable2->setLockPreviousOutputValue(true); -outputVariable2->setLockOutputValueInRange(false); -outputVariable2->addTerm(Function::create("fx", "sin(inputX)/inputX", engine)); -engine->addOutputVariable(outputVariable2); +OutputVariable* trueFx = new OutputVariable; +trueFx->setName("trueFx"); +trueFx->setDescription(""); +trueFx->setEnabled(true); +trueFx->setRange(-1.000, 1.000); +trueFx->setLockValueInRange(false); +trueFx->setAggregation(fl::null); +trueFx->setDefuzzifier(new WeightedAverage("Automatic")); +trueFx->setDefaultValue(fl::nan); +trueFx->setLockPreviousValue(true); +trueFx->addTerm(Function::create("fx", "sin(inputX)/inputX", engine)); +engine->addOutputVariable(trueFx); -OutputVariable* outputVariable3 = new OutputVariable; -outputVariable3->setEnabled(true); -outputVariable3->setName("diffFx"); -outputVariable3->setRange(-1.000, 1.000); -outputVariable3->fuzzyOutput()->setAccumulation(fl::null); -outputVariable3->setDefuzzifier(new WeightedAverage("Automatic")); -outputVariable3->setDefaultValue(fl::nan); -outputVariable3->setLockPreviousOutputValue(false); -outputVariable3->setLockOutputValueInRange(false); -outputVariable3->addTerm(Function::create("diff", "fabs(outputFx-trueFx)", engine)); -engine->addOutputVariable(outputVariable3); +OutputVariable* diffFx = new OutputVariable; +diffFx->setName("diffFx"); +diffFx->setDescription(""); +diffFx->setEnabled(true); +diffFx->setRange(-1.000, 1.000); +diffFx->setLockValueInRange(false); +diffFx->setAggregation(fl::null); +diffFx->setDefuzzifier(new WeightedAverage("Automatic")); +diffFx->setDefaultValue(fl::nan); +diffFx->setLockPreviousValue(false); +diffFx->addTerm(Function::create("diff", "fabs(outputFx-trueFx)", engine)); +engine->addOutputVariable(diffFx); RuleBlock* ruleBlock = new RuleBlock; -ruleBlock->setEnabled(true); ruleBlock->setName(""); +ruleBlock->setDescription(""); +ruleBlock->setEnabled(true); ruleBlock->setConjunction(fl::null); ruleBlock->setDisjunction(fl::null); -ruleBlock->setActivation(fl::null); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_1 then outputFx is f1", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_2 then outputFx is f2", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_3 then outputFx is f3", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_4 then outputFx is f4", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_5 then outputFx is f5", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_6 then outputFx is f6", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_7 then outputFx is f7", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_8 then outputFx is f8", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is NEAR_9 then outputFx is f9", engine)); -ruleBlock->addRule(fl::Rule::parse("if inputX is any then trueFx is fx and diffFx is diff", engine)); +ruleBlock->setImplication(fl::null); +ruleBlock->setActivation(new General); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_1 then outputFx is f1", engine)); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_2 then outputFx is f2", engine)); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_3 then outputFx is f3", engine)); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_4 then outputFx is f4", engine)); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_5 then outputFx is f5", engine)); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_6 then outputFx is f6", engine)); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_7 then outputFx is f7", engine)); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_8 then outputFx is f8", engine)); +ruleBlock->addRule(Rule::parse("if inputX is NEAR_9 then outputFx is f9", engine)); +ruleBlock->addRule(Rule::parse("if inputX is any then trueFx is fx and diffFx is diff", engine)); engine->addRuleBlock(ruleBlock); diff --git a/examples/takagi-sugeno/approximation.fcl b/examples/takagi-sugeno/approximation.fcl index 8b5f121..6bf285d 100644 --- a/examples/takagi-sugeno/approximation.fcl +++ b/examples/takagi-sugeno/approximation.fcl @@ -1,4 +1,6 @@ -FUNCTION_BLOCK approximation of sin(x)/x +//Code automatically generated with fuzzylite 6.0. + +FUNCTION_BLOCK approximation VAR_INPUT inputX: REAL; diff --git a/examples/takagi-sugeno/approximation.fis b/examples/takagi-sugeno/approximation.fis index 73075bc..2fcbc8d 100644 --- a/examples/takagi-sugeno/approximation.fis +++ b/examples/takagi-sugeno/approximation.fis @@ -1,13 +1,16 @@ +#Code automatically generated with fuzzylite 6.0. + [System] -Name='approximation of sin(x)/x' +Name='approximation' Type='sugeno' +Version=6.0 NumInputs=1 NumOutputs=3 NumRules=10 -AndMethod='' -OrMethod='' -ImpMethod='' -AggMethod='' +AndMethod='min' +OrMethod='max' +ImpMethod='min' +AggMethod='max' DefuzzMethod='wtaver' [Input1] @@ -27,7 +30,6 @@ MF9='NEAR_9':'trimf',[8.000 9.000 10.000] [Output1] Name='outputFx' Range=[-1.000 1.000] -LockPrevious=1 NumMFs=9 MF1='f1':'constant',[0.840] MF2='f2':'constant',[0.450] @@ -42,7 +44,6 @@ MF9='f9':'constant',[0.040] [Output2] Name='trueFx' Range=[-1.000 1.000] -LockPrevious=1 NumMFs=1 MF1='fx':'function',[sin(inputX)/inputX] diff --git a/examples/takagi-sugeno/approximation.fld b/examples/takagi-sugeno/approximation.fld index 36bdbd8..1f3ba00 100644 --- a/examples/takagi-sugeno/approximation.fld +++ b/examples/takagi-sugeno/approximation.fld @@ -1,1026 +1,1025 @@ -#@Engine: approximation of sin(x)/x; -#@InputVariable: inputX; @OutputVariable: outputFx; @OutputVariable: trueFx; @OutputVariable: diffFx; -0.00000000 nan nan nan -0.00977517 0.84000000 0.99998407 0.15998407 -0.01955034 0.84000000 0.99993630 0.15993630 -0.02932551 0.84000000 0.99985668 0.15985668 -0.03910068 0.84000000 0.99974521 0.15974521 -0.04887586 0.84000000 0.99960191 0.15960191 -0.05865103 0.84000000 0.99942677 0.15942677 -0.06842620 0.84000000 0.99921983 0.15921983 -0.07820137 0.84000000 0.99898107 0.15898107 -0.08797654 0.84000000 0.99871052 0.15871052 -0.09775171 0.84000000 0.99840819 0.15840819 -0.10752688 0.84000000 0.99807411 0.15807411 -0.11730205 0.84000000 0.99770828 0.15770828 -0.12707722 0.84000000 0.99731074 0.15731074 -0.13685239 0.84000000 0.99688149 0.15688149 -0.14662757 0.84000000 0.99642058 0.15642058 -0.15640274 0.84000000 0.99592801 0.15592801 -0.16617791 0.84000000 0.99540383 0.15540383 -0.17595308 0.84000000 0.99484807 0.15484807 -0.18572825 0.84000000 0.99426074 0.15426074 -0.19550342 0.84000000 0.99364190 0.15364190 -0.20527859 0.84000000 0.99299157 0.15299157 -0.21505376 0.84000000 0.99230978 0.15230978 -0.22482893 0.84000000 0.99159659 0.15159659 -0.23460411 0.84000000 0.99085203 0.15085203 -0.24437928 0.84000000 0.99007614 0.15007614 -0.25415445 0.84000000 0.98926897 0.14926897 -0.26392962 0.84000000 0.98843056 0.14843056 -0.27370479 0.84000000 0.98756097 0.14756097 -0.28347996 0.84000000 0.98666023 0.14666023 -0.29325513 0.84000000 0.98572841 0.14572841 -0.30303030 0.84000000 0.98476555 0.14476555 -0.31280547 0.84000000 0.98377172 0.14377172 -0.32258065 0.84000000 0.98274697 0.14274697 -0.33235582 0.84000000 0.98169135 0.14169135 -0.34213099 0.84000000 0.98060493 0.14060493 -0.35190616 0.84000000 0.97948777 0.13948777 -0.36168133 0.84000000 0.97833993 0.13833993 -0.37145650 0.84000000 0.97716148 0.13716148 -0.38123167 0.84000000 0.97595249 0.13595249 -0.39100684 0.84000000 0.97471302 0.13471302 -0.40078201 0.84000000 0.97344315 0.13344315 -0.41055718 0.84000000 0.97214295 0.13214295 -0.42033236 0.84000000 0.97081249 0.13081249 -0.43010753 0.84000000 0.96945185 0.12945185 -0.43988270 0.84000000 0.96806111 0.12806111 -0.44965787 0.84000000 0.96664035 0.12664035 -0.45943304 0.84000000 0.96518964 0.12518964 -0.46920821 0.84000000 0.96370907 0.12370907 -0.47898338 0.84000000 0.96219873 0.12219873 -0.48875855 0.84000000 0.96065870 0.12065870 -0.49853372 0.84000000 0.95908907 0.11908907 -0.50830890 0.84000000 0.95748993 0.11748993 -0.51808407 0.84000000 0.95586137 0.11586137 -0.52785924 0.84000000 0.95420348 0.11420348 -0.53763441 0.84000000 0.95251635 0.11251635 -0.54740958 0.84000000 0.95080010 0.11080010 -0.55718475 0.84000000 0.94905480 0.10905480 -0.56695992 0.84000000 0.94728056 0.10728056 -0.57673509 0.84000000 0.94547749 0.10547749 -0.58651026 0.84000000 0.94364568 0.10364568 -0.59628543 0.84000000 0.94178524 0.10178524 -0.60606061 0.84000000 0.93989628 0.09989628 -0.61583578 0.84000000 0.93797889 0.09797889 -0.62561095 0.84000000 0.93603320 0.09603320 -0.63538612 0.84000000 0.93405932 0.09405932 -0.64516129 0.84000000 0.93205734 0.09205734 -0.65493646 0.84000000 0.93002740 0.09002740 -0.66471163 0.84000000 0.92796960 0.08796960 -0.67448680 0.84000000 0.92588406 0.08588406 -0.68426197 0.84000000 0.92377090 0.08377090 -0.69403715 0.84000000 0.92163024 0.08163024 -0.70381232 0.84000000 0.91946220 0.07946220 -0.71358749 0.84000000 0.91726690 0.07726690 -0.72336266 0.84000000 0.91504448 0.07504448 -0.73313783 0.84000000 0.91279505 0.07279505 -0.74291300 0.84000000 0.91051874 0.07051874 -0.75268817 0.84000000 0.90821568 0.06821568 -0.76246334 0.84000000 0.90588601 0.06588601 -0.77223851 0.84000000 0.90352985 0.06352985 -0.78201369 0.84000000 0.90114734 0.06114734 -0.79178886 0.84000000 0.89873861 0.05873861 -0.80156403 0.84000000 0.89630380 0.05630380 -0.81133920 0.84000000 0.89384305 0.05384305 -0.82111437 0.84000000 0.89135649 0.05135649 -0.83088954 0.84000000 0.88884427 0.04884427 -0.84066471 0.84000000 0.88630653 0.04630653 -0.85043988 0.84000000 0.88374342 0.04374342 -0.86021505 0.84000000 0.88115507 0.04115507 -0.86999022 0.84000000 0.87854163 0.03854163 -0.87976540 0.84000000 0.87590326 0.03590326 -0.88954057 0.84000000 0.87324010 0.03324010 -0.89931574 0.84000000 0.87055230 0.03055230 -0.90909091 0.84000000 0.86784001 0.02784001 -0.91886608 0.84000000 0.86510339 0.02510339 -0.92864125 0.84000000 0.86234258 0.02234258 -0.93841642 0.84000000 0.85955775 0.01955775 -0.94819159 0.84000000 0.85674906 0.01674906 -0.95796676 0.84000000 0.85391665 0.01391665 -0.96774194 0.84000000 0.85106070 0.01106070 -0.97751711 0.84000000 0.84818136 0.00818136 -0.98729228 0.84000000 0.84527878 0.00527878 -0.99706745 0.84000000 0.84235315 0.00235315 -1.00684262 0.83733138 0.83940461 0.00207323 -1.01661779 0.83351906 0.83643334 0.00291428 -1.02639296 0.82970674 0.83343951 0.00373276 -1.03616813 0.82589443 0.83042327 0.00452884 -1.04594330 0.82208211 0.82738481 0.00530270 -1.05571848 0.81826979 0.82432428 0.00605449 -1.06549365 0.81445748 0.82124187 0.00678439 -1.07526882 0.81064516 0.81813774 0.00749258 -1.08504399 0.80683284 0.81501207 0.00817923 -1.09481916 0.80302053 0.81186504 0.00884451 -1.10459433 0.79920821 0.80869682 0.00948860 -1.11436950 0.79539589 0.80550758 0.01011168 -1.12414467 0.79158358 0.80229751 0.01071393 -1.13391984 0.78777126 0.79906678 0.01129552 -1.14369501 0.78395894 0.79581558 0.01185663 -1.15347019 0.78014663 0.79254408 0.01239745 -1.16324536 0.77633431 0.78925248 0.01291816 -1.17302053 0.77252199 0.78594094 0.01341895 -1.18279570 0.76870968 0.78260967 0.01389999 -1.19257087 0.76489736 0.77925884 0.01436147 -1.20234604 0.76108504 0.77588863 0.01480359 -1.21212121 0.75727273 0.77249925 0.01522652 -1.22189638 0.75346041 0.76909087 0.01563046 -1.23167155 0.74964809 0.76566369 0.01601559 -1.24144673 0.74583578 0.76221789 0.01638211 -1.25122190 0.74202346 0.75875367 0.01673021 -1.26099707 0.73821114 0.75527122 0.01706007 -1.27077224 0.73439883 0.75177073 0.01737190 -1.28054741 0.73058651 0.74825240 0.01766589 -1.29032258 0.72677419 0.74471642 0.01794222 -1.30009775 0.72296188 0.74116298 0.01820111 -1.30987292 0.71914956 0.73759230 0.01844274 -1.31964809 0.71533724 0.73400455 0.01866731 -1.32942326 0.71152493 0.73039994 0.01887502 -1.33919844 0.70771261 0.72677868 0.01906607 -1.34897361 0.70390029 0.72314095 0.01924066 -1.35874878 0.70008798 0.71948696 0.01939899 -1.36852395 0.69627566 0.71581692 0.01954126 -1.37829912 0.69246334 0.71213102 0.01966767 -1.38807429 0.68865103 0.70842946 0.01977844 -1.39784946 0.68483871 0.70471246 0.01987375 -1.40762463 0.68102639 0.70098021 0.01995382 -1.41739980 0.67721408 0.69723292 0.02001884 -1.42717498 0.67340176 0.69347080 0.02006904 -1.43695015 0.66958944 0.68969405 0.02010461 -1.44672532 0.66577713 0.68590288 0.02012575 -1.45650049 0.66196481 0.68209750 0.02013269 -1.46627566 0.65815249 0.67827811 0.02012562 -1.47605083 0.65434018 0.67444493 0.02010476 -1.48582600 0.65052786 0.67059817 0.02007031 -1.49560117 0.64671554 0.66673803 0.02002249 -1.50537634 0.64290323 0.66286472 0.01996150 -1.51515152 0.63909091 0.65897847 0.01988756 -1.52492669 0.63527859 0.65507947 0.01980088 -1.53470186 0.63146628 0.65116795 0.01970168 -1.54447703 0.62765396 0.64724411 0.01959016 -1.55425220 0.62384164 0.64330818 0.01946653 -1.56402737 0.62002933 0.63936035 0.01933103 -1.57380254 0.61621701 0.63540086 0.01918385 -1.58357771 0.61240469 0.63142990 0.01902521 -1.59335288 0.60859238 0.62744771 0.01885533 -1.60312805 0.60478006 0.62345448 0.01867443 -1.61290323 0.60096774 0.61945045 0.01848271 -1.62267840 0.59715543 0.61543583 0.01828041 -1.63245357 0.59334311 0.61141083 0.01806772 -1.64222874 0.58953079 0.60737568 0.01784488 -1.65200391 0.58571848 0.60333058 0.01761210 -1.66177908 0.58190616 0.59927576 0.01736960 -1.67155425 0.57809384 0.59521144 0.01711760 -1.68132942 0.57428152 0.59113783 0.01685631 -1.69110459 0.57046921 0.58705516 0.01658596 -1.70087977 0.56665689 0.58296365 0.01630676 -1.71065494 0.56284457 0.57886351 0.01601893 -1.72043011 0.55903226 0.57475496 0.01572270 -1.73020528 0.55521994 0.57063823 0.01541829 -1.73998045 0.55140762 0.56651353 0.01510591 -1.74975562 0.54759531 0.56238109 0.01478578 -1.75953079 0.54378299 0.55824113 0.01445814 -1.76930596 0.53997067 0.55409386 0.01412319 -1.77908113 0.53615836 0.54993952 0.01378116 -1.78885630 0.53234604 0.54577832 0.01343228 -1.79863148 0.52853372 0.54161048 0.01307675 -1.80840665 0.52472141 0.53743622 0.01271481 -1.81818182 0.52090909 0.53325577 0.01234668 -1.82795699 0.51709677 0.52906935 0.01197258 -1.83773216 0.51328446 0.52487718 0.01159273 -1.84750733 0.50947214 0.52067949 0.01120735 -1.85728250 0.50565982 0.51647649 0.01081666 -1.86705767 0.50184751 0.51226841 0.01042090 -1.87683284 0.49803519 0.50805546 0.01002027 -1.88660802 0.49422287 0.50383788 0.00961501 -1.89638319 0.49041056 0.49961589 0.00920533 -1.90615836 0.48659824 0.49538970 0.00879146 -1.91593353 0.48278592 0.49115955 0.00837362 -1.92570870 0.47897361 0.48692564 0.00795203 -1.93548387 0.47516129 0.48268821 0.00752692 -1.94525904 0.47134897 0.47844748 0.00709850 -1.95503421 0.46753666 0.47420366 0.00666700 -1.96480938 0.46372434 0.46995699 0.00623265 -1.97458456 0.45991202 0.46570768 0.00579565 -1.98435973 0.45609971 0.46145595 0.00535624 -1.99413490 0.45228739 0.45720203 0.00491464 -2.00391007 0.44839687 0.45294613 0.00454926 -2.01368524 0.44438905 0.44868849 0.00429944 -2.02346041 0.44038123 0.44442931 0.00404808 -2.03323558 0.43637341 0.44016883 0.00379542 -2.04301075 0.43236559 0.43590726 0.00354167 -2.05278592 0.42835777 0.43164482 0.00328705 -2.06256109 0.42434995 0.42738174 0.00303178 -2.07233627 0.42034213 0.42311822 0.00277609 -2.08211144 0.41633431 0.41885450 0.00252019 -2.09188661 0.41232649 0.41459079 0.00226430 -2.10166178 0.40831867 0.41032731 0.00200864 -2.11143695 0.40431085 0.40606429 0.00175344 -2.12121212 0.40030303 0.40180193 0.00149890 -2.13098729 0.39629521 0.39754045 0.00124524 -2.14076246 0.39228739 0.39328009 0.00099270 -2.15053763 0.38827957 0.38902104 0.00074147 -2.16031281 0.38427175 0.38476354 0.00049179 -2.17008798 0.38026393 0.38050779 0.00024386 -2.17986315 0.37625611 0.37625401 0.00000210 -2.18963832 0.37224829 0.37200242 0.00024587 -2.19941349 0.36824047 0.36775324 0.00048723 -2.20918866 0.36423265 0.36350667 0.00072598 -2.21896383 0.36022483 0.35926294 0.00096189 -2.22873900 0.35621701 0.35502225 0.00119476 -2.23851417 0.35220919 0.35078483 0.00142436 -2.24828935 0.34820137 0.34655088 0.00165049 -2.25806452 0.34419355 0.34232062 0.00187293 -2.26783969 0.34018573 0.33809425 0.00209148 -2.27761486 0.33617791 0.33387200 0.00230591 -2.28739003 0.33217009 0.32965407 0.00251602 -2.29716520 0.32816227 0.32544067 0.00272160 -2.30694037 0.32415445 0.32123201 0.00292244 -2.31671554 0.32014663 0.31702830 0.00311833 -2.32649071 0.31613881 0.31282975 0.00330906 -2.33626588 0.31213099 0.30863657 0.00349442 -2.34604106 0.30812317 0.30444897 0.00367420 -2.35581623 0.30411535 0.30026714 0.00384821 -2.36559140 0.30010753 0.29609130 0.00401622 -2.37536657 0.29609971 0.29192166 0.00417805 -2.38514174 0.29209189 0.28775841 0.00433347 -2.39491691 0.28808407 0.28360177 0.00448230 -2.40469208 0.28407625 0.27945193 0.00462432 -2.41446725 0.28006843 0.27530910 0.00475933 -2.42424242 0.27606061 0.27117348 0.00488713 -2.43401760 0.27205279 0.26704526 0.00500752 -2.44379277 0.26804497 0.26292466 0.00512030 -2.45356794 0.26403715 0.25881187 0.00522527 -2.46334311 0.26002933 0.25470709 0.00532224 -2.47311828 0.25602151 0.25061052 0.00541099 -2.48289345 0.25201369 0.24652234 0.00549134 -2.49266862 0.24800587 0.24244277 0.00556309 -2.50244379 0.24399804 0.23837200 0.00562605 -2.51221896 0.23999022 0.23431022 0.00568001 -2.52199413 0.23598240 0.23025762 0.00572479 -2.53176931 0.23197458 0.22621439 0.00576019 -2.54154448 0.22796676 0.22218074 0.00578602 -2.55131965 0.22395894 0.21815685 0.00580210 -2.56109482 0.21995112 0.21414291 0.00580822 -2.57086999 0.21594330 0.21013910 0.00580420 -2.58064516 0.21193548 0.20614563 0.00578985 -2.59042033 0.20792766 0.20216267 0.00576499 -2.60019550 0.20391984 0.19819042 0.00572942 -2.60997067 0.19991202 0.19422905 0.00568297 -2.61974585 0.19590420 0.19027876 0.00562545 -2.62952102 0.19189638 0.18633972 0.00555666 -2.63929619 0.18788856 0.18241212 0.00547644 -2.64907136 0.18388074 0.17849614 0.00538460 -2.65884653 0.17987292 0.17459196 0.00528096 -2.66862170 0.17586510 0.17069976 0.00516534 -2.67839687 0.17185728 0.16681972 0.00503756 -2.68817204 0.16784946 0.16295202 0.00489744 -2.69794721 0.16384164 0.15909683 0.00474481 -2.70772239 0.15983382 0.15525433 0.00457950 -2.71749756 0.15582600 0.15142469 0.00440132 -2.72727273 0.15181818 0.14760808 0.00421010 -2.73704790 0.14781036 0.14380468 0.00400568 -2.74682307 0.14380254 0.14001466 0.00378788 -2.75659824 0.13979472 0.13623819 0.00355653 -2.76637341 0.13578690 0.13247544 0.00331146 -2.77614858 0.13177908 0.12872657 0.00305251 -2.78592375 0.12777126 0.12499175 0.00277951 -2.79569892 0.12376344 0.12127114 0.00249230 -2.80547410 0.11975562 0.11756492 0.00219070 -2.81524927 0.11574780 0.11387324 0.00187456 -2.82502444 0.11173998 0.11019627 0.00154371 -2.83479961 0.10773216 0.10653416 0.00119801 -2.84457478 0.10372434 0.10288707 0.00083727 -2.85434995 0.09971652 0.09925517 0.00046135 -2.86412512 0.09570870 0.09563860 0.00007010 -2.87390029 0.09170088 0.09203753 0.00033665 -2.88367546 0.08769306 0.08845211 0.00075905 -2.89345064 0.08368524 0.08488250 0.00119726 -2.90322581 0.07967742 0.08132883 0.00165141 -2.91300098 0.07566960 0.07779128 0.00212168 -2.92277615 0.07166178 0.07426997 0.00260819 -2.93255132 0.06765396 0.07076507 0.00311111 -2.94232649 0.06364614 0.06727672 0.00363058 -2.95210166 0.05963832 0.06380506 0.00416674 -2.96187683 0.05563050 0.06035024 0.00471974 -2.97165200 0.05162268 0.05691240 0.00528972 -2.98142717 0.04761486 0.05349169 0.00587683 -2.99120235 0.04360704 0.05008823 0.00648120 -3.00097752 0.03978495 0.04670218 0.00691724 -3.01075269 0.03763441 0.04333367 0.00569927 -3.02052786 0.03548387 0.03998284 0.00449897 -3.03030303 0.03333333 0.03664981 0.00331648 -3.04007820 0.03118280 0.03333473 0.00215193 -3.04985337 0.02903226 0.03003772 0.00100547 -3.05962854 0.02688172 0.02675892 0.00012280 -3.06940371 0.02473118 0.02349846 0.00123272 -3.07917889 0.02258065 0.02025646 0.00232419 -3.08895406 0.02043011 0.01703304 0.00339706 -3.09872923 0.01827957 0.01382835 0.00445122 -3.10850440 0.01612903 0.01064249 0.00548655 -3.11827957 0.01397849 0.00747559 0.00650291 -3.12805474 0.01182796 0.00432777 0.00750019 -3.13782991 0.00967742 0.00119915 0.00847827 -3.14760508 0.00752688 -0.00191015 0.00943703 -3.15738025 0.00537634 -0.00500001 0.01037636 -3.16715543 0.00322581 -0.00807033 0.01129614 -3.17693060 0.00107527 -0.01112098 0.01219625 -3.18670577 -0.00107527 -0.01415186 0.01307659 -3.19648094 -0.00322581 -0.01716285 0.01393705 -3.20625611 -0.00537634 -0.02015385 0.01477750 -3.21603128 -0.00752688 -0.02312474 0.01559786 -3.22580645 -0.00967742 -0.02607543 0.01639801 -3.23558162 -0.01182796 -0.02900580 0.01717785 -3.24535679 -0.01397849 -0.03191576 0.01793727 -3.25513196 -0.01612903 -0.03480520 0.01867617 -3.26490714 -0.01827957 -0.03767402 0.01939445 -3.27468231 -0.02043011 -0.04052213 0.02009202 -3.28445748 -0.02258065 -0.04334942 0.02076878 -3.29423265 -0.02473118 -0.04615581 0.02142462 -3.30400782 -0.02688172 -0.04894118 0.02205946 -3.31378299 -0.02903226 -0.05170547 0.02267321 -3.32355816 -0.03118280 -0.05444857 0.02326577 -3.33333333 -0.03333333 -0.05717039 0.02383706 -3.34310850 -0.03548387 -0.05987085 0.02438698 -3.35288368 -0.03763441 -0.06254985 0.02491545 -3.36265885 -0.03978495 -0.06520733 0.02542238 -3.37243402 -0.04193548 -0.06784318 0.02590770 -3.38220919 -0.04408602 -0.07045733 0.02637131 -3.39198436 -0.04623656 -0.07304971 0.02681315 -3.40175953 -0.04838710 -0.07562022 0.02723313 -3.41153470 -0.05053763 -0.07816880 0.02763117 -3.42130987 -0.05268817 -0.08069537 0.02800720 -3.43108504 -0.05483871 -0.08319985 0.02836114 -3.44086022 -0.05698925 -0.08568218 0.02869293 -3.45063539 -0.05913978 -0.08814228 0.02900249 -3.46041056 -0.06129032 -0.09058008 0.02928975 -3.47018573 -0.06344086 -0.09299551 0.02955465 -3.47996090 -0.06559140 -0.09538852 0.02979712 -3.48973607 -0.06774194 -0.09775902 0.03001709 -3.49951124 -0.06989247 -0.10010698 0.03021450 -3.50928641 -0.07204301 -0.10243231 0.03038930 -3.51906158 -0.07419355 -0.10473496 0.03054141 -3.52883675 -0.07634409 -0.10701487 0.03067079 -3.53861193 -0.07849462 -0.10927199 0.03077737 -3.54838710 -0.08064516 -0.11150627 0.03086111 -3.55816227 -0.08279570 -0.11371764 0.03092194 -3.56793744 -0.08494624 -0.11590606 0.03095982 -3.57771261 -0.08709677 -0.11807147 0.03097470 -3.58748778 -0.08924731 -0.12021383 0.03096652 -3.59726295 -0.09139785 -0.12233310 0.03093525 -3.60703812 -0.09354839 -0.12442922 0.03088083 -3.61681329 -0.09569892 -0.12650215 0.03080322 -3.62658847 -0.09784946 -0.12855185 0.03070239 -3.63636364 -0.10000000 -0.13057828 0.03057828 -3.64613881 -0.10215054 -0.13258140 0.03043086 -3.65591398 -0.10430108 -0.13456118 0.03026010 -3.66568915 -0.10645161 -0.13651757 0.03006596 -3.67546432 -0.10860215 -0.13845055 0.02984840 -3.68523949 -0.11075269 -0.14036007 0.02960739 -3.69501466 -0.11290323 -0.14224612 0.02934290 -3.70478983 -0.11505376 -0.14410866 0.02905490 -3.71456500 -0.11720430 -0.14594766 0.02874336 -3.72434018 -0.11935484 -0.14776310 0.02840827 -3.73411535 -0.12150538 -0.14955496 0.02804958 -3.74389052 -0.12365591 -0.15132320 0.02766729 -3.75366569 -0.12580645 -0.15306781 0.02726136 -3.76344086 -0.12795699 -0.15478877 0.02683178 -3.77321603 -0.13010753 -0.15648606 0.02637853 -3.78299120 -0.13225806 -0.15815967 0.02590160 -3.79276637 -0.13440860 -0.15980957 0.02540097 -3.80254154 -0.13655914 -0.16143576 0.02487662 -3.81231672 -0.13870968 -0.16303823 0.02432855 -3.82209189 -0.14086022 -0.16461696 0.02375674 -3.83186706 -0.14301075 -0.16617194 0.02316119 -3.84164223 -0.14516129 -0.16770318 0.02254189 -3.85141740 -0.14731183 -0.16921065 0.02189883 -3.86119257 -0.14946237 -0.17069437 0.02123200 -3.87096774 -0.15161290 -0.17215432 0.02054142 -3.88074291 -0.15376344 -0.17359052 0.01982707 -3.89051808 -0.15591398 -0.17500294 0.01908896 -3.90029326 -0.15806452 -0.17639161 0.01832710 -3.91006843 -0.16021505 -0.17775652 0.01754147 -3.91984360 -0.16236559 -0.17909769 0.01673209 -3.92961877 -0.16451613 -0.18041510 0.01589898 -3.93939394 -0.16666667 -0.18170879 0.01504212 -3.94916911 -0.16881720 -0.18297875 0.01416154 -3.95894428 -0.17096774 -0.18422500 0.01325725 -3.96871945 -0.17311828 -0.18544754 0.01232926 -3.97849462 -0.17526882 -0.18664641 0.01137759 -3.98826979 -0.17741935 -0.18782160 0.01040225 -3.99804497 -0.17956989 -0.18897315 0.00940326 -4.00782014 -0.18007820 -0.19010107 0.01002287 -4.01759531 -0.18017595 -0.19120537 0.01102942 -4.02737048 -0.18027370 -0.19228609 0.01201239 -4.03714565 -0.18037146 -0.19334325 0.01297180 -4.04692082 -0.18046921 -0.19437687 0.01390767 -4.05669599 -0.18056696 -0.19538698 0.01482002 -4.06647116 -0.18066471 -0.19637361 0.01570890 -4.07624633 -0.18076246 -0.19733679 0.01657433 -4.08602151 -0.18086022 -0.19827655 0.01741634 -4.09579668 -0.18095797 -0.19919292 0.01823496 -4.10557185 -0.18105572 -0.20008595 0.01903023 -4.11534702 -0.18115347 -0.20095565 0.01980218 -4.12512219 -0.18125122 -0.20180208 0.02055085 -4.13489736 -0.18134897 -0.20262526 0.02127629 -4.14467253 -0.18144673 -0.20342525 0.02197853 -4.15444770 -0.18154448 -0.20420208 0.02265761 -4.16422287 -0.18164223 -0.20495580 0.02331357 -4.17399804 -0.18173998 -0.20568645 0.02394647 -4.18377322 -0.18183773 -0.20639408 0.02455635 -4.19354839 -0.18193548 -0.20707873 0.02514325 -4.20332356 -0.18203324 -0.20774046 0.02570722 -4.21309873 -0.18213099 -0.20837931 0.02624832 -4.22287390 -0.18222874 -0.20899534 0.02676660 -4.23264907 -0.18232649 -0.20958860 0.02726211 -4.24242424 -0.18242424 -0.21015915 0.02773490 -4.25219941 -0.18252199 -0.21070703 0.02818504 -4.26197458 -0.18261975 -0.21123232 0.02861257 -4.27174976 -0.18271750 -0.21173506 0.02901757 -4.28152493 -0.18281525 -0.21221533 0.02940008 -4.29130010 -0.18291300 -0.21267317 0.02976017 -4.30107527 -0.18301075 -0.21310866 0.03009790 -4.31085044 -0.18310850 -0.21352185 0.03041335 -4.32062561 -0.18320626 -0.21391282 0.03070656 -4.33040078 -0.18330401 -0.21428163 0.03097762 -4.34017595 -0.18340176 -0.21462835 0.03122659 -4.34995112 -0.18349951 -0.21495305 0.03145354 -4.35972630 -0.18359726 -0.21525580 0.03165853 -4.36950147 -0.18369501 -0.21553667 0.03184165 -4.37927664 -0.18379277 -0.21579574 0.03200297 -4.38905181 -0.18389052 -0.21603308 0.03214256 -4.39882698 -0.18398827 -0.21624877 0.03226050 -4.40860215 -0.18408602 -0.21644288 0.03235686 -4.41837732 -0.18418377 -0.21661550 0.03243173 -4.42815249 -0.18428152 -0.21676671 0.03248518 -4.43792766 -0.18437928 -0.21689658 0.03251730 -4.44770283 -0.18447703 -0.21700520 0.03252817 -4.45747801 -0.18457478 -0.21709266 0.03251788 -4.46725318 -0.18467253 -0.21715903 0.03248650 -4.47702835 -0.18477028 -0.21720441 0.03243413 -4.48680352 -0.18486804 -0.21722888 0.03236085 -4.49657869 -0.18496579 -0.21723254 0.03226675 -4.50635386 -0.18506354 -0.21721546 0.03215193 -4.51612903 -0.18516129 -0.21717775 0.03201646 -4.52590420 -0.18525904 -0.21711950 0.03186046 -4.53567937 -0.18535679 -0.21704079 0.03168400 -4.54545455 -0.18545455 -0.21694173 0.03148718 -4.55522972 -0.18555230 -0.21682241 0.03127011 -4.56500489 -0.18565005 -0.21668292 0.03103288 -4.57478006 -0.18574780 -0.21652338 0.03077558 -4.58455523 -0.18584555 -0.21634386 0.03049831 -4.59433040 -0.18594330 -0.21614448 0.03020118 -4.60410557 -0.18604106 -0.21592534 0.02988429 -4.61388074 -0.18613881 -0.21568654 0.02954774 -4.62365591 -0.18623656 -0.21542819 0.02919163 -4.63343109 -0.18633431 -0.21515038 0.02881607 -4.64320626 -0.18643206 -0.21485322 0.02842116 -4.65298143 -0.18652981 -0.21453683 0.02800702 -4.66275660 -0.18662757 -0.21420131 0.02757374 -4.67253177 -0.18672532 -0.21384677 0.02712145 -4.68230694 -0.18682307 -0.21347331 0.02665024 -4.69208211 -0.18692082 -0.21308106 0.02616024 -4.70185728 -0.18701857 -0.21267012 0.02565154 -4.71163245 -0.18711632 -0.21224060 0.02512428 -4.72140762 -0.18721408 -0.21179263 0.02457855 -4.73118280 -0.18731183 -0.21132631 0.02401448 -4.74095797 -0.18740958 -0.21084176 0.02343218 -4.75073314 -0.18750733 -0.21033910 0.02283177 -4.76050831 -0.18760508 -0.20981845 0.02221337 -4.77028348 -0.18770283 -0.20927993 0.02157709 -4.78005865 -0.18780059 -0.20872365 0.02092306 -4.78983382 -0.18789834 -0.20814974 0.02025140 -4.79960899 -0.18799609 -0.20755831 0.01956222 -4.80938416 -0.18809384 -0.20694950 0.01885566 -4.81915934 -0.18819159 -0.20632342 0.01813183 -4.82893451 -0.18828935 -0.20568021 0.01739086 -4.83870968 -0.18838710 -0.20501998 0.01663288 -4.84848485 -0.18848485 -0.20434286 0.01585801 -4.85826002 -0.18858260 -0.20364897 0.01506637 -4.86803519 -0.18868035 -0.20293846 0.01425811 -4.87781036 -0.18877810 -0.20221144 0.01343334 -4.88758553 -0.18887586 -0.20146804 0.01259219 -4.89736070 -0.18897361 -0.20070840 0.01173480 -4.90713587 -0.18907136 -0.19993265 0.01086129 -4.91691105 -0.18916911 -0.19914091 0.00997180 -4.92668622 -0.18926686 -0.19833333 0.00906647 -4.93646139 -0.18936461 -0.19751003 0.00814542 -4.94623656 -0.18946237 -0.19667115 0.00720878 -4.95601173 -0.18956012 -0.19581682 0.00625670 -4.96578690 -0.18965787 -0.19494718 0.00528931 -4.97556207 -0.18975562 -0.19406237 0.00430675 -4.98533724 -0.18985337 -0.19316252 0.00330915 -4.99511241 -0.18995112 -0.19224777 0.00229665 -5.00488759 -0.18926686 -0.19131826 0.00205140 -5.01466276 -0.18780059 -0.19037413 0.00257355 -5.02443793 -0.18633431 -0.18941552 0.00308121 -5.03421310 -0.18486804 -0.18844257 0.00357453 -5.04398827 -0.18340176 -0.18745541 0.00405365 -5.05376344 -0.18193548 -0.18645420 0.00451871 -5.06353861 -0.18046921 -0.18543907 0.00496986 -5.07331378 -0.17900293 -0.18441017 0.00540723 -5.08308895 -0.17753666 -0.18336763 0.00583098 -5.09286413 -0.17607038 -0.18231162 0.00624123 -5.10263930 -0.17460411 -0.18124226 0.00663815 -5.11241447 -0.17313783 -0.18015970 0.00702187 -5.12218964 -0.17167155 -0.17906410 0.00739254 -5.13196481 -0.17020528 -0.17795559 0.00775031 -5.14173998 -0.16873900 -0.17683432 0.00809532 -5.15151515 -0.16727273 -0.17570045 0.00842772 -5.16129032 -0.16580645 -0.17455411 0.00874766 -5.17106549 -0.16434018 -0.17339546 0.00905528 -5.18084066 -0.16287390 -0.17222464 0.00935074 -5.19061584 -0.16140762 -0.17104181 0.00963419 -5.20039101 -0.15994135 -0.16984711 0.00990576 -5.21016618 -0.15847507 -0.16864070 0.01016562 -5.21994135 -0.15700880 -0.16742272 0.01041392 -5.22971652 -0.15554252 -0.16619332 0.01065080 -5.23949169 -0.15407625 -0.16495267 0.01087642 -5.24926686 -0.15260997 -0.16370090 0.01109093 -5.25904203 -0.15114370 -0.16243817 0.01129447 -5.26881720 -0.14967742 -0.16116463 0.01148721 -5.27859238 -0.14821114 -0.15988044 0.01166930 -5.28836755 -0.14674487 -0.15858575 0.01184088 -5.29814272 -0.14527859 -0.15728071 0.01200212 -5.30791789 -0.14381232 -0.15596547 0.01215316 -5.31769306 -0.14234604 -0.15464020 0.01229416 -5.32746823 -0.14087977 -0.15330504 0.01242527 -5.33724340 -0.13941349 -0.15196015 0.01254666 -5.34701857 -0.13794721 -0.15060568 0.01265846 -5.35679374 -0.13648094 -0.14924179 0.01276085 -5.36656891 -0.13501466 -0.14786863 0.01285397 -5.37634409 -0.13354839 -0.14648637 0.01293798 -5.38611926 -0.13208211 -0.14509515 0.01301304 -5.39589443 -0.13061584 -0.14369513 0.01307929 -5.40566960 -0.12914956 -0.14228647 0.01313691 -5.41544477 -0.12768328 -0.14086932 0.01318604 -5.42521994 -0.12621701 -0.13944384 0.01322684 -5.43499511 -0.12475073 -0.13801019 0.01325946 -5.44477028 -0.12328446 -0.13656853 0.01328407 -5.45454545 -0.12181818 -0.13511901 0.01330082 -5.46432063 -0.12035191 -0.13366178 0.01330987 -5.47409580 -0.11888563 -0.13219701 0.01331138 -5.48387097 -0.11741935 -0.13072485 0.01330550 -5.49364614 -0.11595308 -0.12924546 0.01329238 -5.50342131 -0.11448680 -0.12775900 0.01327220 -5.51319648 -0.11302053 -0.12626563 0.01324510 -5.52297165 -0.11155425 -0.12476550 0.01321124 -5.53274682 -0.11008798 -0.12325876 0.01317079 -5.54252199 -0.10862170 -0.12174559 0.01312389 -5.55229717 -0.10715543 -0.12022613 0.01307070 -5.56207234 -0.10568915 -0.11870054 0.01301139 -5.57184751 -0.10422287 -0.11716899 0.01294611 -5.58162268 -0.10275660 -0.11563162 0.01287502 -5.59139785 -0.10129032 -0.11408860 0.01279827 -5.60117302 -0.09982405 -0.11254008 0.01271603 -5.61094819 -0.09835777 -0.11098622 0.01262845 -5.62072336 -0.09689150 -0.10942718 0.01253568 -5.63049853 -0.09542522 -0.10786312 0.01243790 -5.64027370 -0.09395894 -0.10629418 0.01233524 -5.65004888 -0.09249267 -0.10472054 0.01222787 -5.65982405 -0.09102639 -0.10314235 0.01211595 -5.66959922 -0.08956012 -0.10155975 0.01199964 -5.67937439 -0.08809384 -0.09997292 0.01187908 -5.68914956 -0.08662757 -0.09838201 0.01175444 -5.69892473 -0.08516129 -0.09678716 0.01162587 -5.70869990 -0.08369501 -0.09518855 0.01149354 -5.71847507 -0.08222874 -0.09358632 0.01135758 -5.72825024 -0.08076246 -0.09198064 0.01121817 -5.73802542 -0.07929619 -0.09037165 0.01107546 -5.74780059 -0.07782991 -0.08875951 0.01092960 -5.75757576 -0.07636364 -0.08714438 0.01078074 -5.76735093 -0.07489736 -0.08552641 0.01062905 -5.77712610 -0.07343109 -0.08390576 0.01047468 -5.78690127 -0.07196481 -0.08228258 0.01031777 -5.79667644 -0.07049853 -0.08065703 0.01015849 -5.80645161 -0.06903226 -0.07902925 0.00999699 -5.81622678 -0.06756598 -0.07739941 0.00983343 -5.82600196 -0.06609971 -0.07576765 0.00966794 -5.83577713 -0.06463343 -0.07413413 0.00950070 -5.84555230 -0.06316716 -0.07249901 0.00933185 -5.85532747 -0.06170088 -0.07086242 0.00916154 -5.86510264 -0.06023460 -0.06922454 0.00898993 -5.87487781 -0.05876833 -0.06758550 0.00881717 -5.88465298 -0.05730205 -0.06594545 0.00864340 -5.89442815 -0.05583578 -0.06430456 0.00846878 -5.90420332 -0.05436950 -0.06266296 0.00829346 -5.91397849 -0.05290323 -0.06102082 0.00811759 -5.92375367 -0.05143695 -0.05937827 0.00794132 -5.93352884 -0.04997067 -0.05773547 0.00776480 -5.94330401 -0.04850440 -0.05609257 0.00758817 -5.95307918 -0.04703812 -0.05444971 0.00741159 -5.96285435 -0.04557185 -0.05280704 0.00723519 -5.97262952 -0.04410557 -0.05116471 0.00705914 -5.98240469 -0.04263930 -0.04952287 0.00688358 -5.99217986 -0.04117302 -0.04788166 0.00670864 -6.00195503 -0.03974585 -0.04624123 0.00649539 -6.01173021 -0.03847507 -0.04460173 0.00612665 -6.02150538 -0.03720430 -0.04296329 0.00575898 -6.03128055 -0.03593353 -0.04132606 0.00539253 -6.04105572 -0.03466276 -0.03969019 0.00502743 -6.05083089 -0.03339198 -0.03805582 0.00466383 -6.06060606 -0.03212121 -0.03642309 0.00430187 -6.07038123 -0.03085044 -0.03479214 0.00394170 -6.08015640 -0.02957967 -0.03316312 0.00358345 -6.08993157 -0.02830890 -0.03153616 0.00322727 -6.09970674 -0.02703812 -0.02991141 0.00287329 -6.10948192 -0.02576735 -0.02828901 0.00252166 -6.11925709 -0.02449658 -0.02666909 0.00217251 -6.12903226 -0.02322581 -0.02505179 0.00182599 -6.13880743 -0.02195503 -0.02343726 0.00148222 -6.14858260 -0.02068426 -0.02182562 0.00114136 -6.15835777 -0.01941349 -0.02021702 0.00080353 -6.16813294 -0.01814272 -0.01861158 0.00046886 -6.17790811 -0.01687195 -0.01700945 0.00013751 -6.18768328 -0.01560117 -0.01541076 0.00019041 -6.19745846 -0.01433040 -0.01381565 0.00051476 -6.20723363 -0.01305963 -0.01222423 0.00083539 -6.21700880 -0.01178886 -0.01063666 0.00115219 -6.22678397 -0.01051808 -0.00905306 0.00146503 -6.23655914 -0.00924731 -0.00747356 0.00177376 -6.24633431 -0.00797654 -0.00589828 0.00207826 -6.25610948 -0.00670577 -0.00432737 0.00237839 -6.26588465 -0.00543500 -0.00276095 0.00267405 -6.27565982 -0.00416422 -0.00119914 0.00296508 -6.28543500 -0.00289345 0.00035792 0.00325137 -6.29521017 -0.00162268 0.00191011 0.00353279 -6.30498534 -0.00035191 0.00345731 0.00380922 -6.31476051 0.00091887 0.00499939 0.00408052 -6.32453568 0.00218964 0.00653623 0.00434659 -6.33431085 0.00346041 0.00806769 0.00460728 -6.34408602 0.00473118 0.00959367 0.00486249 -6.35386119 0.00600196 0.01111404 0.00511208 -6.36363636 0.00727273 0.01262868 0.00535595 -6.37341153 0.00854350 0.01413746 0.00559396 -6.38318671 0.00981427 0.01564028 0.00582601 -6.39296188 0.01108504 0.01713700 0.00605196 -6.40273705 0.01235582 0.01862753 0.00627171 -6.41251222 0.01362659 0.02011173 0.00648514 -6.42228739 0.01489736 0.02158949 0.00669213 -6.43206256 0.01616813 0.02306071 0.00689257 -6.44183773 0.01743891 0.02452525 0.00708635 -6.45161290 0.01870968 0.02598302 0.00727335 -6.46138807 0.01998045 0.02743390 0.00745345 -6.47116325 0.02125122 0.02887778 0.00762656 -6.48093842 0.02252199 0.03031455 0.00779256 -6.49071359 0.02379277 0.03174410 0.00795133 -6.50048876 0.02506354 0.03316632 0.00810278 -6.51026393 0.02633431 0.03458110 0.00824679 -6.52003910 0.02760508 0.03598835 0.00838326 -6.52981427 0.02887586 0.03738794 0.00851209 -6.53958944 0.03014663 0.03877979 0.00863316 -6.54936461 0.03141740 0.04016378 0.00874638 -6.55913978 0.03268817 0.04153981 0.00885164 -6.56891496 0.03395894 0.04290779 0.00894884 -6.57869013 0.03522972 0.04426760 0.00903788 -6.58846530 0.03650049 0.04561916 0.00911867 -6.59824047 0.03777126 0.04696236 0.00919110 -6.60801564 0.03904203 0.04829710 0.00925507 -6.61779081 0.04031281 0.04962329 0.00931049 -6.62756598 0.04158358 0.05094084 0.00935726 -6.63734115 0.04285435 0.05224965 0.00939530 -6.64711632 0.04412512 0.05354962 0.00942449 -6.65689150 0.04539589 0.05484066 0.00944477 -6.66666667 0.04666667 0.05612268 0.00945602 -6.67644184 0.04793744 0.05739560 0.00945816 -6.68621701 0.04920821 0.05865932 0.00945111 -6.69599218 0.05047898 0.05991375 0.00943477 -6.70576735 0.05174976 0.06115881 0.00940905 -6.71554252 0.05302053 0.06239440 0.00937388 -6.72531769 0.05429130 0.06362046 0.00932916 -6.73509286 0.05556207 0.06483688 0.00927481 -6.74486804 0.05683284 0.06604359 0.00921074 -6.75464321 0.05810362 0.06724050 0.00913689 -6.76441838 0.05937439 0.06842755 0.00905316 -6.77419355 0.06064516 0.06960463 0.00895947 -6.78396872 0.06191593 0.07077169 0.00885575 -6.79374389 0.06318671 0.07192863 0.00874192 -6.80351906 0.06445748 0.07307538 0.00861790 -6.81329423 0.06572825 0.07421187 0.00848362 -6.82306940 0.06699902 0.07533803 0.00833900 -6.83284457 0.06826979 0.07645377 0.00818397 -6.84261975 0.06954057 0.07755903 0.00801846 -6.85239492 0.07081134 0.07865373 0.00784240 -6.86217009 0.07208211 0.07973782 0.00765571 -6.87194526 0.07335288 0.08081121 0.00745832 -6.88172043 0.07462366 0.08187384 0.00725018 -6.89149560 0.07589443 0.08292564 0.00703121 -6.90127077 0.07716520 0.08396655 0.00680135 -6.91104594 0.07843597 0.08499650 0.00656053 -6.92082111 0.07970674 0.08601544 0.00630869 -6.93059629 0.08097752 0.08702329 0.00604577 -6.94037146 0.08224829 0.08802000 0.00577171 -6.95014663 0.08351906 0.08900551 0.00548645 -6.95992180 0.08478983 0.08997976 0.00518992 -6.96969697 0.08606061 0.09094268 0.00488208 -6.97947214 0.08733138 0.09189424 0.00456286 -6.98924731 0.08860215 0.09283436 0.00423221 -6.99902248 0.08987292 0.09376300 0.00389008 -7.00879765 0.09026393 0.09468010 0.00441617 -7.01857283 0.09055718 0.09558561 0.00502843 -7.02834800 0.09085044 0.09647948 0.00562904 -7.03812317 0.09114370 0.09736167 0.00621797 -7.04789834 0.09143695 0.09823211 0.00679516 -7.05767351 0.09173021 0.09909078 0.00736057 -7.06744868 0.09202346 0.09993761 0.00791415 -7.07722385 0.09231672 0.10077256 0.00845585 -7.08699902 0.09260997 0.10159560 0.00898563 -7.09677419 0.09290323 0.10240667 0.00950345 -7.10654936 0.09319648 0.10320574 0.01000926 -7.11632454 0.09348974 0.10399277 0.01050304 -7.12609971 0.09378299 0.10476772 0.01098473 -7.13587488 0.09407625 0.10553054 0.01145430 -7.14565005 0.09436950 0.10628121 0.01191171 -7.15542522 0.09466276 0.10701969 0.01235693 -7.16520039 0.09495601 0.10774594 0.01278992 -7.17497556 0.09524927 0.10845992 0.01321066 -7.18475073 0.09554252 0.10916162 0.01361910 -7.19452590 0.09583578 0.10985099 0.01401522 -7.20430108 0.09612903 0.11052801 0.01439898 -7.21407625 0.09642229 0.11119265 0.01477036 -7.22385142 0.09671554 0.11184488 0.01512934 -7.23362659 0.09700880 0.11248467 0.01547587 -7.24340176 0.09730205 0.11311200 0.01580995 -7.25317693 0.09759531 0.11372685 0.01613154 -7.26295210 0.09788856 0.11432919 0.01644063 -7.27272727 0.09818182 0.11491900 0.01673719 -7.28250244 0.09847507 0.11549627 0.01702119 -7.29227761 0.09876833 0.11606096 0.01729263 -7.30205279 0.09906158 0.11661306 0.01755148 -7.31182796 0.09935484 0.11715257 0.01779773 -7.32160313 0.09964809 0.11767945 0.01803135 -7.33137830 0.09994135 0.11819370 0.01825235 -7.34115347 0.10023460 0.11869529 0.01846069 -7.35092864 0.10052786 0.11918423 0.01865637 -7.36070381 0.10082111 0.11966050 0.01883938 -7.37047898 0.10111437 0.12012408 0.01900971 -7.38025415 0.10140762 0.12057498 0.01916735 -7.39002933 0.10170088 0.12101317 0.01931229 -7.39980450 0.10199413 0.12143866 0.01944452 -7.40957967 0.10228739 0.12185144 0.01956405 -7.41935484 0.10258065 0.12225150 0.01967085 -7.42913001 0.10287390 0.12263884 0.01976494 -7.43890518 0.10316716 0.12301346 0.01984631 -7.44868035 0.10346041 0.12337536 0.01991495 -7.45845552 0.10375367 0.12372454 0.01997088 -7.46823069 0.10404692 0.12406100 0.02001408 -7.47800587 0.10434018 0.12438474 0.02004456 -7.48778104 0.10463343 0.12469576 0.02006233 -7.49755621 0.10492669 0.12499407 0.02006738 -7.50733138 0.10521994 0.12527968 0.02005974 -7.51710655 0.10551320 0.12555259 0.02003939 -7.52688172 0.10580645 0.12581281 0.02000636 -7.53665689 0.10609971 0.12606034 0.01996064 -7.54643206 0.10639296 0.12629521 0.01990225 -7.55620723 0.10668622 0.12651742 0.01983120 -7.56598240 0.10697947 0.12672698 0.01974751 -7.57575758 0.10727273 0.12692390 0.01965117 -7.58553275 0.10756598 0.12710821 0.01954222 -7.59530792 0.10785924 0.12727991 0.01942067 -7.60508309 0.10815249 0.12743902 0.01928653 -7.61485826 0.10844575 0.12758556 0.01913982 -7.62463343 0.10873900 0.12771955 0.01898055 -7.63440860 0.10903226 0.12784101 0.01880876 -7.64418377 0.10932551 0.12794996 0.01862445 -7.65395894 0.10961877 0.12804642 0.01842766 -7.66373412 0.10991202 0.12813042 0.01821839 -7.67350929 0.11020528 0.12820197 0.01799669 -7.68328446 0.11049853 0.12826111 0.01776257 -7.69305963 0.11079179 0.12830785 0.01751607 -7.70283480 0.11108504 0.12834224 0.01725719 -7.71260997 0.11137830 0.12836428 0.01698599 -7.72238514 0.11167155 0.12837403 0.01670247 -7.73216031 0.11196481 0.12837149 0.01640668 -7.74193548 0.11225806 0.12835671 0.01609865 -7.75171065 0.11255132 0.12832972 0.01577840 -7.76148583 0.11284457 0.12829055 0.01544598 -7.77126100 0.11313783 0.12823924 0.01510141 -7.78103617 0.11343109 0.12817582 0.01474473 -7.79081134 0.11372434 0.12810032 0.01437598 -7.80058651 0.11401760 0.12801279 0.01399519 -7.81036168 0.11431085 0.12791326 0.01360241 -7.82013685 0.11460411 0.12780177 0.01319766 -7.82991202 0.11489736 0.12767836 0.01278100 -7.83968719 0.11519062 0.12754308 0.01235246 -7.84946237 0.11548387 0.12739596 0.01191209 -7.85923754 0.11577713 0.12723705 0.01145992 -7.86901271 0.11607038 0.12706639 0.01099601 -7.87878788 0.11636364 0.12688403 0.01052039 -7.88856305 0.11665689 0.12669001 0.01003312 -7.89833822 0.11695015 0.12648438 0.00953423 -7.90811339 0.11724340 0.12626719 0.00902379 -7.91788856 0.11753666 0.12603848 0.00850182 -7.92766373 0.11782991 0.12579831 0.00796840 -7.93743891 0.11812317 0.12554673 0.00742356 -7.94721408 0.11841642 0.12528378 0.00686736 -7.95698925 0.11870968 0.12500952 0.00629984 -7.96676442 0.11900293 0.12472400 0.00572107 -7.97653959 0.11929619 0.12442729 0.00513110 -7.98631476 0.11958944 0.12411942 0.00452998 -7.99608993 0.11988270 0.12380046 0.00391776 -8.00586510 0.11953079 0.12347046 0.00393967 -8.01564027 0.11874878 0.12312949 0.00438071 -8.02541544 0.11796676 0.12277759 0.00481083 -8.03519062 0.11718475 0.12241483 0.00523008 -8.04496579 0.11640274 0.12204128 0.00563854 -8.05474096 0.11562072 0.12165698 0.00603625 -8.06451613 0.11483871 0.12126200 0.00642329 -8.07429130 0.11405670 0.12085641 0.00679971 -8.08406647 0.11327468 0.12044026 0.00716558 -8.09384164 0.11249267 0.12001362 0.00752095 -8.10361681 0.11171065 0.11957656 0.00786590 -8.11339198 0.11092864 0.11912914 0.00820050 -8.12316716 0.11014663 0.11867143 0.00852480 -8.13294233 0.10936461 0.11820349 0.00883887 -8.14271750 0.10858260 0.11772539 0.00914279 -8.15249267 0.10780059 0.11723720 0.00943662 -8.16226784 0.10701857 0.11673900 0.00972043 -8.17204301 0.10623656 0.11623084 0.00999429 -8.18181818 0.10545455 0.11571281 0.01025827 -8.19159335 0.10467253 0.11518497 0.01051244 -8.20136852 0.10389052 0.11464739 0.01075688 -8.21114370 0.10310850 0.11410016 0.01099165 -8.22091887 0.10232649 0.11354333 0.01121684 -8.23069404 0.10154448 0.11297699 0.01143251 -8.24046921 0.10076246 0.11240121 0.01163875 -8.25024438 0.09998045 0.11181607 0.01183562 -8.26001955 0.09919844 0.11122164 0.01202321 -8.26979472 0.09841642 0.11061800 0.01220158 -8.27956989 0.09763441 0.11000523 0.01237083 -8.28934506 0.09685239 0.10938341 0.01253102 -8.29912023 0.09607038 0.10875261 0.01268223 -8.30889541 0.09528837 0.10811292 0.01282455 -8.31867058 0.09450635 0.10746441 0.01295805 -8.32844575 0.09372434 0.10680716 0.01308282 -8.33822092 0.09294233 0.10614127 0.01319894 -8.34799609 0.09216031 0.10546680 0.01330649 -8.35777126 0.09137830 0.10478385 0.01340555 -8.36754643 0.09059629 0.10409249 0.01349620 -8.37732160 0.08981427 0.10339280 0.01357853 -8.38709677 0.08903226 0.10268489 0.01365263 -8.39687195 0.08825024 0.10196882 0.01371857 -8.40664712 0.08746823 0.10124468 0.01377645 -8.41642229 0.08668622 0.10051256 0.01382634 -8.42619746 0.08590420 0.09977255 0.01386834 -8.43597263 0.08512219 0.09902473 0.01390254 -8.44574780 0.08434018 0.09826919 0.01392901 -8.45552297 0.08355816 0.09750601 0.01394785 -8.46529814 0.08277615 0.09673530 0.01395915 -8.47507331 0.08199413 0.09595712 0.01396299 -8.48484848 0.08121212 0.09517159 0.01395947 -8.49462366 0.08043011 0.09437878 0.01394867 -8.50439883 0.07964809 0.09357878 0.01393068 -8.51417400 0.07886608 0.09277169 0.01390561 -8.52394917 0.07808407 0.09195759 0.01387352 -8.53372434 0.07730205 0.09113658 0.01383453 -8.54349951 0.07652004 0.09030876 0.01378872 -8.55327468 0.07573803 0.08947420 0.01373618 -8.56304985 0.07495601 0.08863301 0.01367700 -8.57282502 0.07417400 0.08778528 0.01361129 -8.58260020 0.07339198 0.08693111 0.01353912 -8.59237537 0.07260997 0.08607058 0.01346060 -8.60215054 0.07182796 0.08520379 0.01337583 -8.61192571 0.07104594 0.08433083 0.01328489 -8.62170088 0.07026393 0.08345181 0.01318788 -8.63147605 0.06948192 0.08256681 0.01308489 -8.64125122 0.06869990 0.08167593 0.01297603 -8.65102639 0.06791789 0.08077927 0.01286138 -8.66080156 0.06713587 0.07987693 0.01274105 -8.67057674 0.06635386 0.07896899 0.01261513 -8.68035191 0.06557185 0.07805557 0.01248372 -8.69012708 0.06478983 0.07713675 0.01234691 -8.69990225 0.06400782 0.07621263 0.01220481 -8.70967742 0.06322581 0.07528331 0.01205750 -8.71945259 0.06244379 0.07434889 0.01190509 -8.72922776 0.06166178 0.07340946 0.01174768 -8.73900293 0.06087977 0.07246513 0.01158537 -8.74877810 0.06009775 0.07151600 0.01141825 -8.75855327 0.05931574 0.07056216 0.01124642 -8.76832845 0.05853372 0.06960370 0.01106998 -8.77810362 0.05775171 0.06864074 0.01088903 -8.78787879 0.05696970 0.06767337 0.01070368 -8.79765396 0.05618768 0.06670170 0.01051401 -8.80742913 0.05540567 0.06572581 0.01032014 -8.81720430 0.05462366 0.06474581 0.01012215 -8.82697947 0.05384164 0.06376180 0.00992016 -8.83675464 0.05305963 0.06277389 0.00971426 -8.84652981 0.05227761 0.06178216 0.00950455 -8.85630499 0.05149560 0.06078673 0.00929113 -8.86608016 0.05071359 0.05978769 0.00907410 -8.87585533 0.04993157 0.05878515 0.00885357 -8.88563050 0.04914956 0.05777919 0.00862963 -8.89540567 0.04836755 0.05676994 0.00840239 -8.90518084 0.04758553 0.05575748 0.00817195 -8.91495601 0.04680352 0.05474192 0.00793841 -8.92473118 0.04602151 0.05372336 0.00770186 -8.93450635 0.04523949 0.05270191 0.00746241 -8.94428152 0.04445748 0.05167765 0.00722017 -8.95405670 0.04367546 0.05065070 0.00697523 -8.96383187 0.04289345 0.04962115 0.00672770 -8.97360704 0.04211144 0.04858911 0.00647767 -8.98338221 0.04132942 0.04755468 0.00622526 -8.99315738 0.04054741 0.04651796 0.00597055 -9.00293255 0.04000000 0.04547905 0.00547905 -9.01270772 0.04000000 0.04443805 0.00443805 -9.02248289 0.04000000 0.04339506 0.00339506 -9.03225806 0.04000000 0.04235019 0.00235019 -9.04203324 0.04000000 0.04130354 0.00130354 -9.05180841 0.04000000 0.04025521 0.00025521 -9.06158358 0.04000000 0.03920529 0.00079471 -9.07135875 0.04000000 0.03815390 0.00184610 -9.08113392 0.04000000 0.03710113 0.00289887 -9.09090909 0.04000000 0.03604708 0.00395292 -9.10068426 0.04000000 0.03499185 0.00500815 -9.11045943 0.04000000 0.03393555 0.00606445 -9.12023460 0.04000000 0.03287827 0.00712173 -9.13000978 0.04000000 0.03182012 0.00817988 -9.13978495 0.04000000 0.03076120 0.00923880 -9.14956012 0.04000000 0.02970160 0.01029840 -9.15933529 0.04000000 0.02864143 0.01135857 -9.16911046 0.04000000 0.02758079 0.01241921 -9.17888563 0.04000000 0.02651977 0.01348023 -9.18866080 0.04000000 0.02545848 0.01454152 -9.19843597 0.04000000 0.02439701 0.01560299 -9.20821114 0.04000000 0.02333547 0.01666453 -9.21798631 0.04000000 0.02227395 0.01772605 -9.22776149 0.04000000 0.02121255 0.01878745 -9.23753666 0.04000000 0.02015138 0.01984862 -9.24731183 0.04000000 0.01909053 0.02090947 -9.25708700 0.04000000 0.01803009 0.02196991 -9.26686217 0.04000000 0.01697018 0.02302982 -9.27663734 0.04000000 0.01591087 0.02408913 -9.28641251 0.04000000 0.01485228 0.02514772 -9.29618768 0.04000000 0.01379449 0.02620551 -9.30596285 0.04000000 0.01273761 0.02726239 -9.31573803 0.04000000 0.01168174 0.02831826 -9.32551320 0.04000000 0.01062696 0.02937304 -9.33528837 0.04000000 0.00957337 0.03042663 -9.34506354 0.04000000 0.00852108 0.03147892 -9.35483871 0.04000000 0.00747017 0.03252983 -9.36461388 0.04000000 0.00642074 0.03357926 -9.37438905 0.04000000 0.00537289 0.03462711 -9.38416422 0.04000000 0.00432671 0.03567329 -9.39393939 0.04000000 0.00328229 0.03671771 -9.40371457 0.04000000 0.00223974 0.03776026 -9.41348974 0.04000000 0.00119913 0.03880087 -9.42326491 0.04000000 0.00016057 0.03983943 -9.43304008 0.04000000 -0.00087586 0.04087586 -9.44281525 0.04000000 -0.00191006 0.04191006 -9.45259042 0.04000000 -0.00294193 0.04294193 -9.46236559 0.04000000 -0.00397139 0.04397139 -9.47214076 0.04000000 -0.00499835 0.04499835 -9.48191593 0.04000000 -0.00602272 0.04602272 -9.49169110 0.04000000 -0.00704440 0.04704440 -9.50146628 0.04000000 -0.00806330 0.04806330 -9.51124145 0.04000000 -0.00907934 0.04907934 -9.52101662 0.04000000 -0.01009243 0.05009243 -9.53079179 0.04000000 -0.01110247 0.05110247 -9.54056696 0.04000000 -0.01210939 0.05210939 -9.55034213 0.04000000 -0.01311309 0.05311309 -9.56011730 0.04000000 -0.01411348 0.05411348 -9.56989247 0.04000000 -0.01511049 0.05511049 -9.57966764 0.04000000 -0.01610401 0.05610401 -9.58944282 0.04000000 -0.01709398 0.05709398 -9.59921799 0.04000000 -0.01808029 0.05808029 -9.60899316 0.04000000 -0.01906288 0.05906288 -9.61876833 0.04000000 -0.02004164 0.06004164 -9.62854350 0.04000000 -0.02101651 0.06101651 -9.63831867 0.04000000 -0.02198739 0.06198739 -9.64809384 0.04000000 -0.02295421 0.06295421 -9.65786901 0.04000000 -0.02391688 0.06391688 -9.66764418 0.04000000 -0.02487532 0.06487532 -9.67741935 0.04000000 -0.02582945 0.06582945 -9.68719453 0.04000000 -0.02677918 0.06677918 -9.69696970 0.04000000 -0.02772445 0.06772445 -9.70674487 0.04000000 -0.02866516 0.06866516 -9.71652004 0.04000000 -0.02960125 0.06960125 -9.72629521 0.04000000 -0.03053263 0.07053263 -9.73607038 0.04000000 -0.03145922 0.07145922 -9.74584555 0.04000000 -0.03238095 0.07238095 -9.75562072 0.04000000 -0.03329775 0.07329775 -9.76539589 0.04000000 -0.03420953 0.07420953 -9.77517107 0.04000000 -0.03511622 0.07511622 -9.78494624 0.04000000 -0.03601775 0.07601775 -9.79472141 0.04000000 -0.03691404 0.07691404 -9.80449658 0.04000000 -0.03780502 0.07780502 -9.81427175 0.04000000 -0.03869061 0.07869061 -9.82404692 0.04000000 -0.03957075 0.07957075 -9.83382209 0.04000000 -0.04044536 0.08044536 -9.84359726 0.04000000 -0.04131438 0.08131438 -9.85337243 0.04000000 -0.04217772 0.08217772 -9.86314761 0.04000000 -0.04303533 0.08303533 -9.87292278 0.04000000 -0.04388713 0.08388713 -9.88269795 0.04000000 -0.04473306 0.08473306 -9.89247312 0.04000000 -0.04557305 0.08557305 -9.90224829 0.04000000 -0.04640703 0.08640703 -9.91202346 0.04000000 -0.04723493 0.08723493 -9.92179863 0.04000000 -0.04805669 0.08805669 -9.93157380 0.04000000 -0.04887225 0.08887225 -9.94134897 0.04000000 -0.04968154 0.08968154 -9.95112414 0.04000000 -0.05048449 0.09048449 -9.96089932 0.04000000 -0.05128105 0.09128105 -9.97067449 0.04000000 -0.05207115 0.09207115 -9.98044966 0.04000000 -0.05285474 0.09285474 -9.99022483 0.04000000 -0.05363174 0.09363174 -10.00000000 0.04000000 -0.05440211 0.09440211 +inputX outputFx trueFx diffFx +0.000000000 nan nan nan +0.009775171 0.840000000 0.999984074 0.159984074 +0.019550342 0.840000000 0.999936299 0.159936299 +0.029325513 0.840000000 0.999856675 0.159856675 +0.039100684 0.840000000 0.999745209 0.159745209 +0.048875855 0.840000000 0.999601906 0.159601906 +0.058651026 0.840000000 0.999426775 0.159426775 +0.068426197 0.840000000 0.999219825 0.159219825 +0.078201369 0.840000000 0.998981069 0.158981069 +0.087976540 0.840000000 0.998710521 0.158710521 +0.097751711 0.840000000 0.998408195 0.158408195 +0.107526882 0.840000000 0.998074109 0.158074109 +0.117302053 0.840000000 0.997708282 0.157708282 +0.127077224 0.840000000 0.997310736 0.157310736 +0.136852395 0.840000000 0.996881492 0.156881492 +0.146627566 0.840000000 0.996420576 0.156420576 +0.156402737 0.840000000 0.995928014 0.155928014 +0.166177908 0.840000000 0.995403835 0.155403835 +0.175953079 0.840000000 0.994848067 0.154848067 +0.185728250 0.840000000 0.994260744 0.154260744 +0.195503421 0.840000000 0.993641898 0.153641898 +0.205278592 0.840000000 0.992991566 0.152991566 +0.215053763 0.840000000 0.992309784 0.152309784 +0.224828935 0.840000000 0.991596592 0.151596592 +0.234604106 0.840000000 0.990852030 0.150852030 +0.244379277 0.840000000 0.990076141 0.150076141 +0.254154448 0.840000000 0.989268970 0.149268970 +0.263929619 0.840000000 0.988430562 0.148430562 +0.273704790 0.840000000 0.987560966 0.147560966 +0.283479961 0.840000000 0.986660231 0.146660231 +0.293255132 0.840000000 0.985728410 0.145728410 +0.303030303 0.840000000 0.984765555 0.144765555 +0.312805474 0.840000000 0.983771721 0.143771721 +0.322580645 0.840000000 0.982746966 0.142746966 +0.332355816 0.840000000 0.981691347 0.141691347 +0.342130987 0.840000000 0.980604926 0.140604926 +0.351906158 0.840000000 0.979487765 0.139487765 +0.361681329 0.840000000 0.978339927 0.138339927 +0.371456500 0.840000000 0.977161478 0.137161478 +0.381231672 0.840000000 0.975952486 0.135952486 +0.391006843 0.840000000 0.974713019 0.134713019 +0.400782014 0.840000000 0.973443149 0.133443149 +0.410557185 0.840000000 0.972142948 0.132142948 +0.420332356 0.840000000 0.970812490 0.130812490 +0.430107527 0.840000000 0.969451851 0.129451851 +0.439882698 0.840000000 0.968061110 0.128061110 +0.449657869 0.840000000 0.966640345 0.126640345 +0.459433040 0.840000000 0.965189638 0.125189638 +0.469208211 0.840000000 0.963709072 0.123709072 +0.478983382 0.840000000 0.962198730 0.122198730 +0.488758553 0.840000000 0.960658700 0.120658700 +0.498533724 0.840000000 0.959089069 0.119089069 +0.508308895 0.840000000 0.957489927 0.117489927 +0.518084066 0.840000000 0.955861365 0.115861365 +0.527859238 0.840000000 0.954203476 0.114203476 +0.537634409 0.840000000 0.952516354 0.112516354 +0.547409580 0.840000000 0.950800096 0.110800096 +0.557184751 0.840000000 0.949054799 0.109054799 +0.566959922 0.840000000 0.947280564 0.107280564 +0.576735093 0.840000000 0.945477490 0.105477490 +0.586510264 0.840000000 0.943645681 0.103645681 +0.596285435 0.840000000 0.941785241 0.101785241 +0.606060606 0.840000000 0.939896276 0.099896276 +0.615835777 0.840000000 0.937978894 0.097978894 +0.625610948 0.840000000 0.936033204 0.096033204 +0.635386119 0.840000000 0.934059316 0.094059316 +0.645161290 0.840000000 0.932057343 0.092057343 +0.654936461 0.840000000 0.930027398 0.090027398 +0.664711632 0.840000000 0.927969597 0.087969597 +0.674486804 0.840000000 0.925884058 0.085884058 +0.684261975 0.840000000 0.923770897 0.083770897 +0.694037146 0.840000000 0.921630237 0.081630237 +0.703812317 0.840000000 0.919462198 0.079462198 +0.713587488 0.840000000 0.917266903 0.077266903 +0.723362659 0.840000000 0.915044476 0.075044476 +0.733137830 0.840000000 0.912795045 0.072795045 +0.742913001 0.840000000 0.910518737 0.070518737 +0.752688172 0.840000000 0.908215680 0.068215680 +0.762463343 0.840000000 0.905886006 0.065886006 +0.772238514 0.840000000 0.903529847 0.063529847 +0.782013685 0.840000000 0.901147335 0.061147335 +0.791788856 0.840000000 0.898738606 0.058738606 +0.801564027 0.840000000 0.896303797 0.056303797 +0.811339198 0.840000000 0.893843045 0.053843045 +0.821114370 0.840000000 0.891356490 0.051356490 +0.830889541 0.840000000 0.888844272 0.048844272 +0.840664712 0.840000000 0.886306533 0.046306533 +0.850439883 0.840000000 0.883743417 0.043743417 +0.860215054 0.840000000 0.881155068 0.041155068 +0.869990225 0.840000000 0.878541634 0.038541634 +0.879765396 0.840000000 0.875903261 0.035903261 +0.889540567 0.840000000 0.873240099 0.033240099 +0.899315738 0.840000000 0.870552298 0.030552298 +0.909090909 0.840000000 0.867840009 0.027840009 +0.918866080 0.840000000 0.865103386 0.025103386 +0.928641251 0.840000000 0.862342583 0.022342583 +0.938416422 0.840000000 0.859557755 0.019557755 +0.948191593 0.840000000 0.856749059 0.016749059 +0.957966764 0.840000000 0.853916654 0.013916654 +0.967741935 0.840000000 0.851060700 0.011060700 +0.977517107 0.840000000 0.848181355 0.008181355 +0.987292278 0.840000000 0.845278784 0.005278784 +0.997067449 0.840000000 0.842353148 0.002353148 +1.006842620 0.837331378 0.839404613 0.002073235 +1.016617791 0.833519062 0.836433344 0.002914283 +1.026392962 0.829706745 0.833439508 0.003732763 +1.036168133 0.825894428 0.830423273 0.004528844 +1.045943304 0.822082111 0.827384807 0.005302696 +1.055718475 0.818269795 0.824324283 0.006054488 +1.065493646 0.814457478 0.821241871 0.006784393 +1.075268817 0.810645161 0.818137743 0.007492582 +1.085043988 0.806832845 0.815012075 0.008179230 +1.094819159 0.803020528 0.811865040 0.008844512 +1.104594330 0.799208211 0.808696816 0.009488604 +1.114369501 0.795395894 0.805507578 0.010111684 +1.124144673 0.791583578 0.802297506 0.010713928 +1.133919844 0.787771261 0.799066779 0.011295518 +1.143695015 0.783958944 0.795815577 0.011856632 +1.153470186 0.780146628 0.792544081 0.012397454 +1.163245357 0.776334311 0.789252476 0.012918165 +1.173020528 0.772521994 0.785940943 0.013418949 +1.182795699 0.768709677 0.782609668 0.013899990 +1.192570870 0.764897361 0.779258836 0.014361475 +1.202346041 0.761085044 0.775888633 0.014803589 +1.212121212 0.757272727 0.772499248 0.015226521 +1.221896383 0.753460411 0.769090869 0.015630459 +1.231671554 0.749648094 0.765663685 0.016015592 +1.241446725 0.745835777 0.762217888 0.016382110 +1.251221896 0.742023460 0.758753667 0.016730207 +1.260997067 0.738211144 0.755271216 0.017060072 +1.270772239 0.734398827 0.751770728 0.017371901 +1.280547410 0.730586510 0.748252396 0.017665886 +1.290322581 0.726774194 0.744716416 0.017942223 +1.300097752 0.722961877 0.741162984 0.018201107 +1.309872923 0.719149560 0.737592296 0.018442736 +1.319648094 0.715337243 0.734004550 0.018667307 +1.329423265 0.711524927 0.730399945 0.018875018 +1.339198436 0.707712610 0.726778678 0.019066068 +1.348973607 0.703900293 0.723140951 0.019240658 +1.358748778 0.700087977 0.719486964 0.019398987 +1.368523949 0.696275660 0.715816918 0.019541259 +1.378299120 0.692463343 0.712131017 0.019667674 +1.388074291 0.688651026 0.708429462 0.019778436 +1.397849462 0.684838710 0.704712458 0.019873748 +1.407624633 0.681026393 0.700980209 0.019953816 +1.417399804 0.677214076 0.697232921 0.020018845 +1.427174976 0.673401760 0.693470798 0.020069039 +1.436950147 0.669589443 0.689694049 0.020104606 +1.446725318 0.665777126 0.685902879 0.020125753 +1.456500489 0.661964809 0.682097497 0.020132688 +1.466275660 0.658152493 0.678278112 0.020125619 +1.476050831 0.654340176 0.674444932 0.020104756 +1.485826002 0.650527859 0.670598167 0.020070308 +1.495601173 0.646715543 0.666738028 0.020022485 +1.505376344 0.642903226 0.662864725 0.019961499 +1.515151515 0.639090909 0.658978470 0.019887561 +1.524926686 0.635278592 0.655079475 0.019800882 +1.534701857 0.631466276 0.651167952 0.019701676 +1.544477028 0.627653959 0.647244115 0.019590156 +1.554252199 0.623841642 0.643308177 0.019466535 +1.564027370 0.620029326 0.639360352 0.019331027 +1.573802542 0.616217009 0.635400856 0.019183847 +1.583577713 0.612404692 0.631429902 0.019025209 +1.593352884 0.608592375 0.627447706 0.018855331 +1.603128055 0.604780059 0.623454485 0.018674426 +1.612903226 0.600967742 0.619450454 0.018482712 +1.622678397 0.597155425 0.615435831 0.018280406 +1.632453568 0.593343109 0.611410832 0.018067724 +1.642228739 0.589530792 0.607375676 0.017844884 +1.652003910 0.585718475 0.603330579 0.017612104 +1.661779081 0.581906158 0.599275761 0.017369603 +1.671554252 0.578093842 0.595211440 0.017117598 +1.681329423 0.574281525 0.591137834 0.016856310 +1.691104594 0.570469208 0.587055164 0.016585956 +1.700879765 0.566656891 0.582963649 0.016306757 +1.710654936 0.562844575 0.578863507 0.016018933 +1.720430108 0.559032258 0.574754961 0.015722703 +1.730205279 0.555219941 0.570638229 0.015418287 +1.739980450 0.551407625 0.566513532 0.015105908 +1.749755621 0.547595308 0.562381092 0.014785784 +1.759530792 0.543782991 0.558241129 0.014458138 +1.769305963 0.539970674 0.554093865 0.014123190 +1.779081134 0.536158358 0.549939520 0.013781162 +1.788856305 0.532346041 0.545778317 0.013432276 +1.798631476 0.528533724 0.541610476 0.013076752 +1.808406647 0.524721408 0.537436221 0.012714813 +1.818181818 0.520909091 0.533255772 0.012346681 +1.827956989 0.517096774 0.529069352 0.011972578 +1.837732160 0.513284457 0.524877183 0.011592726 +1.847507331 0.509472141 0.520679488 0.011207347 +1.857282502 0.505659824 0.516476488 0.010816664 +1.867057674 0.501847507 0.512268406 0.010420898 +1.876832845 0.498035191 0.508055464 0.010020273 +1.886608016 0.494222874 0.503837884 0.009615010 +1.896383187 0.490410557 0.499615890 0.009205333 +1.906158358 0.486598240 0.495389703 0.008791463 +1.915933529 0.482785924 0.491159546 0.008373622 +1.925708700 0.478973607 0.486925641 0.007952034 +1.935483871 0.475161290 0.482688211 0.007526920 +1.945259042 0.471348974 0.478447477 0.007098503 +1.955034213 0.467536657 0.474203662 0.006667005 +1.964809384 0.463724340 0.469956987 0.006232647 +1.974584555 0.459912023 0.465707675 0.005795652 +1.984359726 0.456099707 0.461455948 0.005356241 +1.994134897 0.452287390 0.457202027 0.004914637 +2.003910068 0.448396872 0.452946134 0.004549262 +2.013685239 0.444389052 0.448688489 0.004299437 +2.023460411 0.440381232 0.444429315 0.004048083 +2.033235582 0.436373412 0.440168832 0.003795420 +2.043010753 0.432365591 0.435907260 0.003541669 +2.052785924 0.428357771 0.431644821 0.003287050 +2.062561095 0.424349951 0.427381735 0.003031784 +2.072336266 0.420342131 0.423118222 0.002776091 +2.082111437 0.416334311 0.418854501 0.002520190 +2.091886608 0.412326491 0.414590792 0.002264301 +2.101661779 0.408318671 0.410327314 0.002008643 +2.111436950 0.404310850 0.406064286 0.001753436 +2.121212121 0.400303030 0.401801927 0.001498897 +2.130987292 0.396295210 0.397540455 0.001245245 +2.140762463 0.392287390 0.393280087 0.000992697 +2.150537634 0.388279570 0.389021042 0.000741472 +2.160312805 0.384271750 0.384763536 0.000491786 +2.170087977 0.380263930 0.380507786 0.000243857 +2.179863148 0.376256109 0.376254009 0.000002100 +2.189638319 0.372248289 0.372002420 0.000245869 +2.199413490 0.368240469 0.367753235 0.000487234 +2.209188661 0.364232649 0.363506669 0.000725980 +2.218963832 0.360224829 0.359262937 0.000961892 +2.228739003 0.356217009 0.355022251 0.001194757 +2.238514174 0.352209189 0.350784828 0.001424361 +2.248289345 0.348201369 0.346550878 0.001650491 +2.258064516 0.344193548 0.342320615 0.001872933 +2.267839687 0.340185728 0.338094251 0.002091477 +2.277614858 0.336177908 0.333871998 0.002305910 +2.287390029 0.332170088 0.329654066 0.002516022 +2.297165200 0.328162268 0.325440666 0.002721602 +2.306940371 0.324154448 0.321232007 0.002922440 +2.316715543 0.320146628 0.317028300 0.003118328 +2.326490714 0.316138807 0.312829752 0.003309056 +2.336265885 0.312130987 0.308636571 0.003494416 +2.346041056 0.308123167 0.304448965 0.003674202 +2.355816227 0.304115347 0.300267141 0.003848206 +2.365591398 0.300107527 0.296091304 0.004016222 +2.375366569 0.296099707 0.291921661 0.004178046 +2.385141740 0.292091887 0.287758415 0.004333472 +2.394916911 0.288084066 0.283601770 0.004482296 +2.404692082 0.284076246 0.279451931 0.004624315 +2.414467253 0.280068426 0.275309099 0.004759327 +2.424242424 0.276060606 0.271173477 0.004887129 +2.434017595 0.272052786 0.267045265 0.005007521 +2.443792766 0.268044966 0.262924663 0.005120302 +2.453567937 0.264037146 0.258811872 0.005225273 +2.463343109 0.260029326 0.254707090 0.005322235 +2.473118280 0.256021505 0.250610515 0.005410990 +2.482893451 0.252013685 0.246522344 0.005491341 +2.492668622 0.248005865 0.242442774 0.005563091 +2.502443793 0.243998045 0.238371999 0.005626046 +2.512218964 0.239990225 0.234310215 0.005680009 +2.521994135 0.235982405 0.230257616 0.005724789 +2.531769306 0.231974585 0.226214394 0.005760191 +2.541544477 0.227966764 0.222180741 0.005786024 +2.551319648 0.223958944 0.218156848 0.005802096 +2.561094819 0.219951124 0.214142907 0.005808217 +2.570869990 0.215943304 0.210139105 0.005804199 +2.580645161 0.211935484 0.206145632 0.005789852 +2.590420332 0.207927664 0.202162674 0.005764989 +2.600195503 0.203919844 0.198190419 0.005729424 +2.609970674 0.199912023 0.194229052 0.005682971 +2.619745846 0.195904203 0.190278758 0.005625446 +2.629521017 0.191896383 0.186339719 0.005556664 +2.639296188 0.187888563 0.182412119 0.005476444 +2.649071359 0.183880743 0.178496140 0.005384603 +2.658846530 0.179872923 0.174591961 0.005280962 +2.668621701 0.175865103 0.170699762 0.005165340 +2.678396872 0.171857283 0.166819723 0.005037560 +2.688172043 0.167849462 0.162952019 0.004897443 +2.697947214 0.163841642 0.159096828 0.004744814 +2.707722385 0.159833822 0.155254326 0.004579496 +2.717497556 0.155826002 0.151424685 0.004401317 +2.727272727 0.151818182 0.147608080 0.004210102 +2.737047898 0.147810362 0.143804682 0.004005680 +2.746823069 0.143802542 0.140014663 0.003787879 +2.756598240 0.139794721 0.136238191 0.003556530 +2.766373412 0.135786901 0.132475437 0.003311464 +2.776148583 0.131779081 0.128726567 0.003052514 +2.785923754 0.127771261 0.124991748 0.002779513 +2.795698925 0.123763441 0.121271145 0.002492296 +2.805474096 0.119755621 0.117564921 0.002190699 +2.815249267 0.115747801 0.113873241 0.001874559 +2.825024438 0.111739980 0.110196266 0.001543715 +2.834799609 0.107732160 0.106534155 0.001198005 +2.844574780 0.103724340 0.102887069 0.000837271 +2.854349951 0.099716520 0.099255166 0.000461354 +2.864125122 0.095708700 0.095638602 0.000070098 +2.873900293 0.091700880 0.092037533 0.000336653 +2.883675464 0.087693060 0.088452113 0.000759053 +2.893450635 0.083685239 0.084882496 0.001197256 +2.903225806 0.079677419 0.081328833 0.001651414 +2.913000978 0.075669599 0.077791275 0.002121676 +2.922776149 0.071661779 0.074269971 0.002608192 +2.932551320 0.067653959 0.070765070 0.003111111 +2.942326491 0.063646139 0.067276718 0.003630579 +2.952101662 0.059638319 0.063805060 0.004166741 +2.961876833 0.055630499 0.060350240 0.004719742 +2.971652004 0.051622678 0.056912402 0.005289724 +2.981427175 0.047614858 0.053491687 0.005876829 +2.991202346 0.043607038 0.050088235 0.006481197 +3.000977517 0.039784946 0.046702185 0.006917238 +3.010752688 0.037634409 0.043333674 0.005699265 +3.020527859 0.035483871 0.039982838 0.004498967 +3.030303030 0.033333333 0.036649813 0.003316479 +3.040078201 0.031182796 0.033334731 0.002151935 +3.049853372 0.029032258 0.030037724 0.001005466 +3.059628543 0.026881720 0.026758924 0.000122797 +3.069403715 0.024731183 0.023498459 0.001232724 +3.079178886 0.022580645 0.020256457 0.002324188 +3.088954057 0.020430108 0.017033044 0.003397063 +3.098729228 0.018279570 0.013828347 0.004451223 +3.108504399 0.016129032 0.010642487 0.005486545 +3.118279570 0.013978495 0.007475588 0.006502907 +3.128054741 0.011827957 0.004327769 0.007500188 +3.137829912 0.009677419 0.001199151 0.008478268 +3.147605083 0.007526882 -0.001910149 0.009437030 +3.157380254 0.005376344 -0.005000014 0.010376358 +3.167155425 0.003225806 -0.008070329 0.011296136 +3.176930596 0.001075269 -0.011120982 0.012196251 +3.186705767 -0.001075269 -0.014151860 0.013076591 +3.196480938 -0.003225806 -0.017162852 0.013937045 +3.206256109 -0.005376344 -0.020153849 0.014777505 +3.216031281 -0.007526882 -0.023124744 0.015597862 +3.225806452 -0.009677419 -0.026075431 0.016398012 +3.235581623 -0.011827957 -0.029005805 0.017177848 +3.245356794 -0.013978495 -0.031915762 0.017937268 +3.255131965 -0.016129032 -0.034805202 0.018676170 +3.264907136 -0.018279570 -0.037674024 0.019394454 +3.274682307 -0.020430108 -0.040522130 0.020092022 +3.284457478 -0.022580645 -0.043349422 0.020768777 +3.294232649 -0.024731183 -0.046155805 0.021424622 +3.304007820 -0.026881720 -0.048941185 0.022059465 +3.313782991 -0.029032258 -0.051705469 0.022673211 +3.323558162 -0.031182796 -0.054448567 0.023265771 +3.333333333 -0.033333333 -0.057170389 0.023837056 +3.343108504 -0.035483871 -0.059870847 0.024386976 +3.352883675 -0.037634409 -0.062549854 0.024915446 +3.362658847 -0.039784946 -0.065207327 0.025422380 +3.372434018 -0.041935484 -0.067843181 0.025907697 +3.382209189 -0.044086022 -0.070457335 0.026371313 +3.391984360 -0.046236559 -0.073049709 0.026813150 +3.401759531 -0.048387097 -0.075620224 0.027233127 +3.411534702 -0.050537634 -0.078168803 0.027631169 +3.421309873 -0.052688172 -0.080695371 0.028007199 +3.431085044 -0.054838710 -0.083199854 0.028361144 +3.440860215 -0.056989247 -0.085682179 0.028692932 +3.450635386 -0.059139785 -0.088142277 0.029002492 +3.460410557 -0.061290323 -0.090580077 0.029289754 +3.470185728 -0.063440860 -0.092995512 0.029554651 +3.479960899 -0.065591398 -0.095388516 0.029797118 +3.489736070 -0.067741935 -0.097759024 0.030017089 +3.499511241 -0.069892473 -0.100106975 0.030214502 +3.509286413 -0.072043011 -0.102432306 0.030389296 +3.519061584 -0.074193548 -0.104734958 0.030541410 +3.528836755 -0.076344086 -0.107014873 0.030670787 +3.538611926 -0.078494624 -0.109271995 0.030777371 +3.548387097 -0.080645161 -0.111506268 0.030861107 +3.558162268 -0.082795699 -0.113717639 0.030921940 +3.567937439 -0.084946237 -0.115906057 0.030959820 +3.577712610 -0.087096774 -0.118071471 0.030974697 +3.587487781 -0.089247312 -0.120213834 0.030966522 +3.597262952 -0.091397849 -0.122333097 0.030935248 +3.607038123 -0.093548387 -0.124429216 0.030880829 +3.616813294 -0.095698925 -0.126502148 0.030803223 +3.626588465 -0.097849462 -0.128551849 0.030702387 +3.636363636 -0.100000000 -0.130578280 0.030578280 +3.646138807 -0.102150538 -0.132581402 0.030430865 +3.655913978 -0.104301075 -0.134561177 0.030260102 +3.665689150 -0.106451613 -0.136517570 0.030065957 +3.675464321 -0.108602151 -0.138450547 0.029848396 +3.685239492 -0.110752688 -0.140360075 0.029607387 +3.695014663 -0.112903226 -0.142246123 0.029342897 +3.704789834 -0.115053763 -0.144108662 0.029054898 +3.714565005 -0.117204301 -0.145947664 0.028743363 +3.724340176 -0.119354839 -0.147763104 0.028408265 +3.734115347 -0.121505376 -0.149554957 0.028049580 +3.743890518 -0.123655914 -0.151323199 0.027667285 +3.753665689 -0.125806452 -0.153067810 0.027261359 +3.763440860 -0.127956989 -0.154788770 0.026831781 +3.773216031 -0.130107527 -0.156486061 0.026378534 +3.782991202 -0.132258065 -0.158159667 0.025901602 +3.792766373 -0.134408602 -0.159809571 0.025400969 +3.802541544 -0.136559140 -0.161435762 0.024876622 +3.812316716 -0.138709677 -0.163038227 0.024328550 +3.822091887 -0.140860215 -0.164616957 0.023756742 +3.831867058 -0.143010753 -0.166171942 0.023161190 +3.841642229 -0.145161290 -0.167703176 0.022541886 +3.851417400 -0.147311828 -0.169210654 0.021898826 +3.861192571 -0.149462366 -0.170694370 0.021232005 +3.870967742 -0.151612903 -0.172154324 0.020541421 +3.880742913 -0.153763441 -0.173590515 0.019827074 +3.890518084 -0.155913978 -0.175002943 0.019088965 +3.900293255 -0.158064516 -0.176391612 0.018327095 +3.910068426 -0.160215054 -0.177756524 0.017541470 +3.919843597 -0.162365591 -0.179097686 0.016732094 +3.929618768 -0.164516129 -0.180415104 0.015898975 +3.939393939 -0.166666667 -0.181708788 0.015042122 +3.949169110 -0.168817204 -0.182978748 0.014161544 +3.958944282 -0.170967742 -0.184224995 0.013257253 +3.968719453 -0.173118280 -0.185447544 0.012329264 +3.978494624 -0.175268817 -0.186646408 0.011377591 +3.988269795 -0.177419355 -0.187821604 0.010402249 +3.998044966 -0.179569892 -0.188973151 0.009403258 +4.007820137 -0.180078201 -0.190101067 0.010022866 +4.017595308 -0.180175953 -0.191205374 0.011029421 +4.027370479 -0.180273705 -0.192286095 0.012012390 +4.037145650 -0.180371457 -0.193343253 0.012971796 +4.046920821 -0.180469208 -0.194376874 0.013907665 +4.056695992 -0.180566960 -0.195386985 0.014820025 +4.066471163 -0.180664712 -0.196373614 0.015708903 +4.076246334 -0.180762463 -0.197336793 0.016574330 +4.086021505 -0.180860215 -0.198276552 0.017416337 +4.095796676 -0.180957967 -0.199192925 0.018234958 +4.105571848 -0.181055718 -0.200085945 0.019030227 +4.115347019 -0.181153470 -0.200955650 0.019802180 +4.125122190 -0.181251222 -0.201802077 0.020550855 +4.134897361 -0.181348974 -0.202625264 0.021276290 +4.144672532 -0.181446725 -0.203425253 0.021978527 +4.154447703 -0.181544477 -0.204202084 0.022657607 +4.164222874 -0.181642229 -0.204955802 0.023313574 +4.173998045 -0.181739980 -0.205686452 0.023946472 +4.183773216 -0.181837732 -0.206394079 0.024556347 +4.193548387 -0.181935484 -0.207078732 0.025143248 +4.203323558 -0.182033236 -0.207740459 0.025707224 +4.213098729 -0.182130987 -0.208379312 0.026248324 +4.222873900 -0.182228739 -0.208995341 0.026766602 +4.232649071 -0.182326491 -0.209588601 0.027262110 +4.242424242 -0.182424242 -0.210159146 0.027734904 +4.252199413 -0.182521994 -0.210707033 0.028185039 +4.261974585 -0.182619746 -0.211232319 0.028612574 +4.271749756 -0.182717498 -0.211735064 0.029017566 +4.281524927 -0.182815249 -0.212215327 0.029400078 +4.291300098 -0.182913001 -0.212673170 0.029760169 +4.301075269 -0.183010753 -0.213108657 0.030097904 +4.310850440 -0.183108504 -0.213521852 0.030413347 +4.320625611 -0.183206256 -0.213912820 0.030706564 +4.330400782 -0.183304008 -0.214281630 0.030977622 +4.340175953 -0.183401760 -0.214628349 0.031226589 +4.349951124 -0.183499511 -0.214953047 0.031453536 +4.359726295 -0.183597263 -0.215255796 0.031658533 +4.369501466 -0.183695015 -0.215536668 0.031841654 +4.379276637 -0.183792766 -0.215795737 0.032002971 +4.389051808 -0.183890518 -0.216033078 0.032142560 +4.398826979 -0.183988270 -0.216248767 0.032260497 +4.408602151 -0.184086022 -0.216442883 0.032356861 +4.418377322 -0.184183773 -0.216615503 0.032431730 +4.428152493 -0.184281525 -0.216766708 0.032485183 +4.437927664 -0.184379277 -0.216896581 0.032517304 +4.447702835 -0.184477028 -0.217005203 0.032528174 +4.457478006 -0.184574780 -0.217092658 0.032517878 +4.467253177 -0.184672532 -0.217159032 0.032486500 +4.477028348 -0.184770283 -0.217204411 0.032434128 +4.486803519 -0.184868035 -0.217228884 0.032360849 +4.496578690 -0.184965787 -0.217232538 0.032266751 +4.506353861 -0.185063539 -0.217215464 0.032151925 +4.516129032 -0.185161290 -0.217177753 0.032016463 +4.525904203 -0.185259042 -0.217119498 0.031860456 +4.535679374 -0.185356794 -0.217040792 0.031683998 +4.545454545 -0.185454545 -0.216941730 0.031487185 +4.555229717 -0.185552297 -0.216822409 0.031270112 +4.565004888 -0.185650049 -0.216682925 0.031032876 +4.574780059 -0.185747801 -0.216523376 0.030775576 +4.584555230 -0.185845552 -0.216343863 0.030498310 +4.594330401 -0.185943304 -0.216144485 0.030201181 +4.604105572 -0.186041056 -0.215925344 0.029884288 +4.613880743 -0.186138807 -0.215686543 0.029547735 +4.623655914 -0.186236559 -0.215428185 0.029191626 +4.633431085 -0.186334311 -0.215150377 0.028816066 +4.643206256 -0.186432063 -0.214853223 0.028421161 +4.652981427 -0.186529814 -0.214536831 0.028007017 +4.662756598 -0.186627566 -0.214201309 0.027573743 +4.672531769 -0.186725318 -0.213846766 0.027121448 +4.682306940 -0.186823069 -0.213473312 0.026650242 +4.692082111 -0.186920821 -0.213081058 0.026160237 +4.701857283 -0.187018573 -0.212670118 0.025651545 +4.711632454 -0.187116325 -0.212240603 0.025124279 +4.721407625 -0.187214076 -0.211792629 0.024578553 +4.731182796 -0.187311828 -0.211326310 0.024014482 +4.740957967 -0.187409580 -0.210841763 0.023432183 +4.750733138 -0.187507331 -0.210339104 0.022831773 +4.760508309 -0.187605083 -0.209818453 0.022213370 +4.770283480 -0.187702835 -0.209279928 0.021577093 +4.780058651 -0.187800587 -0.208723648 0.020923062 +4.789833822 -0.187898338 -0.208149736 0.020251398 +4.799608993 -0.187996090 -0.207558313 0.019562223 +4.809384164 -0.188093842 -0.206949501 0.018855660 +4.819159335 -0.188191593 -0.206323425 0.018131831 +4.828934506 -0.188289345 -0.205680208 0.017390863 +4.838709677 -0.188387097 -0.205019977 0.016632880 +4.848484848 -0.188484848 -0.204342856 0.015858008 +4.858260020 -0.188582600 -0.203648975 0.015066375 +4.868035191 -0.188680352 -0.202938460 0.014258108 +4.877810362 -0.188778104 -0.202211440 0.013433336 +4.887585533 -0.188875855 -0.201468044 0.012592189 +4.897360704 -0.188973607 -0.200708404 0.011734797 +4.907135875 -0.189071359 -0.199932650 0.010861292 +4.916911046 -0.189169110 -0.199140915 0.009971804 +4.926686217 -0.189266862 -0.198333330 0.009066468 +4.936461388 -0.189364614 -0.197510031 0.008145417 +4.946236559 -0.189462366 -0.196671149 0.007208784 +4.956011730 -0.189560117 -0.195816822 0.006256704 +4.965786901 -0.189657869 -0.194947184 0.005289315 +4.975562072 -0.189755621 -0.194062371 0.004306751 +4.985337243 -0.189853372 -0.193162522 0.003309149 +4.995112414 -0.189951124 -0.192247773 0.002296649 +5.004887586 -0.189266862 -0.191318264 0.002051402 +5.014662757 -0.187800587 -0.190374133 0.002573546 +5.024437928 -0.186334311 -0.189415520 0.003081209 +5.034213099 -0.184868035 -0.188442566 0.003574530 +5.043988270 -0.183401760 -0.187455411 0.004053652 +5.053763441 -0.181935484 -0.186454198 0.004518714 +5.063538612 -0.180469208 -0.185439069 0.004969861 +5.073313783 -0.179002933 -0.184410166 0.005407234 +5.083088954 -0.177536657 -0.183367634 0.005830977 +5.092864125 -0.176070381 -0.182311616 0.006241235 +5.102639296 -0.174604106 -0.181242257 0.006638152 +5.112414467 -0.173137830 -0.180159702 0.007021872 +5.122189638 -0.171671554 -0.179064097 0.007392543 +5.131964809 -0.170205279 -0.177955589 0.007750310 +5.141739980 -0.168739003 -0.176834323 0.008095320 +5.151515152 -0.167272727 -0.175700447 0.008427720 +5.161290323 -0.165806452 -0.174554110 0.008747658 +5.171065494 -0.164340176 -0.173395458 0.009055283 +5.180840665 -0.162873900 -0.172224642 0.009350742 +5.190615836 -0.161407625 -0.171041810 0.009634186 +5.200391007 -0.159941349 -0.169847112 0.009905763 +5.210166178 -0.158475073 -0.168640698 0.010165625 +5.219941349 -0.157008798 -0.167422718 0.010413921 +5.229716520 -0.155542522 -0.166193324 0.010650802 +5.239491691 -0.154076246 -0.164952666 0.010876420 +5.249266862 -0.152609971 -0.163700897 0.011090926 +5.259042033 -0.151143695 -0.162438167 0.011294472 +5.268817204 -0.149677419 -0.161164631 0.011487212 +5.278592375 -0.148211144 -0.159880440 0.011669296 +5.288367546 -0.146744868 -0.158585748 0.011840880 +5.298142717 -0.145278592 -0.157280708 0.012002115 +5.307917889 -0.143812317 -0.155965473 0.012153157 +5.317693060 -0.142346041 -0.154640199 0.012294158 +5.327468231 -0.140879765 -0.153305038 0.012425273 +5.337243402 -0.139413490 -0.151960146 0.012546657 +5.347018573 -0.137947214 -0.150605678 0.012658464 +5.356793744 -0.136480938 -0.149241789 0.012760850 +5.366568915 -0.135014663 -0.147868633 0.012853971 +5.376344086 -0.133548387 -0.146486368 0.012937981 +5.386119257 -0.132082111 -0.145095148 0.013013036 +5.395894428 -0.130615836 -0.143695129 0.013079293 +5.405669599 -0.129149560 -0.142286468 0.013136908 +5.415444770 -0.127683284 -0.140869321 0.013186036 +5.425219941 -0.126217009 -0.139443844 0.013226835 +5.434995112 -0.124750733 -0.138010195 0.013259462 +5.444770283 -0.123284457 -0.136568530 0.013284072 +5.454545455 -0.121818182 -0.135119006 0.013300824 +5.464320626 -0.120351906 -0.133661780 0.013309874 +5.474095797 -0.118885630 -0.132197009 0.013311379 +5.483870968 -0.117419355 -0.130724852 0.013305497 +5.493646139 -0.115953079 -0.129245464 0.013292385 +5.503421310 -0.114486804 -0.127759003 0.013272200 +5.513196481 -0.113020528 -0.126265628 0.013245100 +5.522971652 -0.111554252 -0.124765495 0.013211243 +5.532746823 -0.110087977 -0.123258763 0.013170786 +5.542521994 -0.108621701 -0.121745588 0.013123887 +5.552297165 -0.107155425 -0.120226129 0.013070703 +5.562072336 -0.105689150 -0.118700542 0.013011393 +5.571847507 -0.104222874 -0.117168986 0.012946112 +5.581622678 -0.102756598 -0.115631619 0.012875020 +5.591397849 -0.101290323 -0.114088597 0.012798274 +5.601173021 -0.099824047 -0.112540078 0.012716031 +5.610948192 -0.098357771 -0.110986220 0.012628449 +5.620723363 -0.096891496 -0.109427180 0.012535685 +5.630498534 -0.095425220 -0.107863116 0.012437896 +5.640273705 -0.093958944 -0.106294184 0.012335240 +5.650048876 -0.092492669 -0.104720542 0.012227873 +5.659824047 -0.091026393 -0.103142346 0.012115953 +5.669599218 -0.089560117 -0.101559754 0.011999637 +5.679374389 -0.088093842 -0.099972922 0.011879080 +5.689149560 -0.086627566 -0.098382007 0.011754441 +5.698924731 -0.085161290 -0.096787164 0.011625874 +5.708699902 -0.083695015 -0.095188551 0.011493537 +5.718475073 -0.082228739 -0.093586324 0.011357585 +5.728250244 -0.080762463 -0.091980637 0.011218174 +5.738025415 -0.079296188 -0.090371648 0.011075460 +5.747800587 -0.077829912 -0.088759510 0.010929598 +5.757575758 -0.076363636 -0.087144380 0.010780744 +5.767350929 -0.074897361 -0.085526412 0.010629051 +5.777126100 -0.073431085 -0.083905761 0.010474676 +5.786901271 -0.071964809 -0.082282581 0.010317771 +5.796676442 -0.070498534 -0.080657026 0.010158492 +5.806451613 -0.069032258 -0.079029251 0.009996993 +5.816226784 -0.067565982 -0.077399408 0.009833426 +5.826001955 -0.066099707 -0.075767651 0.009667945 +5.835777126 -0.064633431 -0.074134133 0.009500702 +5.845552297 -0.063167155 -0.072499007 0.009331851 +5.855327468 -0.061700880 -0.070862424 0.009161544 +5.865102639 -0.060234604 -0.069224536 0.008989932 +5.874877810 -0.058768328 -0.067585496 0.008817167 +5.884652981 -0.057302053 -0.065945453 0.008643400 +5.894428152 -0.055835777 -0.064304559 0.008468782 +5.904203324 -0.054369501 -0.062662964 0.008293463 +5.913978495 -0.052903226 -0.061020818 0.008117593 +5.923753666 -0.051436950 -0.059378271 0.007941321 +5.933528837 -0.049970674 -0.057735471 0.007764797 +5.943304008 -0.048504399 -0.056092568 0.007588169 +5.953079179 -0.047038123 -0.054449709 0.007411586 +5.962854350 -0.045571848 -0.052807042 0.007235194 +5.972629521 -0.044105572 -0.051164714 0.007059142 +5.982404692 -0.042639296 -0.049522873 0.006883577 +5.992179863 -0.041173021 -0.047881664 0.006708643 +6.001955034 -0.039745846 -0.046241233 0.006495387 +6.011730205 -0.038475073 -0.044601725 0.006126652 +6.021505376 -0.037204301 -0.042963286 0.005758985 +6.031280547 -0.035933529 -0.041326059 0.005392530 +6.041055718 -0.034662757 -0.039690188 0.005027431 +6.050830890 -0.033391984 -0.038055816 0.004663832 +6.060606061 -0.032121212 -0.036423086 0.004301874 +6.070381232 -0.030850440 -0.034792139 0.003941699 +6.080156403 -0.029579668 -0.033163118 0.003583450 +6.089931574 -0.028308895 -0.031536162 0.003227267 +6.099706745 -0.027038123 -0.029911413 0.002873289 +6.109481916 -0.025767351 -0.028289009 0.002521658 +6.119257087 -0.024496579 -0.026669089 0.002172511 +6.129032258 -0.023225806 -0.025051793 0.001825986 +6.138807429 -0.021955034 -0.023437257 0.001482223 +6.148582600 -0.020684262 -0.021825619 0.001141357 +6.158357771 -0.019413490 -0.020217015 0.000803526 +6.168132942 -0.018142717 -0.018611581 0.000468864 +6.177908113 -0.016871945 -0.017009452 0.000137507 +6.187683284 -0.015601173 -0.015410762 0.000190411 +6.197458456 -0.014330401 -0.013815645 0.000514755 +6.207233627 -0.013059629 -0.012224234 0.000835394 +6.217008798 -0.011788856 -0.010636662 0.001152195 +6.226783969 -0.010518084 -0.009053059 0.001465025 +6.236559140 -0.009247312 -0.007473556 0.001773756 +6.246334311 -0.007976540 -0.005898284 0.002078255 +6.256109482 -0.006705767 -0.004327373 0.002378395 +6.265884653 -0.005434995 -0.002760950 0.002674046 +6.275659824 -0.004164223 -0.001199143 0.002965080 +6.285434995 -0.002893451 0.000357920 0.003251371 +6.295210166 -0.001622678 0.001910114 0.003532792 +6.304985337 -0.000351906 0.003457312 0.003809218 +6.314760508 0.000918866 0.004999391 0.004080525 +6.324535679 0.002189638 0.006536225 0.004346587 +6.334310850 0.003460411 0.008067693 0.004607282 +6.344086022 0.004731183 0.009593671 0.004862488 +6.353861193 0.006001955 0.011114039 0.005112084 +6.363636364 0.007272727 0.012628676 0.005355948 +6.373411535 0.008543500 0.014137461 0.005593962 +6.383186706 0.009814272 0.015640277 0.005826005 +6.392961877 0.011085044 0.017137005 0.006051961 +6.402737048 0.012355816 0.018627527 0.006271711 +6.412512219 0.013626588 0.020111728 0.006485140 +6.422287390 0.014897361 0.021589493 0.006692132 +6.432062561 0.016168133 0.023060705 0.006892572 +6.441837732 0.017438905 0.024525253 0.007086348 +6.451612903 0.018709677 0.025983022 0.007273345 +6.461388074 0.019980450 0.027433902 0.007453453 +6.471163245 0.021251222 0.028877781 0.007626559 +6.480938416 0.022521994 0.030314550 0.007792555 +6.490713587 0.023792766 0.031744098 0.007951331 +6.500488759 0.025063539 0.033166318 0.008102779 +6.510263930 0.026334311 0.034581103 0.008246792 +6.520039101 0.027605083 0.035988346 0.008383263 +6.529814272 0.028875855 0.037387943 0.008512087 +6.539589443 0.030146628 0.038779788 0.008633160 +6.549364614 0.031417400 0.040163778 0.008746378 +6.559139785 0.032688172 0.041539811 0.008851639 +6.568914956 0.033958944 0.042907785 0.008948841 +6.578690127 0.035229717 0.044267600 0.009037884 +6.588465298 0.036500489 0.045619157 0.009118668 +6.598240469 0.037771261 0.046962356 0.009191095 +6.608015640 0.039042033 0.048297101 0.009255067 +6.617790811 0.040312805 0.049623294 0.009310488 +6.627565982 0.041583578 0.050940840 0.009357263 +6.637341153 0.042854350 0.052249646 0.009395296 +6.647116325 0.044125122 0.053549616 0.009424494 +6.656891496 0.045395894 0.054840660 0.009444765 +6.666666667 0.046666667 0.056122685 0.009456018 +6.676441838 0.047937439 0.057395600 0.009458162 +6.686217009 0.049208211 0.058659318 0.009451107 +6.695992180 0.050478983 0.059913749 0.009434766 +6.705767351 0.051749756 0.061158806 0.009409051 +6.715542522 0.053020528 0.062394403 0.009373876 +6.725317693 0.054291300 0.063620455 0.009329155 +6.735092864 0.055562072 0.064836878 0.009274806 +6.744868035 0.056832845 0.066043589 0.009210744 +6.754643206 0.058103617 0.067240505 0.009136888 +6.764418377 0.059374389 0.068427546 0.009053157 +6.774193548 0.060645161 0.069604633 0.008959471 +6.783968719 0.061915934 0.070771685 0.008855752 +6.793743891 0.063186706 0.071928627 0.008741921 +6.803519062 0.064457478 0.073075381 0.008617903 +6.813294233 0.065728250 0.074211872 0.008483622 +6.823069404 0.066999022 0.075338026 0.008339003 +6.832844575 0.068269795 0.076453768 0.008183974 +6.842619746 0.069540567 0.077559028 0.008018461 +6.852394917 0.070811339 0.078653734 0.007842395 +6.862170088 0.072082111 0.079737817 0.007655705 +6.871945259 0.073352884 0.080811207 0.007458323 +6.881720430 0.074623656 0.081873836 0.007250181 +6.891495601 0.075894428 0.082925639 0.007031211 +6.901270772 0.077165200 0.083966550 0.006801350 +6.911045943 0.078435973 0.084996504 0.006560532 +6.920821114 0.079706745 0.086015439 0.006308694 +6.930596285 0.080977517 0.087023292 0.006045774 +6.940371457 0.082248289 0.088020002 0.005771712 +6.950146628 0.083519062 0.089005509 0.005486448 +6.959921799 0.084789834 0.089979756 0.005189922 +6.969696970 0.086060606 0.090942684 0.004882078 +6.979472141 0.087331378 0.091894237 0.004562859 +6.989247312 0.088602151 0.092834360 0.004232209 +6.999022483 0.089872923 0.093762998 0.003890075 +7.008797654 0.090263930 0.094680100 0.004416170 +7.018572825 0.090557185 0.095585612 0.005028427 +7.028347996 0.090850440 0.096479485 0.005629045 +7.038123167 0.091143695 0.097361668 0.006217973 +7.047898338 0.091436950 0.098232114 0.006795164 +7.057673509 0.091730205 0.099090776 0.007360571 +7.067448680 0.092023460 0.099937607 0.007914147 +7.077223851 0.092316716 0.100772562 0.008455847 +7.086999022 0.092609971 0.101595599 0.008985628 +7.096774194 0.092903226 0.102406673 0.009503447 +7.106549365 0.093196481 0.103205745 0.010009264 +7.116324536 0.093489736 0.103992773 0.010503037 +7.126099707 0.093782991 0.104767719 0.010984727 +7.135874878 0.094076246 0.105530544 0.011454298 +7.145650049 0.094369501 0.106281212 0.011911711 +7.155425220 0.094662757 0.107019688 0.012356931 +7.165200391 0.094956012 0.107745936 0.012789925 +7.174975562 0.095249267 0.108459925 0.013210658 +7.184750733 0.095542522 0.109161621 0.013619099 +7.194525904 0.095835777 0.109850993 0.014015216 +7.204301075 0.096129032 0.110528013 0.014398980 +7.214076246 0.096422287 0.111192650 0.014770363 +7.223851417 0.096715543 0.111844879 0.015129336 +7.233626588 0.097008798 0.112484672 0.015475874 +7.243401760 0.097302053 0.113112004 0.015809951 +7.253176931 0.097595308 0.113726852 0.016131544 +7.262952102 0.097888563 0.114329192 0.016440629 +7.272727273 0.098181818 0.114919004 0.016737185 +7.282502444 0.098475073 0.115496266 0.017021192 +7.292277615 0.098768328 0.116060959 0.017292630 +7.302052786 0.099061584 0.116613065 0.017551481 +7.311827957 0.099354839 0.117152566 0.017797728 +7.321603128 0.099648094 0.117679448 0.018031354 +7.331378299 0.099941349 0.118193696 0.018252347 +7.341153470 0.100234604 0.118695295 0.018460691 +7.350928641 0.100527859 0.119184233 0.018656374 +7.360703812 0.100821114 0.119660499 0.018839385 +7.370478983 0.101114370 0.120124084 0.019009714 +7.380254154 0.101407625 0.120574977 0.019167352 +7.390029326 0.101700880 0.121013171 0.019312291 +7.399804497 0.101994135 0.121438660 0.019444525 +7.409579668 0.102287390 0.121851437 0.019564047 +7.419354839 0.102580645 0.122251499 0.019670854 +7.429130010 0.102873900 0.122638842 0.019764942 +7.438905181 0.103167155 0.123013464 0.019846308 +7.448680352 0.103460411 0.123375363 0.019914953 +7.458455523 0.103753666 0.123724541 0.019970875 +7.468230694 0.104046921 0.124060997 0.020014077 +7.478005865 0.104340176 0.124384736 0.020044560 +7.487781036 0.104633431 0.124695758 0.020062327 +7.497556207 0.104926686 0.124994071 0.020067385 +7.507331378 0.105219941 0.125279678 0.020059737 +7.517106549 0.105513196 0.125552588 0.020039391 +7.526881720 0.105806452 0.125812807 0.020006355 +7.536656891 0.106099707 0.126060345 0.019960638 +7.546432063 0.106392962 0.126295212 0.019902250 +7.556207234 0.106686217 0.126517418 0.019831201 +7.565982405 0.106979472 0.126726978 0.019747505 +7.575757576 0.107272727 0.126923902 0.019651175 +7.585532747 0.107565982 0.127108207 0.019542225 +7.595307918 0.107859238 0.127279908 0.019420670 +7.605083089 0.108152493 0.127439020 0.019286528 +7.614858260 0.108445748 0.127585563 0.019139815 +7.624633431 0.108739003 0.127719554 0.018980551 +7.634408602 0.109032258 0.127841014 0.018808756 +7.644183773 0.109325513 0.127949963 0.018624450 +7.653958944 0.109618768 0.128046424 0.018427655 +7.663734115 0.109912023 0.128130418 0.018218395 +7.673509286 0.110205279 0.128201972 0.017996693 +7.683284457 0.110498534 0.128261108 0.017762574 +7.693059629 0.110791789 0.128307854 0.017516065 +7.702834800 0.111085044 0.128342237 0.017257193 +7.712609971 0.111378299 0.128364284 0.016985985 +7.722385142 0.111671554 0.128374026 0.016702472 +7.732160313 0.111964809 0.128371492 0.016406683 +7.741935484 0.112258065 0.128356713 0.016098649 +7.751710655 0.112551320 0.128329723 0.015778403 +7.761485826 0.112844575 0.128290553 0.015445979 +7.771260997 0.113137830 0.128239239 0.015101409 +7.781036168 0.113431085 0.128175816 0.014744731 +7.790811339 0.113724340 0.128100319 0.014375979 +7.800586510 0.114017595 0.128012787 0.013995192 +7.810361681 0.114310850 0.127913257 0.013602407 +7.820136852 0.114604106 0.127801769 0.013197663 +7.829912023 0.114897361 0.127678362 0.012781001 +7.839687195 0.115190616 0.127543078 0.012352462 +7.849462366 0.115483871 0.127395959 0.011912088 +7.859237537 0.115777126 0.127237049 0.011459922 +7.869012708 0.116070381 0.127066390 0.010996009 +7.878787879 0.116363636 0.126884028 0.010520392 +7.888563050 0.116656891 0.126690009 0.010033117 +7.898338221 0.116950147 0.126484379 0.009534233 +7.908113392 0.117243402 0.126267187 0.009023785 +7.917888563 0.117536657 0.126038481 0.008501824 +7.927663734 0.117829912 0.125798310 0.007968398 +7.937438905 0.118123167 0.125546725 0.007423558 +7.947214076 0.118416422 0.125283778 0.006867356 +7.956989247 0.118709677 0.125009520 0.006299842 +7.966764418 0.119002933 0.124724004 0.005721072 +7.976539589 0.119296188 0.124427286 0.005131098 +7.986314761 0.119589443 0.124119418 0.004529975 +7.996089932 0.119882698 0.123800458 0.003917760 +8.005865103 0.119530792 0.123470462 0.003939670 +8.015640274 0.118748778 0.123129487 0.004380709 +8.025415445 0.117966764 0.122777591 0.004810827 +8.035190616 0.117184751 0.122414835 0.005230084 +8.044965787 0.116402737 0.122041276 0.005638539 +8.054740958 0.115620723 0.121656978 0.006036254 +8.064516129 0.114838710 0.121262000 0.006423290 +8.074291300 0.114056696 0.120856406 0.006799710 +8.084066471 0.113274682 0.120440258 0.007165576 +8.093841642 0.112492669 0.120013621 0.007520952 +8.103616813 0.111710655 0.119576559 0.007865904 +8.113391984 0.110928641 0.119129139 0.008200497 +8.123167155 0.110146628 0.118671425 0.008524798 +8.132942326 0.109364614 0.118203486 0.008838873 +8.142717498 0.108582600 0.117725390 0.009142790 +8.152492669 0.107800587 0.117237204 0.009436618 +8.162267840 0.107018573 0.116738999 0.009720426 +8.172043011 0.106236559 0.116230844 0.009994285 +8.181818182 0.105454545 0.115712811 0.010258266 +8.191593353 0.104672532 0.115184970 0.010512439 +8.201368524 0.103890518 0.114647395 0.010756877 +8.211143695 0.103108504 0.114100157 0.010991653 +8.220918866 0.102326491 0.113543331 0.011216841 +8.230694037 0.101544477 0.112976992 0.011432515 +8.240469208 0.100762463 0.112401213 0.011638750 +8.250244379 0.099980450 0.111816071 0.011835622 +8.260019550 0.099198436 0.111221643 0.012023207 +8.269794721 0.098416422 0.110618004 0.012201582 +8.279569892 0.097634409 0.110005234 0.012370825 +8.289345064 0.096852395 0.109383410 0.012531015 +8.299120235 0.096070381 0.108752611 0.012682230 +8.308895406 0.095288368 0.108112917 0.012824549 +8.318670577 0.094506354 0.107464408 0.012958054 +8.328445748 0.093724340 0.106807165 0.013082824 +8.338220919 0.092942326 0.106141268 0.013198942 +8.347996090 0.092160313 0.105466802 0.013306489 +8.357771261 0.091378299 0.104783846 0.013405547 +8.367546432 0.090596285 0.104092486 0.013496201 +8.377321603 0.089814272 0.103392805 0.013578533 +8.387096774 0.089032258 0.102684886 0.013652628 +8.396871945 0.088250244 0.101968816 0.013718571 +8.406647116 0.087468231 0.101244678 0.013776447 +8.416422287 0.086686217 0.100512560 0.013826343 +8.426197458 0.085904203 0.099772547 0.013868343 +8.435972630 0.085122190 0.099024726 0.013902537 +8.445747801 0.084340176 0.098269186 0.013929010 +8.455522972 0.083558162 0.097506013 0.013947850 +8.465298143 0.082776149 0.096735296 0.013959148 +8.475073314 0.081994135 0.095957125 0.013962990 +8.484848485 0.081212121 0.095171588 0.013959467 +8.494623656 0.080430108 0.094378776 0.013948668 +8.504398827 0.079648094 0.093578778 0.013930684 +8.514173998 0.078866080 0.092771686 0.013905606 +8.523949169 0.078084066 0.091957590 0.013873524 +8.533724340 0.077302053 0.091136583 0.013834530 +8.543499511 0.076520039 0.090308756 0.013788717 +8.553274682 0.075738025 0.089474202 0.013736177 +8.563049853 0.074956012 0.088633013 0.013677002 +8.572825024 0.074173998 0.087785284 0.013611286 +8.582600196 0.073391984 0.086931106 0.013539122 +8.592375367 0.072609971 0.086070575 0.013460605 +8.602150538 0.071827957 0.085203785 0.013375828 +8.611925709 0.071045943 0.084330831 0.013284887 +8.621700880 0.070263930 0.083451807 0.013187877 +8.631476051 0.069481916 0.082566808 0.013084893 +8.641251222 0.068699902 0.081675932 0.012976030 +8.651026393 0.067917889 0.080779273 0.012861385 +8.660801564 0.067135875 0.079876928 0.012741054 +8.670576735 0.066353861 0.078968994 0.012615133 +8.680351906 0.065571848 0.078055568 0.012483720 +8.690127077 0.064789834 0.077136747 0.012346913 +8.699902248 0.064007820 0.076212627 0.012204807 +8.709677419 0.063225806 0.075283308 0.012057502 +8.719452590 0.062443793 0.074348888 0.011905095 +8.729227761 0.061661779 0.073409463 0.011747684 +8.739002933 0.060879765 0.072465134 0.011585369 +8.748778104 0.060097752 0.071515998 0.011418247 +8.758553275 0.059315738 0.070562155 0.011246417 +8.768328446 0.058533724 0.069603704 0.011069980 +8.778103617 0.057751711 0.068640744 0.010889033 +8.787878788 0.056969697 0.067673375 0.010703678 +8.797653959 0.056187683 0.066701696 0.010514013 +8.807429130 0.055405670 0.065725808 0.010320138 +8.817204301 0.054623656 0.064745810 0.010122154 +8.826979472 0.053841642 0.063761802 0.009920160 +8.836754643 0.053059629 0.062773886 0.009714258 +8.846529814 0.052277615 0.061782162 0.009504547 +8.856304985 0.051495601 0.060786730 0.009291128 +8.866080156 0.050713587 0.059787690 0.009074103 +8.875855327 0.049931574 0.058785145 0.008853571 +8.885630499 0.049149560 0.057779195 0.008629635 +8.895405670 0.048367546 0.056769940 0.008402394 +8.905180841 0.047585533 0.055757483 0.008171950 +8.914956012 0.046803519 0.054741924 0.007938405 +8.924731183 0.046021505 0.053723365 0.007701859 +8.934506354 0.045239492 0.052701907 0.007462415 +8.944281525 0.044457478 0.051677651 0.007220173 +8.954056696 0.043675464 0.050650698 0.006975234 +8.963831867 0.042893451 0.049621151 0.006727701 +8.973607038 0.042111437 0.048589111 0.006477674 +8.983382209 0.041329423 0.047554679 0.006225256 +8.993157380 0.040547410 0.046517957 0.005970547 +9.002932551 0.040000000 0.045479046 0.005479046 +9.012707722 0.040000000 0.044438047 0.004438047 +9.022482893 0.040000000 0.043395063 0.003395063 +9.032258065 0.040000000 0.042350194 0.002350194 +9.042033236 0.040000000 0.041303542 0.001303542 +9.051808407 0.040000000 0.040255208 0.000255208 +9.061583578 0.040000000 0.039205294 0.000794706 +9.071358749 0.040000000 0.038153900 0.001846100 +9.081133920 0.040000000 0.037101127 0.002898873 +9.090909091 0.040000000 0.036047078 0.003952922 +9.100684262 0.040000000 0.034991852 0.005008148 +9.110459433 0.040000000 0.033935551 0.006064449 +9.120234604 0.040000000 0.032878274 0.007121726 +9.130009775 0.040000000 0.031820124 0.008179876 +9.139784946 0.040000000 0.030761199 0.009238801 +9.149560117 0.040000000 0.029701602 0.010298398 +9.159335288 0.040000000 0.028641430 0.011358570 +9.169110459 0.040000000 0.027580786 0.012419214 +9.178885630 0.040000000 0.026519767 0.013480233 +9.188660802 0.040000000 0.025458475 0.014541525 +9.198435973 0.040000000 0.024397009 0.015602991 +9.208211144 0.040000000 0.023335467 0.016664533 +9.217986315 0.040000000 0.022273950 0.017726050 +9.227761486 0.040000000 0.021212555 0.018787445 +9.237536657 0.040000000 0.020151382 0.019848618 +9.247311828 0.040000000 0.019090529 0.020909471 +9.257086999 0.040000000 0.018030094 0.021969906 +9.266862170 0.040000000 0.016970175 0.023029825 +9.276637341 0.040000000 0.015910870 0.024089130 +9.286412512 0.040000000 0.014852277 0.025147723 +9.296187683 0.040000000 0.013794492 0.026205508 +9.305962854 0.040000000 0.012737613 0.027262387 +9.315738025 0.040000000 0.011681736 0.028318264 +9.325513196 0.040000000 0.010626957 0.029373043 +9.335288368 0.040000000 0.009573373 0.030426627 +9.345063539 0.040000000 0.008521079 0.031478921 +9.354838710 0.040000000 0.007470171 0.032529829 +9.364613881 0.040000000 0.006420744 0.033579256 +9.374389052 0.040000000 0.005372893 0.034627107 +9.384164223 0.040000000 0.004326712 0.035673288 +9.393939394 0.040000000 0.003282295 0.036717705 +9.403714565 0.040000000 0.002239736 0.037760264 +9.413489736 0.040000000 0.001199129 0.038800871 +9.423264907 0.040000000 0.000160566 0.039839434 +9.433040078 0.040000000 -0.000875860 0.040875860 +9.442815249 0.040000000 -0.001910056 0.041910056 +9.452590420 0.040000000 -0.002941932 0.042941932 +9.462365591 0.040000000 -0.003971394 0.043971394 +9.472140762 0.040000000 -0.004998352 0.044998352 +9.481915934 0.040000000 -0.006022716 0.046022716 +9.491691105 0.040000000 -0.007044395 0.047044395 +9.501466276 0.040000000 -0.008063300 0.048063300 +9.511241447 0.040000000 -0.009079340 0.049079340 +9.521016618 0.040000000 -0.010092427 0.050092427 +9.530791789 0.040000000 -0.011102473 0.051102473 +9.540566960 0.040000000 -0.012109389 0.052109389 +9.550342131 0.040000000 -0.013113089 0.053113089 +9.560117302 0.040000000 -0.014113483 0.054113483 +9.569892473 0.040000000 -0.015110487 0.055110487 +9.579667644 0.040000000 -0.016104014 0.056104014 +9.589442815 0.040000000 -0.017093978 0.057093978 +9.599217986 0.040000000 -0.018080295 0.058080295 +9.608993157 0.040000000 -0.019062878 0.059062878 +9.618768328 0.040000000 -0.020041645 0.060041645 +9.628543500 0.040000000 -0.021016511 0.061016511 +9.638318671 0.040000000 -0.021987394 0.061987394 +9.648093842 0.040000000 -0.022954211 0.062954211 +9.657869013 0.040000000 -0.023916879 0.063916879 +9.667644184 0.040000000 -0.024875317 0.064875317 +9.677419355 0.040000000 -0.025829445 0.065829445 +9.687194526 0.040000000 -0.026779182 0.066779182 +9.696969697 0.040000000 -0.027724447 0.067724447 +9.706744868 0.040000000 -0.028665163 0.068665163 +9.716520039 0.040000000 -0.029601249 0.069601249 +9.726295210 0.040000000 -0.030532628 0.070532628 +9.736070381 0.040000000 -0.031459222 0.071459222 +9.745845552 0.040000000 -0.032380954 0.072380954 +9.755620723 0.040000000 -0.033297748 0.073297748 +9.765395894 0.040000000 -0.034209528 0.074209528 +9.775171065 0.040000000 -0.035116220 0.075116220 +9.784946237 0.040000000 -0.036017747 0.076017747 +9.794721408 0.040000000 -0.036914037 0.076914037 +9.804496579 0.040000000 -0.037805016 0.077805016 +9.814271750 0.040000000 -0.038690611 0.078690611 +9.824046921 0.040000000 -0.039570750 0.079570750 +9.833822092 0.040000000 -0.040445362 0.080445362 +9.843597263 0.040000000 -0.041314377 0.081314377 +9.853372434 0.040000000 -0.042177723 0.082177723 +9.863147605 0.040000000 -0.043035332 0.083035332 +9.872922776 0.040000000 -0.043887135 0.083887135 +9.882697947 0.040000000 -0.044733063 0.084733063 +9.892473118 0.040000000 -0.045573049 0.085573049 +9.902248289 0.040000000 -0.046407026 0.086407026 +9.912023460 0.040000000 -0.047234929 0.087234929 +9.921798631 0.040000000 -0.048056691 0.088056691 +9.931573803 0.040000000 -0.048872248 0.088872248 +9.941348974 0.040000000 -0.049681535 0.089681535 +9.951124145 0.040000000 -0.050484491 0.090484491 +9.960899316 0.040000000 -0.051281051 0.091281051 +9.970674487 0.040000000 -0.052071154 0.092071154 +9.980449658 0.040000000 -0.052854739 0.092854739 +9.990224829 0.040000000 -0.053631744 0.093631744 +10.000000000 0.040000000 -0.054402111 0.094402111 diff --git a/examples/takagi-sugeno/approximation.fll b/examples/takagi-sugeno/approximation.fll index 1d166c9..4461299 100644 --- a/examples/takagi-sugeno/approximation.fll +++ b/examples/takagi-sugeno/approximation.fll @@ -1,7 +1,8 @@ -Engine: approximation of sin(x)/x +Engine: approximation InputVariable: inputX enabled: true range: 0.000 10.000 + lock-range: false term: NEAR_1 Triangle 0.000 1.000 2.000 term: NEAR_2 Triangle 1.000 2.000 3.000 term: NEAR_3 Triangle 2.000 3.000 4.000 @@ -14,11 +15,11 @@ InputVariable: inputX OutputVariable: outputFx enabled: true range: -1.000 1.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage TakagiSugeno default: nan lock-previous: true - lock-range: false term: f1 Constant 0.840 term: f2 Constant 0.450 term: f3 Constant 0.040 @@ -31,26 +32,27 @@ OutputVariable: outputFx OutputVariable: trueFx enabled: true range: -1.000 1.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage Automatic default: nan lock-previous: true - lock-range: false term: fx Function sin(inputX)/inputX OutputVariable: diffFx enabled: true range: -1.000 1.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage Automatic default: nan lock-previous: false - lock-range: false term: diff Function fabs(outputFx-trueFx) RuleBlock: enabled: true conjunction: none disjunction: none - activation: none + implication: none + activation: General rule: if inputX is NEAR_1 then outputFx is f1 rule: if inputX is NEAR_2 then outputFx is f2 rule: if inputX is NEAR_3 then outputFx is f3 diff --git a/examples/takagi-sugeno/approximation.java b/examples/takagi-sugeno/approximation.java index c3d98e1..c2f9d00 100644 --- a/examples/takagi-sugeno/approximation.java +++ b/examples/takagi-sugeno/approximation.java @@ -1,4 +1,5 @@ import com.fuzzylite.*; +import com.fuzzylite.activation.* import com.fuzzylite.defuzzifier.*; import com.fuzzylite.factory.*; import com.fuzzylite.hedge.*; @@ -12,74 +13,84 @@ import com.fuzzylite.variable.*; public class approximation{ public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + Engine engine = new Engine(); -engine.setName("approximation of sin(x)/x"); +engine.setName("approximation"); +engine.setDescription(""); -InputVariable inputVariable = new InputVariable(); -inputVariable.setEnabled(true); -inputVariable.setName("inputX"); -inputVariable.setRange(0.000, 10.000); -inputVariable.addTerm(new Triangle("NEAR_1", 0.000, 1.000, 2.000)); -inputVariable.addTerm(new Triangle("NEAR_2", 1.000, 2.000, 3.000)); -inputVariable.addTerm(new Triangle("NEAR_3", 2.000, 3.000, 4.000)); -inputVariable.addTerm(new Triangle("NEAR_4", 3.000, 4.000, 5.000)); -inputVariable.addTerm(new Triangle("NEAR_5", 4.000, 5.000, 6.000)); -inputVariable.addTerm(new Triangle("NEAR_6", 5.000, 6.000, 7.000)); -inputVariable.addTerm(new Triangle("NEAR_7", 6.000, 7.000, 8.000)); -inputVariable.addTerm(new Triangle("NEAR_8", 7.000, 8.000, 9.000)); -inputVariable.addTerm(new Triangle("NEAR_9", 8.000, 9.000, 10.000)); -engine.addInputVariable(inputVariable); +InputVariable inputX = new InputVariable(); +inputX.setName("inputX"); +inputX.setDescription(""); +inputX.setEnabled(true); +inputX.setRange(0.000, 10.000); +inputX.setLockValueInRange(false); +inputX.addTerm(new Triangle("NEAR_1", 0.000, 1.000, 2.000)); +inputX.addTerm(new Triangle("NEAR_2", 1.000, 2.000, 3.000)); +inputX.addTerm(new Triangle("NEAR_3", 2.000, 3.000, 4.000)); +inputX.addTerm(new Triangle("NEAR_4", 3.000, 4.000, 5.000)); +inputX.addTerm(new Triangle("NEAR_5", 4.000, 5.000, 6.000)); +inputX.addTerm(new Triangle("NEAR_6", 5.000, 6.000, 7.000)); +inputX.addTerm(new Triangle("NEAR_7", 6.000, 7.000, 8.000)); +inputX.addTerm(new Triangle("NEAR_8", 7.000, 8.000, 9.000)); +inputX.addTerm(new Triangle("NEAR_9", 8.000, 9.000, 10.000)); +engine.addInputVariable(inputX); -OutputVariable outputVariable1 = new OutputVariable(); -outputVariable1.setEnabled(true); -outputVariable1.setName("outputFx"); -outputVariable1.setRange(-1.000, 1.000); -outputVariable1.fuzzyOutput().setAccumulation(null); -outputVariable1.setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable1.setDefaultValue(Double.NaN); -outputVariable1.setLockPreviousOutputValue(true); -outputVariable1.setLockOutputValueInRange(false); -outputVariable1.addTerm(new Constant("f1", 0.840)); -outputVariable1.addTerm(new Constant("f2", 0.450)); -outputVariable1.addTerm(new Constant("f3", 0.040)); -outputVariable1.addTerm(new Constant("f4", -0.180)); -outputVariable1.addTerm(new Constant("f5", -0.190)); -outputVariable1.addTerm(new Constant("f6", -0.040)); -outputVariable1.addTerm(new Constant("f7", 0.090)); -outputVariable1.addTerm(new Constant("f8", 0.120)); -outputVariable1.addTerm(new Constant("f9", 0.040)); -engine.addOutputVariable(outputVariable1); +OutputVariable outputFx = new OutputVariable(); +outputFx.setName("outputFx"); +outputFx.setDescription(""); +outputFx.setEnabled(true); +outputFx.setRange(-1.000, 1.000); +outputFx.setLockValueInRange(false); +outputFx.setAggregation(null); +outputFx.setDefuzzifier(new WeightedAverage("TakagiSugeno")); +outputFx.setDefaultValue(Double.NaN); +outputFx.setLockPreviousValue(true); +outputFx.addTerm(new Constant("f1", 0.840)); +outputFx.addTerm(new Constant("f2", 0.450)); +outputFx.addTerm(new Constant("f3", 0.040)); +outputFx.addTerm(new Constant("f4", -0.180)); +outputFx.addTerm(new Constant("f5", -0.190)); +outputFx.addTerm(new Constant("f6", -0.040)); +outputFx.addTerm(new Constant("f7", 0.090)); +outputFx.addTerm(new Constant("f8", 0.120)); +outputFx.addTerm(new Constant("f9", 0.040)); +engine.addOutputVariable(outputFx); -OutputVariable outputVariable2 = new OutputVariable(); -outputVariable2.setEnabled(true); -outputVariable2.setName("trueFx"); -outputVariable2.setRange(-1.000, 1.000); -outputVariable2.fuzzyOutput().setAccumulation(null); -outputVariable2.setDefuzzifier(new WeightedAverage("Automatic")); -outputVariable2.setDefaultValue(Double.NaN); -outputVariable2.setLockPreviousOutputValue(true); -outputVariable2.setLockOutputValueInRange(false); -outputVariable2.addTerm(Function.create("fx", "sin(inputX)/inputX", engine)); -engine.addOutputVariable(outputVariable2); +OutputVariable trueFx = new OutputVariable(); +trueFx.setName("trueFx"); +trueFx.setDescription(""); +trueFx.setEnabled(true); +trueFx.setRange(-1.000, 1.000); +trueFx.setLockValueInRange(false); +trueFx.setAggregation(null); +trueFx.setDefuzzifier(new WeightedAverage("Automatic")); +trueFx.setDefaultValue(Double.NaN); +trueFx.setLockPreviousValue(true); +trueFx.addTerm(Function.create("fx", "sin(inputX)/inputX", engine)); +engine.addOutputVariable(trueFx); -OutputVariable outputVariable3 = new OutputVariable(); -outputVariable3.setEnabled(true); -outputVariable3.setName("diffFx"); -outputVariable3.setRange(-1.000, 1.000); -outputVariable3.fuzzyOutput().setAccumulation(null); -outputVariable3.setDefuzzifier(new WeightedAverage("Automatic")); -outputVariable3.setDefaultValue(Double.NaN); -outputVariable3.setLockPreviousOutputValue(false); -outputVariable3.setLockOutputValueInRange(false); -outputVariable3.addTerm(Function.create("diff", "fabs(outputFx-trueFx)", engine)); -engine.addOutputVariable(outputVariable3); +OutputVariable diffFx = new OutputVariable(); +diffFx.setName("diffFx"); +diffFx.setDescription(""); +diffFx.setEnabled(true); +diffFx.setRange(-1.000, 1.000); +diffFx.setLockValueInRange(false); +diffFx.setAggregation(null); +diffFx.setDefuzzifier(new WeightedAverage("Automatic")); +diffFx.setDefaultValue(Double.NaN); +diffFx.setLockPreviousValue(false); +diffFx.addTerm(Function.create("diff", "fabs(outputFx-trueFx)", engine)); +engine.addOutputVariable(diffFx); RuleBlock ruleBlock = new RuleBlock(); -ruleBlock.setEnabled(true); ruleBlock.setName(""); +ruleBlock.setDescription(""); +ruleBlock.setEnabled(true); ruleBlock.setConjunction(null); ruleBlock.setDisjunction(null); -ruleBlock.setActivation(null); +ruleBlock.setImplication(null); +ruleBlock.setActivation(new General()); ruleBlock.addRule(Rule.parse("if inputX is NEAR_1 then outputFx is f1", engine)); ruleBlock.addRule(Rule.parse("if inputX is NEAR_2 then outputFx is f2", engine)); ruleBlock.addRule(Rule.parse("if inputX is NEAR_3 then outputFx is f3", engine)); diff --git a/examples/takagi-sugeno/approximation.pdf b/examples/takagi-sugeno/approximation.pdf Binary files differnew file mode 100644 index 0000000..6af8fef --- /dev/null +++ b/examples/takagi-sugeno/approximation.pdf diff --git a/examples/takagi-sugeno/octave/cubic_approximator.R b/examples/takagi-sugeno/octave/cubic_approximator.R new file mode 100644 index 0000000..d3d3fbf --- /dev/null +++ b/examples/takagi-sugeno/octave/cubic_approximator.R @@ -0,0 +1,84 @@ +#Code automatically generated with fuzzylite 6.0. + +library(ggplot2); + +engine.name = "cubic_approximator" +engine.fll = "Engine: cubic_approximator +InputVariable: X + enabled: true + range: -5.000 5.000 + lock-range: false + term: AboutNegFive Triangle -6.000 -5.000 -4.000 + term: AboutNegFour Triangle -5.000 -4.000 -3.000 + term: AboutNegThree Triangle -4.000 -3.000 -2.000 + term: AboutNegTwo Triangle -3.000 -2.000 -1.000 + term: AboutNegOne Triangle -2.000 -1.000 0.000 + term: AboutZero Triangle -1.000 0.000 1.000 + term: AboutOne Triangle 0.000 1.000 2.000 + term: AboutTwo Triangle 1.000 2.000 3.000 + term: AboutThree Triangle 2.000 3.000 4.000 + term: AboutFour Triangle 3.000 4.000 5.000 + term: AboutFive Triangle 4.000 5.000 6.000 +OutputVariable: ApproxXCubed + enabled: true + range: -5.000 5.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage TakagiSugeno + default: nan + lock-previous: false + term: TangentatNegFive Linear 75.000 250.000 + term: TangentatNegFour Linear 48.000 128.000 + term: TangentatNegThree Linear 27.000 54.000 + term: TangentatNegTwo Linear 12.000 16.000 + term: TangentatNegOne Linear 3.000 2.000 + term: TangentatZero Linear 0.000 0.000 + term: TangentatOne Linear 3.000 -2.000 + term: TangentatTwo Linear 12.000 -16.000 + term: TangentatThree Linear 27.000 -54.000 + term: TangentatFour Linear 48.000 -128.000 + term: TangentatFive Linear 75.000 -250.000 +RuleBlock: + enabled: true + conjunction: none + disjunction: none + implication: none + activation: General + rule: if X is AboutNegFive then ApproxXCubed is TangentatNegFive + rule: if X is AboutNegFour then ApproxXCubed is TangentatNegFour + rule: if X is AboutNegThree then ApproxXCubed is TangentatNegThree + rule: if X is AboutNegTwo then ApproxXCubed is TangentatNegTwo + rule: if X is AboutNegOne then ApproxXCubed is TangentatNegOne + rule: if X is AboutZero then ApproxXCubed is TangentatZero + rule: if X is AboutOne then ApproxXCubed is TangentatOne + rule: if X is AboutTwo then ApproxXCubed is TangentatTwo + rule: if X is AboutThree then ApproxXCubed is TangentatThree + rule: if X is AboutFour then ApproxXCubed is TangentatFour + rule: if X is AboutFive then ApproxXCubed is TangentatFive" + +engine.fldFile = "cubic_approximator.fld" +if (require(data.table)) { + engine.df = data.table::fread(engine.fldFile, sep="auto", header="auto") +} else { + engine.df = read.table(engine.fldFile, header=TRUE) +} + +engine.plot.i1_o1 = ggplot(engine.df, aes(X, ApproxXCubed)) + + geom_line(aes(color=ApproxXCubed), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + ggtitle("X vs ApproxXCubed") + +engine.plot.o1_i1 = ggplot(engine.df, aes(X, ApproxXCubed)) + + geom_line(aes(color=ApproxXCubed), size=3, lineend="round", linejoin="mitre") + + scale_color_gradient(low="yellow", high="red") + + coord_flip() + + ggtitle("ApproxXCubed vs X") + +if (require(gridExtra)) { + engine.plots = arrangeGrob(engine.plot.i1_o1, engine.plot.o1_i1, ncol=2, top=engine.name) + ggsave(paste0(engine.name, ".pdf"), engine.plots) + if (require(grid)) { + grid.newpage() + grid.draw(engine.plots) + } +} diff --git a/examples/takagi-sugeno/octave/cubic_approximator.cpp b/examples/takagi-sugeno/octave/cubic_approximator.cpp index 6941fa5..2b9df3f 100644 --- a/examples/takagi-sugeno/octave/cubic_approximator.cpp +++ b/examples/takagi-sugeno/octave/cubic_approximator.cpp @@ -1,67 +1,75 @@ #include <fl/Headers.h> int main(int argc, char** argv){ +//Code automatically generated with fuzzylite 6.0. + using namespace fl; Engine* engine = new Engine; -engine->setName("Cubic-Approximator"); +engine->setName("cubic_approximator"); +engine->setDescription(""); -InputVariable* inputVariable = new InputVariable; -inputVariable->setEnabled(true); -inputVariable->setName("X"); -inputVariable->setRange(-5.000, 5.000); -inputVariable->addTerm(new Triangle("AboutNegFive", -6.000, -5.000, -4.000)); -inputVariable->addTerm(new Triangle("AboutNegFour", -5.000, -4.000, -3.000)); -inputVariable->addTerm(new Triangle("AboutNegThree", -4.000, -3.000, -2.000)); -inputVariable->addTerm(new Triangle("AboutNegTwo", -3.000, -2.000, -1.000)); -inputVariable->addTerm(new Triangle("AboutNegOne", -2.000, -1.000, 0.000)); -inputVariable->addTerm(new Triangle("AboutZero", -1.000, 0.000, 1.000)); -inputVariable->addTerm(new Triangle("AboutOne", 0.000, 1.000, 2.000)); -inputVariable->addTerm(new Triangle("AboutTwo", 1.000, 2.000, 3.000)); -inputVariable->addTerm(new Triangle("AboutThree", 2.000, 3.000, 4.000)); -inputVariable->addTerm(new Triangle("AboutFour", 3.000, 4.000, 5.000)); -inputVariable->addTerm(new Triangle("AboutFive", 4.000, 5.000, 6.000)); -engine->addInputVariable(inputVariable); +InputVariable* X = new InputVariable; +X->setName("X"); +X->setDescription(""); +X->setEnabled(true); +X->setRange(-5.000, 5.000); +X->setLockValueInRange(false); +X->addTerm(new Triangle("AboutNegFive", -6.000, -5.000, -4.000)); +X->addTerm(new Triangle("AboutNegFour", -5.000, -4.000, -3.000)); +X->addTerm(new Triangle("AboutNegThree", -4.000, -3.000, -2.000)); +X->addTerm(new Triangle("AboutNegTwo", -3.000, -2.000, -1.000)); +X->addTerm(new Triangle("AboutNegOne", -2.000, -1.000, 0.000)); +X->addTerm(new Triangle("AboutZero", -1.000, 0.000, 1.000)); +X->addTerm(new Triangle("AboutOne", 0.000, 1.000, 2.000)); +X->addTerm(new Triangle("AboutTwo", 1.000, 2.000, 3.000)); +X->addTerm(new Triangle("AboutThree", 2.000, 3.000, 4.000)); +X->addTerm(new Triangle("AboutFour", 3.000, 4.000, 5.000)); +X->addTerm(new Triangle("AboutFive", 4.000, 5.000, 6.000)); +engine->addInputVariable(X); -OutputVariable* outputVariable = new OutputVariable; -outputVariable->setEnabled(true); -outputVariable->setName("ApproxXCubed"); -outputVariable->setRange(-5.000, 5.000); -outputVariable->fuzzyOutput()->setAccumulation(fl::null); -outputVariable->setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable->setDefaultValue(fl::nan); -outputVariable->setLockPreviousOutputValue(false); -outputVariable->setLockOutputValueInRange(false); -outputVariable->addTerm(Linear::create("TangentatNegFive", engine, 75.000, 250.000)); -outputVariable->addTerm(Linear::create("TangentatNegFour", engine, 48.000, 128.000)); -outputVariable->addTerm(Linear::create("TangentatNegThree", engine, 27.000, 54.000)); -outputVariable->addTerm(Linear::create("TangentatNegTwo", engine, 12.000, 16.000)); -outputVariable->addTerm(Linear::create("TangentatNegOne", engine, 3.000, 2.000)); -outputVariable->addTerm(Linear::create("TangentatZero", engine, 0.000, 0.000)); -outputVariable->addTerm(Linear::create("TangentatOne", engine, 3.000, -2.000)); -outputVariable->addTerm(Linear::create("TangentatTwo", engine, 12.000, -16.000)); -outputVariable->addTerm(Linear::create("TangentatThree", engine, 27.000, -54.000)); -outputVariable->addTerm(Linear::create("TangentatFour", engine, 48.000, -128.000)); -outputVariable->addTerm(Linear::create("TangentatFive", engine, 75.000, -250.000)); -engine->addOutputVariable(outputVariable); +OutputVariable* ApproxXCubed = new OutputVariable; +ApproxXCubed->setName("ApproxXCubed"); +ApproxXCubed->setDescription(""); +ApproxXCubed->setEnabled(true); +ApproxXCubed->setRange(-5.000, 5.000); +ApproxXCubed->setLockValueInRange(false); +ApproxXCubed->setAggregation(fl::null); +ApproxXCubed->setDefuzzifier(new WeightedAverage("TakagiSugeno")); +ApproxXCubed->setDefaultValue(fl::nan); +ApproxXCubed->setLockPreviousValue(false); +ApproxXCubed->addTerm(Linear::create("TangentatNegFive", engine, 75.000, 250.000)); +ApproxXCubed->addTerm(Linear::create("TangentatNegFour", engine, 48.000, 128.000)); +ApproxXCubed->addTerm(Linear::create("TangentatNegThree", engine, 27.000, 54.000)); +ApproxXCubed->addTerm(Linear::create("TangentatNegTwo", engine, 12.000, 16.000)); +ApproxXCubed->addTerm(Linear::create("TangentatNegOne", engine, 3.000, 2.000)); +ApproxXCubed->addTerm(Linear::create("TangentatZero", engine, 0.000, 0.000)); +ApproxXCubed->addTerm(Linear::create("TangentatOne", engine, 3.000, -2.000)); +ApproxXCubed->addTerm(Linear::create("TangentatTwo", engine, 12.000, -16.000)); +ApproxXCubed->addTerm(Linear::create("TangentatThree", engine, 27.000, -54.000)); +ApproxXCubed->addTerm(Linear::create("TangentatFour", engine, 48.000, -128.000)); +ApproxXCubed->addTerm(Linear::create("TangentatFive", engine, 75.000, -250.000)); +engine->addOutputVariable(ApproxXCubed); RuleBlock* ruleBlock = new RuleBlock; -ruleBlock->setEnabled(true); ruleBlock->setName(""); +ruleBlock->setDescription(""); +ruleBlock->setEnabled(true); ruleBlock->setConjunction(fl::null); ruleBlock->setDisjunction(fl::null); -ruleBlock->setActivation(fl::null); -ruleBlock->addRule(fl::Rule::parse("if X is AboutNegFive then ApproxXCubed is TangentatNegFive", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutNegFour then ApproxXCubed is TangentatNegFour", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutNegThree then ApproxXCubed is TangentatNegThree", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutNegTwo then ApproxXCubed is TangentatNegTwo", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutNegOne then ApproxXCubed is TangentatNegOne", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutZero then ApproxXCubed is TangentatZero", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutOne then ApproxXCubed is TangentatOne", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutTwo then ApproxXCubed is TangentatTwo", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutThree then ApproxXCubed is TangentatThree", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutFour then ApproxXCubed is TangentatFour", engine)); -ruleBlock->addRule(fl::Rule::parse("if X is AboutFive then ApproxXCubed is TangentatFive", engine)); +ruleBlock->setImplication(fl::null); +ruleBlock->setActivation(new General); +ruleBlock->addRule(Rule::parse("if X is AboutNegFive then ApproxXCubed is TangentatNegFive", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutNegFour then ApproxXCubed is TangentatNegFour", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutNegThree then ApproxXCubed is TangentatNegThree", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutNegTwo then ApproxXCubed is TangentatNegTwo", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutNegOne then ApproxXCubed is TangentatNegOne", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutZero then ApproxXCubed is TangentatZero", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutOne then ApproxXCubed is TangentatOne", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutTwo then ApproxXCubed is TangentatTwo", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutThree then ApproxXCubed is TangentatThree", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutFour then ApproxXCubed is TangentatFour", engine)); +ruleBlock->addRule(Rule::parse("if X is AboutFive then ApproxXCubed is TangentatFive", engine)); engine->addRuleBlock(ruleBlock); diff --git a/examples/takagi-sugeno/octave/cubic_approximator.fcl b/examples/takagi-sugeno/octave/cubic_approximator.fcl index db88e44..df4e8be 100644 --- a/examples/takagi-sugeno/octave/cubic_approximator.fcl +++ b/examples/takagi-sugeno/octave/cubic_approximator.fcl @@ -1,4 +1,6 @@ -FUNCTION_BLOCK Cubic-Approximator +//Code automatically generated with fuzzylite 6.0. + +FUNCTION_BLOCK cubic_approximator VAR_INPUT X: REAL; diff --git a/examples/takagi-sugeno/octave/cubic_approximator.fis b/examples/takagi-sugeno/octave/cubic_approximator.fis index b69675b..e0af36f 100644 --- a/examples/takagi-sugeno/octave/cubic_approximator.fis +++ b/examples/takagi-sugeno/octave/cubic_approximator.fis @@ -1,13 +1,16 @@ +#Code automatically generated with fuzzylite 6.0. + [System] -Name='Cubic-Approximator' +Name='cubic_approximator' Type='sugeno' +Version=6.0 NumInputs=1 NumOutputs=1 NumRules=11 -AndMethod='' -OrMethod='' -ImpMethod='' -AggMethod='' +AndMethod='min' +OrMethod='max' +ImpMethod='min' +AggMethod='max' DefuzzMethod='wtaver' [Input1] diff --git a/examples/takagi-sugeno/octave/cubic_approximator.fld b/examples/takagi-sugeno/octave/cubic_approximator.fld index e13c169..4f6ddeb 100644 --- a/examples/takagi-sugeno/octave/cubic_approximator.fld +++ b/examples/takagi-sugeno/octave/cubic_approximator.fld @@ -1,1026 +1,1025 @@ -#@Engine: Cubic-Approximator; -#@InputVariable: X; @OutputVariable: ApproxXCubed; --5.00000000 -125.00000000 --4.99022483 -124.14236490 --4.98044966 -123.28988972 --4.97067449 -122.44257445 --4.96089932 -121.60041910 --4.95112414 -120.76342366 --4.94134897 -119.93158814 --4.93157380 -119.10491253 --4.92179863 -118.28339683 --4.91202346 -117.46704105 --4.90224829 -116.65584518 --4.89247312 -115.84980923 --4.88269795 -115.04893319 --4.87292278 -114.25321706 --4.86314761 -113.46266085 --4.85337243 -112.67726456 --4.84359726 -111.89702818 --4.83382209 -111.12195171 --4.82404692 -110.35203516 --4.81427175 -109.58727852 --4.80449658 -108.82768179 --4.79472141 -108.07324498 --4.78494624 -107.32396809 --4.77517107 -106.57985111 --4.76539589 -105.84089404 --4.75562072 -105.10709689 --4.74584555 -104.37845965 --4.73607038 -103.65498233 --4.72629521 -102.93666492 --4.71652004 -102.22350742 --4.70674487 -101.51550984 --4.69696970 -100.81267218 --4.68719453 -100.11499442 --4.67741935 -99.42247659 --4.66764418 -98.73511866 --4.65786901 -98.05292065 --4.64809384 -97.37588256 --4.63831867 -96.70400438 --4.62854350 -96.03728611 --4.61876833 -95.37572776 --4.60899316 -94.71932933 --4.59921799 -94.06809080 --4.58944282 -93.42201219 --4.57966764 -92.78109350 --4.56989247 -92.14533472 --4.56011730 -91.51473586 --4.55034213 -90.88929690 --4.54056696 -90.26901787 --4.53079179 -89.65389875 --4.52101662 -89.04393954 --4.51124145 -88.43914024 --4.50146628 -87.83950086 --4.49169110 -87.24502140 --4.48191593 -86.65570185 --4.47214076 -86.07154221 --4.46236559 -85.49254249 --4.45259042 -84.91870268 --4.44281525 -84.35002279 --4.43304008 -83.78650281 --4.42326491 -83.22814275 --4.41348974 -82.67494260 --4.40371457 -82.12690236 --4.39393939 -81.58402204 --4.38416422 -81.04630163 --4.37438905 -80.51374114 --4.36461388 -79.98634056 --4.35483871 -79.46409990 --4.34506354 -78.94701915 --4.33528837 -78.43509831 --4.32551320 -77.92833739 --4.31573803 -77.42673638 --4.30596285 -76.93029529 --4.29618768 -76.43901411 --4.28641251 -75.95289285 --4.27663734 -75.47193150 --4.26686217 -74.99613006 --4.25708700 -74.52548854 --4.24731183 -74.06000694 --4.23753666 -73.59968525 --4.22776149 -73.14452347 --4.21798631 -72.69452160 --4.20821114 -72.24967966 --4.19843597 -71.80999762 --4.18866080 -71.37547550 --4.17888563 -70.94611329 --4.16911046 -70.52191100 --4.15933529 -70.10286863 --4.14956012 -69.68898616 --4.13978495 -69.28026361 --4.13000978 -68.87670098 --4.12023460 -68.47829826 --4.11045943 -68.08505545 --4.10068426 -67.69697256 --4.09090909 -67.31404959 --4.08113392 -66.93628652 --4.07135875 -66.56368338 --4.06158358 -66.19624014 --4.05180841 -65.83395682 --4.04203324 -65.47683342 --4.03225806 -65.12486993 --4.02248289 -64.77806635 --4.01270772 -64.43642269 --4.00293255 -64.09993894 --3.99315738 -63.60411131 --3.98338221 -63.04196730 --3.97360704 -62.48383657 --3.96383187 -61.92971910 --3.95405670 -61.37961490 --3.94428152 -60.83352396 --3.93450635 -60.29144630 --3.92473118 -59.75338189 --3.91495601 -59.21933076 --3.90518084 -58.68929289 --3.89540567 -58.16326829 --3.88563050 -57.64125696 --3.87585533 -57.12325889 --3.86608016 -56.60927409 --3.85630499 -56.09930255 --3.84652981 -55.59334428 --3.83675464 -55.09139928 --3.82697947 -54.59346755 --3.81720430 -54.09954908 --3.80742913 -53.60964388 --3.79765396 -53.12375195 --3.78787879 -52.64187328 --3.77810362 -52.16400788 --3.76832845 -51.69015574 --3.75855327 -51.22031688 --3.74877810 -50.75449128 --3.73900293 -50.29267894 --3.72922776 -49.83487987 --3.71945259 -49.38109407 --3.70967742 -48.93132154 --3.69990225 -48.48556227 --3.69012708 -48.04381627 --3.68035191 -47.60608354 --3.67057674 -47.17236407 --3.66080156 -46.74265787 --3.65102639 -46.31696494 --3.64125122 -45.89528527 --3.63147605 -45.47761887 --3.62170088 -45.06396574 --3.61192571 -44.65432587 --3.60215054 -44.24869927 --3.59237537 -43.84708594 --3.58260020 -43.44948587 --3.57282502 -43.05589907 --3.56304985 -42.66632554 --3.55327468 -42.28076527 --3.54349951 -41.89921827 --3.53372434 -41.52168454 --3.52394917 -41.14816407 --3.51417400 -40.77865687 --3.50439883 -40.41316294 --3.49462366 -40.05168228 --3.48484848 -39.69421488 --3.47507331 -39.34076074 --3.46529814 -38.99131988 --3.45552297 -38.64589228 --3.44574780 -38.30447795 --3.43597263 -37.96707688 --3.42619746 -37.63368908 --3.41642229 -37.30431455 --3.40664712 -36.97895328 --3.39687195 -36.65760528 --3.38709677 -36.34027055 --3.37732160 -36.02694909 --3.36754643 -35.71764089 --3.35777126 -35.41234596 --3.34799609 -35.11106429 --3.33822092 -34.81379589 --3.32844575 -34.52054076 --3.31867058 -34.23129889 --3.30889541 -33.94607030 --3.29912023 -33.66485496 --3.28934506 -33.38765290 --3.27956989 -33.11446410 --3.26979472 -32.84528857 --3.26001955 -32.58012630 --3.25024438 -32.31897730 --3.24046921 -32.06184157 --3.23069404 -31.80871911 --3.22091887 -31.55960991 --3.21114370 -31.31451398 --3.20136852 -31.07343131 --3.19159335 -30.83636192 --3.18181818 -30.60330579 --3.17204301 -30.37426292 --3.16226784 -30.14923332 --3.15249267 -29.92821699 --3.14271750 -29.71121393 --3.13294233 -29.49822413 --3.12316716 -29.28924760 --3.11339198 -29.08428433 --3.10361681 -28.88333434 --3.09384164 -28.68639761 --3.08406647 -28.49347414 --3.07429130 -28.30456394 --3.06451613 -28.11966701 --3.05474096 -27.93878335 --3.04496579 -27.76191295 --3.03519062 -27.58905582 --3.02541544 -27.42021196 --3.01564027 -27.25538136 --3.00586510 -27.09456403 --2.99608993 -26.86728700 --2.98631476 -26.53751114 --2.97653959 -26.21060190 --2.96676442 -25.88655928 --2.95698925 -25.56538328 --2.94721408 -25.24707390 --2.93743891 -24.93163113 --2.92766373 -24.61905499 --2.91788856 -24.30934546 --2.90811339 -24.00250256 --2.89833822 -23.69852627 --2.88856305 -23.39741660 --2.87878788 -23.09917355 --2.86901271 -22.80379712 --2.85923754 -22.51128731 --2.84946237 -22.22164412 --2.83968719 -21.93486755 --2.82991202 -21.65095759 --2.82013685 -21.36991426 --2.81036168 -21.09173754 --2.80058651 -20.81642745 --2.79081134 -20.54398397 --2.78103617 -20.27440711 --2.77126100 -20.00769687 --2.76148583 -19.74385325 --2.75171065 -19.48287625 --2.74193548 -19.22476587 --2.73216031 -18.96952211 --2.72238514 -18.71714496 --2.71260997 -18.46763444 --2.70283480 -18.22099053 --2.69305963 -17.97721324 --2.68328446 -17.73630258 --2.67350929 -17.49825853 --2.66373412 -17.26308110 --2.65395894 -17.03077029 --2.64418377 -16.80132610 --2.63440860 -16.57474853 --2.62463343 -16.35103757 --2.61485826 -16.13019324 --2.60508309 -15.91221552 --2.59530792 -15.69710443 --2.58553275 -15.48485995 --2.57575758 -15.27548209 --2.56598240 -15.06897086 --2.55620723 -14.86532624 --2.54643206 -14.66454824 --2.53665689 -14.46663685 --2.52688172 -14.27159209 --2.51710655 -14.07941395 --2.50733138 -13.89010242 --2.49755621 -13.70365752 --2.48778104 -13.52007923 --2.47800587 -13.33936757 --2.46823069 -13.16152252 --2.45845552 -12.98654409 --2.44868035 -12.81443228 --2.43890518 -12.64518709 --2.42913001 -12.47880852 --2.41935484 -12.31529657 --2.40957967 -12.15465123 --2.39980450 -11.99687252 --2.39002933 -11.84196042 --2.38025415 -11.68991495 --2.37047898 -11.54073609 --2.36070381 -11.39442385 --2.35092864 -11.25097823 --2.34115347 -11.11039923 --2.33137830 -10.97268685 --2.32160313 -10.83784109 --2.31182796 -10.70586195 --2.30205279 -10.57674943 --2.29227761 -10.45050352 --2.28250244 -10.32712424 --2.27272727 -10.20661157 --2.26295210 -10.08896552 --2.25317693 -9.97418610 --2.24340176 -9.86227329 --2.23362659 -9.75322710 --2.22385142 -9.64704753 --2.21407625 -9.54373457 --2.20430108 -9.44328824 --2.19452590 -9.34570853 --2.18475073 -9.25099543 --2.17497556 -9.15914896 --2.16520039 -9.07016910 --2.15542522 -8.98405586 --2.14565005 -8.90080925 --2.13587488 -8.82042925 --2.12609971 -8.74291587 --2.11632454 -8.66826911 --2.10654936 -8.59648896 --2.09677419 -8.52757544 --2.08699902 -8.46152854 --2.07722385 -8.39834825 --2.06744868 -8.33803459 --2.05767351 -8.28058754 --2.04789834 -8.22600711 --2.03812317 -8.17429331 --2.02834800 -8.12544612 --2.01857283 -8.07946555 --2.00879765 -8.03635160 --1.99902248 -7.98436833 --1.98924731 -7.82899757 --1.97947214 -7.67534679 --1.96969697 -7.52341598 --1.95992180 -7.37320514 --1.95014663 -7.22471427 --1.94037146 -7.07794337 --1.93059629 -6.93289245 --1.92082111 -6.78956149 --1.91104594 -6.64795051 --1.90127077 -6.50805950 --1.89149560 -6.36988846 --1.88172043 -6.23343739 --1.87194526 -6.09870629 --1.86217009 -5.96569517 --1.85239492 -5.83440402 --1.84261975 -5.70483283 --1.83284457 -5.57698162 --1.82306940 -5.45085038 --1.81329423 -5.32643911 --1.80351906 -5.20374782 --1.79374389 -5.08277649 --1.78396872 -4.96352514 --1.77419355 -4.84599376 --1.76441838 -4.73018235 --1.75464321 -4.61609091 --1.74486804 -4.50371944 --1.73509286 -4.39306794 --1.72531769 -4.28413642 --1.71554252 -4.17692486 --1.70576735 -4.07143328 --1.69599218 -3.96766167 --1.68621701 -3.86561003 --1.67644184 -3.76527836 --1.66666667 -3.66666667 --1.65689150 -3.56977494 --1.64711632 -3.47460319 --1.63734115 -3.38115141 --1.62756598 -3.28941960 --1.61779081 -3.19940776 --1.60801564 -3.11111589 --1.59824047 -3.02454399 --1.58846530 -2.93969207 --1.57869013 -2.85656011 --1.56891496 -2.77514813 --1.55913978 -2.69545612 --1.54936461 -2.61748408 --1.53958944 -2.54123202 --1.52981427 -2.46669992 --1.52003910 -2.39388779 --1.51026393 -2.32279564 --1.50048876 -2.25342346 --1.49071359 -2.18577125 --1.48093842 -2.11983901 --1.47116325 -2.05562674 --1.46138807 -1.99313445 --1.45161290 -1.93236212 --1.44183773 -1.87330977 --1.43206256 -1.81597739 --1.42228739 -1.76036498 --1.41251222 -1.70647254 --1.40273705 -1.65430007 --1.39296188 -1.60384758 --1.38318671 -1.55511505 --1.37341153 -1.50810250 --1.36363636 -1.46280992 --1.35386119 -1.41923731 --1.34408602 -1.37738467 --1.33431085 -1.33725200 --1.32453568 -1.29883931 --1.31476051 -1.26214658 --1.30498534 -1.22717383 --1.29521017 -1.19392105 --1.28543500 -1.16238824 --1.27565982 -1.13257540 --1.26588465 -1.10448253 --1.25610948 -1.07810964 --1.24633431 -1.05345671 --1.23655914 -1.03052376 --1.22678397 -1.00931078 --1.21700880 -0.98981777 --1.20723363 -0.97204473 --1.19745846 -0.95599166 --1.18768328 -0.94165857 --1.17790811 -0.92904544 --1.16813294 -0.91815229 --1.15835777 -0.90897911 --1.14858260 -0.90152590 --1.13880743 -0.89579266 --1.12903226 -0.89177940 --1.11925709 -0.88948610 --1.10948192 -0.88891278 --1.09970674 -0.89005943 --1.08993157 -0.89292604 --1.08015640 -0.89751263 --1.07038123 -0.90381920 --1.06060606 -0.91184573 --1.05083089 -0.92159223 --1.04105572 -0.93305871 --1.03128055 -0.94624516 --1.02150538 -0.96115158 --1.01173021 -0.97777797 --1.00195503 -0.99612433 --0.99217986 -0.96890292 --0.98240469 -0.93054755 --0.97262952 -0.89276551 --0.96285435 -0.85555680 --0.95307918 -0.81892141 --0.94330401 -0.78285934 --0.93352884 -0.74737059 --0.92375367 -0.71245517 --0.91397849 -0.67811308 --0.90420332 -0.64434430 --0.89442815 -0.61114885 --0.88465298 -0.57852673 --0.87487781 -0.54647793 --0.86510264 -0.51500245 --0.85532747 -0.48410030 --0.84555230 -0.45377147 --0.83577713 -0.42401596 --0.82600196 -0.39483378 --0.81622678 -0.36622492 --0.80645161 -0.33818939 --0.79667644 -0.31072718 --0.78690127 -0.28383829 --0.77712610 -0.25752273 --0.76735093 -0.23178049 --0.75757576 -0.20661157 --0.74780059 -0.18201598 --0.73802542 -0.15799371 --0.72825024 -0.13454477 --0.71847507 -0.11166915 --0.70869990 -0.08936685 --0.69892473 -0.06763788 --0.68914956 -0.04648223 --0.67937439 -0.02589990 --0.66959922 -0.00589090 --0.65982405 0.01354478 --0.65004888 0.03240713 --0.64027370 0.05069616 --0.63049853 0.06841186 --0.62072336 0.08555425 --0.61094819 0.10212330 --0.60117302 0.11811904 --0.59139785 0.13354145 --0.58162268 0.14839054 --0.57184751 0.16266630 --0.56207234 0.17636874 --0.55229717 0.18949785 --0.54252199 0.20205365 --0.53274682 0.21403611 --0.52297165 0.22544526 --0.51319648 0.23628108 --0.50342131 0.24654357 --0.49364614 0.25623275 --0.48387097 0.26534860 --0.47409580 0.27389112 --0.46432063 0.28186032 --0.45454545 0.28925620 --0.44477028 0.29607875 --0.43499511 0.30232798 --0.42521994 0.30800389 --0.41544477 0.31310647 --0.40566960 0.31763573 --0.39589443 0.32159166 --0.38611926 0.32497427 --0.37634409 0.32778356 --0.36656891 0.33001952 --0.35679374 0.33168216 --0.34701857 0.33277148 --0.33724340 0.33328747 --0.32746823 0.33323014 --0.31769306 0.33259948 --0.30791789 0.33139550 --0.29814272 0.32961820 --0.28836755 0.32726757 --0.27859238 0.32434362 --0.26881720 0.32084634 --0.25904203 0.31677574 --0.24926686 0.31213182 --0.23949169 0.30691457 --0.22971652 0.30112400 --0.21994135 0.29476011 --0.21016618 0.28782289 --0.20039101 0.28031235 --0.19061584 0.27222848 --0.18084066 0.26357129 --0.17106549 0.25434078 --0.16129032 0.24453694 --0.15151515 0.23415978 --0.14173998 0.22320929 --0.13196481 0.21168549 --0.12218964 0.19958835 --0.11241447 0.18691790 --0.10263930 0.17367412 --0.09286413 0.15985701 --0.08308895 0.14546659 --0.07331378 0.13050283 --0.06353861 0.11496576 --0.05376344 0.09885536 --0.04398827 0.08217164 --0.03421310 0.06491459 --0.02443793 0.04708422 --0.01466276 0.02868052 --0.00488759 0.00970351 -0.00488759 -0.00970351 -0.01466276 -0.02868052 -0.02443793 -0.04708422 -0.03421310 -0.06491459 -0.04398827 -0.08217164 -0.05376344 -0.09885536 -0.06353861 -0.11496576 -0.07331378 -0.13050283 -0.08308895 -0.14546659 -0.09286413 -0.15985701 -0.10263930 -0.17367412 -0.11241447 -0.18691790 -0.12218964 -0.19958835 -0.13196481 -0.21168549 -0.14173998 -0.22320929 -0.15151515 -0.23415978 -0.16129032 -0.24453694 -0.17106549 -0.25434078 -0.18084066 -0.26357129 -0.19061584 -0.27222848 -0.20039101 -0.28031235 -0.21016618 -0.28782289 -0.21994135 -0.29476011 -0.22971652 -0.30112400 -0.23949169 -0.30691457 -0.24926686 -0.31213182 -0.25904203 -0.31677574 -0.26881720 -0.32084634 -0.27859238 -0.32434362 -0.28836755 -0.32726757 -0.29814272 -0.32961820 -0.30791789 -0.33139550 -0.31769306 -0.33259948 -0.32746823 -0.33323014 -0.33724340 -0.33328747 -0.34701857 -0.33277148 -0.35679374 -0.33168216 -0.36656891 -0.33001952 -0.37634409 -0.32778356 -0.38611926 -0.32497427 -0.39589443 -0.32159166 -0.40566960 -0.31763573 -0.41544477 -0.31310647 -0.42521994 -0.30800389 -0.43499511 -0.30232798 -0.44477028 -0.29607875 -0.45454545 -0.28925620 -0.46432063 -0.28186032 -0.47409580 -0.27389112 -0.48387097 -0.26534860 -0.49364614 -0.25623275 -0.50342131 -0.24654357 -0.51319648 -0.23628108 -0.52297165 -0.22544526 -0.53274682 -0.21403611 -0.54252199 -0.20205365 -0.55229717 -0.18949785 -0.56207234 -0.17636874 -0.57184751 -0.16266630 -0.58162268 -0.14839054 -0.59139785 -0.13354145 -0.60117302 -0.11811904 -0.61094819 -0.10212330 -0.62072336 -0.08555425 -0.63049853 -0.06841186 -0.64027370 -0.05069616 -0.65004888 -0.03240713 -0.65982405 -0.01354478 -0.66959922 0.00589090 -0.67937439 0.02589990 -0.68914956 0.04648223 -0.69892473 0.06763788 -0.70869990 0.08936685 -0.71847507 0.11166915 -0.72825024 0.13454477 -0.73802542 0.15799371 -0.74780059 0.18201598 -0.75757576 0.20661157 -0.76735093 0.23178049 -0.77712610 0.25752273 -0.78690127 0.28383829 -0.79667644 0.31072718 -0.80645161 0.33818939 -0.81622678 0.36622492 -0.82600196 0.39483378 -0.83577713 0.42401596 -0.84555230 0.45377147 -0.85532747 0.48410030 -0.86510264 0.51500245 -0.87487781 0.54647793 -0.88465298 0.57852673 -0.89442815 0.61114885 -0.90420332 0.64434430 -0.91397849 0.67811308 -0.92375367 0.71245517 -0.93352884 0.74737059 -0.94330401 0.78285934 -0.95307918 0.81892141 -0.96285435 0.85555680 -0.97262952 0.89276551 -0.98240469 0.93054755 -0.99217986 0.96890292 -1.00195503 0.99612433 -1.01173021 0.97777797 -1.02150538 0.96115158 -1.03128055 0.94624516 -1.04105572 0.93305871 -1.05083089 0.92159223 -1.06060606 0.91184573 -1.07038123 0.90381920 -1.08015640 0.89751263 -1.08993157 0.89292604 -1.09970674 0.89005943 -1.10948192 0.88891278 -1.11925709 0.88948610 -1.12903226 0.89177940 -1.13880743 0.89579266 -1.14858260 0.90152590 -1.15835777 0.90897911 -1.16813294 0.91815229 -1.17790811 0.92904544 -1.18768328 0.94165857 -1.19745846 0.95599166 -1.20723363 0.97204473 -1.21700880 0.98981777 -1.22678397 1.00931078 -1.23655914 1.03052376 -1.24633431 1.05345671 -1.25610948 1.07810964 -1.26588465 1.10448253 -1.27565982 1.13257540 -1.28543500 1.16238824 -1.29521017 1.19392105 -1.30498534 1.22717383 -1.31476051 1.26214658 -1.32453568 1.29883931 -1.33431085 1.33725200 -1.34408602 1.37738467 -1.35386119 1.41923731 -1.36363636 1.46280992 -1.37341153 1.50810250 -1.38318671 1.55511505 -1.39296188 1.60384758 -1.40273705 1.65430007 -1.41251222 1.70647254 -1.42228739 1.76036498 -1.43206256 1.81597739 -1.44183773 1.87330977 -1.45161290 1.93236212 -1.46138807 1.99313445 -1.47116325 2.05562674 -1.48093842 2.11983901 -1.49071359 2.18577125 -1.50048876 2.25342346 -1.51026393 2.32279564 -1.52003910 2.39388779 -1.52981427 2.46669992 -1.53958944 2.54123202 -1.54936461 2.61748408 -1.55913978 2.69545612 -1.56891496 2.77514813 -1.57869013 2.85656011 -1.58846530 2.93969207 -1.59824047 3.02454399 -1.60801564 3.11111589 -1.61779081 3.19940776 -1.62756598 3.28941960 -1.63734115 3.38115141 -1.64711632 3.47460319 -1.65689150 3.56977494 -1.66666667 3.66666667 -1.67644184 3.76527836 -1.68621701 3.86561003 -1.69599218 3.96766167 -1.70576735 4.07143328 -1.71554252 4.17692486 -1.72531769 4.28413642 -1.73509286 4.39306794 -1.74486804 4.50371944 -1.75464321 4.61609091 -1.76441838 4.73018235 -1.77419355 4.84599376 -1.78396872 4.96352514 -1.79374389 5.08277649 -1.80351906 5.20374782 -1.81329423 5.32643911 -1.82306940 5.45085038 -1.83284457 5.57698162 -1.84261975 5.70483283 -1.85239492 5.83440402 -1.86217009 5.96569517 -1.87194526 6.09870629 -1.88172043 6.23343739 -1.89149560 6.36988846 -1.90127077 6.50805950 -1.91104594 6.64795051 -1.92082111 6.78956149 -1.93059629 6.93289245 -1.94037146 7.07794337 -1.95014663 7.22471427 -1.95992180 7.37320514 -1.96969697 7.52341598 -1.97947214 7.67534679 -1.98924731 7.82899757 -1.99902248 7.98436833 -2.00879765 8.03635160 -2.01857283 8.07946555 -2.02834800 8.12544612 -2.03812317 8.17429331 -2.04789834 8.22600711 -2.05767351 8.28058754 -2.06744868 8.33803459 -2.07722385 8.39834825 -2.08699902 8.46152854 -2.09677419 8.52757544 -2.10654936 8.59648896 -2.11632454 8.66826911 -2.12609971 8.74291587 -2.13587488 8.82042925 -2.14565005 8.90080925 -2.15542522 8.98405586 -2.16520039 9.07016910 -2.17497556 9.15914896 -2.18475073 9.25099543 -2.19452590 9.34570853 -2.20430108 9.44328824 -2.21407625 9.54373457 -2.22385142 9.64704753 -2.23362659 9.75322710 -2.24340176 9.86227329 -2.25317693 9.97418610 -2.26295210 10.08896552 -2.27272727 10.20661157 -2.28250244 10.32712424 -2.29227761 10.45050352 -2.30205279 10.57674943 -2.31182796 10.70586195 -2.32160313 10.83784109 -2.33137830 10.97268685 -2.34115347 11.11039923 -2.35092864 11.25097823 -2.36070381 11.39442385 -2.37047898 11.54073609 -2.38025415 11.68991495 -2.39002933 11.84196042 -2.39980450 11.99687252 -2.40957967 12.15465123 -2.41935484 12.31529657 -2.42913001 12.47880852 -2.43890518 12.64518709 -2.44868035 12.81443228 -2.45845552 12.98654409 -2.46823069 13.16152252 -2.47800587 13.33936757 -2.48778104 13.52007923 -2.49755621 13.70365752 -2.50733138 13.89010242 -2.51710655 14.07941395 -2.52688172 14.27159209 -2.53665689 14.46663685 -2.54643206 14.66454824 -2.55620723 14.86532624 -2.56598240 15.06897086 -2.57575758 15.27548209 -2.58553275 15.48485995 -2.59530792 15.69710443 -2.60508309 15.91221552 -2.61485826 16.13019324 -2.62463343 16.35103757 -2.63440860 16.57474853 -2.64418377 16.80132610 -2.65395894 17.03077029 -2.66373412 17.26308110 -2.67350929 17.49825853 -2.68328446 17.73630258 -2.69305963 17.97721324 -2.70283480 18.22099053 -2.71260997 18.46763444 -2.72238514 18.71714496 -2.73216031 18.96952211 -2.74193548 19.22476587 -2.75171065 19.48287625 -2.76148583 19.74385325 -2.77126100 20.00769687 -2.78103617 20.27440711 -2.79081134 20.54398397 -2.80058651 20.81642745 -2.81036168 21.09173754 -2.82013685 21.36991426 -2.82991202 21.65095759 -2.83968719 21.93486755 -2.84946237 22.22164412 -2.85923754 22.51128731 -2.86901271 22.80379712 -2.87878788 23.09917355 -2.88856305 23.39741660 -2.89833822 23.69852627 -2.90811339 24.00250256 -2.91788856 24.30934546 -2.92766373 24.61905499 -2.93743891 24.93163113 -2.94721408 25.24707390 -2.95698925 25.56538328 -2.96676442 25.88655928 -2.97653959 26.21060190 -2.98631476 26.53751114 -2.99608993 26.86728700 -3.00586510 27.09456403 -3.01564027 27.25538136 -3.02541544 27.42021196 -3.03519062 27.58905582 -3.04496579 27.76191295 -3.05474096 27.93878335 -3.06451613 28.11966701 -3.07429130 28.30456394 -3.08406647 28.49347414 -3.09384164 28.68639761 -3.10361681 28.88333434 -3.11339198 29.08428433 -3.12316716 29.28924760 -3.13294233 29.49822413 -3.14271750 29.71121393 -3.15249267 29.92821699 -3.16226784 30.14923332 -3.17204301 30.37426292 -3.18181818 30.60330579 -3.19159335 30.83636192 -3.20136852 31.07343131 -3.21114370 31.31451398 -3.22091887 31.55960991 -3.23069404 31.80871911 -3.24046921 32.06184157 -3.25024438 32.31897730 -3.26001955 32.58012630 -3.26979472 32.84528857 -3.27956989 33.11446410 -3.28934506 33.38765290 -3.29912023 33.66485496 -3.30889541 33.94607030 -3.31867058 34.23129889 -3.32844575 34.52054076 -3.33822092 34.81379589 -3.34799609 35.11106429 -3.35777126 35.41234596 -3.36754643 35.71764089 -3.37732160 36.02694909 -3.38709677 36.34027055 -3.39687195 36.65760528 -3.40664712 36.97895328 -3.41642229 37.30431455 -3.42619746 37.63368908 -3.43597263 37.96707688 -3.44574780 38.30447795 -3.45552297 38.64589228 -3.46529814 38.99131988 -3.47507331 39.34076074 -3.48484848 39.69421488 -3.49462366 40.05168228 -3.50439883 40.41316294 -3.51417400 40.77865687 -3.52394917 41.14816407 -3.53372434 41.52168454 -3.54349951 41.89921827 -3.55327468 42.28076527 -3.56304985 42.66632554 -3.57282502 43.05589907 -3.58260020 43.44948587 -3.59237537 43.84708594 -3.60215054 44.24869927 -3.61192571 44.65432587 -3.62170088 45.06396574 -3.63147605 45.47761887 -3.64125122 45.89528527 -3.65102639 46.31696494 -3.66080156 46.74265787 -3.67057674 47.17236407 -3.68035191 47.60608354 -3.69012708 48.04381627 -3.69990225 48.48556227 -3.70967742 48.93132154 -3.71945259 49.38109407 -3.72922776 49.83487987 -3.73900293 50.29267894 -3.74877810 50.75449128 -3.75855327 51.22031688 -3.76832845 51.69015574 -3.77810362 52.16400788 -3.78787879 52.64187328 -3.79765396 53.12375195 -3.80742913 53.60964388 -3.81720430 54.09954908 -3.82697947 54.59346755 -3.83675464 55.09139928 -3.84652981 55.59334428 -3.85630499 56.09930255 -3.86608016 56.60927409 -3.87585533 57.12325889 -3.88563050 57.64125696 -3.89540567 58.16326829 -3.90518084 58.68929289 -3.91495601 59.21933076 -3.92473118 59.75338189 -3.93450635 60.29144630 -3.94428152 60.83352396 -3.95405670 61.37961490 -3.96383187 61.92971910 -3.97360704 62.48383657 -3.98338221 63.04196730 -3.99315738 63.60411131 -4.00293255 64.09993894 -4.01270772 64.43642269 -4.02248289 64.77806635 -4.03225806 65.12486993 -4.04203324 65.47683342 -4.05180841 65.83395682 -4.06158358 66.19624014 -4.07135875 66.56368338 -4.08113392 66.93628652 -4.09090909 67.31404959 -4.10068426 67.69697256 -4.11045943 68.08505545 -4.12023460 68.47829826 -4.13000978 68.87670098 -4.13978495 69.28026361 -4.14956012 69.68898616 -4.15933529 70.10286863 -4.16911046 70.52191100 -4.17888563 70.94611329 -4.18866080 71.37547550 -4.19843597 71.80999762 -4.20821114 72.24967966 -4.21798631 72.69452160 -4.22776149 73.14452347 -4.23753666 73.59968525 -4.24731183 74.06000694 -4.25708700 74.52548854 -4.26686217 74.99613006 -4.27663734 75.47193150 -4.28641251 75.95289285 -4.29618768 76.43901411 -4.30596285 76.93029529 -4.31573803 77.42673638 -4.32551320 77.92833739 -4.33528837 78.43509831 -4.34506354 78.94701915 -4.35483871 79.46409990 -4.36461388 79.98634056 -4.37438905 80.51374114 -4.38416422 81.04630163 -4.39393939 81.58402204 -4.40371457 82.12690236 -4.41348974 82.67494260 -4.42326491 83.22814275 -4.43304008 83.78650281 -4.44281525 84.35002279 -4.45259042 84.91870268 -4.46236559 85.49254249 -4.47214076 86.07154221 -4.48191593 86.65570185 -4.49169110 87.24502140 -4.50146628 87.83950086 -4.51124145 88.43914024 -4.52101662 89.04393954 -4.53079179 89.65389875 -4.54056696 90.26901787 -4.55034213 90.88929690 -4.56011730 91.51473586 -4.56989247 92.14533472 -4.57966764 92.78109350 -4.58944282 93.42201219 -4.59921799 94.06809080 -4.60899316 94.71932933 -4.61876833 95.37572776 -4.62854350 96.03728611 -4.63831867 96.70400438 -4.64809384 97.37588256 -4.65786901 98.05292065 -4.66764418 98.73511866 -4.67741935 99.42247659 -4.68719453 100.11499442 -4.69696970 100.81267218 -4.70674487 101.51550984 -4.71652004 102.22350742 -4.72629521 102.93666492 -4.73607038 103.65498233 -4.74584555 104.37845965 -4.75562072 105.10709689 -4.76539589 105.84089404 -4.77517107 106.57985111 -4.78494624 107.32396809 -4.79472141 108.07324498 -4.80449658 108.82768179 -4.81427175 109.58727852 -4.82404692 110.35203516 -4.83382209 111.12195171 -4.84359726 111.89702818 -4.85337243 112.67726456 -4.86314761 113.46266085 -4.87292278 114.25321706 -4.88269795 115.04893319 -4.89247312 115.84980923 -4.90224829 116.65584518 -4.91202346 117.46704105 -4.92179863 118.28339683 -4.93157380 119.10491253 -4.94134897 119.93158814 -4.95112414 120.76342366 -4.96089932 121.60041910 -4.97067449 122.44257445 -4.98044966 123.28988972 -4.99022483 124.14236490 -5.00000000 125.00000000 +X ApproxXCubed +-5.000000000 -125.000000000 +-4.990224829 -124.142364903 +-4.980449658 -123.289889721 +-4.970674487 -122.442574453 +-4.960899316 -121.600419100 +-4.951124145 -120.763423661 +-4.941348974 -119.931588136 +-4.931573803 -119.104912525 +-4.921798631 -118.283396829 +-4.912023460 -117.467041047 +-4.902248289 -116.655845180 +-4.892473118 -115.849809227 +-4.882697947 -115.048933188 +-4.872922776 -114.253217063 +-4.863147605 -113.462660853 +-4.853372434 -112.677264557 +-4.843597263 -111.897028176 +-4.833822092 -111.121951709 +-4.824046921 -110.352035156 +-4.814271750 -109.587278518 +-4.804496579 -108.827681794 +-4.794721408 -108.073244984 +-4.784946237 -107.323968089 +-4.775171065 -106.579851108 +-4.765395894 -105.840894041 +-4.755620723 -105.107096889 +-4.745845552 -104.378459651 +-4.736070381 -103.654982327 +-4.726295210 -102.936664918 +-4.716520039 -102.223507423 +-4.706744868 -101.515509843 +-4.696969697 -100.812672176 +-4.687194526 -100.114994424 +-4.677419355 -99.422476587 +-4.667644184 -98.735118664 +-4.657869013 -98.052920655 +-4.648093842 -97.375882560 +-4.638318671 -96.704004380 +-4.628543500 -96.037286114 +-4.618768328 -95.375727763 +-4.608993157 -94.719329326 +-4.599217986 -94.068090803 +-4.589442815 -93.422012195 +-4.579667644 -92.781093501 +-4.569892473 -92.145334721 +-4.560117302 -91.514735855 +-4.550342131 -90.889296904 +-4.540566960 -90.269017868 +-4.530791789 -89.653898745 +-4.521016618 -89.043939537 +-4.511241447 -88.439140244 +-4.501466276 -87.839500864 +-4.491691105 -87.245021399 +-4.481915934 -86.655701849 +-4.472140762 -86.071542212 +-4.462365591 -85.492542490 +-4.452590420 -84.918702683 +-4.442815249 -84.350022790 +-4.433040078 -83.786502811 +-4.423264907 -83.228142746 +-4.413489736 -82.674942596 +-4.403714565 -82.126902360 +-4.393939394 -81.584022039 +-4.384164223 -81.046301631 +-4.374389052 -80.513741139 +-4.364613881 -79.986340560 +-4.354838710 -79.464099896 +-4.345063539 -78.947019146 +-4.335288368 -78.435098311 +-4.325513196 -77.928337390 +-4.315738025 -77.426736383 +-4.305962854 -76.930295290 +-4.296187683 -76.439014112 +-4.286412512 -75.952892849 +-4.276637341 -75.471931499 +-4.266862170 -74.996130064 +-4.257086999 -74.525488544 +-4.247311828 -74.060006937 +-4.237536657 -73.599685245 +-4.227761486 -73.144523468 +-4.217986315 -72.694521604 +-4.208211144 -72.249679655 +-4.198435973 -71.809997621 +-4.188660802 -71.375475500 +-4.178885630 -70.946113295 +-4.169110459 -70.521911003 +-4.159335288 -70.102868626 +-4.149560117 -69.688986163 +-4.139784946 -69.280263614 +-4.130009775 -68.876700980 +-4.120234604 -68.478298260 +-4.110459433 -68.085055455 +-4.100684262 -67.696972564 +-4.090909091 -67.314049587 +-4.081133920 -66.936286524 +-4.071358749 -66.563683376 +-4.061583578 -66.196240142 +-4.051808407 -65.833956823 +-4.042033236 -65.476833418 +-4.032258065 -65.124869927 +-4.022482893 -64.778066351 +-4.012707722 -64.436422689 +-4.002932551 -64.099938941 +-3.993157380 -63.604111305 +-3.983382209 -63.041967303 +-3.973607038 -62.483836568 +-3.963831867 -61.929719100 +-3.954056696 -61.379614898 +-3.944281525 -60.833523964 +-3.934506354 -60.291446295 +-3.924731183 -59.753381894 +-3.914956012 -59.219330759 +-3.905180841 -58.689292891 +-3.895405670 -58.163268290 +-3.885630499 -57.641256955 +-3.875855327 -57.123258887 +-3.866080156 -56.609274086 +-3.856304985 -56.099302552 +-3.846529814 -55.593344284 +-3.836754643 -55.091399283 +-3.826979472 -54.593467548 +-3.817204301 -54.099549081 +-3.807429130 -53.609643880 +-3.797653959 -53.123751946 +-3.787878788 -52.641873278 +-3.778103617 -52.164007877 +-3.768328446 -51.690155743 +-3.758553275 -51.220316876 +-3.748778104 -50.754491275 +-3.739002933 -50.292678942 +-3.729227761 -49.834879874 +-3.719452590 -49.381094074 +-3.709677419 -48.931321540 +-3.699902248 -48.485562273 +-3.690127077 -48.043816273 +-3.680351906 -47.606083539 +-3.670576735 -47.172364072 +-3.660801564 -46.742657872 +-3.651026393 -46.316964938 +-3.641251222 -45.895285272 +-3.631476051 -45.477618872 +-3.621700880 -45.063965738 +-3.611925709 -44.654325872 +-3.602150538 -44.248699272 +-3.592375367 -43.847085938 +-3.582600196 -43.449485872 +-3.572825024 -43.055899072 +-3.563049853 -42.666325539 +-3.553274682 -42.280765273 +-3.543499511 -41.899218273 +-3.533724340 -41.521684540 +-3.523949169 -41.148164074 +-3.514173998 -40.778656874 +-3.504398827 -40.413162941 +-3.494623656 -40.051682275 +-3.484848485 -39.694214876 +-3.475073314 -39.340760743 +-3.465298143 -38.991319877 +-3.455522972 -38.645892278 +-3.445747801 -38.304477946 +-3.435972630 -37.967076880 +-3.426197458 -37.633689081 +-3.416422287 -37.304314548 +-3.406647116 -36.978953283 +-3.396871945 -36.657605284 +-3.387096774 -36.340270552 +-3.377321603 -36.026949086 +-3.367546432 -35.717640887 +-3.357771261 -35.412345955 +-3.347996090 -35.111064290 +-3.338220919 -34.813795891 +-3.328445748 -34.520540759 +-3.318670577 -34.231298894 +-3.308895406 -33.946070295 +-3.299120235 -33.664854963 +-3.289345064 -33.387652898 +-3.279569892 -33.114464100 +-3.269794721 -32.845288568 +-3.260019550 -32.580126303 +-3.250244379 -32.318977305 +-3.240469208 -32.061841573 +-3.230694037 -31.808719109 +-3.220918866 -31.559609910 +-3.211143695 -31.314513979 +-3.201368524 -31.073431314 +-3.191593353 -30.836361916 +-3.181818182 -30.603305785 +-3.172043011 -30.374262921 +-3.162267840 -30.149233323 +-3.152492669 -29.928216992 +-3.142717498 -29.711213927 +-3.132942326 -29.498224129 +-3.123167155 -29.289247598 +-3.113391984 -29.084284334 +-3.103616813 -28.883334337 +-3.093841642 -28.686397606 +-3.084066471 -28.493474142 +-3.074291300 -28.304563944 +-3.064516129 -28.119667014 +-3.054740958 -27.938783350 +-3.044965787 -27.761912952 +-3.035190616 -27.589055822 +-3.025415445 -27.420211958 +-3.015640274 -27.255381361 +-3.005865103 -27.094564030 +-2.996089932 -26.867287003 +-2.986314761 -26.537511144 +-2.976539589 -26.210601904 +-2.966764418 -25.886559283 +-2.956989247 -25.565383281 +-2.947214076 -25.247073899 +-2.937438905 -24.931631135 +-2.927663734 -24.619054990 +-2.917888563 -24.309345465 +-2.908113392 -24.002502558 +-2.898338221 -23.698526271 +-2.888563050 -23.397416603 +-2.878787879 -23.099173554 +-2.869012708 -22.803797124 +-2.859237537 -22.511287313 +-2.849462366 -22.221644121 +-2.839687195 -21.934867548 +-2.829912023 -21.650957594 +-2.820136852 -21.369914259 +-2.810361681 -21.091737544 +-2.800586510 -20.816427447 +-2.790811339 -20.543983970 +-2.781036168 -20.274407112 +-2.771260997 -20.007696872 +-2.761485826 -19.743853252 +-2.751710655 -19.482876251 +-2.741935484 -19.224765869 +-2.732160313 -18.969522106 +-2.722385142 -18.717144962 +-2.712609971 -18.467634437 +-2.702834800 -18.220990532 +-2.693059629 -17.977213245 +-2.683284457 -17.736302577 +-2.673509286 -17.498258529 +-2.663734115 -17.263081100 +-2.653958944 -17.030770289 +-2.644183773 -16.801326098 +-2.634408602 -16.574748526 +-2.624633431 -16.351037573 +-2.614858260 -16.130193239 +-2.605083089 -15.912215524 +-2.595307918 -15.697104428 +-2.585532747 -15.484859951 +-2.575757576 -15.275482094 +-2.565982405 -15.068970855 +-2.556207234 -14.865326236 +-2.546432063 -14.664548235 +-2.536656891 -14.466636854 +-2.526881720 -14.271592092 +-2.517106549 -14.079413948 +-2.507331378 -13.890102424 +-2.497556207 -13.703657519 +-2.487781036 -13.520079233 +-2.478005865 -13.339367566 +-2.468230694 -13.161522519 +-2.458455523 -12.986544090 +-2.448680352 -12.814432280 +-2.438905181 -12.645187090 +-2.429130010 -12.478808518 +-2.419354839 -12.315296566 +-2.409579668 -12.154651233 +-2.399804497 -11.996872519 +-2.390029326 -11.841960423 +-2.380254154 -11.689914947 +-2.370478983 -11.540736090 +-2.360703812 -11.394423853 +-2.350928641 -11.250978234 +-2.341153470 -11.110399234 +-2.331378299 -10.972686853 +-2.321603128 -10.837841092 +-2.311827957 -10.705861949 +-2.302052786 -10.576749426 +-2.292277615 -10.450503522 +-2.282502444 -10.327124236 +-2.272727273 -10.206611570 +-2.262952102 -10.088965523 +-2.253176931 -9.974186095 +-2.243401760 -9.862273286 +-2.233626588 -9.753227096 +-2.223851417 -9.647047526 +-2.214076246 -9.543734574 +-2.204301075 -9.443288241 +-2.194525904 -9.345708528 +-2.184750733 -9.250995433 +-2.174975562 -9.159148958 +-2.165200391 -9.070169102 +-2.155425220 -8.984055865 +-2.145650049 -8.900809247 +-2.135874878 -8.820429248 +-2.126099707 -8.742915868 +-2.116324536 -8.668269107 +-2.106549365 -8.596488965 +-2.096774194 -8.527575442 +-2.086999022 -8.461528539 +-2.077223851 -8.398348254 +-2.067448680 -8.338034589 +-2.057673509 -8.280587542 +-2.047898338 -8.226007115 +-2.038123167 -8.174293307 +-2.028347996 -8.125446118 +-2.018572825 -8.079465548 +-2.008797654 -8.036351597 +-1.999022483 -7.984368326 +-1.989247312 -7.828997572 +-1.979472141 -7.675346789 +-1.969696970 -7.523415978 +-1.959921799 -7.373205138 +-1.950146628 -7.224714270 +-1.940371457 -7.077943373 +-1.930596285 -6.932892447 +-1.920821114 -6.789561493 +-1.911045943 -6.647950511 +-1.901270772 -6.508059500 +-1.891495601 -6.369888460 +-1.881720430 -6.233437392 +-1.871945259 -6.098706295 +-1.862170088 -5.965695169 +-1.852394917 -5.834404016 +-1.842619746 -5.704832833 +-1.832844575 -5.576981622 +-1.823069404 -5.450850383 +-1.813294233 -5.326439114 +-1.803519062 -5.203747818 +-1.793743891 -5.082776493 +-1.783968719 -4.963525139 +-1.774193548 -4.845993757 +-1.764418377 -4.730182346 +-1.754643206 -4.616090906 +-1.744868035 -4.503719438 +-1.735092864 -4.393067942 +-1.725317693 -4.284136417 +-1.715542522 -4.176924863 +-1.705767351 -4.071433281 +-1.695992180 -3.967661670 +-1.686217009 -3.865610031 +-1.676441838 -3.765278363 +-1.666666667 -3.666666667 +-1.656891496 -3.569774942 +-1.647116325 -3.474603188 +-1.637341153 -3.381151406 +-1.627565982 -3.289419596 +-1.617790811 -3.199407756 +-1.608015640 -3.111115889 +-1.598240469 -3.024543993 +-1.588465298 -2.939692068 +-1.578690127 -2.856560114 +-1.568914956 -2.775148133 +-1.559139785 -2.695456122 +-1.549364614 -2.617484083 +-1.539589443 -2.541232016 +-1.529814272 -2.466699919 +-1.520039101 -2.393887795 +-1.510263930 -2.322795642 +-1.500488759 -2.253423460 +-1.490713587 -2.185771250 +-1.480938416 -2.119839011 +-1.471163245 -2.055626743 +-1.461388074 -1.993134447 +-1.451612903 -1.932362123 +-1.441837732 -1.873309770 +-1.432062561 -1.815977388 +-1.422287390 -1.760364978 +-1.412512219 -1.706472539 +-1.402737048 -1.654300072 +-1.392961877 -1.603847576 +-1.383186706 -1.555115052 +-1.373411535 -1.508102499 +-1.363636364 -1.462809917 +-1.353861193 -1.419237307 +-1.344086022 -1.377384669 +-1.334310850 -1.337252002 +-1.324535679 -1.298839306 +-1.314760508 -1.262146582 +-1.304985337 -1.227173829 +-1.295210166 -1.193921048 +-1.285434995 -1.162388238 +-1.275659824 -1.132575399 +-1.265884653 -1.104482532 +-1.256109482 -1.078109637 +-1.246334311 -1.053456713 +-1.236559140 -1.030523760 +-1.226783969 -1.009310779 +-1.217008798 -0.989817769 +-1.207233627 -0.972044731 +-1.197458456 -0.955991664 +-1.187683284 -0.941658568 +-1.177908113 -0.929045445 +-1.168132942 -0.918152292 +-1.158357771 -0.908979111 +-1.148582600 -0.901525901 +-1.138807429 -0.895792663 +-1.129032258 -0.891779396 +-1.119257087 -0.889486101 +-1.109481916 -0.888912777 +-1.099706745 -0.890059425 +-1.089931574 -0.892926044 +-1.080156403 -0.897512635 +-1.070381232 -0.903819197 +-1.060606061 -0.911845730 +-1.050830890 -0.921592235 +-1.041055718 -0.933058711 +-1.031280547 -0.946245159 +-1.021505376 -0.961151578 +-1.011730205 -0.977777969 +-1.001955034 -0.996124331 +-0.992179863 -0.968902916 +-0.982404692 -0.930547553 +-0.972629521 -0.892765513 +-0.962854350 -0.855556798 +-0.953079179 -0.818921406 +-0.943304008 -0.782859338 +-0.933528837 -0.747370594 +-0.923753666 -0.712455173 +-0.913978495 -0.678113077 +-0.904203324 -0.644344304 +-0.894428152 -0.611148855 +-0.884652981 -0.578526730 +-0.874877810 -0.546477928 +-0.865102639 -0.515002451 +-0.855327468 -0.484100297 +-0.845552297 -0.453771467 +-0.835777126 -0.424015961 +-0.826001955 -0.394833779 +-0.816226784 -0.366224921 +-0.806451613 -0.338189386 +-0.796676442 -0.310727175 +-0.786901271 -0.283838288 +-0.777126100 -0.257522725 +-0.767350929 -0.231780486 +-0.757575758 -0.206611570 +-0.747800587 -0.182015979 +-0.738025415 -0.157993711 +-0.728250244 -0.134544767 +-0.718475073 -0.111669146 +-0.708699902 -0.089366850 +-0.698924731 -0.067637877 +-0.689149560 -0.046482228 +-0.679374389 -0.025899903 +-0.669599218 -0.005890902 +-0.659824047 0.013544775 +-0.650048876 0.032407129 +-0.640273705 0.050696158 +-0.630498534 0.068411864 +-0.620723363 0.085554246 +-0.610948192 0.102123305 +-0.601173021 0.118119039 +-0.591397849 0.133541450 +-0.581622678 0.148390537 +-0.571847507 0.162666300 +-0.562072336 0.176368739 +-0.552297165 0.189497854 +-0.542521994 0.202053646 +-0.532746823 0.214036114 +-0.522971652 0.225445258 +-0.513196481 0.236281078 +-0.503421310 0.246543574 +-0.493646139 0.256232747 +-0.483870968 0.265348595 +-0.474095797 0.273891120 +-0.464320626 0.281860321 +-0.454545455 0.289256198 +-0.444770283 0.296078752 +-0.434995112 0.302327981 +-0.425219941 0.308003887 +-0.415444770 0.313106469 +-0.405669599 0.317635727 +-0.395894428 0.321591662 +-0.386119257 0.324974272 +-0.376344086 0.327783559 +-0.366568915 0.330019522 +-0.356793744 0.331682161 +-0.347018573 0.332771476 +-0.337243402 0.333287467 +-0.327468231 0.333230135 +-0.317693060 0.332599479 +-0.307917889 0.331395499 +-0.298142717 0.329618195 +-0.288367546 0.327267567 +-0.278592375 0.324343616 +-0.268817204 0.320846341 +-0.259042033 0.316775742 +-0.249266862 0.312131819 +-0.239491691 0.306914572 +-0.229716520 0.301124001 +-0.219941349 0.294760107 +-0.210166178 0.287822889 +-0.200391007 0.280312347 +-0.190615836 0.272228481 +-0.180840665 0.263571291 +-0.171065494 0.254340778 +-0.161290323 0.244536941 +-0.151515152 0.234159780 +-0.141739980 0.223209295 +-0.131964809 0.211685486 +-0.122189638 0.199588353 +-0.112414467 0.186917897 +-0.102639296 0.173674117 +-0.092864125 0.159857013 +-0.083088954 0.145466585 +-0.073313783 0.130502834 +-0.063538612 0.114965758 +-0.053763441 0.098855359 +-0.043988270 0.082171636 +-0.034213099 0.064914589 +-0.024437928 0.047084218 +-0.014662757 0.028680524 +-0.004887586 0.009703506 +0.004887586 -0.009703506 +0.014662757 -0.028680524 +0.024437928 -0.047084218 +0.034213099 -0.064914589 +0.043988270 -0.082171636 +0.053763441 -0.098855359 +0.063538612 -0.114965758 +0.073313783 -0.130502834 +0.083088954 -0.145466585 +0.092864125 -0.159857013 +0.102639296 -0.173674117 +0.112414467 -0.186917897 +0.122189638 -0.199588353 +0.131964809 -0.211685486 +0.141739980 -0.223209295 +0.151515152 -0.234159780 +0.161290323 -0.244536941 +0.171065494 -0.254340778 +0.180840665 -0.263571291 +0.190615836 -0.272228481 +0.200391007 -0.280312347 +0.210166178 -0.287822889 +0.219941349 -0.294760107 +0.229716520 -0.301124001 +0.239491691 -0.306914572 +0.249266862 -0.312131819 +0.259042033 -0.316775742 +0.268817204 -0.320846341 +0.278592375 -0.324343616 +0.288367546 -0.327267567 +0.298142717 -0.329618195 +0.307917889 -0.331395499 +0.317693060 -0.332599479 +0.327468231 -0.333230135 +0.337243402 -0.333287467 +0.347018573 -0.332771476 +0.356793744 -0.331682161 +0.366568915 -0.330019522 +0.376344086 -0.327783559 +0.386119257 -0.324974272 +0.395894428 -0.321591662 +0.405669599 -0.317635727 +0.415444770 -0.313106469 +0.425219941 -0.308003887 +0.434995112 -0.302327981 +0.444770283 -0.296078752 +0.454545455 -0.289256198 +0.464320626 -0.281860321 +0.474095797 -0.273891120 +0.483870968 -0.265348595 +0.493646139 -0.256232747 +0.503421310 -0.246543574 +0.513196481 -0.236281078 +0.522971652 -0.225445258 +0.532746823 -0.214036114 +0.542521994 -0.202053646 +0.552297165 -0.189497854 +0.562072336 -0.176368739 +0.571847507 -0.162666300 +0.581622678 -0.148390537 +0.591397849 -0.133541450 +0.601173021 -0.118119039 +0.610948192 -0.102123305 +0.620723363 -0.085554246 +0.630498534 -0.068411864 +0.640273705 -0.050696158 +0.650048876 -0.032407129 +0.659824047 -0.013544775 +0.669599218 0.005890902 +0.679374389 0.025899903 +0.689149560 0.046482228 +0.698924731 0.067637877 +0.708699902 0.089366850 +0.718475073 0.111669146 +0.728250244 0.134544767 +0.738025415 0.157993711 +0.747800587 0.182015979 +0.757575758 0.206611570 +0.767350929 0.231780486 +0.777126100 0.257522725 +0.786901271 0.283838288 +0.796676442 0.310727175 +0.806451613 0.338189386 +0.816226784 0.366224921 +0.826001955 0.394833779 +0.835777126 0.424015961 +0.845552297 0.453771467 +0.855327468 0.484100297 +0.865102639 0.515002451 +0.874877810 0.546477928 +0.884652981 0.578526730 +0.894428152 0.611148855 +0.904203324 0.644344304 +0.913978495 0.678113077 +0.923753666 0.712455173 +0.933528837 0.747370594 +0.943304008 0.782859338 +0.953079179 0.818921406 +0.962854350 0.855556798 +0.972629521 0.892765513 +0.982404692 0.930547553 +0.992179863 0.968902916 +1.001955034 0.996124331 +1.011730205 0.977777969 +1.021505376 0.961151578 +1.031280547 0.946245159 +1.041055718 0.933058711 +1.050830890 0.921592235 +1.060606061 0.911845730 +1.070381232 0.903819197 +1.080156403 0.897512635 +1.089931574 0.892926044 +1.099706745 0.890059425 +1.109481916 0.888912777 +1.119257087 0.889486101 +1.129032258 0.891779396 +1.138807429 0.895792663 +1.148582600 0.901525901 +1.158357771 0.908979111 +1.168132942 0.918152292 +1.177908113 0.929045445 +1.187683284 0.941658568 +1.197458456 0.955991664 +1.207233627 0.972044731 +1.217008798 0.989817769 +1.226783969 1.009310779 +1.236559140 1.030523760 +1.246334311 1.053456713 +1.256109482 1.078109637 +1.265884653 1.104482532 +1.275659824 1.132575399 +1.285434995 1.162388238 +1.295210166 1.193921048 +1.304985337 1.227173829 +1.314760508 1.262146582 +1.324535679 1.298839306 +1.334310850 1.337252002 +1.344086022 1.377384669 +1.353861193 1.419237307 +1.363636364 1.462809917 +1.373411535 1.508102499 +1.383186706 1.555115052 +1.392961877 1.603847576 +1.402737048 1.654300072 +1.412512219 1.706472539 +1.422287390 1.760364978 +1.432062561 1.815977388 +1.441837732 1.873309770 +1.451612903 1.932362123 +1.461388074 1.993134447 +1.471163245 2.055626743 +1.480938416 2.119839011 +1.490713587 2.185771250 +1.500488759 2.253423460 +1.510263930 2.322795642 +1.520039101 2.393887795 +1.529814272 2.466699919 +1.539589443 2.541232016 +1.549364614 2.617484083 +1.559139785 2.695456122 +1.568914956 2.775148133 +1.578690127 2.856560114 +1.588465298 2.939692068 +1.598240469 3.024543993 +1.608015640 3.111115889 +1.617790811 3.199407756 +1.627565982 3.289419596 +1.637341153 3.381151406 +1.647116325 3.474603188 +1.656891496 3.569774942 +1.666666667 3.666666667 +1.676441838 3.765278363 +1.686217009 3.865610031 +1.695992180 3.967661670 +1.705767351 4.071433281 +1.715542522 4.176924863 +1.725317693 4.284136417 +1.735092864 4.393067942 +1.744868035 4.503719438 +1.754643206 4.616090906 +1.764418377 4.730182346 +1.774193548 4.845993757 +1.783968719 4.963525139 +1.793743891 5.082776493 +1.803519062 5.203747818 +1.813294233 5.326439114 +1.823069404 5.450850383 +1.832844575 5.576981622 +1.842619746 5.704832833 +1.852394917 5.834404016 +1.862170088 5.965695169 +1.871945259 6.098706295 +1.881720430 6.233437392 +1.891495601 6.369888460 +1.901270772 6.508059500 +1.911045943 6.647950511 +1.920821114 6.789561493 +1.930596285 6.932892447 +1.940371457 7.077943373 +1.950146628 7.224714270 +1.959921799 7.373205138 +1.969696970 7.523415978 +1.979472141 7.675346789 +1.989247312 7.828997572 +1.999022483 7.984368326 +2.008797654 8.036351597 +2.018572825 8.079465548 +2.028347996 8.125446118 +2.038123167 8.174293307 +2.047898338 8.226007115 +2.057673509 8.280587542 +2.067448680 8.338034589 +2.077223851 8.398348254 +2.086999022 8.461528539 +2.096774194 8.527575442 +2.106549365 8.596488965 +2.116324536 8.668269107 +2.126099707 8.742915868 +2.135874878 8.820429248 +2.145650049 8.900809247 +2.155425220 8.984055865 +2.165200391 9.070169102 +2.174975562 9.159148958 +2.184750733 9.250995433 +2.194525904 9.345708528 +2.204301075 9.443288241 +2.214076246 9.543734574 +2.223851417 9.647047526 +2.233626588 9.753227096 +2.243401760 9.862273286 +2.253176931 9.974186095 +2.262952102 10.088965523 +2.272727273 10.206611570 +2.282502444 10.327124236 +2.292277615 10.450503522 +2.302052786 10.576749426 +2.311827957 10.705861949 +2.321603128 10.837841092 +2.331378299 10.972686853 +2.341153470 11.110399234 +2.350928641 11.250978234 +2.360703812 11.394423853 +2.370478983 11.540736090 +2.380254154 11.689914947 +2.390029326 11.841960423 +2.399804497 11.996872519 +2.409579668 12.154651233 +2.419354839 12.315296566 +2.429130010 12.478808518 +2.438905181 12.645187090 +2.448680352 12.814432280 +2.458455523 12.986544090 +2.468230694 13.161522519 +2.478005865 13.339367566 +2.487781036 13.520079233 +2.497556207 13.703657519 +2.507331378 13.890102424 +2.517106549 14.079413948 +2.526881720 14.271592092 +2.536656891 14.466636854 +2.546432063 14.664548235 +2.556207234 14.865326236 +2.565982405 15.068970855 +2.575757576 15.275482094 +2.585532747 15.484859951 +2.595307918 15.697104428 +2.605083089 15.912215524 +2.614858260 16.130193239 +2.624633431 16.351037573 +2.634408602 16.574748526 +2.644183773 16.801326098 +2.653958944 17.030770289 +2.663734115 17.263081100 +2.673509286 17.498258529 +2.683284457 17.736302577 +2.693059629 17.977213245 +2.702834800 18.220990532 +2.712609971 18.467634437 +2.722385142 18.717144962 +2.732160313 18.969522106 +2.741935484 19.224765869 +2.751710655 19.482876251 +2.761485826 19.743853252 +2.771260997 20.007696872 +2.781036168 20.274407112 +2.790811339 20.543983970 +2.800586510 20.816427447 +2.810361681 21.091737544 +2.820136852 21.369914259 +2.829912023 21.650957594 +2.839687195 21.934867548 +2.849462366 22.221644121 +2.859237537 22.511287313 +2.869012708 22.803797124 +2.878787879 23.099173554 +2.888563050 23.397416603 +2.898338221 23.698526271 +2.908113392 24.002502558 +2.917888563 24.309345465 +2.927663734 24.619054990 +2.937438905 24.931631135 +2.947214076 25.247073899 +2.956989247 25.565383281 +2.966764418 25.886559283 +2.976539589 26.210601904 +2.986314761 26.537511144 +2.996089932 26.867287003 +3.005865103 27.094564030 +3.015640274 27.255381361 +3.025415445 27.420211958 +3.035190616 27.589055822 +3.044965787 27.761912952 +3.054740958 27.938783350 +3.064516129 28.119667014 +3.074291300 28.304563944 +3.084066471 28.493474142 +3.093841642 28.686397606 +3.103616813 28.883334337 +3.113391984 29.084284334 +3.123167155 29.289247598 +3.132942326 29.498224129 +3.142717498 29.711213927 +3.152492669 29.928216992 +3.162267840 30.149233323 +3.172043011 30.374262921 +3.181818182 30.603305785 +3.191593353 30.836361916 +3.201368524 31.073431314 +3.211143695 31.314513979 +3.220918866 31.559609910 +3.230694037 31.808719109 +3.240469208 32.061841573 +3.250244379 32.318977305 +3.260019550 32.580126303 +3.269794721 32.845288568 +3.279569892 33.114464100 +3.289345064 33.387652898 +3.299120235 33.664854963 +3.308895406 33.946070295 +3.318670577 34.231298894 +3.328445748 34.520540759 +3.338220919 34.813795891 +3.347996090 35.111064290 +3.357771261 35.412345955 +3.367546432 35.717640887 +3.377321603 36.026949086 +3.387096774 36.340270552 +3.396871945 36.657605284 +3.406647116 36.978953283 +3.416422287 37.304314548 +3.426197458 37.633689081 +3.435972630 37.967076880 +3.445747801 38.304477946 +3.455522972 38.645892278 +3.465298143 38.991319877 +3.475073314 39.340760743 +3.484848485 39.694214876 +3.494623656 40.051682275 +3.504398827 40.413162941 +3.514173998 40.778656874 +3.523949169 41.148164074 +3.533724340 41.521684540 +3.543499511 41.899218273 +3.553274682 42.280765273 +3.563049853 42.666325539 +3.572825024 43.055899072 +3.582600196 43.449485872 +3.592375367 43.847085938 +3.602150538 44.248699272 +3.611925709 44.654325872 +3.621700880 45.063965738 +3.631476051 45.477618872 +3.641251222 45.895285272 +3.651026393 46.316964938 +3.660801564 46.742657872 +3.670576735 47.172364072 +3.680351906 47.606083539 +3.690127077 48.043816273 +3.699902248 48.485562273 +3.709677419 48.931321540 +3.719452590 49.381094074 +3.729227761 49.834879874 +3.739002933 50.292678942 +3.748778104 50.754491275 +3.758553275 51.220316876 +3.768328446 51.690155743 +3.778103617 52.164007877 +3.787878788 52.641873278 +3.797653959 53.123751946 +3.807429130 53.609643880 +3.817204301 54.099549081 +3.826979472 54.593467548 +3.836754643 55.091399283 +3.846529814 55.593344284 +3.856304985 56.099302552 +3.866080156 56.609274086 +3.875855327 57.123258887 +3.885630499 57.641256955 +3.895405670 58.163268290 +3.905180841 58.689292891 +3.914956012 59.219330759 +3.924731183 59.753381894 +3.934506354 60.291446295 +3.944281525 60.833523964 +3.954056696 61.379614898 +3.963831867 61.929719100 +3.973607038 62.483836568 +3.983382209 63.041967303 +3.993157380 63.604111305 +4.002932551 64.099938941 +4.012707722 64.436422689 +4.022482893 64.778066351 +4.032258065 65.124869927 +4.042033236 65.476833418 +4.051808407 65.833956823 +4.061583578 66.196240142 +4.071358749 66.563683376 +4.081133920 66.936286524 +4.090909091 67.314049587 +4.100684262 67.696972564 +4.110459433 68.085055455 +4.120234604 68.478298260 +4.130009775 68.876700980 +4.139784946 69.280263614 +4.149560117 69.688986163 +4.159335288 70.102868626 +4.169110459 70.521911003 +4.178885630 70.946113295 +4.188660802 71.375475500 +4.198435973 71.809997621 +4.208211144 72.249679655 +4.217986315 72.694521604 +4.227761486 73.144523468 +4.237536657 73.599685245 +4.247311828 74.060006937 +4.257086999 74.525488544 +4.266862170 74.996130064 +4.276637341 75.471931499 +4.286412512 75.952892849 +4.296187683 76.439014112 +4.305962854 76.930295290 +4.315738025 77.426736383 +4.325513196 77.928337390 +4.335288368 78.435098311 +4.345063539 78.947019146 +4.354838710 79.464099896 +4.364613881 79.986340560 +4.374389052 80.513741139 +4.384164223 81.046301631 +4.393939394 81.584022039 +4.403714565 82.126902360 +4.413489736 82.674942596 +4.423264907 83.228142746 +4.433040078 83.786502811 +4.442815249 84.350022790 +4.452590420 84.918702683 +4.462365591 85.492542490 +4.472140762 86.071542212 +4.481915934 86.655701849 +4.491691105 87.245021399 +4.501466276 87.839500864 +4.511241447 88.439140244 +4.521016618 89.043939537 +4.530791789 89.653898745 +4.540566960 90.269017868 +4.550342131 90.889296904 +4.560117302 91.514735855 +4.569892473 92.145334721 +4.579667644 92.781093501 +4.589442815 93.422012195 +4.599217986 94.068090803 +4.608993157 94.719329326 +4.618768328 95.375727763 +4.628543500 96.037286114 +4.638318671 96.704004380 +4.648093842 97.375882560 +4.657869013 98.052920655 +4.667644184 98.735118664 +4.677419355 99.422476587 +4.687194526 100.114994424 +4.696969697 100.812672176 +4.706744868 101.515509843 +4.716520039 102.223507423 +4.726295210 102.936664918 +4.736070381 103.654982327 +4.745845552 104.378459651 +4.755620723 105.107096889 +4.765395894 105.840894041 +4.775171065 106.579851108 +4.784946237 107.323968089 +4.794721408 108.073244984 +4.804496579 108.827681794 +4.814271750 109.587278518 +4.824046921 110.352035156 +4.833822092 111.121951709 +4.843597263 111.897028176 +4.853372434 112.677264557 +4.863147605 113.462660853 +4.872922776 114.253217063 +4.882697947 115.048933188 +4.892473118 115.849809227 +4.902248289 116.655845180 +4.912023460 117.467041047 +4.921798631 118.283396829 +4.931573803 119.104912525 +4.941348974 119.931588136 +4.951124145 120.763423661 +4.960899316 121.600419100 +4.970674487 122.442574453 +4.980449658 123.289889721 +4.990224829 124.142364903 +5.000000000 125.000000000 diff --git a/examples/takagi-sugeno/octave/cubic_approximator.fll b/examples/takagi-sugeno/octave/cubic_approximator.fll index 073e70e..22b8fa6 100644 --- a/examples/takagi-sugeno/octave/cubic_approximator.fll +++ b/examples/takagi-sugeno/octave/cubic_approximator.fll @@ -1,7 +1,8 @@ -Engine: Cubic-Approximator +Engine: cubic_approximator InputVariable: X enabled: true range: -5.000 5.000 + lock-range: false term: AboutNegFive Triangle -6.000 -5.000 -4.000 term: AboutNegFour Triangle -5.000 -4.000 -3.000 term: AboutNegThree Triangle -4.000 -3.000 -2.000 @@ -16,11 +17,11 @@ InputVariable: X OutputVariable: ApproxXCubed enabled: true range: -5.000 5.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage TakagiSugeno default: nan lock-previous: false - lock-range: false term: TangentatNegFive Linear 75.000 250.000 term: TangentatNegFour Linear 48.000 128.000 term: TangentatNegThree Linear 27.000 54.000 @@ -36,7 +37,8 @@ RuleBlock: enabled: true conjunction: none disjunction: none - activation: none + implication: none + activation: General rule: if X is AboutNegFive then ApproxXCubed is TangentatNegFive rule: if X is AboutNegFour then ApproxXCubed is TangentatNegFour rule: if X is AboutNegThree then ApproxXCubed is TangentatNegThree diff --git a/examples/takagi-sugeno/octave/cubic_approximator.java b/examples/takagi-sugeno/octave/cubic_approximator.java index 1955a24..ed64870 100644 --- a/examples/takagi-sugeno/octave/cubic_approximator.java +++ b/examples/takagi-sugeno/octave/cubic_approximator.java @@ -1,4 +1,5 @@ import com.fuzzylite.*; +import com.fuzzylite.activation.* import com.fuzzylite.defuzzifier.*; import com.fuzzylite.factory.*; import com.fuzzylite.hedge.*; @@ -12,54 +13,62 @@ import com.fuzzylite.variable.*; public class cubic_approximator{ public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + Engine engine = new Engine(); -engine.setName("Cubic-Approximator"); +engine.setName("cubic_approximator"); +engine.setDescription(""); -InputVariable inputVariable = new InputVariable(); -inputVariable.setEnabled(true); -inputVariable.setName("X"); -inputVariable.setRange(-5.000, 5.000); -inputVariable.addTerm(new Triangle("AboutNegFive", -6.000, -5.000, -4.000)); -inputVariable.addTerm(new Triangle("AboutNegFour", -5.000, -4.000, -3.000)); -inputVariable.addTerm(new Triangle("AboutNegThree", -4.000, -3.000, -2.000)); -inputVariable.addTerm(new Triangle("AboutNegTwo", -3.000, -2.000, -1.000)); -inputVariable.addTerm(new Triangle("AboutNegOne", -2.000, -1.000, 0.000)); -inputVariable.addTerm(new Triangle("AboutZero", -1.000, 0.000, 1.000)); -inputVariable.addTerm(new Triangle("AboutOne", 0.000, 1.000, 2.000)); -inputVariable.addTerm(new Triangle("AboutTwo", 1.000, 2.000, 3.000)); -inputVariable.addTerm(new Triangle("AboutThree", 2.000, 3.000, 4.000)); -inputVariable.addTerm(new Triangle("AboutFour", 3.000, 4.000, 5.000)); -inputVariable.addTerm(new Triangle("AboutFive", 4.000, 5.000, 6.000)); -engine.addInputVariable(inputVariable); +InputVariable X = new InputVariable(); +X.setName("X"); +X.setDescription(""); +X.setEnabled(true); +X.setRange(-5.000, 5.000); +X.setLockValueInRange(false); +X.addTerm(new Triangle("AboutNegFive", -6.000, -5.000, -4.000)); +X.addTerm(new Triangle("AboutNegFour", -5.000, -4.000, -3.000)); +X.addTerm(new Triangle("AboutNegThree", -4.000, -3.000, -2.000)); +X.addTerm(new Triangle("AboutNegTwo", -3.000, -2.000, -1.000)); +X.addTerm(new Triangle("AboutNegOne", -2.000, -1.000, 0.000)); +X.addTerm(new Triangle("AboutZero", -1.000, 0.000, 1.000)); +X.addTerm(new Triangle("AboutOne", 0.000, 1.000, 2.000)); +X.addTerm(new Triangle("AboutTwo", 1.000, 2.000, 3.000)); +X.addTerm(new Triangle("AboutThree", 2.000, 3.000, 4.000)); +X.addTerm(new Triangle("AboutFour", 3.000, 4.000, 5.000)); +X.addTerm(new Triangle("AboutFive", 4.000, 5.000, 6.000)); +engine.addInputVariable(X); -OutputVariable outputVariable = new OutputVariable(); -outputVariable.setEnabled(true); -outputVariable.setName("ApproxXCubed"); -outputVariable.setRange(-5.000, 5.000); -outputVariable.fuzzyOutput().setAccumulation(null); -outputVariable.setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable.setDefaultValue(Double.NaN); -outputVariable.setLockPreviousOutputValue(false); -outputVariable.setLockOutputValueInRange(false); -outputVariable.addTerm(Linear.create("TangentatNegFive", engine, 75.000, 250.000)); -outputVariable.addTerm(Linear.create("TangentatNegFour", engine, 48.000, 128.000)); -outputVariable.addTerm(Linear.create("TangentatNegThree", engine, 27.000, 54.000)); -outputVariable.addTerm(Linear.create("TangentatNegTwo", engine, 12.000, 16.000)); -outputVariable.addTerm(Linear.create("TangentatNegOne", engine, 3.000, 2.000)); -outputVariable.addTerm(Linear.create("TangentatZero", engine, 0.000, 0.000)); -outputVariable.addTerm(Linear.create("TangentatOne", engine, 3.000, -2.000)); -outputVariable.addTerm(Linear.create("TangentatTwo", engine, 12.000, -16.000)); -outputVariable.addTerm(Linear.create("TangentatThree", engine, 27.000, -54.000)); -outputVariable.addTerm(Linear.create("TangentatFour", engine, 48.000, -128.000)); -outputVariable.addTerm(Linear.create("TangentatFive", engine, 75.000, -250.000)); -engine.addOutputVariable(outputVariable); +OutputVariable ApproxXCubed = new OutputVariable(); +ApproxXCubed.setName("ApproxXCubed"); +ApproxXCubed.setDescription(""); +ApproxXCubed.setEnabled(true); +ApproxXCubed.setRange(-5.000, 5.000); +ApproxXCubed.setLockValueInRange(false); +ApproxXCubed.setAggregation(null); +ApproxXCubed.setDefuzzifier(new WeightedAverage("TakagiSugeno")); +ApproxXCubed.setDefaultValue(Double.NaN); +ApproxXCubed.setLockPreviousValue(false); +ApproxXCubed.addTerm(Linear.create("TangentatNegFive", engine, 75.000, 250.000)); +ApproxXCubed.addTerm(Linear.create("TangentatNegFour", engine, 48.000, 128.000)); +ApproxXCubed.addTerm(Linear.create("TangentatNegThree", engine, 27.000, 54.000)); +ApproxXCubed.addTerm(Linear.create("TangentatNegTwo", engine, 12.000, 16.000)); +ApproxXCubed.addTerm(Linear.create("TangentatNegOne", engine, 3.000, 2.000)); +ApproxXCubed.addTerm(Linear.create("TangentatZero", engine, 0.000, 0.000)); +ApproxXCubed.addTerm(Linear.create("TangentatOne", engine, 3.000, -2.000)); +ApproxXCubed.addTerm(Linear.create("TangentatTwo", engine, 12.000, -16.000)); +ApproxXCubed.addTerm(Linear.create("TangentatThree", engine, 27.000, -54.000)); +ApproxXCubed.addTerm(Linear.create("TangentatFour", engine, 48.000, -128.000)); +ApproxXCubed.addTerm(Linear.create("TangentatFive", engine, 75.000, -250.000)); +engine.addOutputVariable(ApproxXCubed); RuleBlock ruleBlock = new RuleBlock(); -ruleBlock.setEnabled(true); ruleBlock.setName(""); +ruleBlock.setDescription(""); +ruleBlock.setEnabled(true); ruleBlock.setConjunction(null); ruleBlock.setDisjunction(null); -ruleBlock.setActivation(null); +ruleBlock.setImplication(null); +ruleBlock.setActivation(new General()); ruleBlock.addRule(Rule.parse("if X is AboutNegFive then ApproxXCubed is TangentatNegFive", engine)); ruleBlock.addRule(Rule.parse("if X is AboutNegFour then ApproxXCubed is TangentatNegFour", engine)); ruleBlock.addRule(Rule.parse("if X is AboutNegThree then ApproxXCubed is TangentatNegThree", engine)); diff --git a/examples/takagi-sugeno/octave/cubic_approximator.pdf b/examples/takagi-sugeno/octave/cubic_approximator.pdf Binary files differnew file mode 100644 index 0000000..62d12ee --- /dev/null +++ b/examples/takagi-sugeno/octave/cubic_approximator.pdf diff --git a/examples/takagi-sugeno/octave/heart_disease_risk.R b/examples/takagi-sugeno/octave/heart_disease_risk.R new file mode 100644 index 0000000..6ea4240 --- /dev/null +++ b/examples/takagi-sugeno/octave/heart_disease_risk.R @@ -0,0 +1,84 @@ +#Code automatically generated with fuzzylite 6.0. + +library(ggplot2); + +engine.name = "heart_disease_risk" +engine.fll = "Engine: heart_disease_risk +InputVariable: LDLLevel + enabled: true + range: 0.000 300.000 + lock-range: false + term: Low Trapezoid -1.000 0.000 90.000 110.000 + term: LowBorderline Trapezoid 90.000 110.000 120.000 140.000 + term: Borderline Trapezoid 120.000 140.000 150.000 170.000 + term: HighBorderline Trapezoid 150.000 170.000 180.000 200.000 + term: High Trapezoid 180.000 200.000 300.000 301.000 +InputVariable: HDLLevel + enabled: true + range: 0.000 100.000 + lock-range: false + term: LowHDL Trapezoid -1.000 0.000 35.000 45.000 + term: ModerateHDL Trapezoid 35.000 45.000 55.000 65.000 + term: HighHDL Trapezoid 55.000 65.000 100.000 101.000 +OutputVariable: HeartDiseaseRisk + enabled: true + range: 0.000 10.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage TakagiSugeno + default: nan + lock-previous: false + term: NoRisk Constant 0.000 + term: LowRisk Constant 2.500 + term: MediumRisk Constant 5.000 + term: HighRisk Constant 7.500 + term: ExtremeRisk Constant 10.000 +RuleBlock: + enabled: true + conjunction: Minimum + disjunction: none + implication: none + activation: General + rule: if LDLLevel is Low and HDLLevel is LowHDL then HeartDiseaseRisk is MediumRisk + rule: if LDLLevel is Low and HDLLevel is ModerateHDL then HeartDiseaseRisk is LowRisk + rule: if LDLLevel is Low and HDLLevel is HighHDL then HeartDiseaseRisk is NoRisk + rule: if LDLLevel is LowBorderline and HDLLevel is LowHDL then HeartDiseaseRisk is MediumRisk + rule: if LDLLevel is LowBorderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is LowRisk + rule: if LDLLevel is LowBorderline and HDLLevel is HighHDL then HeartDiseaseRisk is LowRisk + rule: if LDLLevel is Borderline and HDLLevel is LowHDL then HeartDiseaseRisk is HighRisk + rule: if LDLLevel is Borderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is MediumRisk + rule: if LDLLevel is Borderline and HDLLevel is HighHDL then HeartDiseaseRisk is LowRisk + rule: if LDLLevel is HighBorderline and HDLLevel is LowHDL then HeartDiseaseRisk is HighRisk + rule: if LDLLevel is HighBorderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is HighRisk + rule: if LDLLevel is HighBorderline and HDLLevel is HighHDL then HeartDiseaseRisk is MediumRisk + rule: if LDLLevel is High and HDLLevel is LowHDL then HeartDiseaseRisk is ExtremeRisk + rule: if LDLLevel is High and HDLLevel is ModerateHDL then HeartDiseaseRisk is HighRisk + rule: if LDLLevel is High and HDLLevel is HighHDL then HeartDiseaseRisk is MediumRisk" + +engine.fldFile = "heart_disease_risk.fld" +if (require(data.table)) { + engine.df = data.table::fread(engine.fldFile, sep="auto", header="auto") +} else { + engine.df = read.table(engine.fldFile, header=TRUE) +} + +engine.plot.i1i2_o1 = ggplot(engine.df, aes(LDLLevel, HDLLevel)) + + geom_tile(aes(fill=HeartDiseaseRisk)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=LDLLevel, y=HDLLevel, z=HeartDiseaseRisk), color="black") + + ggtitle("(LDLLevel, HDLLevel) = HeartDiseaseRisk") + +engine.plot.i2i1_o1 = ggplot(engine.df, aes(HDLLevel, LDLLevel)) + + geom_tile(aes(fill=HeartDiseaseRisk)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=HDLLevel, y=LDLLevel, z=HeartDiseaseRisk), color="black") + + ggtitle("(HDLLevel, LDLLevel) = HeartDiseaseRisk") + +if (require(gridExtra)) { + engine.plots = arrangeGrob(engine.plot.i1i2_o1, engine.plot.i2i1_o1, ncol=2, top=engine.name) + ggsave(paste0(engine.name, ".pdf"), engine.plots) + if (require(grid)) { + grid.newpage() + grid.draw(engine.plots) + } +} diff --git a/examples/takagi-sugeno/octave/heart_disease_risk.cpp b/examples/takagi-sugeno/octave/heart_disease_risk.cpp index 397b303..12e7f72 100644 --- a/examples/takagi-sugeno/octave/heart_disease_risk.cpp +++ b/examples/takagi-sugeno/octave/heart_disease_risk.cpp @@ -1,68 +1,78 @@ #include <fl/Headers.h> int main(int argc, char** argv){ +//Code automatically generated with fuzzylite 6.0. + using namespace fl; Engine* engine = new Engine; -engine->setName("Heart-Disease-Risk"); +engine->setName("heart_disease_risk"); +engine->setDescription(""); -InputVariable* inputVariable1 = new InputVariable; -inputVariable1->setEnabled(true); -inputVariable1->setName("LDLLevel"); -inputVariable1->setRange(0.000, 300.000); -inputVariable1->addTerm(new Trapezoid("Low", -1.000, 0.000, 90.000, 110.000)); -inputVariable1->addTerm(new Trapezoid("LowBorderline", 90.000, 110.000, 120.000, 140.000)); -inputVariable1->addTerm(new Trapezoid("Borderline", 120.000, 140.000, 150.000, 170.000)); -inputVariable1->addTerm(new Trapezoid("HighBorderline", 150.000, 170.000, 180.000, 200.000)); -inputVariable1->addTerm(new Trapezoid("High", 180.000, 200.000, 300.000, 301.000)); -engine->addInputVariable(inputVariable1); +InputVariable* LDLLevel = new InputVariable; +LDLLevel->setName("LDLLevel"); +LDLLevel->setDescription(""); +LDLLevel->setEnabled(true); +LDLLevel->setRange(0.000, 300.000); +LDLLevel->setLockValueInRange(false); +LDLLevel->addTerm(new Trapezoid("Low", -1.000, 0.000, 90.000, 110.000)); +LDLLevel->addTerm(new Trapezoid("LowBorderline", 90.000, 110.000, 120.000, 140.000)); +LDLLevel->addTerm(new Trapezoid("Borderline", 120.000, 140.000, 150.000, 170.000)); +LDLLevel->addTerm(new Trapezoid("HighBorderline", 150.000, 170.000, 180.000, 200.000)); +LDLLevel->addTerm(new Trapezoid("High", 180.000, 200.000, 300.000, 301.000)); +engine->addInputVariable(LDLLevel); -InputVariable* inputVariable2 = new InputVariable; -inputVariable2->setEnabled(true); -inputVariable2->setName("HDLLevel"); -inputVariable2->setRange(0.000, 100.000); -inputVariable2->addTerm(new Trapezoid("LowHDL", -1.000, 0.000, 35.000, 45.000)); -inputVariable2->addTerm(new Trapezoid("ModerateHDL", 35.000, 45.000, 55.000, 65.000)); -inputVariable2->addTerm(new Trapezoid("HighHDL", 55.000, 65.000, 100.000, 101.000)); -engine->addInputVariable(inputVariable2); +InputVariable* HDLLevel = new InputVariable; +HDLLevel->setName("HDLLevel"); +HDLLevel->setDescription(""); +HDLLevel->setEnabled(true); +HDLLevel->setRange(0.000, 100.000); +HDLLevel->setLockValueInRange(false); +HDLLevel->addTerm(new Trapezoid("LowHDL", -1.000, 0.000, 35.000, 45.000)); +HDLLevel->addTerm(new Trapezoid("ModerateHDL", 35.000, 45.000, 55.000, 65.000)); +HDLLevel->addTerm(new Trapezoid("HighHDL", 55.000, 65.000, 100.000, 101.000)); +engine->addInputVariable(HDLLevel); -OutputVariable* outputVariable = new OutputVariable; -outputVariable->setEnabled(true); -outputVariable->setName("HeartDiseaseRisk"); -outputVariable->setRange(0.000, 10.000); -outputVariable->fuzzyOutput()->setAccumulation(fl::null); -outputVariable->setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable->setDefaultValue(fl::nan); -outputVariable->setLockPreviousOutputValue(false); -outputVariable->setLockOutputValueInRange(false); -outputVariable->addTerm(new Constant("NoRisk", 0.000)); -outputVariable->addTerm(new Constant("LowRisk", 2.500)); -outputVariable->addTerm(new Constant("MediumRisk", 5.000)); -outputVariable->addTerm(new Constant("HighRisk", 7.500)); -outputVariable->addTerm(new Constant("ExtremeRisk", 10.000)); -engine->addOutputVariable(outputVariable); +OutputVariable* HeartDiseaseRisk = new OutputVariable; +HeartDiseaseRisk->setName("HeartDiseaseRisk"); +HeartDiseaseRisk->setDescription(""); +HeartDiseaseRisk->setEnabled(true); +HeartDiseaseRisk->setRange(0.000, 10.000); +HeartDiseaseRisk->setLockValueInRange(false); +HeartDiseaseRisk->setAggregation(fl::null); +HeartDiseaseRisk->setDefuzzifier(new WeightedAverage("TakagiSugeno")); +HeartDiseaseRisk->setDefaultValue(fl::nan); +HeartDiseaseRisk->setLockPreviousValue(false); +HeartDiseaseRisk->addTerm(new Constant("NoRisk", 0.000)); +HeartDiseaseRisk->addTerm(new Constant("LowRisk", 2.500)); +HeartDiseaseRisk->addTerm(new Constant("MediumRisk", 5.000)); +HeartDiseaseRisk->addTerm(new Constant("HighRisk", 7.500)); +HeartDiseaseRisk->addTerm(new Constant("ExtremeRisk", 10.000)); +engine->addOutputVariable(HeartDiseaseRisk); RuleBlock* ruleBlock = new RuleBlock; -ruleBlock->setEnabled(true); ruleBlock->setName(""); +ruleBlock->setDescription(""); +ruleBlock->setEnabled(true); ruleBlock->setConjunction(new Minimum); ruleBlock->setDisjunction(fl::null); -ruleBlock->setActivation(fl::null); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is Low and HDLLevel is LowHDL then HeartDiseaseRisk is MediumRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is Low and HDLLevel is ModerateHDL then HeartDiseaseRisk is LowRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is Low and HDLLevel is HighHDL then HeartDiseaseRisk is NoRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is LowBorderline and HDLLevel is LowHDL then HeartDiseaseRisk is MediumRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is LowBorderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is LowRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is LowBorderline and HDLLevel is HighHDL then HeartDiseaseRisk is LowRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is Borderline and HDLLevel is LowHDL then HeartDiseaseRisk is HighRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is Borderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is MediumRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is Borderline and HDLLevel is HighHDL then HeartDiseaseRisk is LowRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is HighBorderline and HDLLevel is LowHDL then HeartDiseaseRisk is HighRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is HighBorderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is HighRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is HighBorderline and HDLLevel is HighHDL then HeartDiseaseRisk is MediumRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is High and HDLLevel is LowHDL then HeartDiseaseRisk is ExtremeRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is High and HDLLevel is ModerateHDL then HeartDiseaseRisk is HighRisk", engine)); -ruleBlock->addRule(fl::Rule::parse("if LDLLevel is High and HDLLevel is HighHDL then HeartDiseaseRisk is MediumRisk", engine)); +ruleBlock->setImplication(fl::null); +ruleBlock->setActivation(new General); +ruleBlock->addRule(Rule::parse("if LDLLevel is Low and HDLLevel is LowHDL then HeartDiseaseRisk is MediumRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is Low and HDLLevel is ModerateHDL then HeartDiseaseRisk is LowRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is Low and HDLLevel is HighHDL then HeartDiseaseRisk is NoRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is LowBorderline and HDLLevel is LowHDL then HeartDiseaseRisk is MediumRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is LowBorderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is LowRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is LowBorderline and HDLLevel is HighHDL then HeartDiseaseRisk is LowRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is Borderline and HDLLevel is LowHDL then HeartDiseaseRisk is HighRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is Borderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is MediumRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is Borderline and HDLLevel is HighHDL then HeartDiseaseRisk is LowRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is HighBorderline and HDLLevel is LowHDL then HeartDiseaseRisk is HighRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is HighBorderline and HDLLevel is ModerateHDL then HeartDiseaseRisk is HighRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is HighBorderline and HDLLevel is HighHDL then HeartDiseaseRisk is MediumRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is High and HDLLevel is LowHDL then HeartDiseaseRisk is ExtremeRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is High and HDLLevel is ModerateHDL then HeartDiseaseRisk is HighRisk", engine)); +ruleBlock->addRule(Rule::parse("if LDLLevel is High and HDLLevel is HighHDL then HeartDiseaseRisk is MediumRisk", engine)); engine->addRuleBlock(ruleBlock); diff --git a/examples/takagi-sugeno/octave/heart_disease_risk.fcl b/examples/takagi-sugeno/octave/heart_disease_risk.fcl index 9629a47..4e09d59 100644 --- a/examples/takagi-sugeno/octave/heart_disease_risk.fcl +++ b/examples/takagi-sugeno/octave/heart_disease_risk.fcl @@ -1,4 +1,6 @@ -FUNCTION_BLOCK Heart-Disease-Risk +//Code automatically generated with fuzzylite 6.0. + +FUNCTION_BLOCK heart_disease_risk VAR_INPUT LDLLevel: REAL; diff --git a/examples/takagi-sugeno/octave/heart_disease_risk.fis b/examples/takagi-sugeno/octave/heart_disease_risk.fis index 11686f1..485d8d9 100644 --- a/examples/takagi-sugeno/octave/heart_disease_risk.fis +++ b/examples/takagi-sugeno/octave/heart_disease_risk.fis @@ -1,13 +1,16 @@ +#Code automatically generated with fuzzylite 6.0. + [System] -Name='Heart-Disease-Risk' +Name='heart_disease_risk' Type='sugeno' +Version=6.0 NumInputs=2 NumOutputs=1 NumRules=15 AndMethod='min' -OrMethod='' -ImpMethod='' -AggMethod='' +OrMethod='max' +ImpMethod='min' +AggMethod='max' DefuzzMethod='wtaver' [Input1] diff --git a/examples/takagi-sugeno/octave/heart_disease_risk.fld b/examples/takagi-sugeno/octave/heart_disease_risk.fld index afc1fe0..7b9a00e 100644 --- a/examples/takagi-sugeno/octave/heart_disease_risk.fld +++ b/examples/takagi-sugeno/octave/heart_disease_risk.fld @@ -1,1026 +1,1025 @@ -#@Engine: Heart-Disease-Risk; -#@InputVariable: LDLLevel; @InputVariable: HDLLevel; @OutputVariable: HeartDiseaseRisk; -0.00000000 0.00000000 5.00000000 -0.00000000 3.22580645 5.00000000 -0.00000000 6.45161290 5.00000000 -0.00000000 9.67741935 5.00000000 -0.00000000 12.90322581 5.00000000 -0.00000000 16.12903226 5.00000000 -0.00000000 19.35483871 5.00000000 -0.00000000 22.58064516 5.00000000 -0.00000000 25.80645161 5.00000000 -0.00000000 29.03225806 5.00000000 -0.00000000 32.25806452 5.00000000 -0.00000000 35.48387097 4.87903226 -0.00000000 38.70967742 4.07258065 -0.00000000 41.93548387 3.26612903 -0.00000000 45.16129032 2.50000000 -0.00000000 48.38709677 2.50000000 -0.00000000 51.61290323 2.50000000 -0.00000000 54.83870968 2.50000000 -0.00000000 58.06451613 1.73387097 -0.00000000 61.29032258 0.92741935 -0.00000000 64.51612903 0.12096774 -0.00000000 67.74193548 0.00000000 -0.00000000 70.96774194 0.00000000 -0.00000000 74.19354839 0.00000000 -0.00000000 77.41935484 0.00000000 -0.00000000 80.64516129 0.00000000 -0.00000000 83.87096774 0.00000000 -0.00000000 87.09677419 0.00000000 -0.00000000 90.32258065 0.00000000 -0.00000000 93.54838710 0.00000000 -0.00000000 96.77419355 0.00000000 -0.00000000 100.00000000 0.00000000 -9.67741935 0.00000000 5.00000000 -9.67741935 3.22580645 5.00000000 -9.67741935 6.45161290 5.00000000 -9.67741935 9.67741935 5.00000000 -9.67741935 12.90322581 5.00000000 -9.67741935 16.12903226 5.00000000 -9.67741935 19.35483871 5.00000000 -9.67741935 22.58064516 5.00000000 -9.67741935 25.80645161 5.00000000 -9.67741935 29.03225806 5.00000000 -9.67741935 32.25806452 5.00000000 -9.67741935 35.48387097 4.87903226 -9.67741935 38.70967742 4.07258065 -9.67741935 41.93548387 3.26612903 -9.67741935 45.16129032 2.50000000 -9.67741935 48.38709677 2.50000000 -9.67741935 51.61290323 2.50000000 -9.67741935 54.83870968 2.50000000 -9.67741935 58.06451613 1.73387097 -9.67741935 61.29032258 0.92741935 -9.67741935 64.51612903 0.12096774 -9.67741935 67.74193548 0.00000000 -9.67741935 70.96774194 0.00000000 -9.67741935 74.19354839 0.00000000 -9.67741935 77.41935484 0.00000000 -9.67741935 80.64516129 0.00000000 -9.67741935 83.87096774 0.00000000 -9.67741935 87.09677419 0.00000000 -9.67741935 90.32258065 0.00000000 -9.67741935 93.54838710 0.00000000 -9.67741935 96.77419355 0.00000000 -9.67741935 100.00000000 0.00000000 -19.35483871 0.00000000 5.00000000 -19.35483871 3.22580645 5.00000000 -19.35483871 6.45161290 5.00000000 -19.35483871 9.67741935 5.00000000 -19.35483871 12.90322581 5.00000000 -19.35483871 16.12903226 5.00000000 -19.35483871 19.35483871 5.00000000 -19.35483871 22.58064516 5.00000000 -19.35483871 25.80645161 5.00000000 -19.35483871 29.03225806 5.00000000 -19.35483871 32.25806452 5.00000000 -19.35483871 35.48387097 4.87903226 -19.35483871 38.70967742 4.07258065 -19.35483871 41.93548387 3.26612903 -19.35483871 45.16129032 2.50000000 -19.35483871 48.38709677 2.50000000 -19.35483871 51.61290323 2.50000000 -19.35483871 54.83870968 2.50000000 -19.35483871 58.06451613 1.73387097 -19.35483871 61.29032258 0.92741935 -19.35483871 64.51612903 0.12096774 -19.35483871 67.74193548 0.00000000 -19.35483871 70.96774194 0.00000000 -19.35483871 74.19354839 0.00000000 -19.35483871 77.41935484 0.00000000 -19.35483871 80.64516129 0.00000000 -19.35483871 83.87096774 0.00000000 -19.35483871 87.09677419 0.00000000 -19.35483871 90.32258065 0.00000000 -19.35483871 93.54838710 0.00000000 -19.35483871 96.77419355 0.00000000 -19.35483871 100.00000000 0.00000000 -29.03225806 0.00000000 5.00000000 -29.03225806 3.22580645 5.00000000 -29.03225806 6.45161290 5.00000000 -29.03225806 9.67741935 5.00000000 -29.03225806 12.90322581 5.00000000 -29.03225806 16.12903226 5.00000000 -29.03225806 19.35483871 5.00000000 -29.03225806 22.58064516 5.00000000 -29.03225806 25.80645161 5.00000000 -29.03225806 29.03225806 5.00000000 -29.03225806 32.25806452 5.00000000 -29.03225806 35.48387097 4.87903226 -29.03225806 38.70967742 4.07258065 -29.03225806 41.93548387 3.26612903 -29.03225806 45.16129032 2.50000000 -29.03225806 48.38709677 2.50000000 -29.03225806 51.61290323 2.50000000 -29.03225806 54.83870968 2.50000000 -29.03225806 58.06451613 1.73387097 -29.03225806 61.29032258 0.92741935 -29.03225806 64.51612903 0.12096774 -29.03225806 67.74193548 0.00000000 -29.03225806 70.96774194 0.00000000 -29.03225806 74.19354839 0.00000000 -29.03225806 77.41935484 0.00000000 -29.03225806 80.64516129 0.00000000 -29.03225806 83.87096774 0.00000000 -29.03225806 87.09677419 0.00000000 -29.03225806 90.32258065 0.00000000 -29.03225806 93.54838710 0.00000000 -29.03225806 96.77419355 0.00000000 -29.03225806 100.00000000 0.00000000 -38.70967742 0.00000000 5.00000000 -38.70967742 3.22580645 5.00000000 -38.70967742 6.45161290 5.00000000 -38.70967742 9.67741935 5.00000000 -38.70967742 12.90322581 5.00000000 -38.70967742 16.12903226 5.00000000 -38.70967742 19.35483871 5.00000000 -38.70967742 22.58064516 5.00000000 -38.70967742 25.80645161 5.00000000 -38.70967742 29.03225806 5.00000000 -38.70967742 32.25806452 5.00000000 -38.70967742 35.48387097 4.87903226 -38.70967742 38.70967742 4.07258065 -38.70967742 41.93548387 3.26612903 -38.70967742 45.16129032 2.50000000 -38.70967742 48.38709677 2.50000000 -38.70967742 51.61290323 2.50000000 -38.70967742 54.83870968 2.50000000 -38.70967742 58.06451613 1.73387097 -38.70967742 61.29032258 0.92741935 -38.70967742 64.51612903 0.12096774 -38.70967742 67.74193548 0.00000000 -38.70967742 70.96774194 0.00000000 -38.70967742 74.19354839 0.00000000 -38.70967742 77.41935484 0.00000000 -38.70967742 80.64516129 0.00000000 -38.70967742 83.87096774 0.00000000 -38.70967742 87.09677419 0.00000000 -38.70967742 90.32258065 0.00000000 -38.70967742 93.54838710 0.00000000 -38.70967742 96.77419355 0.00000000 -38.70967742 100.00000000 0.00000000 -48.38709677 0.00000000 5.00000000 -48.38709677 3.22580645 5.00000000 -48.38709677 6.45161290 5.00000000 -48.38709677 9.67741935 5.00000000 -48.38709677 12.90322581 5.00000000 -48.38709677 16.12903226 5.00000000 -48.38709677 19.35483871 5.00000000 -48.38709677 22.58064516 5.00000000 -48.38709677 25.80645161 5.00000000 -48.38709677 29.03225806 5.00000000 -48.38709677 32.25806452 5.00000000 -48.38709677 35.48387097 4.87903226 -48.38709677 38.70967742 4.07258065 -48.38709677 41.93548387 3.26612903 -48.38709677 45.16129032 2.50000000 -48.38709677 48.38709677 2.50000000 -48.38709677 51.61290323 2.50000000 -48.38709677 54.83870968 2.50000000 -48.38709677 58.06451613 1.73387097 -48.38709677 61.29032258 0.92741935 -48.38709677 64.51612903 0.12096774 -48.38709677 67.74193548 0.00000000 -48.38709677 70.96774194 0.00000000 -48.38709677 74.19354839 0.00000000 -48.38709677 77.41935484 0.00000000 -48.38709677 80.64516129 0.00000000 -48.38709677 83.87096774 0.00000000 -48.38709677 87.09677419 0.00000000 -48.38709677 90.32258065 0.00000000 -48.38709677 93.54838710 0.00000000 -48.38709677 96.77419355 0.00000000 -48.38709677 100.00000000 0.00000000 -58.06451613 0.00000000 5.00000000 -58.06451613 3.22580645 5.00000000 -58.06451613 6.45161290 5.00000000 -58.06451613 9.67741935 5.00000000 -58.06451613 12.90322581 5.00000000 -58.06451613 16.12903226 5.00000000 -58.06451613 19.35483871 5.00000000 -58.06451613 22.58064516 5.00000000 -58.06451613 25.80645161 5.00000000 -58.06451613 29.03225806 5.00000000 -58.06451613 32.25806452 5.00000000 -58.06451613 35.48387097 4.87903226 -58.06451613 38.70967742 4.07258065 -58.06451613 41.93548387 3.26612903 -58.06451613 45.16129032 2.50000000 -58.06451613 48.38709677 2.50000000 -58.06451613 51.61290323 2.50000000 -58.06451613 54.83870968 2.50000000 -58.06451613 58.06451613 1.73387097 -58.06451613 61.29032258 0.92741935 -58.06451613 64.51612903 0.12096774 -58.06451613 67.74193548 0.00000000 -58.06451613 70.96774194 0.00000000 -58.06451613 74.19354839 0.00000000 -58.06451613 77.41935484 0.00000000 -58.06451613 80.64516129 0.00000000 -58.06451613 83.87096774 0.00000000 -58.06451613 87.09677419 0.00000000 -58.06451613 90.32258065 0.00000000 -58.06451613 93.54838710 0.00000000 -58.06451613 96.77419355 0.00000000 -58.06451613 100.00000000 0.00000000 -67.74193548 0.00000000 5.00000000 -67.74193548 3.22580645 5.00000000 -67.74193548 6.45161290 5.00000000 -67.74193548 9.67741935 5.00000000 -67.74193548 12.90322581 5.00000000 -67.74193548 16.12903226 5.00000000 -67.74193548 19.35483871 5.00000000 -67.74193548 22.58064516 5.00000000 -67.74193548 25.80645161 5.00000000 -67.74193548 29.03225806 5.00000000 -67.74193548 32.25806452 5.00000000 -67.74193548 35.48387097 4.87903226 -67.74193548 38.70967742 4.07258065 -67.74193548 41.93548387 3.26612903 -67.74193548 45.16129032 2.50000000 -67.74193548 48.38709677 2.50000000 -67.74193548 51.61290323 2.50000000 -67.74193548 54.83870968 2.50000000 -67.74193548 58.06451613 1.73387097 -67.74193548 61.29032258 0.92741935 -67.74193548 64.51612903 0.12096774 -67.74193548 67.74193548 0.00000000 -67.74193548 70.96774194 0.00000000 -67.74193548 74.19354839 0.00000000 -67.74193548 77.41935484 0.00000000 -67.74193548 80.64516129 0.00000000 -67.74193548 83.87096774 0.00000000 -67.74193548 87.09677419 0.00000000 -67.74193548 90.32258065 0.00000000 -67.74193548 93.54838710 0.00000000 -67.74193548 96.77419355 0.00000000 -67.74193548 100.00000000 0.00000000 -77.41935484 0.00000000 5.00000000 -77.41935484 3.22580645 5.00000000 -77.41935484 6.45161290 5.00000000 -77.41935484 9.67741935 5.00000000 -77.41935484 12.90322581 5.00000000 -77.41935484 16.12903226 5.00000000 -77.41935484 19.35483871 5.00000000 -77.41935484 22.58064516 5.00000000 -77.41935484 25.80645161 5.00000000 -77.41935484 29.03225806 5.00000000 -77.41935484 32.25806452 5.00000000 -77.41935484 35.48387097 4.87903226 -77.41935484 38.70967742 4.07258065 -77.41935484 41.93548387 3.26612903 -77.41935484 45.16129032 2.50000000 -77.41935484 48.38709677 2.50000000 -77.41935484 51.61290323 2.50000000 -77.41935484 54.83870968 2.50000000 -77.41935484 58.06451613 1.73387097 -77.41935484 61.29032258 0.92741935 -77.41935484 64.51612903 0.12096774 -77.41935484 67.74193548 0.00000000 -77.41935484 70.96774194 0.00000000 -77.41935484 74.19354839 0.00000000 -77.41935484 77.41935484 0.00000000 -77.41935484 80.64516129 0.00000000 -77.41935484 83.87096774 0.00000000 -77.41935484 87.09677419 0.00000000 -77.41935484 90.32258065 0.00000000 -77.41935484 93.54838710 0.00000000 -77.41935484 96.77419355 0.00000000 -77.41935484 100.00000000 0.00000000 -87.09677419 0.00000000 5.00000000 -87.09677419 3.22580645 5.00000000 -87.09677419 6.45161290 5.00000000 -87.09677419 9.67741935 5.00000000 -87.09677419 12.90322581 5.00000000 -87.09677419 16.12903226 5.00000000 -87.09677419 19.35483871 5.00000000 -87.09677419 22.58064516 5.00000000 -87.09677419 25.80645161 5.00000000 -87.09677419 29.03225806 5.00000000 -87.09677419 32.25806452 5.00000000 -87.09677419 35.48387097 4.87903226 -87.09677419 38.70967742 4.07258065 -87.09677419 41.93548387 3.26612903 -87.09677419 45.16129032 2.50000000 -87.09677419 48.38709677 2.50000000 -87.09677419 51.61290323 2.50000000 -87.09677419 54.83870968 2.50000000 -87.09677419 58.06451613 1.73387097 -87.09677419 61.29032258 0.92741935 -87.09677419 64.51612903 0.12096774 -87.09677419 67.74193548 0.00000000 -87.09677419 70.96774194 0.00000000 -87.09677419 74.19354839 0.00000000 -87.09677419 77.41935484 0.00000000 -87.09677419 80.64516129 0.00000000 -87.09677419 83.87096774 0.00000000 -87.09677419 87.09677419 0.00000000 -87.09677419 90.32258065 0.00000000 -87.09677419 93.54838710 0.00000000 -87.09677419 96.77419355 0.00000000 -87.09677419 100.00000000 0.00000000 -96.77419355 0.00000000 5.00000000 -96.77419355 3.22580645 5.00000000 -96.77419355 6.45161290 5.00000000 -96.77419355 9.67741935 5.00000000 -96.77419355 12.90322581 5.00000000 -96.77419355 16.12903226 5.00000000 -96.77419355 19.35483871 5.00000000 -96.77419355 22.58064516 5.00000000 -96.77419355 25.80645161 5.00000000 -96.77419355 29.03225806 5.00000000 -96.77419355 32.25806452 5.00000000 -96.77419355 35.48387097 4.77941176 -96.77419355 38.70967742 3.94230769 -96.77419355 41.93548387 3.45000000 -96.77419355 45.16129032 2.50000000 -96.77419355 48.38709677 2.50000000 -96.77419355 51.61290323 2.50000000 -96.77419355 54.83870968 2.50000000 -96.77419355 58.06451613 2.02500000 -96.77419355 61.29032258 1.56250000 -96.77419355 64.51612903 0.99264706 -96.77419355 67.74193548 0.84677419 -96.77419355 70.96774194 0.84677419 -96.77419355 74.19354839 0.84677419 -96.77419355 77.41935484 0.84677419 -96.77419355 80.64516129 0.84677419 -96.77419355 83.87096774 0.84677419 -96.77419355 87.09677419 0.84677419 -96.77419355 90.32258065 0.84677419 -96.77419355 93.54838710 0.84677419 -96.77419355 96.77419355 0.84677419 -96.77419355 100.00000000 0.84677419 -106.45161290 0.00000000 5.00000000 -106.45161290 3.22580645 5.00000000 -106.45161290 6.45161290 5.00000000 -106.45161290 9.67741935 5.00000000 -106.45161290 12.90322581 5.00000000 -106.45161290 16.12903226 5.00000000 -106.45161290 19.35483871 5.00000000 -106.45161290 22.58064516 5.00000000 -106.45161290 25.80645161 5.00000000 -106.45161290 29.03225806 5.00000000 -106.45161290 32.25806452 5.00000000 -106.45161290 35.48387097 4.77941176 -106.45161290 38.70967742 3.98809524 -106.45161290 41.93548387 3.39285714 -106.45161290 45.16129032 2.50000000 -106.45161290 48.38709677 2.50000000 -106.45161290 51.61290323 2.50000000 -106.45161290 54.83870968 2.50000000 -106.45161290 58.06451613 2.17261905 -106.45161290 61.29032258 2.17261905 -106.45161290 64.51612903 2.09558824 -106.45161290 67.74193548 2.05645161 -106.45161290 70.96774194 2.05645161 -106.45161290 74.19354839 2.05645161 -106.45161290 77.41935484 2.05645161 -106.45161290 80.64516129 2.05645161 -106.45161290 83.87096774 2.05645161 -106.45161290 87.09677419 2.05645161 -106.45161290 90.32258065 2.05645161 -106.45161290 93.54838710 2.05645161 -106.45161290 96.77419355 2.05645161 -106.45161290 100.00000000 2.05645161 -116.12903226 0.00000000 5.00000000 -116.12903226 3.22580645 5.00000000 -116.12903226 6.45161290 5.00000000 -116.12903226 9.67741935 5.00000000 -116.12903226 12.90322581 5.00000000 -116.12903226 16.12903226 5.00000000 -116.12903226 19.35483871 5.00000000 -116.12903226 22.58064516 5.00000000 -116.12903226 25.80645161 5.00000000 -116.12903226 29.03225806 5.00000000 -116.12903226 32.25806452 5.00000000 -116.12903226 35.48387097 4.87903226 -116.12903226 38.70967742 4.07258065 -116.12903226 41.93548387 3.26612903 -116.12903226 45.16129032 2.50000000 -116.12903226 48.38709677 2.50000000 -116.12903226 51.61290323 2.50000000 -116.12903226 54.83870968 2.50000000 -116.12903226 58.06451613 2.50000000 -116.12903226 61.29032258 2.50000000 -116.12903226 64.51612903 2.50000000 -116.12903226 67.74193548 2.50000000 -116.12903226 70.96774194 2.50000000 -116.12903226 74.19354839 2.50000000 -116.12903226 77.41935484 2.50000000 -116.12903226 80.64516129 2.50000000 -116.12903226 83.87096774 2.50000000 -116.12903226 87.09677419 2.50000000 -116.12903226 90.32258065 2.50000000 -116.12903226 93.54838710 2.50000000 -116.12903226 96.77419355 2.50000000 -116.12903226 100.00000000 2.50000000 -125.80645161 0.00000000 5.72580645 -125.80645161 3.22580645 5.72580645 -125.80645161 6.45161290 5.72580645 -125.80645161 9.67741935 5.72580645 -125.80645161 12.90322581 5.72580645 -125.80645161 16.12903226 5.72580645 -125.80645161 19.35483871 5.72580645 -125.80645161 22.58064516 5.72580645 -125.80645161 25.80645161 5.72580645 -125.80645161 29.03225806 5.72580645 -125.80645161 32.25806452 5.72580645 -125.80645161 35.48387097 5.55147059 -125.80645161 38.70967742 4.87244898 -125.80645161 41.93548387 4.36224490 -125.80645161 45.16129032 3.22580645 -125.80645161 48.38709677 3.22580645 -125.80645161 51.61290323 3.22580645 -125.80645161 54.83870968 3.22580645 -125.80645161 58.06451613 2.95918367 -125.80645161 61.29032258 2.95918367 -125.80645161 64.51612903 2.61029412 -125.80645161 67.74193548 2.50000000 -125.80645161 70.96774194 2.50000000 -125.80645161 74.19354839 2.50000000 -125.80645161 77.41935484 2.50000000 -125.80645161 80.64516129 2.50000000 -125.80645161 83.87096774 2.50000000 -125.80645161 87.09677419 2.50000000 -125.80645161 90.32258065 2.50000000 -125.80645161 93.54838710 2.50000000 -125.80645161 96.77419355 2.50000000 -125.80645161 100.00000000 2.50000000 -135.48387097 0.00000000 6.93548387 -135.48387097 3.22580645 6.93548387 -135.48387097 6.45161290 6.93548387 -135.48387097 9.67741935 6.93548387 -135.48387097 12.90322581 6.93548387 -135.48387097 16.12903226 6.93548387 -135.48387097 19.35483871 6.93548387 -135.48387097 22.58064516 6.93548387 -135.48387097 25.80645161 6.93548387 -135.48387097 29.03225806 6.93548387 -135.48387097 32.25806452 6.93548387 -135.48387097 35.48387097 6.65441176 -135.48387097 38.70967742 5.69444444 -135.48387097 41.93548387 5.13888889 -135.48387097 45.16129032 4.43548387 -135.48387097 48.38709677 4.43548387 -135.48387097 51.61290323 4.43548387 -135.48387097 54.83870968 4.43548387 -135.48387097 58.06451613 3.69444444 -135.48387097 61.29032258 3.13888889 -135.48387097 64.51612903 2.61029412 -135.48387097 67.74193548 2.50000000 -135.48387097 70.96774194 2.50000000 -135.48387097 74.19354839 2.50000000 -135.48387097 77.41935484 2.50000000 -135.48387097 80.64516129 2.50000000 -135.48387097 83.87096774 2.50000000 -135.48387097 87.09677419 2.50000000 -135.48387097 90.32258065 2.50000000 -135.48387097 93.54838710 2.50000000 -135.48387097 96.77419355 2.50000000 -135.48387097 100.00000000 2.50000000 -145.16129032 0.00000000 7.50000000 -145.16129032 3.22580645 7.50000000 -145.16129032 6.45161290 7.50000000 -145.16129032 9.67741935 7.50000000 -145.16129032 12.90322581 7.50000000 -145.16129032 16.12903226 7.50000000 -145.16129032 19.35483871 7.50000000 -145.16129032 22.58064516 7.50000000 -145.16129032 25.80645161 7.50000000 -145.16129032 29.03225806 7.50000000 -145.16129032 32.25806452 7.50000000 -145.16129032 35.48387097 7.37903226 -145.16129032 38.70967742 6.57258065 -145.16129032 41.93548387 5.76612903 -145.16129032 45.16129032 5.00000000 -145.16129032 48.38709677 5.00000000 -145.16129032 51.61290323 5.00000000 -145.16129032 54.83870968 5.00000000 -145.16129032 58.06451613 4.23387097 -145.16129032 61.29032258 3.42741935 -145.16129032 64.51612903 2.62096774 -145.16129032 67.74193548 2.50000000 -145.16129032 70.96774194 2.50000000 -145.16129032 74.19354839 2.50000000 -145.16129032 77.41935484 2.50000000 -145.16129032 80.64516129 2.50000000 -145.16129032 83.87096774 2.50000000 -145.16129032 87.09677419 2.50000000 -145.16129032 90.32258065 2.50000000 -145.16129032 93.54838710 2.50000000 -145.16129032 96.77419355 2.50000000 -145.16129032 100.00000000 2.50000000 -154.83870968 0.00000000 7.50000000 -154.83870968 3.22580645 7.50000000 -154.83870968 6.45161290 7.50000000 -154.83870968 9.67741935 7.50000000 -154.83870968 12.90322581 7.50000000 -154.83870968 16.12903226 7.50000000 -154.83870968 19.35483871 7.50000000 -154.83870968 22.58064516 7.50000000 -154.83870968 25.80645161 7.50000000 -154.83870968 29.03225806 7.50000000 -154.83870968 32.25806452 7.50000000 -154.83870968 35.48387097 7.38970588 -154.83870968 38.70967742 6.87500000 -154.83870968 41.93548387 6.33152174 -154.83870968 45.16129032 5.60483871 -154.83870968 48.38709677 5.60483871 -154.83870968 51.61290323 5.60483871 -154.83870968 54.83870968 5.60483871 -154.83870968 58.06451613 4.89130435 -154.83870968 61.29032258 4.34782609 -154.83870968 64.51612903 3.38235294 -154.83870968 67.74193548 3.10483871 -154.83870968 70.96774194 3.10483871 -154.83870968 74.19354839 3.10483871 -154.83870968 77.41935484 3.10483871 -154.83870968 80.64516129 3.10483871 -154.83870968 83.87096774 3.10483871 -154.83870968 87.09677419 3.10483871 -154.83870968 90.32258065 3.10483871 -154.83870968 93.54838710 3.10483871 -154.83870968 96.77419355 3.10483871 -154.83870968 100.00000000 3.10483871 -164.51612903 0.00000000 7.50000000 -164.51612903 3.22580645 7.50000000 -164.51612903 6.45161290 7.50000000 -164.51612903 9.67741935 7.50000000 -164.51612903 12.90322581 7.50000000 -164.51612903 16.12903226 7.50000000 -164.51612903 19.35483871 7.50000000 -164.51612903 22.58064516 7.50000000 -164.51612903 25.80645161 7.50000000 -164.51612903 29.03225806 7.50000000 -164.51612903 32.25806452 7.50000000 -164.51612903 35.48387097 7.38970588 -164.51612903 38.70967742 7.05729167 -164.51612903 41.93548387 7.05729167 -164.51612903 45.16129032 6.81451613 -164.51612903 48.38709677 6.81451613 -164.51612903 51.61290323 6.81451613 -164.51612903 54.83870968 6.81451613 -164.51612903 58.06451613 5.67708333 -164.51612903 61.29032258 5.15625000 -164.51612903 64.51612903 4.48529412 -164.51612903 67.74193548 4.31451613 -164.51612903 70.96774194 4.31451613 -164.51612903 74.19354839 4.31451613 -164.51612903 77.41935484 4.31451613 -164.51612903 80.64516129 4.31451613 -164.51612903 83.87096774 4.31451613 -164.51612903 87.09677419 4.31451613 -164.51612903 90.32258065 4.31451613 -164.51612903 93.54838710 4.31451613 -164.51612903 96.77419355 4.31451613 -164.51612903 100.00000000 4.31451613 -174.19354839 0.00000000 7.50000000 -174.19354839 3.22580645 7.50000000 -174.19354839 6.45161290 7.50000000 -174.19354839 9.67741935 7.50000000 -174.19354839 12.90322581 7.50000000 -174.19354839 16.12903226 7.50000000 -174.19354839 19.35483871 7.50000000 -174.19354839 22.58064516 7.50000000 -174.19354839 25.80645161 7.50000000 -174.19354839 29.03225806 7.50000000 -174.19354839 32.25806452 7.50000000 -174.19354839 35.48387097 7.50000000 -174.19354839 38.70967742 7.50000000 -174.19354839 41.93548387 7.50000000 -174.19354839 45.16129032 7.50000000 -174.19354839 48.38709677 7.50000000 -174.19354839 51.61290323 7.50000000 -174.19354839 54.83870968 7.50000000 -174.19354839 58.06451613 6.73387097 -174.19354839 61.29032258 5.92741935 -174.19354839 64.51612903 5.12096774 -174.19354839 67.74193548 5.00000000 -174.19354839 70.96774194 5.00000000 -174.19354839 74.19354839 5.00000000 -174.19354839 77.41935484 5.00000000 -174.19354839 80.64516129 5.00000000 -174.19354839 83.87096774 5.00000000 -174.19354839 87.09677419 5.00000000 -174.19354839 90.32258065 5.00000000 -174.19354839 93.54838710 5.00000000 -174.19354839 96.77419355 5.00000000 -174.19354839 100.00000000 5.00000000 -183.87096774 0.00000000 7.98387097 -183.87096774 3.22580645 7.98387097 -183.87096774 6.45161290 7.98387097 -183.87096774 9.67741935 7.98387097 -183.87096774 12.90322581 7.98387097 -183.87096774 16.12903226 7.98387097 -183.87096774 19.35483871 7.98387097 -183.87096774 22.58064516 7.98387097 -183.87096774 25.80645161 7.98387097 -183.87096774 29.03225806 7.98387097 -183.87096774 32.25806452 7.98387097 -183.87096774 35.48387097 7.94117647 -183.87096774 38.70967742 7.84883721 -183.87096774 41.93548387 7.84883721 -183.87096774 45.16129032 7.50000000 -183.87096774 48.38709677 7.50000000 -183.87096774 51.61290323 7.50000000 -183.87096774 54.83870968 7.50000000 -183.87096774 58.06451613 6.59883721 -183.87096774 61.29032258 6.01744186 -183.87096774 64.51612903 5.22058824 -183.87096774 67.74193548 5.00000000 -183.87096774 70.96774194 5.00000000 -183.87096774 74.19354839 5.00000000 -183.87096774 77.41935484 5.00000000 -183.87096774 80.64516129 5.00000000 -183.87096774 83.87096774 5.00000000 -183.87096774 87.09677419 5.00000000 -183.87096774 90.32258065 5.00000000 -183.87096774 93.54838710 5.00000000 -183.87096774 96.77419355 5.00000000 -183.87096774 100.00000000 5.00000000 -193.54838710 0.00000000 9.19354839 -193.54838710 3.22580645 9.19354839 -193.54838710 6.45161290 9.19354839 -193.54838710 9.67741935 9.19354839 -193.54838710 12.90322581 9.19354839 -193.54838710 16.12903226 9.19354839 -193.54838710 19.35483871 9.19354839 -193.54838710 22.58064516 9.19354839 -193.54838710 25.80645161 9.19354839 -193.54838710 29.03225806 9.19354839 -193.54838710 32.25806452 9.19354839 -193.54838710 35.48387097 9.04411765 -193.54838710 38.70967742 8.45588235 -193.54838710 41.93548387 7.97500000 -193.54838710 45.16129032 7.50000000 -193.54838710 48.38709677 7.50000000 -193.54838710 51.61290323 7.50000000 -193.54838710 54.83870968 7.50000000 -193.54838710 58.06451613 6.55000000 -193.54838710 61.29032258 6.05392157 -193.54838710 64.51612903 5.22058824 -193.54838710 67.74193548 5.00000000 -193.54838710 70.96774194 5.00000000 -193.54838710 74.19354839 5.00000000 -193.54838710 77.41935484 5.00000000 -193.54838710 80.64516129 5.00000000 -193.54838710 83.87096774 5.00000000 -193.54838710 87.09677419 5.00000000 -193.54838710 90.32258065 5.00000000 -193.54838710 93.54838710 5.00000000 -193.54838710 96.77419355 5.00000000 -193.54838710 100.00000000 5.00000000 -203.22580645 0.00000000 10.00000000 -203.22580645 3.22580645 10.00000000 -203.22580645 6.45161290 10.00000000 -203.22580645 9.67741935 10.00000000 -203.22580645 12.90322581 10.00000000 -203.22580645 16.12903226 10.00000000 -203.22580645 19.35483871 10.00000000 -203.22580645 22.58064516 10.00000000 -203.22580645 25.80645161 10.00000000 -203.22580645 29.03225806 10.00000000 -203.22580645 32.25806452 10.00000000 -203.22580645 35.48387097 9.87903226 -203.22580645 38.70967742 9.07258065 -203.22580645 41.93548387 8.26612903 -203.22580645 45.16129032 7.50000000 -203.22580645 48.38709677 7.50000000 -203.22580645 51.61290323 7.50000000 -203.22580645 54.83870968 7.50000000 -203.22580645 58.06451613 6.73387097 -203.22580645 61.29032258 5.92741935 -203.22580645 64.51612903 5.12096774 -203.22580645 67.74193548 5.00000000 -203.22580645 70.96774194 5.00000000 -203.22580645 74.19354839 5.00000000 -203.22580645 77.41935484 5.00000000 -203.22580645 80.64516129 5.00000000 -203.22580645 83.87096774 5.00000000 -203.22580645 87.09677419 5.00000000 -203.22580645 90.32258065 5.00000000 -203.22580645 93.54838710 5.00000000 -203.22580645 96.77419355 5.00000000 -203.22580645 100.00000000 5.00000000 -212.90322581 0.00000000 10.00000000 -212.90322581 3.22580645 10.00000000 -212.90322581 6.45161290 10.00000000 -212.90322581 9.67741935 10.00000000 -212.90322581 12.90322581 10.00000000 -212.90322581 16.12903226 10.00000000 -212.90322581 19.35483871 10.00000000 -212.90322581 22.58064516 10.00000000 -212.90322581 25.80645161 10.00000000 -212.90322581 29.03225806 10.00000000 -212.90322581 32.25806452 10.00000000 -212.90322581 35.48387097 9.87903226 -212.90322581 38.70967742 9.07258065 -212.90322581 41.93548387 8.26612903 -212.90322581 45.16129032 7.50000000 -212.90322581 48.38709677 7.50000000 -212.90322581 51.61290323 7.50000000 -212.90322581 54.83870968 7.50000000 -212.90322581 58.06451613 6.73387097 -212.90322581 61.29032258 5.92741935 -212.90322581 64.51612903 5.12096774 -212.90322581 67.74193548 5.00000000 -212.90322581 70.96774194 5.00000000 -212.90322581 74.19354839 5.00000000 -212.90322581 77.41935484 5.00000000 -212.90322581 80.64516129 5.00000000 -212.90322581 83.87096774 5.00000000 -212.90322581 87.09677419 5.00000000 -212.90322581 90.32258065 5.00000000 -212.90322581 93.54838710 5.00000000 -212.90322581 96.77419355 5.00000000 -212.90322581 100.00000000 5.00000000 -222.58064516 0.00000000 10.00000000 -222.58064516 3.22580645 10.00000000 -222.58064516 6.45161290 10.00000000 -222.58064516 9.67741935 10.00000000 -222.58064516 12.90322581 10.00000000 -222.58064516 16.12903226 10.00000000 -222.58064516 19.35483871 10.00000000 -222.58064516 22.58064516 10.00000000 -222.58064516 25.80645161 10.00000000 -222.58064516 29.03225806 10.00000000 -222.58064516 32.25806452 10.00000000 -222.58064516 35.48387097 9.87903226 -222.58064516 38.70967742 9.07258065 -222.58064516 41.93548387 8.26612903 -222.58064516 45.16129032 7.50000000 -222.58064516 48.38709677 7.50000000 -222.58064516 51.61290323 7.50000000 -222.58064516 54.83870968 7.50000000 -222.58064516 58.06451613 6.73387097 -222.58064516 61.29032258 5.92741935 -222.58064516 64.51612903 5.12096774 -222.58064516 67.74193548 5.00000000 -222.58064516 70.96774194 5.00000000 -222.58064516 74.19354839 5.00000000 -222.58064516 77.41935484 5.00000000 -222.58064516 80.64516129 5.00000000 -222.58064516 83.87096774 5.00000000 -222.58064516 87.09677419 5.00000000 -222.58064516 90.32258065 5.00000000 -222.58064516 93.54838710 5.00000000 -222.58064516 96.77419355 5.00000000 -222.58064516 100.00000000 5.00000000 -232.25806452 0.00000000 10.00000000 -232.25806452 3.22580645 10.00000000 -232.25806452 6.45161290 10.00000000 -232.25806452 9.67741935 10.00000000 -232.25806452 12.90322581 10.00000000 -232.25806452 16.12903226 10.00000000 -232.25806452 19.35483871 10.00000000 -232.25806452 22.58064516 10.00000000 -232.25806452 25.80645161 10.00000000 -232.25806452 29.03225806 10.00000000 -232.25806452 32.25806452 10.00000000 -232.25806452 35.48387097 9.87903226 -232.25806452 38.70967742 9.07258065 -232.25806452 41.93548387 8.26612903 -232.25806452 45.16129032 7.50000000 -232.25806452 48.38709677 7.50000000 -232.25806452 51.61290323 7.50000000 -232.25806452 54.83870968 7.50000000 -232.25806452 58.06451613 6.73387097 -232.25806452 61.29032258 5.92741935 -232.25806452 64.51612903 5.12096774 -232.25806452 67.74193548 5.00000000 -232.25806452 70.96774194 5.00000000 -232.25806452 74.19354839 5.00000000 -232.25806452 77.41935484 5.00000000 -232.25806452 80.64516129 5.00000000 -232.25806452 83.87096774 5.00000000 -232.25806452 87.09677419 5.00000000 -232.25806452 90.32258065 5.00000000 -232.25806452 93.54838710 5.00000000 -232.25806452 96.77419355 5.00000000 -232.25806452 100.00000000 5.00000000 -241.93548387 0.00000000 10.00000000 -241.93548387 3.22580645 10.00000000 -241.93548387 6.45161290 10.00000000 -241.93548387 9.67741935 10.00000000 -241.93548387 12.90322581 10.00000000 -241.93548387 16.12903226 10.00000000 -241.93548387 19.35483871 10.00000000 -241.93548387 22.58064516 10.00000000 -241.93548387 25.80645161 10.00000000 -241.93548387 29.03225806 10.00000000 -241.93548387 32.25806452 10.00000000 -241.93548387 35.48387097 9.87903226 -241.93548387 38.70967742 9.07258065 -241.93548387 41.93548387 8.26612903 -241.93548387 45.16129032 7.50000000 -241.93548387 48.38709677 7.50000000 -241.93548387 51.61290323 7.50000000 -241.93548387 54.83870968 7.50000000 -241.93548387 58.06451613 6.73387097 -241.93548387 61.29032258 5.92741935 -241.93548387 64.51612903 5.12096774 -241.93548387 67.74193548 5.00000000 -241.93548387 70.96774194 5.00000000 -241.93548387 74.19354839 5.00000000 -241.93548387 77.41935484 5.00000000 -241.93548387 80.64516129 5.00000000 -241.93548387 83.87096774 5.00000000 -241.93548387 87.09677419 5.00000000 -241.93548387 90.32258065 5.00000000 -241.93548387 93.54838710 5.00000000 -241.93548387 96.77419355 5.00000000 -241.93548387 100.00000000 5.00000000 -251.61290323 0.00000000 10.00000000 -251.61290323 3.22580645 10.00000000 -251.61290323 6.45161290 10.00000000 -251.61290323 9.67741935 10.00000000 -251.61290323 12.90322581 10.00000000 -251.61290323 16.12903226 10.00000000 -251.61290323 19.35483871 10.00000000 -251.61290323 22.58064516 10.00000000 -251.61290323 25.80645161 10.00000000 -251.61290323 29.03225806 10.00000000 -251.61290323 32.25806452 10.00000000 -251.61290323 35.48387097 9.87903226 -251.61290323 38.70967742 9.07258065 -251.61290323 41.93548387 8.26612903 -251.61290323 45.16129032 7.50000000 -251.61290323 48.38709677 7.50000000 -251.61290323 51.61290323 7.50000000 -251.61290323 54.83870968 7.50000000 -251.61290323 58.06451613 6.73387097 -251.61290323 61.29032258 5.92741935 -251.61290323 64.51612903 5.12096774 -251.61290323 67.74193548 5.00000000 -251.61290323 70.96774194 5.00000000 -251.61290323 74.19354839 5.00000000 -251.61290323 77.41935484 5.00000000 -251.61290323 80.64516129 5.00000000 -251.61290323 83.87096774 5.00000000 -251.61290323 87.09677419 5.00000000 -251.61290323 90.32258065 5.00000000 -251.61290323 93.54838710 5.00000000 -251.61290323 96.77419355 5.00000000 -251.61290323 100.00000000 5.00000000 -261.29032258 0.00000000 10.00000000 -261.29032258 3.22580645 10.00000000 -261.29032258 6.45161290 10.00000000 -261.29032258 9.67741935 10.00000000 -261.29032258 12.90322581 10.00000000 -261.29032258 16.12903226 10.00000000 -261.29032258 19.35483871 10.00000000 -261.29032258 22.58064516 10.00000000 -261.29032258 25.80645161 10.00000000 -261.29032258 29.03225806 10.00000000 -261.29032258 32.25806452 10.00000000 -261.29032258 35.48387097 9.87903226 -261.29032258 38.70967742 9.07258065 -261.29032258 41.93548387 8.26612903 -261.29032258 45.16129032 7.50000000 -261.29032258 48.38709677 7.50000000 -261.29032258 51.61290323 7.50000000 -261.29032258 54.83870968 7.50000000 -261.29032258 58.06451613 6.73387097 -261.29032258 61.29032258 5.92741935 -261.29032258 64.51612903 5.12096774 -261.29032258 67.74193548 5.00000000 -261.29032258 70.96774194 5.00000000 -261.29032258 74.19354839 5.00000000 -261.29032258 77.41935484 5.00000000 -261.29032258 80.64516129 5.00000000 -261.29032258 83.87096774 5.00000000 -261.29032258 87.09677419 5.00000000 -261.29032258 90.32258065 5.00000000 -261.29032258 93.54838710 5.00000000 -261.29032258 96.77419355 5.00000000 -261.29032258 100.00000000 5.00000000 -270.96774194 0.00000000 10.00000000 -270.96774194 3.22580645 10.00000000 -270.96774194 6.45161290 10.00000000 -270.96774194 9.67741935 10.00000000 -270.96774194 12.90322581 10.00000000 -270.96774194 16.12903226 10.00000000 -270.96774194 19.35483871 10.00000000 -270.96774194 22.58064516 10.00000000 -270.96774194 25.80645161 10.00000000 -270.96774194 29.03225806 10.00000000 -270.96774194 32.25806452 10.00000000 -270.96774194 35.48387097 9.87903226 -270.96774194 38.70967742 9.07258065 -270.96774194 41.93548387 8.26612903 -270.96774194 45.16129032 7.50000000 -270.96774194 48.38709677 7.50000000 -270.96774194 51.61290323 7.50000000 -270.96774194 54.83870968 7.50000000 -270.96774194 58.06451613 6.73387097 -270.96774194 61.29032258 5.92741935 -270.96774194 64.51612903 5.12096774 -270.96774194 67.74193548 5.00000000 -270.96774194 70.96774194 5.00000000 -270.96774194 74.19354839 5.00000000 -270.96774194 77.41935484 5.00000000 -270.96774194 80.64516129 5.00000000 -270.96774194 83.87096774 5.00000000 -270.96774194 87.09677419 5.00000000 -270.96774194 90.32258065 5.00000000 -270.96774194 93.54838710 5.00000000 -270.96774194 96.77419355 5.00000000 -270.96774194 100.00000000 5.00000000 -280.64516129 0.00000000 10.00000000 -280.64516129 3.22580645 10.00000000 -280.64516129 6.45161290 10.00000000 -280.64516129 9.67741935 10.00000000 -280.64516129 12.90322581 10.00000000 -280.64516129 16.12903226 10.00000000 -280.64516129 19.35483871 10.00000000 -280.64516129 22.58064516 10.00000000 -280.64516129 25.80645161 10.00000000 -280.64516129 29.03225806 10.00000000 -280.64516129 32.25806452 10.00000000 -280.64516129 35.48387097 9.87903226 -280.64516129 38.70967742 9.07258065 -280.64516129 41.93548387 8.26612903 -280.64516129 45.16129032 7.50000000 -280.64516129 48.38709677 7.50000000 -280.64516129 51.61290323 7.50000000 -280.64516129 54.83870968 7.50000000 -280.64516129 58.06451613 6.73387097 -280.64516129 61.29032258 5.92741935 -280.64516129 64.51612903 5.12096774 -280.64516129 67.74193548 5.00000000 -280.64516129 70.96774194 5.00000000 -280.64516129 74.19354839 5.00000000 -280.64516129 77.41935484 5.00000000 -280.64516129 80.64516129 5.00000000 -280.64516129 83.87096774 5.00000000 -280.64516129 87.09677419 5.00000000 -280.64516129 90.32258065 5.00000000 -280.64516129 93.54838710 5.00000000 -280.64516129 96.77419355 5.00000000 -280.64516129 100.00000000 5.00000000 -290.32258065 0.00000000 10.00000000 -290.32258065 3.22580645 10.00000000 -290.32258065 6.45161290 10.00000000 -290.32258065 9.67741935 10.00000000 -290.32258065 12.90322581 10.00000000 -290.32258065 16.12903226 10.00000000 -290.32258065 19.35483871 10.00000000 -290.32258065 22.58064516 10.00000000 -290.32258065 25.80645161 10.00000000 -290.32258065 29.03225806 10.00000000 -290.32258065 32.25806452 10.00000000 -290.32258065 35.48387097 9.87903226 -290.32258065 38.70967742 9.07258065 -290.32258065 41.93548387 8.26612903 -290.32258065 45.16129032 7.50000000 -290.32258065 48.38709677 7.50000000 -290.32258065 51.61290323 7.50000000 -290.32258065 54.83870968 7.50000000 -290.32258065 58.06451613 6.73387097 -290.32258065 61.29032258 5.92741935 -290.32258065 64.51612903 5.12096774 -290.32258065 67.74193548 5.00000000 -290.32258065 70.96774194 5.00000000 -290.32258065 74.19354839 5.00000000 -290.32258065 77.41935484 5.00000000 -290.32258065 80.64516129 5.00000000 -290.32258065 83.87096774 5.00000000 -290.32258065 87.09677419 5.00000000 -290.32258065 90.32258065 5.00000000 -290.32258065 93.54838710 5.00000000 -290.32258065 96.77419355 5.00000000 -290.32258065 100.00000000 5.00000000 -300.00000000 0.00000000 10.00000000 -300.00000000 3.22580645 10.00000000 -300.00000000 6.45161290 10.00000000 -300.00000000 9.67741935 10.00000000 -300.00000000 12.90322581 10.00000000 -300.00000000 16.12903226 10.00000000 -300.00000000 19.35483871 10.00000000 -300.00000000 22.58064516 10.00000000 -300.00000000 25.80645161 10.00000000 -300.00000000 29.03225806 10.00000000 -300.00000000 32.25806452 10.00000000 -300.00000000 35.48387097 9.87903226 -300.00000000 38.70967742 9.07258065 -300.00000000 41.93548387 8.26612903 -300.00000000 45.16129032 7.50000000 -300.00000000 48.38709677 7.50000000 -300.00000000 51.61290323 7.50000000 -300.00000000 54.83870968 7.50000000 -300.00000000 58.06451613 6.73387097 -300.00000000 61.29032258 5.92741935 -300.00000000 64.51612903 5.12096774 -300.00000000 67.74193548 5.00000000 -300.00000000 70.96774194 5.00000000 -300.00000000 74.19354839 5.00000000 -300.00000000 77.41935484 5.00000000 -300.00000000 80.64516129 5.00000000 -300.00000000 83.87096774 5.00000000 -300.00000000 87.09677419 5.00000000 -300.00000000 90.32258065 5.00000000 -300.00000000 93.54838710 5.00000000 -300.00000000 96.77419355 5.00000000 -300.00000000 100.00000000 5.00000000 +LDLLevel HDLLevel HeartDiseaseRisk +0.000000000 0.000000000 5.000000000 +0.000000000 3.225806452 5.000000000 +0.000000000 6.451612903 5.000000000 +0.000000000 9.677419355 5.000000000 +0.000000000 12.903225806 5.000000000 +0.000000000 16.129032258 5.000000000 +0.000000000 19.354838710 5.000000000 +0.000000000 22.580645161 5.000000000 +0.000000000 25.806451613 5.000000000 +0.000000000 29.032258065 5.000000000 +0.000000000 32.258064516 5.000000000 +0.000000000 35.483870968 4.879032258 +0.000000000 38.709677419 4.072580645 +0.000000000 41.935483871 3.266129032 +0.000000000 45.161290323 2.500000000 +0.000000000 48.387096774 2.500000000 +0.000000000 51.612903226 2.500000000 +0.000000000 54.838709677 2.500000000 +0.000000000 58.064516129 1.733870968 +0.000000000 61.290322581 0.927419355 +0.000000000 64.516129032 0.120967742 +0.000000000 67.741935484 0.000000000 +0.000000000 70.967741935 0.000000000 +0.000000000 74.193548387 0.000000000 +0.000000000 77.419354839 0.000000000 +0.000000000 80.645161290 0.000000000 +0.000000000 83.870967742 0.000000000 +0.000000000 87.096774194 0.000000000 +0.000000000 90.322580645 0.000000000 +0.000000000 93.548387097 0.000000000 +0.000000000 96.774193548 0.000000000 +0.000000000 100.000000000 0.000000000 +9.677419355 0.000000000 5.000000000 +9.677419355 3.225806452 5.000000000 +9.677419355 6.451612903 5.000000000 +9.677419355 9.677419355 5.000000000 +9.677419355 12.903225806 5.000000000 +9.677419355 16.129032258 5.000000000 +9.677419355 19.354838710 5.000000000 +9.677419355 22.580645161 5.000000000 +9.677419355 25.806451613 5.000000000 +9.677419355 29.032258065 5.000000000 +9.677419355 32.258064516 5.000000000 +9.677419355 35.483870968 4.879032258 +9.677419355 38.709677419 4.072580645 +9.677419355 41.935483871 3.266129032 +9.677419355 45.161290323 2.500000000 +9.677419355 48.387096774 2.500000000 +9.677419355 51.612903226 2.500000000 +9.677419355 54.838709677 2.500000000 +9.677419355 58.064516129 1.733870968 +9.677419355 61.290322581 0.927419355 +9.677419355 64.516129032 0.120967742 +9.677419355 67.741935484 0.000000000 +9.677419355 70.967741935 0.000000000 +9.677419355 74.193548387 0.000000000 +9.677419355 77.419354839 0.000000000 +9.677419355 80.645161290 0.000000000 +9.677419355 83.870967742 0.000000000 +9.677419355 87.096774194 0.000000000 +9.677419355 90.322580645 0.000000000 +9.677419355 93.548387097 0.000000000 +9.677419355 96.774193548 0.000000000 +9.677419355 100.000000000 0.000000000 +19.354838710 0.000000000 5.000000000 +19.354838710 3.225806452 5.000000000 +19.354838710 6.451612903 5.000000000 +19.354838710 9.677419355 5.000000000 +19.354838710 12.903225806 5.000000000 +19.354838710 16.129032258 5.000000000 +19.354838710 19.354838710 5.000000000 +19.354838710 22.580645161 5.000000000 +19.354838710 25.806451613 5.000000000 +19.354838710 29.032258065 5.000000000 +19.354838710 32.258064516 5.000000000 +19.354838710 35.483870968 4.879032258 +19.354838710 38.709677419 4.072580645 +19.354838710 41.935483871 3.266129032 +19.354838710 45.161290323 2.500000000 +19.354838710 48.387096774 2.500000000 +19.354838710 51.612903226 2.500000000 +19.354838710 54.838709677 2.500000000 +19.354838710 58.064516129 1.733870968 +19.354838710 61.290322581 0.927419355 +19.354838710 64.516129032 0.120967742 +19.354838710 67.741935484 0.000000000 +19.354838710 70.967741935 0.000000000 +19.354838710 74.193548387 0.000000000 +19.354838710 77.419354839 0.000000000 +19.354838710 80.645161290 0.000000000 +19.354838710 83.870967742 0.000000000 +19.354838710 87.096774194 0.000000000 +19.354838710 90.322580645 0.000000000 +19.354838710 93.548387097 0.000000000 +19.354838710 96.774193548 0.000000000 +19.354838710 100.000000000 0.000000000 +29.032258065 0.000000000 5.000000000 +29.032258065 3.225806452 5.000000000 +29.032258065 6.451612903 5.000000000 +29.032258065 9.677419355 5.000000000 +29.032258065 12.903225806 5.000000000 +29.032258065 16.129032258 5.000000000 +29.032258065 19.354838710 5.000000000 +29.032258065 22.580645161 5.000000000 +29.032258065 25.806451613 5.000000000 +29.032258065 29.032258065 5.000000000 +29.032258065 32.258064516 5.000000000 +29.032258065 35.483870968 4.879032258 +29.032258065 38.709677419 4.072580645 +29.032258065 41.935483871 3.266129032 +29.032258065 45.161290323 2.500000000 +29.032258065 48.387096774 2.500000000 +29.032258065 51.612903226 2.500000000 +29.032258065 54.838709677 2.500000000 +29.032258065 58.064516129 1.733870968 +29.032258065 61.290322581 0.927419355 +29.032258065 64.516129032 0.120967742 +29.032258065 67.741935484 0.000000000 +29.032258065 70.967741935 0.000000000 +29.032258065 74.193548387 0.000000000 +29.032258065 77.419354839 0.000000000 +29.032258065 80.645161290 0.000000000 +29.032258065 83.870967742 0.000000000 +29.032258065 87.096774194 0.000000000 +29.032258065 90.322580645 0.000000000 +29.032258065 93.548387097 0.000000000 +29.032258065 96.774193548 0.000000000 +29.032258065 100.000000000 0.000000000 +38.709677419 0.000000000 5.000000000 +38.709677419 3.225806452 5.000000000 +38.709677419 6.451612903 5.000000000 +38.709677419 9.677419355 5.000000000 +38.709677419 12.903225806 5.000000000 +38.709677419 16.129032258 5.000000000 +38.709677419 19.354838710 5.000000000 +38.709677419 22.580645161 5.000000000 +38.709677419 25.806451613 5.000000000 +38.709677419 29.032258065 5.000000000 +38.709677419 32.258064516 5.000000000 +38.709677419 35.483870968 4.879032258 +38.709677419 38.709677419 4.072580645 +38.709677419 41.935483871 3.266129032 +38.709677419 45.161290323 2.500000000 +38.709677419 48.387096774 2.500000000 +38.709677419 51.612903226 2.500000000 +38.709677419 54.838709677 2.500000000 +38.709677419 58.064516129 1.733870968 +38.709677419 61.290322581 0.927419355 +38.709677419 64.516129032 0.120967742 +38.709677419 67.741935484 0.000000000 +38.709677419 70.967741935 0.000000000 +38.709677419 74.193548387 0.000000000 +38.709677419 77.419354839 0.000000000 +38.709677419 80.645161290 0.000000000 +38.709677419 83.870967742 0.000000000 +38.709677419 87.096774194 0.000000000 +38.709677419 90.322580645 0.000000000 +38.709677419 93.548387097 0.000000000 +38.709677419 96.774193548 0.000000000 +38.709677419 100.000000000 0.000000000 +48.387096774 0.000000000 5.000000000 +48.387096774 3.225806452 5.000000000 +48.387096774 6.451612903 5.000000000 +48.387096774 9.677419355 5.000000000 +48.387096774 12.903225806 5.000000000 +48.387096774 16.129032258 5.000000000 +48.387096774 19.354838710 5.000000000 +48.387096774 22.580645161 5.000000000 +48.387096774 25.806451613 5.000000000 +48.387096774 29.032258065 5.000000000 +48.387096774 32.258064516 5.000000000 +48.387096774 35.483870968 4.879032258 +48.387096774 38.709677419 4.072580645 +48.387096774 41.935483871 3.266129032 +48.387096774 45.161290323 2.500000000 +48.387096774 48.387096774 2.500000000 +48.387096774 51.612903226 2.500000000 +48.387096774 54.838709677 2.500000000 +48.387096774 58.064516129 1.733870968 +48.387096774 61.290322581 0.927419355 +48.387096774 64.516129032 0.120967742 +48.387096774 67.741935484 0.000000000 +48.387096774 70.967741935 0.000000000 +48.387096774 74.193548387 0.000000000 +48.387096774 77.419354839 0.000000000 +48.387096774 80.645161290 0.000000000 +48.387096774 83.870967742 0.000000000 +48.387096774 87.096774194 0.000000000 +48.387096774 90.322580645 0.000000000 +48.387096774 93.548387097 0.000000000 +48.387096774 96.774193548 0.000000000 +48.387096774 100.000000000 0.000000000 +58.064516129 0.000000000 5.000000000 +58.064516129 3.225806452 5.000000000 +58.064516129 6.451612903 5.000000000 +58.064516129 9.677419355 5.000000000 +58.064516129 12.903225806 5.000000000 +58.064516129 16.129032258 5.000000000 +58.064516129 19.354838710 5.000000000 +58.064516129 22.580645161 5.000000000 +58.064516129 25.806451613 5.000000000 +58.064516129 29.032258065 5.000000000 +58.064516129 32.258064516 5.000000000 +58.064516129 35.483870968 4.879032258 +58.064516129 38.709677419 4.072580645 +58.064516129 41.935483871 3.266129032 +58.064516129 45.161290323 2.500000000 +58.064516129 48.387096774 2.500000000 +58.064516129 51.612903226 2.500000000 +58.064516129 54.838709677 2.500000000 +58.064516129 58.064516129 1.733870968 +58.064516129 61.290322581 0.927419355 +58.064516129 64.516129032 0.120967742 +58.064516129 67.741935484 0.000000000 +58.064516129 70.967741935 0.000000000 +58.064516129 74.193548387 0.000000000 +58.064516129 77.419354839 0.000000000 +58.064516129 80.645161290 0.000000000 +58.064516129 83.870967742 0.000000000 +58.064516129 87.096774194 0.000000000 +58.064516129 90.322580645 0.000000000 +58.064516129 93.548387097 0.000000000 +58.064516129 96.774193548 0.000000000 +58.064516129 100.000000000 0.000000000 +67.741935484 0.000000000 5.000000000 +67.741935484 3.225806452 5.000000000 +67.741935484 6.451612903 5.000000000 +67.741935484 9.677419355 5.000000000 +67.741935484 12.903225806 5.000000000 +67.741935484 16.129032258 5.000000000 +67.741935484 19.354838710 5.000000000 +67.741935484 22.580645161 5.000000000 +67.741935484 25.806451613 5.000000000 +67.741935484 29.032258065 5.000000000 +67.741935484 32.258064516 5.000000000 +67.741935484 35.483870968 4.879032258 +67.741935484 38.709677419 4.072580645 +67.741935484 41.935483871 3.266129032 +67.741935484 45.161290323 2.500000000 +67.741935484 48.387096774 2.500000000 +67.741935484 51.612903226 2.500000000 +67.741935484 54.838709677 2.500000000 +67.741935484 58.064516129 1.733870968 +67.741935484 61.290322581 0.927419355 +67.741935484 64.516129032 0.120967742 +67.741935484 67.741935484 0.000000000 +67.741935484 70.967741935 0.000000000 +67.741935484 74.193548387 0.000000000 +67.741935484 77.419354839 0.000000000 +67.741935484 80.645161290 0.000000000 +67.741935484 83.870967742 0.000000000 +67.741935484 87.096774194 0.000000000 +67.741935484 90.322580645 0.000000000 +67.741935484 93.548387097 0.000000000 +67.741935484 96.774193548 0.000000000 +67.741935484 100.000000000 0.000000000 +77.419354839 0.000000000 5.000000000 +77.419354839 3.225806452 5.000000000 +77.419354839 6.451612903 5.000000000 +77.419354839 9.677419355 5.000000000 +77.419354839 12.903225806 5.000000000 +77.419354839 16.129032258 5.000000000 +77.419354839 19.354838710 5.000000000 +77.419354839 22.580645161 5.000000000 +77.419354839 25.806451613 5.000000000 +77.419354839 29.032258065 5.000000000 +77.419354839 32.258064516 5.000000000 +77.419354839 35.483870968 4.879032258 +77.419354839 38.709677419 4.072580645 +77.419354839 41.935483871 3.266129032 +77.419354839 45.161290323 2.500000000 +77.419354839 48.387096774 2.500000000 +77.419354839 51.612903226 2.500000000 +77.419354839 54.838709677 2.500000000 +77.419354839 58.064516129 1.733870968 +77.419354839 61.290322581 0.927419355 +77.419354839 64.516129032 0.120967742 +77.419354839 67.741935484 0.000000000 +77.419354839 70.967741935 0.000000000 +77.419354839 74.193548387 0.000000000 +77.419354839 77.419354839 0.000000000 +77.419354839 80.645161290 0.000000000 +77.419354839 83.870967742 0.000000000 +77.419354839 87.096774194 0.000000000 +77.419354839 90.322580645 0.000000000 +77.419354839 93.548387097 0.000000000 +77.419354839 96.774193548 0.000000000 +77.419354839 100.000000000 0.000000000 +87.096774194 0.000000000 5.000000000 +87.096774194 3.225806452 5.000000000 +87.096774194 6.451612903 5.000000000 +87.096774194 9.677419355 5.000000000 +87.096774194 12.903225806 5.000000000 +87.096774194 16.129032258 5.000000000 +87.096774194 19.354838710 5.000000000 +87.096774194 22.580645161 5.000000000 +87.096774194 25.806451613 5.000000000 +87.096774194 29.032258065 5.000000000 +87.096774194 32.258064516 5.000000000 +87.096774194 35.483870968 4.879032258 +87.096774194 38.709677419 4.072580645 +87.096774194 41.935483871 3.266129032 +87.096774194 45.161290323 2.500000000 +87.096774194 48.387096774 2.500000000 +87.096774194 51.612903226 2.500000000 +87.096774194 54.838709677 2.500000000 +87.096774194 58.064516129 1.733870968 +87.096774194 61.290322581 0.927419355 +87.096774194 64.516129032 0.120967742 +87.096774194 67.741935484 0.000000000 +87.096774194 70.967741935 0.000000000 +87.096774194 74.193548387 0.000000000 +87.096774194 77.419354839 0.000000000 +87.096774194 80.645161290 0.000000000 +87.096774194 83.870967742 0.000000000 +87.096774194 87.096774194 0.000000000 +87.096774194 90.322580645 0.000000000 +87.096774194 93.548387097 0.000000000 +87.096774194 96.774193548 0.000000000 +87.096774194 100.000000000 0.000000000 +96.774193548 0.000000000 5.000000000 +96.774193548 3.225806452 5.000000000 +96.774193548 6.451612903 5.000000000 +96.774193548 9.677419355 5.000000000 +96.774193548 12.903225806 5.000000000 +96.774193548 16.129032258 5.000000000 +96.774193548 19.354838710 5.000000000 +96.774193548 22.580645161 5.000000000 +96.774193548 25.806451613 5.000000000 +96.774193548 29.032258065 5.000000000 +96.774193548 32.258064516 5.000000000 +96.774193548 35.483870968 4.779411765 +96.774193548 38.709677419 3.942307692 +96.774193548 41.935483871 3.450000000 +96.774193548 45.161290323 2.500000000 +96.774193548 48.387096774 2.500000000 +96.774193548 51.612903226 2.500000000 +96.774193548 54.838709677 2.500000000 +96.774193548 58.064516129 2.025000000 +96.774193548 61.290322581 1.562500000 +96.774193548 64.516129032 0.992647059 +96.774193548 67.741935484 0.846774194 +96.774193548 70.967741935 0.846774194 +96.774193548 74.193548387 0.846774194 +96.774193548 77.419354839 0.846774194 +96.774193548 80.645161290 0.846774194 +96.774193548 83.870967742 0.846774194 +96.774193548 87.096774194 0.846774194 +96.774193548 90.322580645 0.846774194 +96.774193548 93.548387097 0.846774194 +96.774193548 96.774193548 0.846774194 +96.774193548 100.000000000 0.846774194 +106.451612903 0.000000000 5.000000000 +106.451612903 3.225806452 5.000000000 +106.451612903 6.451612903 5.000000000 +106.451612903 9.677419355 5.000000000 +106.451612903 12.903225806 5.000000000 +106.451612903 16.129032258 5.000000000 +106.451612903 19.354838710 5.000000000 +106.451612903 22.580645161 5.000000000 +106.451612903 25.806451613 5.000000000 +106.451612903 29.032258065 5.000000000 +106.451612903 32.258064516 5.000000000 +106.451612903 35.483870968 4.779411765 +106.451612903 38.709677419 3.988095238 +106.451612903 41.935483871 3.392857143 +106.451612903 45.161290323 2.500000000 +106.451612903 48.387096774 2.500000000 +106.451612903 51.612903226 2.500000000 +106.451612903 54.838709677 2.500000000 +106.451612903 58.064516129 2.172619048 +106.451612903 61.290322581 2.172619048 +106.451612903 64.516129032 2.095588235 +106.451612903 67.741935484 2.056451613 +106.451612903 70.967741935 2.056451613 +106.451612903 74.193548387 2.056451613 +106.451612903 77.419354839 2.056451613 +106.451612903 80.645161290 2.056451613 +106.451612903 83.870967742 2.056451613 +106.451612903 87.096774194 2.056451613 +106.451612903 90.322580645 2.056451613 +106.451612903 93.548387097 2.056451613 +106.451612903 96.774193548 2.056451613 +106.451612903 100.000000000 2.056451613 +116.129032258 0.000000000 5.000000000 +116.129032258 3.225806452 5.000000000 +116.129032258 6.451612903 5.000000000 +116.129032258 9.677419355 5.000000000 +116.129032258 12.903225806 5.000000000 +116.129032258 16.129032258 5.000000000 +116.129032258 19.354838710 5.000000000 +116.129032258 22.580645161 5.000000000 +116.129032258 25.806451613 5.000000000 +116.129032258 29.032258065 5.000000000 +116.129032258 32.258064516 5.000000000 +116.129032258 35.483870968 4.879032258 +116.129032258 38.709677419 4.072580645 +116.129032258 41.935483871 3.266129032 +116.129032258 45.161290323 2.500000000 +116.129032258 48.387096774 2.500000000 +116.129032258 51.612903226 2.500000000 +116.129032258 54.838709677 2.500000000 +116.129032258 58.064516129 2.500000000 +116.129032258 61.290322581 2.500000000 +116.129032258 64.516129032 2.500000000 +116.129032258 67.741935484 2.500000000 +116.129032258 70.967741935 2.500000000 +116.129032258 74.193548387 2.500000000 +116.129032258 77.419354839 2.500000000 +116.129032258 80.645161290 2.500000000 +116.129032258 83.870967742 2.500000000 +116.129032258 87.096774194 2.500000000 +116.129032258 90.322580645 2.500000000 +116.129032258 93.548387097 2.500000000 +116.129032258 96.774193548 2.500000000 +116.129032258 100.000000000 2.500000000 +125.806451613 0.000000000 5.725806452 +125.806451613 3.225806452 5.725806452 +125.806451613 6.451612903 5.725806452 +125.806451613 9.677419355 5.725806452 +125.806451613 12.903225806 5.725806452 +125.806451613 16.129032258 5.725806452 +125.806451613 19.354838710 5.725806452 +125.806451613 22.580645161 5.725806452 +125.806451613 25.806451613 5.725806452 +125.806451613 29.032258065 5.725806452 +125.806451613 32.258064516 5.725806452 +125.806451613 35.483870968 5.551470588 +125.806451613 38.709677419 4.872448980 +125.806451613 41.935483871 4.362244898 +125.806451613 45.161290323 3.225806452 +125.806451613 48.387096774 3.225806452 +125.806451613 51.612903226 3.225806452 +125.806451613 54.838709677 3.225806452 +125.806451613 58.064516129 2.959183673 +125.806451613 61.290322581 2.959183673 +125.806451613 64.516129032 2.610294118 +125.806451613 67.741935484 2.500000000 +125.806451613 70.967741935 2.500000000 +125.806451613 74.193548387 2.500000000 +125.806451613 77.419354839 2.500000000 +125.806451613 80.645161290 2.500000000 +125.806451613 83.870967742 2.500000000 +125.806451613 87.096774194 2.500000000 +125.806451613 90.322580645 2.500000000 +125.806451613 93.548387097 2.500000000 +125.806451613 96.774193548 2.500000000 +125.806451613 100.000000000 2.500000000 +135.483870968 0.000000000 6.935483871 +135.483870968 3.225806452 6.935483871 +135.483870968 6.451612903 6.935483871 +135.483870968 9.677419355 6.935483871 +135.483870968 12.903225806 6.935483871 +135.483870968 16.129032258 6.935483871 +135.483870968 19.354838710 6.935483871 +135.483870968 22.580645161 6.935483871 +135.483870968 25.806451613 6.935483871 +135.483870968 29.032258065 6.935483871 +135.483870968 32.258064516 6.935483871 +135.483870968 35.483870968 6.654411765 +135.483870968 38.709677419 5.694444444 +135.483870968 41.935483871 5.138888889 +135.483870968 45.161290323 4.435483871 +135.483870968 48.387096774 4.435483871 +135.483870968 51.612903226 4.435483871 +135.483870968 54.838709677 4.435483871 +135.483870968 58.064516129 3.694444444 +135.483870968 61.290322581 3.138888889 +135.483870968 64.516129032 2.610294118 +135.483870968 67.741935484 2.500000000 +135.483870968 70.967741935 2.500000000 +135.483870968 74.193548387 2.500000000 +135.483870968 77.419354839 2.500000000 +135.483870968 80.645161290 2.500000000 +135.483870968 83.870967742 2.500000000 +135.483870968 87.096774194 2.500000000 +135.483870968 90.322580645 2.500000000 +135.483870968 93.548387097 2.500000000 +135.483870968 96.774193548 2.500000000 +135.483870968 100.000000000 2.500000000 +145.161290323 0.000000000 7.500000000 +145.161290323 3.225806452 7.500000000 +145.161290323 6.451612903 7.500000000 +145.161290323 9.677419355 7.500000000 +145.161290323 12.903225806 7.500000000 +145.161290323 16.129032258 7.500000000 +145.161290323 19.354838710 7.500000000 +145.161290323 22.580645161 7.500000000 +145.161290323 25.806451613 7.500000000 +145.161290323 29.032258065 7.500000000 +145.161290323 32.258064516 7.500000000 +145.161290323 35.483870968 7.379032258 +145.161290323 38.709677419 6.572580645 +145.161290323 41.935483871 5.766129032 +145.161290323 45.161290323 5.000000000 +145.161290323 48.387096774 5.000000000 +145.161290323 51.612903226 5.000000000 +145.161290323 54.838709677 5.000000000 +145.161290323 58.064516129 4.233870968 +145.161290323 61.290322581 3.427419355 +145.161290323 64.516129032 2.620967742 +145.161290323 67.741935484 2.500000000 +145.161290323 70.967741935 2.500000000 +145.161290323 74.193548387 2.500000000 +145.161290323 77.419354839 2.500000000 +145.161290323 80.645161290 2.500000000 +145.161290323 83.870967742 2.500000000 +145.161290323 87.096774194 2.500000000 +145.161290323 90.322580645 2.500000000 +145.161290323 93.548387097 2.500000000 +145.161290323 96.774193548 2.500000000 +145.161290323 100.000000000 2.500000000 +154.838709677 0.000000000 7.500000000 +154.838709677 3.225806452 7.500000000 +154.838709677 6.451612903 7.500000000 +154.838709677 9.677419355 7.500000000 +154.838709677 12.903225806 7.500000000 +154.838709677 16.129032258 7.500000000 +154.838709677 19.354838710 7.500000000 +154.838709677 22.580645161 7.500000000 +154.838709677 25.806451613 7.500000000 +154.838709677 29.032258065 7.500000000 +154.838709677 32.258064516 7.500000000 +154.838709677 35.483870968 7.389705882 +154.838709677 38.709677419 6.875000000 +154.838709677 41.935483871 6.331521739 +154.838709677 45.161290323 5.604838710 +154.838709677 48.387096774 5.604838710 +154.838709677 51.612903226 5.604838710 +154.838709677 54.838709677 5.604838710 +154.838709677 58.064516129 4.891304348 +154.838709677 61.290322581 4.347826087 +154.838709677 64.516129032 3.382352941 +154.838709677 67.741935484 3.104838710 +154.838709677 70.967741935 3.104838710 +154.838709677 74.193548387 3.104838710 +154.838709677 77.419354839 3.104838710 +154.838709677 80.645161290 3.104838710 +154.838709677 83.870967742 3.104838710 +154.838709677 87.096774194 3.104838710 +154.838709677 90.322580645 3.104838710 +154.838709677 93.548387097 3.104838710 +154.838709677 96.774193548 3.104838710 +154.838709677 100.000000000 3.104838710 +164.516129032 0.000000000 7.500000000 +164.516129032 3.225806452 7.500000000 +164.516129032 6.451612903 7.500000000 +164.516129032 9.677419355 7.500000000 +164.516129032 12.903225806 7.500000000 +164.516129032 16.129032258 7.500000000 +164.516129032 19.354838710 7.500000000 +164.516129032 22.580645161 7.500000000 +164.516129032 25.806451613 7.500000000 +164.516129032 29.032258065 7.500000000 +164.516129032 32.258064516 7.500000000 +164.516129032 35.483870968 7.389705882 +164.516129032 38.709677419 7.057291667 +164.516129032 41.935483871 7.057291667 +164.516129032 45.161290323 6.814516129 +164.516129032 48.387096774 6.814516129 +164.516129032 51.612903226 6.814516129 +164.516129032 54.838709677 6.814516129 +164.516129032 58.064516129 5.677083333 +164.516129032 61.290322581 5.156250000 +164.516129032 64.516129032 4.485294118 +164.516129032 67.741935484 4.314516129 +164.516129032 70.967741935 4.314516129 +164.516129032 74.193548387 4.314516129 +164.516129032 77.419354839 4.314516129 +164.516129032 80.645161290 4.314516129 +164.516129032 83.870967742 4.314516129 +164.516129032 87.096774194 4.314516129 +164.516129032 90.322580645 4.314516129 +164.516129032 93.548387097 4.314516129 +164.516129032 96.774193548 4.314516129 +164.516129032 100.000000000 4.314516129 +174.193548387 0.000000000 7.500000000 +174.193548387 3.225806452 7.500000000 +174.193548387 6.451612903 7.500000000 +174.193548387 9.677419355 7.500000000 +174.193548387 12.903225806 7.500000000 +174.193548387 16.129032258 7.500000000 +174.193548387 19.354838710 7.500000000 +174.193548387 22.580645161 7.500000000 +174.193548387 25.806451613 7.500000000 +174.193548387 29.032258065 7.500000000 +174.193548387 32.258064516 7.500000000 +174.193548387 35.483870968 7.500000000 +174.193548387 38.709677419 7.500000000 +174.193548387 41.935483871 7.500000000 +174.193548387 45.161290323 7.500000000 +174.193548387 48.387096774 7.500000000 +174.193548387 51.612903226 7.500000000 +174.193548387 54.838709677 7.500000000 +174.193548387 58.064516129 6.733870968 +174.193548387 61.290322581 5.927419355 +174.193548387 64.516129032 5.120967742 +174.193548387 67.741935484 5.000000000 +174.193548387 70.967741935 5.000000000 +174.193548387 74.193548387 5.000000000 +174.193548387 77.419354839 5.000000000 +174.193548387 80.645161290 5.000000000 +174.193548387 83.870967742 5.000000000 +174.193548387 87.096774194 5.000000000 +174.193548387 90.322580645 5.000000000 +174.193548387 93.548387097 5.000000000 +174.193548387 96.774193548 5.000000000 +174.193548387 100.000000000 5.000000000 +183.870967742 0.000000000 7.983870968 +183.870967742 3.225806452 7.983870968 +183.870967742 6.451612903 7.983870968 +183.870967742 9.677419355 7.983870968 +183.870967742 12.903225806 7.983870968 +183.870967742 16.129032258 7.983870968 +183.870967742 19.354838710 7.983870968 +183.870967742 22.580645161 7.983870968 +183.870967742 25.806451613 7.983870968 +183.870967742 29.032258065 7.983870968 +183.870967742 32.258064516 7.983870968 +183.870967742 35.483870968 7.941176471 +183.870967742 38.709677419 7.848837209 +183.870967742 41.935483871 7.848837209 +183.870967742 45.161290323 7.500000000 +183.870967742 48.387096774 7.500000000 +183.870967742 51.612903226 7.500000000 +183.870967742 54.838709677 7.500000000 +183.870967742 58.064516129 6.598837209 +183.870967742 61.290322581 6.017441860 +183.870967742 64.516129032 5.220588235 +183.870967742 67.741935484 5.000000000 +183.870967742 70.967741935 5.000000000 +183.870967742 74.193548387 5.000000000 +183.870967742 77.419354839 5.000000000 +183.870967742 80.645161290 5.000000000 +183.870967742 83.870967742 5.000000000 +183.870967742 87.096774194 5.000000000 +183.870967742 90.322580645 5.000000000 +183.870967742 93.548387097 5.000000000 +183.870967742 96.774193548 5.000000000 +183.870967742 100.000000000 5.000000000 +193.548387097 0.000000000 9.193548387 +193.548387097 3.225806452 9.193548387 +193.548387097 6.451612903 9.193548387 +193.548387097 9.677419355 9.193548387 +193.548387097 12.903225806 9.193548387 +193.548387097 16.129032258 9.193548387 +193.548387097 19.354838710 9.193548387 +193.548387097 22.580645161 9.193548387 +193.548387097 25.806451613 9.193548387 +193.548387097 29.032258065 9.193548387 +193.548387097 32.258064516 9.193548387 +193.548387097 35.483870968 9.044117647 +193.548387097 38.709677419 8.455882353 +193.548387097 41.935483871 7.975000000 +193.548387097 45.161290323 7.500000000 +193.548387097 48.387096774 7.500000000 +193.548387097 51.612903226 7.500000000 +193.548387097 54.838709677 7.500000000 +193.548387097 58.064516129 6.550000000 +193.548387097 61.290322581 6.053921569 +193.548387097 64.516129032 5.220588235 +193.548387097 67.741935484 5.000000000 +193.548387097 70.967741935 5.000000000 +193.548387097 74.193548387 5.000000000 +193.548387097 77.419354839 5.000000000 +193.548387097 80.645161290 5.000000000 +193.548387097 83.870967742 5.000000000 +193.548387097 87.096774194 5.000000000 +193.548387097 90.322580645 5.000000000 +193.548387097 93.548387097 5.000000000 +193.548387097 96.774193548 5.000000000 +193.548387097 100.000000000 5.000000000 +203.225806452 0.000000000 10.000000000 +203.225806452 3.225806452 10.000000000 +203.225806452 6.451612903 10.000000000 +203.225806452 9.677419355 10.000000000 +203.225806452 12.903225806 10.000000000 +203.225806452 16.129032258 10.000000000 +203.225806452 19.354838710 10.000000000 +203.225806452 22.580645161 10.000000000 +203.225806452 25.806451613 10.000000000 +203.225806452 29.032258065 10.000000000 +203.225806452 32.258064516 10.000000000 +203.225806452 35.483870968 9.879032258 +203.225806452 38.709677419 9.072580645 +203.225806452 41.935483871 8.266129032 +203.225806452 45.161290323 7.500000000 +203.225806452 48.387096774 7.500000000 +203.225806452 51.612903226 7.500000000 +203.225806452 54.838709677 7.500000000 +203.225806452 58.064516129 6.733870968 +203.225806452 61.290322581 5.927419355 +203.225806452 64.516129032 5.120967742 +203.225806452 67.741935484 5.000000000 +203.225806452 70.967741935 5.000000000 +203.225806452 74.193548387 5.000000000 +203.225806452 77.419354839 5.000000000 +203.225806452 80.645161290 5.000000000 +203.225806452 83.870967742 5.000000000 +203.225806452 87.096774194 5.000000000 +203.225806452 90.322580645 5.000000000 +203.225806452 93.548387097 5.000000000 +203.225806452 96.774193548 5.000000000 +203.225806452 100.000000000 5.000000000 +212.903225806 0.000000000 10.000000000 +212.903225806 3.225806452 10.000000000 +212.903225806 6.451612903 10.000000000 +212.903225806 9.677419355 10.000000000 +212.903225806 12.903225806 10.000000000 +212.903225806 16.129032258 10.000000000 +212.903225806 19.354838710 10.000000000 +212.903225806 22.580645161 10.000000000 +212.903225806 25.806451613 10.000000000 +212.903225806 29.032258065 10.000000000 +212.903225806 32.258064516 10.000000000 +212.903225806 35.483870968 9.879032258 +212.903225806 38.709677419 9.072580645 +212.903225806 41.935483871 8.266129032 +212.903225806 45.161290323 7.500000000 +212.903225806 48.387096774 7.500000000 +212.903225806 51.612903226 7.500000000 +212.903225806 54.838709677 7.500000000 +212.903225806 58.064516129 6.733870968 +212.903225806 61.290322581 5.927419355 +212.903225806 64.516129032 5.120967742 +212.903225806 67.741935484 5.000000000 +212.903225806 70.967741935 5.000000000 +212.903225806 74.193548387 5.000000000 +212.903225806 77.419354839 5.000000000 +212.903225806 80.645161290 5.000000000 +212.903225806 83.870967742 5.000000000 +212.903225806 87.096774194 5.000000000 +212.903225806 90.322580645 5.000000000 +212.903225806 93.548387097 5.000000000 +212.903225806 96.774193548 5.000000000 +212.903225806 100.000000000 5.000000000 +222.580645161 0.000000000 10.000000000 +222.580645161 3.225806452 10.000000000 +222.580645161 6.451612903 10.000000000 +222.580645161 9.677419355 10.000000000 +222.580645161 12.903225806 10.000000000 +222.580645161 16.129032258 10.000000000 +222.580645161 19.354838710 10.000000000 +222.580645161 22.580645161 10.000000000 +222.580645161 25.806451613 10.000000000 +222.580645161 29.032258065 10.000000000 +222.580645161 32.258064516 10.000000000 +222.580645161 35.483870968 9.879032258 +222.580645161 38.709677419 9.072580645 +222.580645161 41.935483871 8.266129032 +222.580645161 45.161290323 7.500000000 +222.580645161 48.387096774 7.500000000 +222.580645161 51.612903226 7.500000000 +222.580645161 54.838709677 7.500000000 +222.580645161 58.064516129 6.733870968 +222.580645161 61.290322581 5.927419355 +222.580645161 64.516129032 5.120967742 +222.580645161 67.741935484 5.000000000 +222.580645161 70.967741935 5.000000000 +222.580645161 74.193548387 5.000000000 +222.580645161 77.419354839 5.000000000 +222.580645161 80.645161290 5.000000000 +222.580645161 83.870967742 5.000000000 +222.580645161 87.096774194 5.000000000 +222.580645161 90.322580645 5.000000000 +222.580645161 93.548387097 5.000000000 +222.580645161 96.774193548 5.000000000 +222.580645161 100.000000000 5.000000000 +232.258064516 0.000000000 10.000000000 +232.258064516 3.225806452 10.000000000 +232.258064516 6.451612903 10.000000000 +232.258064516 9.677419355 10.000000000 +232.258064516 12.903225806 10.000000000 +232.258064516 16.129032258 10.000000000 +232.258064516 19.354838710 10.000000000 +232.258064516 22.580645161 10.000000000 +232.258064516 25.806451613 10.000000000 +232.258064516 29.032258065 10.000000000 +232.258064516 32.258064516 10.000000000 +232.258064516 35.483870968 9.879032258 +232.258064516 38.709677419 9.072580645 +232.258064516 41.935483871 8.266129032 +232.258064516 45.161290323 7.500000000 +232.258064516 48.387096774 7.500000000 +232.258064516 51.612903226 7.500000000 +232.258064516 54.838709677 7.500000000 +232.258064516 58.064516129 6.733870968 +232.258064516 61.290322581 5.927419355 +232.258064516 64.516129032 5.120967742 +232.258064516 67.741935484 5.000000000 +232.258064516 70.967741935 5.000000000 +232.258064516 74.193548387 5.000000000 +232.258064516 77.419354839 5.000000000 +232.258064516 80.645161290 5.000000000 +232.258064516 83.870967742 5.000000000 +232.258064516 87.096774194 5.000000000 +232.258064516 90.322580645 5.000000000 +232.258064516 93.548387097 5.000000000 +232.258064516 96.774193548 5.000000000 +232.258064516 100.000000000 5.000000000 +241.935483871 0.000000000 10.000000000 +241.935483871 3.225806452 10.000000000 +241.935483871 6.451612903 10.000000000 +241.935483871 9.677419355 10.000000000 +241.935483871 12.903225806 10.000000000 +241.935483871 16.129032258 10.000000000 +241.935483871 19.354838710 10.000000000 +241.935483871 22.580645161 10.000000000 +241.935483871 25.806451613 10.000000000 +241.935483871 29.032258065 10.000000000 +241.935483871 32.258064516 10.000000000 +241.935483871 35.483870968 9.879032258 +241.935483871 38.709677419 9.072580645 +241.935483871 41.935483871 8.266129032 +241.935483871 45.161290323 7.500000000 +241.935483871 48.387096774 7.500000000 +241.935483871 51.612903226 7.500000000 +241.935483871 54.838709677 7.500000000 +241.935483871 58.064516129 6.733870968 +241.935483871 61.290322581 5.927419355 +241.935483871 64.516129032 5.120967742 +241.935483871 67.741935484 5.000000000 +241.935483871 70.967741935 5.000000000 +241.935483871 74.193548387 5.000000000 +241.935483871 77.419354839 5.000000000 +241.935483871 80.645161290 5.000000000 +241.935483871 83.870967742 5.000000000 +241.935483871 87.096774194 5.000000000 +241.935483871 90.322580645 5.000000000 +241.935483871 93.548387097 5.000000000 +241.935483871 96.774193548 5.000000000 +241.935483871 100.000000000 5.000000000 +251.612903226 0.000000000 10.000000000 +251.612903226 3.225806452 10.000000000 +251.612903226 6.451612903 10.000000000 +251.612903226 9.677419355 10.000000000 +251.612903226 12.903225806 10.000000000 +251.612903226 16.129032258 10.000000000 +251.612903226 19.354838710 10.000000000 +251.612903226 22.580645161 10.000000000 +251.612903226 25.806451613 10.000000000 +251.612903226 29.032258065 10.000000000 +251.612903226 32.258064516 10.000000000 +251.612903226 35.483870968 9.879032258 +251.612903226 38.709677419 9.072580645 +251.612903226 41.935483871 8.266129032 +251.612903226 45.161290323 7.500000000 +251.612903226 48.387096774 7.500000000 +251.612903226 51.612903226 7.500000000 +251.612903226 54.838709677 7.500000000 +251.612903226 58.064516129 6.733870968 +251.612903226 61.290322581 5.927419355 +251.612903226 64.516129032 5.120967742 +251.612903226 67.741935484 5.000000000 +251.612903226 70.967741935 5.000000000 +251.612903226 74.193548387 5.000000000 +251.612903226 77.419354839 5.000000000 +251.612903226 80.645161290 5.000000000 +251.612903226 83.870967742 5.000000000 +251.612903226 87.096774194 5.000000000 +251.612903226 90.322580645 5.000000000 +251.612903226 93.548387097 5.000000000 +251.612903226 96.774193548 5.000000000 +251.612903226 100.000000000 5.000000000 +261.290322581 0.000000000 10.000000000 +261.290322581 3.225806452 10.000000000 +261.290322581 6.451612903 10.000000000 +261.290322581 9.677419355 10.000000000 +261.290322581 12.903225806 10.000000000 +261.290322581 16.129032258 10.000000000 +261.290322581 19.354838710 10.000000000 +261.290322581 22.580645161 10.000000000 +261.290322581 25.806451613 10.000000000 +261.290322581 29.032258065 10.000000000 +261.290322581 32.258064516 10.000000000 +261.290322581 35.483870968 9.879032258 +261.290322581 38.709677419 9.072580645 +261.290322581 41.935483871 8.266129032 +261.290322581 45.161290323 7.500000000 +261.290322581 48.387096774 7.500000000 +261.290322581 51.612903226 7.500000000 +261.290322581 54.838709677 7.500000000 +261.290322581 58.064516129 6.733870968 +261.290322581 61.290322581 5.927419355 +261.290322581 64.516129032 5.120967742 +261.290322581 67.741935484 5.000000000 +261.290322581 70.967741935 5.000000000 +261.290322581 74.193548387 5.000000000 +261.290322581 77.419354839 5.000000000 +261.290322581 80.645161290 5.000000000 +261.290322581 83.870967742 5.000000000 +261.290322581 87.096774194 5.000000000 +261.290322581 90.322580645 5.000000000 +261.290322581 93.548387097 5.000000000 +261.290322581 96.774193548 5.000000000 +261.290322581 100.000000000 5.000000000 +270.967741935 0.000000000 10.000000000 +270.967741935 3.225806452 10.000000000 +270.967741935 6.451612903 10.000000000 +270.967741935 9.677419355 10.000000000 +270.967741935 12.903225806 10.000000000 +270.967741935 16.129032258 10.000000000 +270.967741935 19.354838710 10.000000000 +270.967741935 22.580645161 10.000000000 +270.967741935 25.806451613 10.000000000 +270.967741935 29.032258065 10.000000000 +270.967741935 32.258064516 10.000000000 +270.967741935 35.483870968 9.879032258 +270.967741935 38.709677419 9.072580645 +270.967741935 41.935483871 8.266129032 +270.967741935 45.161290323 7.500000000 +270.967741935 48.387096774 7.500000000 +270.967741935 51.612903226 7.500000000 +270.967741935 54.838709677 7.500000000 +270.967741935 58.064516129 6.733870968 +270.967741935 61.290322581 5.927419355 +270.967741935 64.516129032 5.120967742 +270.967741935 67.741935484 5.000000000 +270.967741935 70.967741935 5.000000000 +270.967741935 74.193548387 5.000000000 +270.967741935 77.419354839 5.000000000 +270.967741935 80.645161290 5.000000000 +270.967741935 83.870967742 5.000000000 +270.967741935 87.096774194 5.000000000 +270.967741935 90.322580645 5.000000000 +270.967741935 93.548387097 5.000000000 +270.967741935 96.774193548 5.000000000 +270.967741935 100.000000000 5.000000000 +280.645161290 0.000000000 10.000000000 +280.645161290 3.225806452 10.000000000 +280.645161290 6.451612903 10.000000000 +280.645161290 9.677419355 10.000000000 +280.645161290 12.903225806 10.000000000 +280.645161290 16.129032258 10.000000000 +280.645161290 19.354838710 10.000000000 +280.645161290 22.580645161 10.000000000 +280.645161290 25.806451613 10.000000000 +280.645161290 29.032258065 10.000000000 +280.645161290 32.258064516 10.000000000 +280.645161290 35.483870968 9.879032258 +280.645161290 38.709677419 9.072580645 +280.645161290 41.935483871 8.266129032 +280.645161290 45.161290323 7.500000000 +280.645161290 48.387096774 7.500000000 +280.645161290 51.612903226 7.500000000 +280.645161290 54.838709677 7.500000000 +280.645161290 58.064516129 6.733870968 +280.645161290 61.290322581 5.927419355 +280.645161290 64.516129032 5.120967742 +280.645161290 67.741935484 5.000000000 +280.645161290 70.967741935 5.000000000 +280.645161290 74.193548387 5.000000000 +280.645161290 77.419354839 5.000000000 +280.645161290 80.645161290 5.000000000 +280.645161290 83.870967742 5.000000000 +280.645161290 87.096774194 5.000000000 +280.645161290 90.322580645 5.000000000 +280.645161290 93.548387097 5.000000000 +280.645161290 96.774193548 5.000000000 +280.645161290 100.000000000 5.000000000 +290.322580645 0.000000000 10.000000000 +290.322580645 3.225806452 10.000000000 +290.322580645 6.451612903 10.000000000 +290.322580645 9.677419355 10.000000000 +290.322580645 12.903225806 10.000000000 +290.322580645 16.129032258 10.000000000 +290.322580645 19.354838710 10.000000000 +290.322580645 22.580645161 10.000000000 +290.322580645 25.806451613 10.000000000 +290.322580645 29.032258065 10.000000000 +290.322580645 32.258064516 10.000000000 +290.322580645 35.483870968 9.879032258 +290.322580645 38.709677419 9.072580645 +290.322580645 41.935483871 8.266129032 +290.322580645 45.161290323 7.500000000 +290.322580645 48.387096774 7.500000000 +290.322580645 51.612903226 7.500000000 +290.322580645 54.838709677 7.500000000 +290.322580645 58.064516129 6.733870968 +290.322580645 61.290322581 5.927419355 +290.322580645 64.516129032 5.120967742 +290.322580645 67.741935484 5.000000000 +290.322580645 70.967741935 5.000000000 +290.322580645 74.193548387 5.000000000 +290.322580645 77.419354839 5.000000000 +290.322580645 80.645161290 5.000000000 +290.322580645 83.870967742 5.000000000 +290.322580645 87.096774194 5.000000000 +290.322580645 90.322580645 5.000000000 +290.322580645 93.548387097 5.000000000 +290.322580645 96.774193548 5.000000000 +290.322580645 100.000000000 5.000000000 +300.000000000 0.000000000 10.000000000 +300.000000000 3.225806452 10.000000000 +300.000000000 6.451612903 10.000000000 +300.000000000 9.677419355 10.000000000 +300.000000000 12.903225806 10.000000000 +300.000000000 16.129032258 10.000000000 +300.000000000 19.354838710 10.000000000 +300.000000000 22.580645161 10.000000000 +300.000000000 25.806451613 10.000000000 +300.000000000 29.032258065 10.000000000 +300.000000000 32.258064516 10.000000000 +300.000000000 35.483870968 9.879032258 +300.000000000 38.709677419 9.072580645 +300.000000000 41.935483871 8.266129032 +300.000000000 45.161290323 7.500000000 +300.000000000 48.387096774 7.500000000 +300.000000000 51.612903226 7.500000000 +300.000000000 54.838709677 7.500000000 +300.000000000 58.064516129 6.733870968 +300.000000000 61.290322581 5.927419355 +300.000000000 64.516129032 5.120967742 +300.000000000 67.741935484 5.000000000 +300.000000000 70.967741935 5.000000000 +300.000000000 74.193548387 5.000000000 +300.000000000 77.419354839 5.000000000 +300.000000000 80.645161290 5.000000000 +300.000000000 83.870967742 5.000000000 +300.000000000 87.096774194 5.000000000 +300.000000000 90.322580645 5.000000000 +300.000000000 93.548387097 5.000000000 +300.000000000 96.774193548 5.000000000 +300.000000000 100.000000000 5.000000000 diff --git a/examples/takagi-sugeno/octave/heart_disease_risk.fll b/examples/takagi-sugeno/octave/heart_disease_risk.fll index 5bc3207..4ab822f 100644 --- a/examples/takagi-sugeno/octave/heart_disease_risk.fll +++ b/examples/takagi-sugeno/octave/heart_disease_risk.fll @@ -1,7 +1,8 @@ -Engine: Heart-Disease-Risk +Engine: heart_disease_risk InputVariable: LDLLevel enabled: true range: 0.000 300.000 + lock-range: false term: Low Trapezoid -1.000 0.000 90.000 110.000 term: LowBorderline Trapezoid 90.000 110.000 120.000 140.000 term: Borderline Trapezoid 120.000 140.000 150.000 170.000 @@ -10,17 +11,18 @@ InputVariable: LDLLevel InputVariable: HDLLevel enabled: true range: 0.000 100.000 + lock-range: false term: LowHDL Trapezoid -1.000 0.000 35.000 45.000 term: ModerateHDL Trapezoid 35.000 45.000 55.000 65.000 term: HighHDL Trapezoid 55.000 65.000 100.000 101.000 OutputVariable: HeartDiseaseRisk enabled: true range: 0.000 10.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage TakagiSugeno default: nan lock-previous: false - lock-range: false term: NoRisk Constant 0.000 term: LowRisk Constant 2.500 term: MediumRisk Constant 5.000 @@ -30,7 +32,8 @@ RuleBlock: enabled: true conjunction: Minimum disjunction: none - activation: none + implication: none + activation: General rule: if LDLLevel is Low and HDLLevel is LowHDL then HeartDiseaseRisk is MediumRisk rule: if LDLLevel is Low and HDLLevel is ModerateHDL then HeartDiseaseRisk is LowRisk rule: if LDLLevel is Low and HDLLevel is HighHDL then HeartDiseaseRisk is NoRisk diff --git a/examples/takagi-sugeno/octave/heart_disease_risk.java b/examples/takagi-sugeno/octave/heart_disease_risk.java index fcd67c9..febd1c7 100644 --- a/examples/takagi-sugeno/octave/heart_disease_risk.java +++ b/examples/takagi-sugeno/octave/heart_disease_risk.java @@ -1,4 +1,5 @@ import com.fuzzylite.*; +import com.fuzzylite.activation.* import com.fuzzylite.defuzzifier.*; import com.fuzzylite.factory.*; import com.fuzzylite.hedge.*; @@ -12,51 +13,61 @@ import com.fuzzylite.variable.*; public class heart_disease_risk{ public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + Engine engine = new Engine(); -engine.setName("Heart-Disease-Risk"); +engine.setName("heart_disease_risk"); +engine.setDescription(""); -InputVariable inputVariable1 = new InputVariable(); -inputVariable1.setEnabled(true); -inputVariable1.setName("LDLLevel"); -inputVariable1.setRange(0.000, 300.000); -inputVariable1.addTerm(new Trapezoid("Low", -1.000, 0.000, 90.000, 110.000)); -inputVariable1.addTerm(new Trapezoid("LowBorderline", 90.000, 110.000, 120.000, 140.000)); -inputVariable1.addTerm(new Trapezoid("Borderline", 120.000, 140.000, 150.000, 170.000)); -inputVariable1.addTerm(new Trapezoid("HighBorderline", 150.000, 170.000, 180.000, 200.000)); -inputVariable1.addTerm(new Trapezoid("High", 180.000, 200.000, 300.000, 301.000)); -engine.addInputVariable(inputVariable1); +InputVariable LDLLevel = new InputVariable(); +LDLLevel.setName("LDLLevel"); +LDLLevel.setDescription(""); +LDLLevel.setEnabled(true); +LDLLevel.setRange(0.000, 300.000); +LDLLevel.setLockValueInRange(false); +LDLLevel.addTerm(new Trapezoid("Low", -1.000, 0.000, 90.000, 110.000)); +LDLLevel.addTerm(new Trapezoid("LowBorderline", 90.000, 110.000, 120.000, 140.000)); +LDLLevel.addTerm(new Trapezoid("Borderline", 120.000, 140.000, 150.000, 170.000)); +LDLLevel.addTerm(new Trapezoid("HighBorderline", 150.000, 170.000, 180.000, 200.000)); +LDLLevel.addTerm(new Trapezoid("High", 180.000, 200.000, 300.000, 301.000)); +engine.addInputVariable(LDLLevel); -InputVariable inputVariable2 = new InputVariable(); -inputVariable2.setEnabled(true); -inputVariable2.setName("HDLLevel"); -inputVariable2.setRange(0.000, 100.000); -inputVariable2.addTerm(new Trapezoid("LowHDL", -1.000, 0.000, 35.000, 45.000)); -inputVariable2.addTerm(new Trapezoid("ModerateHDL", 35.000, 45.000, 55.000, 65.000)); -inputVariable2.addTerm(new Trapezoid("HighHDL", 55.000, 65.000, 100.000, 101.000)); -engine.addInputVariable(inputVariable2); +InputVariable HDLLevel = new InputVariable(); +HDLLevel.setName("HDLLevel"); +HDLLevel.setDescription(""); +HDLLevel.setEnabled(true); +HDLLevel.setRange(0.000, 100.000); +HDLLevel.setLockValueInRange(false); +HDLLevel.addTerm(new Trapezoid("LowHDL", -1.000, 0.000, 35.000, 45.000)); +HDLLevel.addTerm(new Trapezoid("ModerateHDL", 35.000, 45.000, 55.000, 65.000)); +HDLLevel.addTerm(new Trapezoid("HighHDL", 55.000, 65.000, 100.000, 101.000)); +engine.addInputVariable(HDLLevel); -OutputVariable outputVariable = new OutputVariable(); -outputVariable.setEnabled(true); -outputVariable.setName("HeartDiseaseRisk"); -outputVariable.setRange(0.000, 10.000); -outputVariable.fuzzyOutput().setAccumulation(null); -outputVariable.setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable.setDefaultValue(Double.NaN); -outputVariable.setLockPreviousOutputValue(false); -outputVariable.setLockOutputValueInRange(false); -outputVariable.addTerm(new Constant("NoRisk", 0.000)); -outputVariable.addTerm(new Constant("LowRisk", 2.500)); -outputVariable.addTerm(new Constant("MediumRisk", 5.000)); -outputVariable.addTerm(new Constant("HighRisk", 7.500)); -outputVariable.addTerm(new Constant("ExtremeRisk", 10.000)); -engine.addOutputVariable(outputVariable); +OutputVariable HeartDiseaseRisk = new OutputVariable(); +HeartDiseaseRisk.setName("HeartDiseaseRisk"); +HeartDiseaseRisk.setDescription(""); +HeartDiseaseRisk.setEnabled(true); +HeartDiseaseRisk.setRange(0.000, 10.000); +HeartDiseaseRisk.setLockValueInRange(false); +HeartDiseaseRisk.setAggregation(null); +HeartDiseaseRisk.setDefuzzifier(new WeightedAverage("TakagiSugeno")); +HeartDiseaseRisk.setDefaultValue(Double.NaN); +HeartDiseaseRisk.setLockPreviousValue(false); +HeartDiseaseRisk.addTerm(new Constant("NoRisk", 0.000)); +HeartDiseaseRisk.addTerm(new Constant("LowRisk", 2.500)); +HeartDiseaseRisk.addTerm(new Constant("MediumRisk", 5.000)); +HeartDiseaseRisk.addTerm(new Constant("HighRisk", 7.500)); +HeartDiseaseRisk.addTerm(new Constant("ExtremeRisk", 10.000)); +engine.addOutputVariable(HeartDiseaseRisk); RuleBlock ruleBlock = new RuleBlock(); -ruleBlock.setEnabled(true); ruleBlock.setName(""); +ruleBlock.setDescription(""); +ruleBlock.setEnabled(true); ruleBlock.setConjunction(new Minimum()); ruleBlock.setDisjunction(null); -ruleBlock.setActivation(null); +ruleBlock.setImplication(null); +ruleBlock.setActivation(new General()); ruleBlock.addRule(Rule.parse("if LDLLevel is Low and HDLLevel is LowHDL then HeartDiseaseRisk is MediumRisk", engine)); ruleBlock.addRule(Rule.parse("if LDLLevel is Low and HDLLevel is ModerateHDL then HeartDiseaseRisk is LowRisk", engine)); ruleBlock.addRule(Rule.parse("if LDLLevel is Low and HDLLevel is HighHDL then HeartDiseaseRisk is NoRisk", engine)); diff --git a/examples/takagi-sugeno/octave/heart_disease_risk.pdf b/examples/takagi-sugeno/octave/heart_disease_risk.pdf Binary files differnew file mode 100644 index 0000000..e712d54 --- /dev/null +++ b/examples/takagi-sugeno/octave/heart_disease_risk.pdf diff --git a/examples/takagi-sugeno/octave/linear_tip_calculator.R b/examples/takagi-sugeno/octave/linear_tip_calculator.R new file mode 100644 index 0000000..e6a7058 --- /dev/null +++ b/examples/takagi-sugeno/octave/linear_tip_calculator.R @@ -0,0 +1,67 @@ +#Code automatically generated with fuzzylite 6.0. + +library(ggplot2); + +engine.name = "linear_tip_calculator" +engine.fll = "Engine: linear_tip_calculator +InputVariable: FoodQuality + enabled: true + range: 1.000 10.000 + lock-range: false + term: Bad Trapezoid 0.000 1.000 3.000 7.000 + term: Good Trapezoid 3.000 7.000 10.000 11.000 +InputVariable: Service + enabled: true + range: 1.000 10.000 + lock-range: false + term: Bad Trapezoid 0.000 1.000 3.000 7.000 + term: Good Trapezoid 3.000 7.000 10.000 11.000 +OutputVariable: Tip + enabled: true + range: 10.000 20.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage TakagiSugeno + default: nan + lock-previous: false + term: TenPercent Linear 0.000 0.000 10.000 + term: FifteenPercent Linear 0.000 0.000 15.000 + term: TwentyPercent Linear 0.000 0.000 20.000 +RuleBlock: + enabled: true + conjunction: Minimum + disjunction: none + implication: none + activation: General + rule: if FoodQuality is Bad and Service is Bad then Tip is TenPercent + rule: if FoodQuality is Bad and Service is Good then Tip is FifteenPercent + rule: if FoodQuality is Good and Service is Bad then Tip is FifteenPercent + rule: if FoodQuality is Good and Service is Good then Tip is TwentyPercent" + +engine.fldFile = "linear_tip_calculator.fld" +if (require(data.table)) { + engine.df = data.table::fread(engine.fldFile, sep="auto", header="auto") +} else { + engine.df = read.table(engine.fldFile, header=TRUE) +} + +engine.plot.i1i2_o1 = ggplot(engine.df, aes(FoodQuality, Service)) + + geom_tile(aes(fill=Tip)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=FoodQuality, y=Service, z=Tip), color="black") + + ggtitle("(FoodQuality, Service) = Tip") + +engine.plot.i2i1_o1 = ggplot(engine.df, aes(Service, FoodQuality)) + + geom_tile(aes(fill=Tip)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=Service, y=FoodQuality, z=Tip), color="black") + + ggtitle("(Service, FoodQuality) = Tip") + +if (require(gridExtra)) { + engine.plots = arrangeGrob(engine.plot.i1i2_o1, engine.plot.i2i1_o1, ncol=2, top=engine.name) + ggsave(paste0(engine.name, ".pdf"), engine.plots) + if (require(grid)) { + grid.newpage() + grid.draw(engine.plots) + } +} diff --git a/examples/takagi-sugeno/octave/linear_tip_calculator.cpp b/examples/takagi-sugeno/octave/linear_tip_calculator.cpp index 6982766..f0d4a43 100644 --- a/examples/takagi-sugeno/octave/linear_tip_calculator.cpp +++ b/examples/takagi-sugeno/octave/linear_tip_calculator.cpp @@ -1,51 +1,61 @@ #include <fl/Headers.h> int main(int argc, char** argv){ +//Code automatically generated with fuzzylite 6.0. + using namespace fl; Engine* engine = new Engine; -engine->setName("Linear-Tip-Calculator"); - -InputVariable* inputVariable1 = new InputVariable; -inputVariable1->setEnabled(true); -inputVariable1->setName("FoodQuality"); -inputVariable1->setRange(1.000, 10.000); -inputVariable1->addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); -inputVariable1->addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); -engine->addInputVariable(inputVariable1); - -InputVariable* inputVariable2 = new InputVariable; -inputVariable2->setEnabled(true); -inputVariable2->setName("Service"); -inputVariable2->setRange(1.000, 10.000); -inputVariable2->addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); -inputVariable2->addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); -engine->addInputVariable(inputVariable2); - -OutputVariable* outputVariable = new OutputVariable; -outputVariable->setEnabled(true); -outputVariable->setName("Tip"); -outputVariable->setRange(10.000, 20.000); -outputVariable->fuzzyOutput()->setAccumulation(fl::null); -outputVariable->setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable->setDefaultValue(fl::nan); -outputVariable->setLockPreviousOutputValue(false); -outputVariable->setLockOutputValueInRange(false); -outputVariable->addTerm(Linear::create("TenPercent", engine, 0.000, 0.000, 10.000)); -outputVariable->addTerm(Linear::create("FifteenPercent", engine, 0.000, 0.000, 15.000)); -outputVariable->addTerm(Linear::create("TwentyPercent", engine, 0.000, 0.000, 20.000)); -engine->addOutputVariable(outputVariable); +engine->setName("linear_tip_calculator"); +engine->setDescription(""); + +InputVariable* FoodQuality = new InputVariable; +FoodQuality->setName("FoodQuality"); +FoodQuality->setDescription(""); +FoodQuality->setEnabled(true); +FoodQuality->setRange(1.000, 10.000); +FoodQuality->setLockValueInRange(false); +FoodQuality->addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); +FoodQuality->addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); +engine->addInputVariable(FoodQuality); + +InputVariable* Service = new InputVariable; +Service->setName("Service"); +Service->setDescription(""); +Service->setEnabled(true); +Service->setRange(1.000, 10.000); +Service->setLockValueInRange(false); +Service->addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); +Service->addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); +engine->addInputVariable(Service); + +OutputVariable* Tip = new OutputVariable; +Tip->setName("Tip"); +Tip->setDescription(""); +Tip->setEnabled(true); +Tip->setRange(10.000, 20.000); +Tip->setLockValueInRange(false); +Tip->setAggregation(fl::null); +Tip->setDefuzzifier(new WeightedAverage("TakagiSugeno")); +Tip->setDefaultValue(fl::nan); +Tip->setLockPreviousValue(false); +Tip->addTerm(Linear::create("TenPercent", engine, 0.000, 0.000, 10.000)); +Tip->addTerm(Linear::create("FifteenPercent", engine, 0.000, 0.000, 15.000)); +Tip->addTerm(Linear::create("TwentyPercent", engine, 0.000, 0.000, 20.000)); +engine->addOutputVariable(Tip); RuleBlock* ruleBlock = new RuleBlock; -ruleBlock->setEnabled(true); ruleBlock->setName(""); +ruleBlock->setDescription(""); +ruleBlock->setEnabled(true); ruleBlock->setConjunction(new Minimum); ruleBlock->setDisjunction(fl::null); -ruleBlock->setActivation(fl::null); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Bad and Service is Bad then Tip is TenPercent", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Bad and Service is Good then Tip is FifteenPercent", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Good and Service is Bad then Tip is FifteenPercent", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Good and Service is Good then Tip is TwentyPercent", engine)); +ruleBlock->setImplication(fl::null); +ruleBlock->setActivation(new General); +ruleBlock->addRule(Rule::parse("if FoodQuality is Bad and Service is Bad then Tip is TenPercent", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is Bad and Service is Good then Tip is FifteenPercent", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is Good and Service is Bad then Tip is FifteenPercent", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is Good and Service is Good then Tip is TwentyPercent", engine)); engine->addRuleBlock(ruleBlock); diff --git a/examples/takagi-sugeno/octave/linear_tip_calculator.fcl b/examples/takagi-sugeno/octave/linear_tip_calculator.fcl index d326b2e..9b28c0e 100644 --- a/examples/takagi-sugeno/octave/linear_tip_calculator.fcl +++ b/examples/takagi-sugeno/octave/linear_tip_calculator.fcl @@ -1,4 +1,6 @@ -FUNCTION_BLOCK Linear-Tip-Calculator +//Code automatically generated with fuzzylite 6.0. + +FUNCTION_BLOCK linear_tip_calculator VAR_INPUT FoodQuality: REAL; diff --git a/examples/takagi-sugeno/octave/linear_tip_calculator.fis b/examples/takagi-sugeno/octave/linear_tip_calculator.fis index 8df5a02..58b4016 100644 --- a/examples/takagi-sugeno/octave/linear_tip_calculator.fis +++ b/examples/takagi-sugeno/octave/linear_tip_calculator.fis @@ -1,13 +1,16 @@ +#Code automatically generated with fuzzylite 6.0. + [System] -Name='Linear-Tip-Calculator' +Name='linear_tip_calculator' Type='sugeno' +Version=6.0 NumInputs=2 NumOutputs=1 NumRules=4 AndMethod='min' -OrMethod='' -ImpMethod='' -AggMethod='' +OrMethod='max' +ImpMethod='min' +AggMethod='max' DefuzzMethod='wtaver' [Input1] diff --git a/examples/takagi-sugeno/octave/linear_tip_calculator.fld b/examples/takagi-sugeno/octave/linear_tip_calculator.fld index 27f51b4..60f4542 100644 --- a/examples/takagi-sugeno/octave/linear_tip_calculator.fld +++ b/examples/takagi-sugeno/octave/linear_tip_calculator.fld @@ -1,1026 +1,1025 @@ -#@Engine: Linear-Tip-Calculator; -#@InputVariable: FoodQuality; @InputVariable: Service; @OutputVariable: Tip; -1.00000000 1.00000000 10.00000000 -1.00000000 1.29032258 10.00000000 -1.00000000 1.58064516 10.00000000 -1.00000000 1.87096774 10.00000000 -1.00000000 2.16129032 10.00000000 -1.00000000 2.45161290 10.00000000 -1.00000000 2.74193548 10.00000000 -1.00000000 3.03225806 10.04032258 -1.00000000 3.32258065 10.40322581 -1.00000000 3.61290323 10.76612903 -1.00000000 3.90322581 11.12903226 -1.00000000 4.19354839 11.49193548 -1.00000000 4.48387097 11.85483871 -1.00000000 4.77419355 12.21774194 -1.00000000 5.06451613 12.58064516 -1.00000000 5.35483871 12.94354839 -1.00000000 5.64516129 13.30645161 -1.00000000 5.93548387 13.66935484 -1.00000000 6.22580645 14.03225806 -1.00000000 6.51612903 14.39516129 -1.00000000 6.80645161 14.75806452 -1.00000000 7.09677419 15.00000000 -1.00000000 7.38709677 15.00000000 -1.00000000 7.67741935 15.00000000 -1.00000000 7.96774194 15.00000000 -1.00000000 8.25806452 15.00000000 -1.00000000 8.54838710 15.00000000 -1.00000000 8.83870968 15.00000000 -1.00000000 9.12903226 15.00000000 -1.00000000 9.41935484 15.00000000 -1.00000000 9.70967742 15.00000000 -1.00000000 10.00000000 15.00000000 -1.29032258 1.00000000 10.00000000 -1.29032258 1.29032258 10.00000000 -1.29032258 1.58064516 10.00000000 -1.29032258 1.87096774 10.00000000 -1.29032258 2.16129032 10.00000000 -1.29032258 2.45161290 10.00000000 -1.29032258 2.74193548 10.00000000 -1.29032258 3.03225806 10.04032258 -1.29032258 3.32258065 10.40322581 -1.29032258 3.61290323 10.76612903 -1.29032258 3.90322581 11.12903226 -1.29032258 4.19354839 11.49193548 -1.29032258 4.48387097 11.85483871 -1.29032258 4.77419355 12.21774194 -1.29032258 5.06451613 12.58064516 -1.29032258 5.35483871 12.94354839 -1.29032258 5.64516129 13.30645161 -1.29032258 5.93548387 13.66935484 -1.29032258 6.22580645 14.03225806 -1.29032258 6.51612903 14.39516129 -1.29032258 6.80645161 14.75806452 -1.29032258 7.09677419 15.00000000 -1.29032258 7.38709677 15.00000000 -1.29032258 7.67741935 15.00000000 -1.29032258 7.96774194 15.00000000 -1.29032258 8.25806452 15.00000000 -1.29032258 8.54838710 15.00000000 -1.29032258 8.83870968 15.00000000 -1.29032258 9.12903226 15.00000000 -1.29032258 9.41935484 15.00000000 -1.29032258 9.70967742 15.00000000 -1.29032258 10.00000000 15.00000000 -1.58064516 1.00000000 10.00000000 -1.58064516 1.29032258 10.00000000 -1.58064516 1.58064516 10.00000000 -1.58064516 1.87096774 10.00000000 -1.58064516 2.16129032 10.00000000 -1.58064516 2.45161290 10.00000000 -1.58064516 2.74193548 10.00000000 -1.58064516 3.03225806 10.04032258 -1.58064516 3.32258065 10.40322581 -1.58064516 3.61290323 10.76612903 -1.58064516 3.90322581 11.12903226 -1.58064516 4.19354839 11.49193548 -1.58064516 4.48387097 11.85483871 -1.58064516 4.77419355 12.21774194 -1.58064516 5.06451613 12.58064516 -1.58064516 5.35483871 12.94354839 -1.58064516 5.64516129 13.30645161 -1.58064516 5.93548387 13.66935484 -1.58064516 6.22580645 14.03225806 -1.58064516 6.51612903 14.39516129 -1.58064516 6.80645161 14.75806452 -1.58064516 7.09677419 15.00000000 -1.58064516 7.38709677 15.00000000 -1.58064516 7.67741935 15.00000000 -1.58064516 7.96774194 15.00000000 -1.58064516 8.25806452 15.00000000 -1.58064516 8.54838710 15.00000000 -1.58064516 8.83870968 15.00000000 -1.58064516 9.12903226 15.00000000 -1.58064516 9.41935484 15.00000000 -1.58064516 9.70967742 15.00000000 -1.58064516 10.00000000 15.00000000 -1.87096774 1.00000000 10.00000000 -1.87096774 1.29032258 10.00000000 -1.87096774 1.58064516 10.00000000 -1.87096774 1.87096774 10.00000000 -1.87096774 2.16129032 10.00000000 -1.87096774 2.45161290 10.00000000 -1.87096774 2.74193548 10.00000000 -1.87096774 3.03225806 10.04032258 -1.87096774 3.32258065 10.40322581 -1.87096774 3.61290323 10.76612903 -1.87096774 3.90322581 11.12903226 -1.87096774 4.19354839 11.49193548 -1.87096774 4.48387097 11.85483871 -1.87096774 4.77419355 12.21774194 -1.87096774 5.06451613 12.58064516 -1.87096774 5.35483871 12.94354839 -1.87096774 5.64516129 13.30645161 -1.87096774 5.93548387 13.66935484 -1.87096774 6.22580645 14.03225806 -1.87096774 6.51612903 14.39516129 -1.87096774 6.80645161 14.75806452 -1.87096774 7.09677419 15.00000000 -1.87096774 7.38709677 15.00000000 -1.87096774 7.67741935 15.00000000 -1.87096774 7.96774194 15.00000000 -1.87096774 8.25806452 15.00000000 -1.87096774 8.54838710 15.00000000 -1.87096774 8.83870968 15.00000000 -1.87096774 9.12903226 15.00000000 -1.87096774 9.41935484 15.00000000 -1.87096774 9.70967742 15.00000000 -1.87096774 10.00000000 15.00000000 -2.16129032 1.00000000 10.00000000 -2.16129032 1.29032258 10.00000000 -2.16129032 1.58064516 10.00000000 -2.16129032 1.87096774 10.00000000 -2.16129032 2.16129032 10.00000000 -2.16129032 2.45161290 10.00000000 -2.16129032 2.74193548 10.00000000 -2.16129032 3.03225806 10.04032258 -2.16129032 3.32258065 10.40322581 -2.16129032 3.61290323 10.76612903 -2.16129032 3.90322581 11.12903226 -2.16129032 4.19354839 11.49193548 -2.16129032 4.48387097 11.85483871 -2.16129032 4.77419355 12.21774194 -2.16129032 5.06451613 12.58064516 -2.16129032 5.35483871 12.94354839 -2.16129032 5.64516129 13.30645161 -2.16129032 5.93548387 13.66935484 -2.16129032 6.22580645 14.03225806 -2.16129032 6.51612903 14.39516129 -2.16129032 6.80645161 14.75806452 -2.16129032 7.09677419 15.00000000 -2.16129032 7.38709677 15.00000000 -2.16129032 7.67741935 15.00000000 -2.16129032 7.96774194 15.00000000 -2.16129032 8.25806452 15.00000000 -2.16129032 8.54838710 15.00000000 -2.16129032 8.83870968 15.00000000 -2.16129032 9.12903226 15.00000000 -2.16129032 9.41935484 15.00000000 -2.16129032 9.70967742 15.00000000 -2.16129032 10.00000000 15.00000000 -2.45161290 1.00000000 10.00000000 -2.45161290 1.29032258 10.00000000 -2.45161290 1.58064516 10.00000000 -2.45161290 1.87096774 10.00000000 -2.45161290 2.16129032 10.00000000 -2.45161290 2.45161290 10.00000000 -2.45161290 2.74193548 10.00000000 -2.45161290 3.03225806 10.04032258 -2.45161290 3.32258065 10.40322581 -2.45161290 3.61290323 10.76612903 -2.45161290 3.90322581 11.12903226 -2.45161290 4.19354839 11.49193548 -2.45161290 4.48387097 11.85483871 -2.45161290 4.77419355 12.21774194 -2.45161290 5.06451613 12.58064516 -2.45161290 5.35483871 12.94354839 -2.45161290 5.64516129 13.30645161 -2.45161290 5.93548387 13.66935484 -2.45161290 6.22580645 14.03225806 -2.45161290 6.51612903 14.39516129 -2.45161290 6.80645161 14.75806452 -2.45161290 7.09677419 15.00000000 -2.45161290 7.38709677 15.00000000 -2.45161290 7.67741935 15.00000000 -2.45161290 7.96774194 15.00000000 -2.45161290 8.25806452 15.00000000 -2.45161290 8.54838710 15.00000000 -2.45161290 8.83870968 15.00000000 -2.45161290 9.12903226 15.00000000 -2.45161290 9.41935484 15.00000000 -2.45161290 9.70967742 15.00000000 -2.45161290 10.00000000 15.00000000 -2.74193548 1.00000000 10.00000000 -2.74193548 1.29032258 10.00000000 -2.74193548 1.58064516 10.00000000 -2.74193548 1.87096774 10.00000000 -2.74193548 2.16129032 10.00000000 -2.74193548 2.45161290 10.00000000 -2.74193548 2.74193548 10.00000000 -2.74193548 3.03225806 10.04032258 -2.74193548 3.32258065 10.40322581 -2.74193548 3.61290323 10.76612903 -2.74193548 3.90322581 11.12903226 -2.74193548 4.19354839 11.49193548 -2.74193548 4.48387097 11.85483871 -2.74193548 4.77419355 12.21774194 -2.74193548 5.06451613 12.58064516 -2.74193548 5.35483871 12.94354839 -2.74193548 5.64516129 13.30645161 -2.74193548 5.93548387 13.66935484 -2.74193548 6.22580645 14.03225806 -2.74193548 6.51612903 14.39516129 -2.74193548 6.80645161 14.75806452 -2.74193548 7.09677419 15.00000000 -2.74193548 7.38709677 15.00000000 -2.74193548 7.67741935 15.00000000 -2.74193548 7.96774194 15.00000000 -2.74193548 8.25806452 15.00000000 -2.74193548 8.54838710 15.00000000 -2.74193548 8.83870968 15.00000000 -2.74193548 9.12903226 15.00000000 -2.74193548 9.41935484 15.00000000 -2.74193548 9.70967742 15.00000000 -2.74193548 10.00000000 15.00000000 -3.03225806 1.00000000 10.04032258 -3.03225806 1.29032258 10.04032258 -3.03225806 1.58064516 10.04032258 -3.03225806 1.87096774 10.04032258 -3.03225806 2.16129032 10.04032258 -3.03225806 2.45161290 10.04032258 -3.03225806 2.74193548 10.04032258 -3.03225806 3.03225806 10.15873016 -3.03225806 3.32258065 10.51587302 -3.03225806 3.61290323 10.87301587 -3.03225806 3.90322581 11.23015873 -3.03225806 4.19354839 11.58730159 -3.03225806 4.48387097 11.94444444 -3.03225806 4.77419355 12.30158730 -3.03225806 5.06451613 12.65873016 -3.03225806 5.35483871 13.01587302 -3.03225806 5.64516129 13.37301587 -3.03225806 5.93548387 13.73015873 -3.03225806 6.22580645 14.08730159 -3.03225806 6.51612903 14.44444444 -3.03225806 6.80645161 14.80158730 -3.03225806 7.09677419 15.04032258 -3.03225806 7.38709677 15.04032258 -3.03225806 7.67741935 15.04032258 -3.03225806 7.96774194 15.04032258 -3.03225806 8.25806452 15.04032258 -3.03225806 8.54838710 15.04032258 -3.03225806 8.83870968 15.04032258 -3.03225806 9.12903226 15.04032258 -3.03225806 9.41935484 15.04032258 -3.03225806 9.70967742 15.04032258 -3.03225806 10.00000000 15.04032258 -3.32258065 1.00000000 10.40322581 -3.32258065 1.29032258 10.40322581 -3.32258065 1.58064516 10.40322581 -3.32258065 1.87096774 10.40322581 -3.32258065 2.16129032 10.40322581 -3.32258065 2.45161290 10.40322581 -3.32258065 2.74193548 10.40322581 -3.32258065 3.03225806 10.51587302 -3.32258065 3.32258065 11.38888889 -3.32258065 3.61290323 11.70138889 -3.32258065 3.90322581 12.01388889 -3.32258065 4.19354839 12.32638889 -3.32258065 4.48387097 12.63888889 -3.32258065 4.77419355 12.95138889 -3.32258065 5.06451613 13.26388889 -3.32258065 5.35483871 13.57638889 -3.32258065 5.64516129 13.88888889 -3.32258065 5.93548387 14.20138889 -3.32258065 6.22580645 14.51388889 -3.32258065 6.51612903 14.82638889 -3.32258065 6.80645161 15.14705882 -3.32258065 7.09677419 15.40322581 -3.32258065 7.38709677 15.40322581 -3.32258065 7.67741935 15.40322581 -3.32258065 7.96774194 15.40322581 -3.32258065 8.25806452 15.40322581 -3.32258065 8.54838710 15.40322581 -3.32258065 8.83870968 15.40322581 -3.32258065 9.12903226 15.40322581 -3.32258065 9.41935484 15.40322581 -3.32258065 9.70967742 15.40322581 -3.32258065 10.00000000 15.40322581 -3.61290323 1.00000000 10.76612903 -3.61290323 1.29032258 10.76612903 -3.61290323 1.58064516 10.76612903 -3.61290323 1.87096774 10.76612903 -3.61290323 2.16129032 10.76612903 -3.61290323 2.45161290 10.76612903 -3.61290323 2.74193548 10.76612903 -3.61290323 3.03225806 10.87301587 -3.61290323 3.32258065 11.70138889 -3.61290323 3.61290323 12.34567901 -3.61290323 3.90322581 12.62345679 -3.61290323 4.19354839 12.90123457 -3.61290323 4.48387097 13.17901235 -3.61290323 4.77419355 13.45679012 -3.61290323 5.06451613 13.73456790 -3.61290323 5.35483871 14.01234568 -3.61290323 5.64516129 14.29012346 -3.61290323 5.93548387 14.56790123 -3.61290323 6.22580645 14.84567901 -3.61290323 6.51612903 15.12987013 -3.61290323 6.80645161 15.47794118 -3.61290323 7.09677419 15.76612903 -3.61290323 7.38709677 15.76612903 -3.61290323 7.67741935 15.76612903 -3.61290323 7.96774194 15.76612903 -3.61290323 8.25806452 15.76612903 -3.61290323 8.54838710 15.76612903 -3.61290323 8.83870968 15.76612903 -3.61290323 9.12903226 15.76612903 -3.61290323 9.41935484 15.76612903 -3.61290323 9.70967742 15.76612903 -3.61290323 10.00000000 15.76612903 -3.90322581 1.00000000 11.12903226 -3.90322581 1.29032258 11.12903226 -3.90322581 1.58064516 11.12903226 -3.90322581 1.87096774 11.12903226 -3.90322581 2.16129032 11.12903226 -3.90322581 2.45161290 11.12903226 -3.90322581 2.74193548 11.12903226 -3.90322581 3.03225806 11.23015873 -3.90322581 3.32258065 12.01388889 -3.90322581 3.61290323 12.62345679 -3.90322581 3.90322581 13.11111111 -3.90322581 4.19354839 13.36111111 -3.90322581 4.48387097 13.61111111 -3.90322581 4.77419355 13.86111111 -3.90322581 5.06451613 14.11111111 -3.90322581 5.35483871 14.36111111 -3.90322581 5.64516129 14.61111111 -3.90322581 5.93548387 14.86111111 -3.90322581 6.22580645 15.11627907 -3.90322581 6.51612903 15.42207792 -3.90322581 6.80645161 15.80882353 -3.90322581 7.09677419 16.12903226 -3.90322581 7.38709677 16.12903226 -3.90322581 7.67741935 16.12903226 -3.90322581 7.96774194 16.12903226 -3.90322581 8.25806452 16.12903226 -3.90322581 8.54838710 16.12903226 -3.90322581 8.83870968 16.12903226 -3.90322581 9.12903226 16.12903226 -3.90322581 9.41935484 16.12903226 -3.90322581 9.70967742 16.12903226 -3.90322581 10.00000000 16.12903226 -4.19354839 1.00000000 11.49193548 -4.19354839 1.29032258 11.49193548 -4.19354839 1.58064516 11.49193548 -4.19354839 1.87096774 11.49193548 -4.19354839 2.16129032 11.49193548 -4.19354839 2.45161290 11.49193548 -4.19354839 2.74193548 11.49193548 -4.19354839 3.03225806 11.58730159 -4.19354839 3.32258065 12.32638889 -4.19354839 3.61290323 12.90123457 -4.19354839 3.90322581 13.36111111 -4.19354839 4.19354839 13.73737374 -4.19354839 4.48387097 13.96464646 -4.19354839 4.77419355 14.19191919 -4.19354839 5.06451613 14.41919192 -4.19354839 5.35483871 14.64646465 -4.19354839 5.64516129 14.87373737 -4.19354839 5.93548387 15.10526316 -4.19354839 6.22580645 15.37790698 -4.19354839 6.51612903 15.71428571 -4.19354839 6.80645161 16.13970588 -4.19354839 7.09677419 16.49193548 -4.19354839 7.38709677 16.49193548 -4.19354839 7.67741935 16.49193548 -4.19354839 7.96774194 16.49193548 -4.19354839 8.25806452 16.49193548 -4.19354839 8.54838710 16.49193548 -4.19354839 8.83870968 16.49193548 -4.19354839 9.12903226 16.49193548 -4.19354839 9.41935484 16.49193548 -4.19354839 9.70967742 16.49193548 -4.19354839 10.00000000 16.49193548 -4.48387097 1.00000000 11.85483871 -4.48387097 1.29032258 11.85483871 -4.48387097 1.58064516 11.85483871 -4.48387097 1.87096774 11.85483871 -4.48387097 2.16129032 11.85483871 -4.48387097 2.45161290 11.85483871 -4.48387097 2.74193548 11.85483871 -4.48387097 3.03225806 11.94444444 -4.48387097 3.32258065 12.63888889 -4.48387097 3.61290323 13.17901235 -4.48387097 3.90322581 13.61111111 -4.48387097 4.19354839 13.96464646 -4.48387097 4.48387097 14.25925926 -4.48387097 4.77419355 14.46759259 -4.48387097 5.06451613 14.67592593 -4.48387097 5.35483871 14.88425926 -4.48387097 5.64516129 15.09615385 -4.48387097 5.93548387 15.34210526 -4.48387097 6.22580645 15.63953488 -4.48387097 6.51612903 16.00649351 -4.48387097 6.80645161 16.47058824 -4.48387097 7.09677419 16.85483871 -4.48387097 7.38709677 16.85483871 -4.48387097 7.67741935 16.85483871 -4.48387097 7.96774194 16.85483871 -4.48387097 8.25806452 16.85483871 -4.48387097 8.54838710 16.85483871 -4.48387097 8.83870968 16.85483871 -4.48387097 9.12903226 16.85483871 -4.48387097 9.41935484 16.85483871 -4.48387097 9.70967742 16.85483871 -4.48387097 10.00000000 16.85483871 -4.77419355 1.00000000 12.21774194 -4.77419355 1.29032258 12.21774194 -4.77419355 1.58064516 12.21774194 -4.77419355 1.87096774 12.21774194 -4.77419355 2.16129032 12.21774194 -4.77419355 2.45161290 12.21774194 -4.77419355 2.74193548 12.21774194 -4.77419355 3.03225806 12.30158730 -4.77419355 3.32258065 12.95138889 -4.77419355 3.61290323 13.45679012 -4.77419355 3.90322581 13.86111111 -4.77419355 4.19354839 14.19191919 -4.77419355 4.48387097 14.46759259 -4.77419355 4.77419355 14.70085470 -4.77419355 5.06451613 14.89316239 -4.77419355 5.35483871 15.08849558 -4.77419355 5.64516129 15.31250000 -4.77419355 5.93548387 15.57894737 -4.77419355 6.22580645 15.90116279 -4.77419355 6.51612903 16.29870130 -4.77419355 6.80645161 16.80147059 -4.77419355 7.09677419 17.21774194 -4.77419355 7.38709677 17.21774194 -4.77419355 7.67741935 17.21774194 -4.77419355 7.96774194 17.21774194 -4.77419355 8.25806452 17.21774194 -4.77419355 8.54838710 17.21774194 -4.77419355 8.83870968 17.21774194 -4.77419355 9.12903226 17.21774194 -4.77419355 9.41935484 17.21774194 -4.77419355 9.70967742 17.21774194 -4.77419355 10.00000000 17.21774194 -5.06451613 1.00000000 12.58064516 -5.06451613 1.29032258 12.58064516 -5.06451613 1.58064516 12.58064516 -5.06451613 1.87096774 12.58064516 -5.06451613 2.16129032 12.58064516 -5.06451613 2.45161290 12.58064516 -5.06451613 2.74193548 12.58064516 -5.06451613 3.03225806 12.65873016 -5.06451613 3.32258065 13.26388889 -5.06451613 3.61290323 13.73456790 -5.06451613 3.90322581 14.11111111 -5.06451613 4.19354839 14.41919192 -5.06451613 4.48387097 14.67592593 -5.06451613 4.77419355 14.89316239 -5.06451613 5.06451613 15.08196721 -5.06451613 5.35483871 15.28761062 -5.06451613 5.64516129 15.52884615 -5.06451613 5.93548387 15.81578947 -5.06451613 6.22580645 16.16279070 -5.06451613 6.51612903 16.59090909 -5.06451613 6.80645161 17.13235294 -5.06451613 7.09677419 17.58064516 -5.06451613 7.38709677 17.58064516 -5.06451613 7.67741935 17.58064516 -5.06451613 7.96774194 17.58064516 -5.06451613 8.25806452 17.58064516 -5.06451613 8.54838710 17.58064516 -5.06451613 8.83870968 17.58064516 -5.06451613 9.12903226 17.58064516 -5.06451613 9.41935484 17.58064516 -5.06451613 9.70967742 17.58064516 -5.06451613 10.00000000 17.58064516 -5.35483871 1.00000000 12.94354839 -5.35483871 1.29032258 12.94354839 -5.35483871 1.58064516 12.94354839 -5.35483871 1.87096774 12.94354839 -5.35483871 2.16129032 12.94354839 -5.35483871 2.45161290 12.94354839 -5.35483871 2.74193548 12.94354839 -5.35483871 3.03225806 13.01587302 -5.35483871 3.32258065 13.57638889 -5.35483871 3.61290323 14.01234568 -5.35483871 3.90322581 14.36111111 -5.35483871 4.19354839 14.64646465 -5.35483871 4.48387097 14.88425926 -5.35483871 4.77419355 15.08849558 -5.35483871 5.06451613 15.28761062 -5.35483871 5.35483871 15.48672566 -5.35483871 5.64516129 15.74519231 -5.35483871 5.93548387 16.05263158 -5.35483871 6.22580645 16.42441860 -5.35483871 6.51612903 16.88311688 -5.35483871 6.80645161 17.46323529 -5.35483871 7.09677419 17.94354839 -5.35483871 7.38709677 17.94354839 -5.35483871 7.67741935 17.94354839 -5.35483871 7.96774194 17.94354839 -5.35483871 8.25806452 17.94354839 -5.35483871 8.54838710 17.94354839 -5.35483871 8.83870968 17.94354839 -5.35483871 9.12903226 17.94354839 -5.35483871 9.41935484 17.94354839 -5.35483871 9.70967742 17.94354839 -5.35483871 10.00000000 17.94354839 -5.64516129 1.00000000 13.30645161 -5.64516129 1.29032258 13.30645161 -5.64516129 1.58064516 13.30645161 -5.64516129 1.87096774 13.30645161 -5.64516129 2.16129032 13.30645161 -5.64516129 2.45161290 13.30645161 -5.64516129 2.74193548 13.30645161 -5.64516129 3.03225806 13.37301587 -5.64516129 3.32258065 13.88888889 -5.64516129 3.61290323 14.29012346 -5.64516129 3.90322581 14.61111111 -5.64516129 4.19354839 14.87373737 -5.64516129 4.48387097 15.09615385 -5.64516129 4.77419355 15.31250000 -5.64516129 5.06451613 15.52884615 -5.64516129 5.35483871 15.74519231 -5.64516129 5.64516129 15.96153846 -5.64516129 5.93548387 16.28947368 -5.64516129 6.22580645 16.68604651 -5.64516129 6.51612903 17.17532468 -5.64516129 6.80645161 17.79411765 -5.64516129 7.09677419 18.30645161 -5.64516129 7.38709677 18.30645161 -5.64516129 7.67741935 18.30645161 -5.64516129 7.96774194 18.30645161 -5.64516129 8.25806452 18.30645161 -5.64516129 8.54838710 18.30645161 -5.64516129 8.83870968 18.30645161 -5.64516129 9.12903226 18.30645161 -5.64516129 9.41935484 18.30645161 -5.64516129 9.70967742 18.30645161 -5.64516129 10.00000000 18.30645161 -5.93548387 1.00000000 13.66935484 -5.93548387 1.29032258 13.66935484 -5.93548387 1.58064516 13.66935484 -5.93548387 1.87096774 13.66935484 -5.93548387 2.16129032 13.66935484 -5.93548387 2.45161290 13.66935484 -5.93548387 2.74193548 13.66935484 -5.93548387 3.03225806 13.73015873 -5.93548387 3.32258065 14.20138889 -5.93548387 3.61290323 14.56790123 -5.93548387 3.90322581 14.86111111 -5.93548387 4.19354839 15.10526316 -5.93548387 4.48387097 15.34210526 -5.93548387 4.77419355 15.57894737 -5.93548387 5.06451613 15.81578947 -5.93548387 5.35483871 16.05263158 -5.93548387 5.64516129 16.28947368 -5.93548387 5.93548387 16.52631579 -5.93548387 6.22580645 16.94767442 -5.93548387 6.51612903 17.46753247 -5.93548387 6.80645161 18.12500000 -5.93548387 7.09677419 18.66935484 -5.93548387 7.38709677 18.66935484 -5.93548387 7.67741935 18.66935484 -5.93548387 7.96774194 18.66935484 -5.93548387 8.25806452 18.66935484 -5.93548387 8.54838710 18.66935484 -5.93548387 8.83870968 18.66935484 -5.93548387 9.12903226 18.66935484 -5.93548387 9.41935484 18.66935484 -5.93548387 9.70967742 18.66935484 -5.93548387 10.00000000 18.66935484 -6.22580645 1.00000000 14.03225806 -6.22580645 1.29032258 14.03225806 -6.22580645 1.58064516 14.03225806 -6.22580645 1.87096774 14.03225806 -6.22580645 2.16129032 14.03225806 -6.22580645 2.45161290 14.03225806 -6.22580645 2.74193548 14.03225806 -6.22580645 3.03225806 14.08730159 -6.22580645 3.32258065 14.51388889 -6.22580645 3.61290323 14.84567901 -6.22580645 3.90322581 15.11627907 -6.22580645 4.19354839 15.37790698 -6.22580645 4.48387097 15.63953488 -6.22580645 4.77419355 15.90116279 -6.22580645 5.06451613 16.16279070 -6.22580645 5.35483871 16.42441860 -6.22580645 5.64516129 16.68604651 -6.22580645 5.93548387 16.94767442 -6.22580645 6.22580645 17.20930233 -6.22580645 6.51612903 17.75974026 -6.22580645 6.80645161 18.45588235 -6.22580645 7.09677419 19.03225806 -6.22580645 7.38709677 19.03225806 -6.22580645 7.67741935 19.03225806 -6.22580645 7.96774194 19.03225806 -6.22580645 8.25806452 19.03225806 -6.22580645 8.54838710 19.03225806 -6.22580645 8.83870968 19.03225806 -6.22580645 9.12903226 19.03225806 -6.22580645 9.41935484 19.03225806 -6.22580645 9.70967742 19.03225806 -6.22580645 10.00000000 19.03225806 -6.51612903 1.00000000 14.39516129 -6.51612903 1.29032258 14.39516129 -6.51612903 1.58064516 14.39516129 -6.51612903 1.87096774 14.39516129 -6.51612903 2.16129032 14.39516129 -6.51612903 2.45161290 14.39516129 -6.51612903 2.74193548 14.39516129 -6.51612903 3.03225806 14.44444444 -6.51612903 3.32258065 14.82638889 -6.51612903 3.61290323 15.12987013 -6.51612903 3.90322581 15.42207792 -6.51612903 4.19354839 15.71428571 -6.51612903 4.48387097 16.00649351 -6.51612903 4.77419355 16.29870130 -6.51612903 5.06451613 16.59090909 -6.51612903 5.35483871 16.88311688 -6.51612903 5.64516129 17.17532468 -6.51612903 5.93548387 17.46753247 -6.51612903 6.22580645 17.75974026 -6.51612903 6.51612903 18.05194805 -6.51612903 6.80645161 18.78676471 -6.51612903 7.09677419 19.39516129 -6.51612903 7.38709677 19.39516129 -6.51612903 7.67741935 19.39516129 -6.51612903 7.96774194 19.39516129 -6.51612903 8.25806452 19.39516129 -6.51612903 8.54838710 19.39516129 -6.51612903 8.83870968 19.39516129 -6.51612903 9.12903226 19.39516129 -6.51612903 9.41935484 19.39516129 -6.51612903 9.70967742 19.39516129 -6.51612903 10.00000000 19.39516129 -6.80645161 1.00000000 14.75806452 -6.80645161 1.29032258 14.75806452 -6.80645161 1.58064516 14.75806452 -6.80645161 1.87096774 14.75806452 -6.80645161 2.16129032 14.75806452 -6.80645161 2.45161290 14.75806452 -6.80645161 2.74193548 14.75806452 -6.80645161 3.03225806 14.80158730 -6.80645161 3.32258065 15.14705882 -6.80645161 3.61290323 15.47794118 -6.80645161 3.90322581 15.80882353 -6.80645161 4.19354839 16.13970588 -6.80645161 4.48387097 16.47058824 -6.80645161 4.77419355 16.80147059 -6.80645161 5.06451613 17.13235294 -6.80645161 5.35483871 17.46323529 -6.80645161 5.64516129 17.79411765 -6.80645161 5.93548387 18.12500000 -6.80645161 6.22580645 18.45588235 -6.80645161 6.51612903 18.78676471 -6.80645161 6.80645161 19.11764706 -6.80645161 7.09677419 19.75806452 -6.80645161 7.38709677 19.75806452 -6.80645161 7.67741935 19.75806452 -6.80645161 7.96774194 19.75806452 -6.80645161 8.25806452 19.75806452 -6.80645161 8.54838710 19.75806452 -6.80645161 8.83870968 19.75806452 -6.80645161 9.12903226 19.75806452 -6.80645161 9.41935484 19.75806452 -6.80645161 9.70967742 19.75806452 -6.80645161 10.00000000 19.75806452 -7.09677419 1.00000000 15.00000000 -7.09677419 1.29032258 15.00000000 -7.09677419 1.58064516 15.00000000 -7.09677419 1.87096774 15.00000000 -7.09677419 2.16129032 15.00000000 -7.09677419 2.45161290 15.00000000 -7.09677419 2.74193548 15.00000000 -7.09677419 3.03225806 15.04032258 -7.09677419 3.32258065 15.40322581 -7.09677419 3.61290323 15.76612903 -7.09677419 3.90322581 16.12903226 -7.09677419 4.19354839 16.49193548 -7.09677419 4.48387097 16.85483871 -7.09677419 4.77419355 17.21774194 -7.09677419 5.06451613 17.58064516 -7.09677419 5.35483871 17.94354839 -7.09677419 5.64516129 18.30645161 -7.09677419 5.93548387 18.66935484 -7.09677419 6.22580645 19.03225806 -7.09677419 6.51612903 19.39516129 -7.09677419 6.80645161 19.75806452 -7.09677419 7.09677419 20.00000000 -7.09677419 7.38709677 20.00000000 -7.09677419 7.67741935 20.00000000 -7.09677419 7.96774194 20.00000000 -7.09677419 8.25806452 20.00000000 -7.09677419 8.54838710 20.00000000 -7.09677419 8.83870968 20.00000000 -7.09677419 9.12903226 20.00000000 -7.09677419 9.41935484 20.00000000 -7.09677419 9.70967742 20.00000000 -7.09677419 10.00000000 20.00000000 -7.38709677 1.00000000 15.00000000 -7.38709677 1.29032258 15.00000000 -7.38709677 1.58064516 15.00000000 -7.38709677 1.87096774 15.00000000 -7.38709677 2.16129032 15.00000000 -7.38709677 2.45161290 15.00000000 -7.38709677 2.74193548 15.00000000 -7.38709677 3.03225806 15.04032258 -7.38709677 3.32258065 15.40322581 -7.38709677 3.61290323 15.76612903 -7.38709677 3.90322581 16.12903226 -7.38709677 4.19354839 16.49193548 -7.38709677 4.48387097 16.85483871 -7.38709677 4.77419355 17.21774194 -7.38709677 5.06451613 17.58064516 -7.38709677 5.35483871 17.94354839 -7.38709677 5.64516129 18.30645161 -7.38709677 5.93548387 18.66935484 -7.38709677 6.22580645 19.03225806 -7.38709677 6.51612903 19.39516129 -7.38709677 6.80645161 19.75806452 -7.38709677 7.09677419 20.00000000 -7.38709677 7.38709677 20.00000000 -7.38709677 7.67741935 20.00000000 -7.38709677 7.96774194 20.00000000 -7.38709677 8.25806452 20.00000000 -7.38709677 8.54838710 20.00000000 -7.38709677 8.83870968 20.00000000 -7.38709677 9.12903226 20.00000000 -7.38709677 9.41935484 20.00000000 -7.38709677 9.70967742 20.00000000 -7.38709677 10.00000000 20.00000000 -7.67741935 1.00000000 15.00000000 -7.67741935 1.29032258 15.00000000 -7.67741935 1.58064516 15.00000000 -7.67741935 1.87096774 15.00000000 -7.67741935 2.16129032 15.00000000 -7.67741935 2.45161290 15.00000000 -7.67741935 2.74193548 15.00000000 -7.67741935 3.03225806 15.04032258 -7.67741935 3.32258065 15.40322581 -7.67741935 3.61290323 15.76612903 -7.67741935 3.90322581 16.12903226 -7.67741935 4.19354839 16.49193548 -7.67741935 4.48387097 16.85483871 -7.67741935 4.77419355 17.21774194 -7.67741935 5.06451613 17.58064516 -7.67741935 5.35483871 17.94354839 -7.67741935 5.64516129 18.30645161 -7.67741935 5.93548387 18.66935484 -7.67741935 6.22580645 19.03225806 -7.67741935 6.51612903 19.39516129 -7.67741935 6.80645161 19.75806452 -7.67741935 7.09677419 20.00000000 -7.67741935 7.38709677 20.00000000 -7.67741935 7.67741935 20.00000000 -7.67741935 7.96774194 20.00000000 -7.67741935 8.25806452 20.00000000 -7.67741935 8.54838710 20.00000000 -7.67741935 8.83870968 20.00000000 -7.67741935 9.12903226 20.00000000 -7.67741935 9.41935484 20.00000000 -7.67741935 9.70967742 20.00000000 -7.67741935 10.00000000 20.00000000 -7.96774194 1.00000000 15.00000000 -7.96774194 1.29032258 15.00000000 -7.96774194 1.58064516 15.00000000 -7.96774194 1.87096774 15.00000000 -7.96774194 2.16129032 15.00000000 -7.96774194 2.45161290 15.00000000 -7.96774194 2.74193548 15.00000000 -7.96774194 3.03225806 15.04032258 -7.96774194 3.32258065 15.40322581 -7.96774194 3.61290323 15.76612903 -7.96774194 3.90322581 16.12903226 -7.96774194 4.19354839 16.49193548 -7.96774194 4.48387097 16.85483871 -7.96774194 4.77419355 17.21774194 -7.96774194 5.06451613 17.58064516 -7.96774194 5.35483871 17.94354839 -7.96774194 5.64516129 18.30645161 -7.96774194 5.93548387 18.66935484 -7.96774194 6.22580645 19.03225806 -7.96774194 6.51612903 19.39516129 -7.96774194 6.80645161 19.75806452 -7.96774194 7.09677419 20.00000000 -7.96774194 7.38709677 20.00000000 -7.96774194 7.67741935 20.00000000 -7.96774194 7.96774194 20.00000000 -7.96774194 8.25806452 20.00000000 -7.96774194 8.54838710 20.00000000 -7.96774194 8.83870968 20.00000000 -7.96774194 9.12903226 20.00000000 -7.96774194 9.41935484 20.00000000 -7.96774194 9.70967742 20.00000000 -7.96774194 10.00000000 20.00000000 -8.25806452 1.00000000 15.00000000 -8.25806452 1.29032258 15.00000000 -8.25806452 1.58064516 15.00000000 -8.25806452 1.87096774 15.00000000 -8.25806452 2.16129032 15.00000000 -8.25806452 2.45161290 15.00000000 -8.25806452 2.74193548 15.00000000 -8.25806452 3.03225806 15.04032258 -8.25806452 3.32258065 15.40322581 -8.25806452 3.61290323 15.76612903 -8.25806452 3.90322581 16.12903226 -8.25806452 4.19354839 16.49193548 -8.25806452 4.48387097 16.85483871 -8.25806452 4.77419355 17.21774194 -8.25806452 5.06451613 17.58064516 -8.25806452 5.35483871 17.94354839 -8.25806452 5.64516129 18.30645161 -8.25806452 5.93548387 18.66935484 -8.25806452 6.22580645 19.03225806 -8.25806452 6.51612903 19.39516129 -8.25806452 6.80645161 19.75806452 -8.25806452 7.09677419 20.00000000 -8.25806452 7.38709677 20.00000000 -8.25806452 7.67741935 20.00000000 -8.25806452 7.96774194 20.00000000 -8.25806452 8.25806452 20.00000000 -8.25806452 8.54838710 20.00000000 -8.25806452 8.83870968 20.00000000 -8.25806452 9.12903226 20.00000000 -8.25806452 9.41935484 20.00000000 -8.25806452 9.70967742 20.00000000 -8.25806452 10.00000000 20.00000000 -8.54838710 1.00000000 15.00000000 -8.54838710 1.29032258 15.00000000 -8.54838710 1.58064516 15.00000000 -8.54838710 1.87096774 15.00000000 -8.54838710 2.16129032 15.00000000 -8.54838710 2.45161290 15.00000000 -8.54838710 2.74193548 15.00000000 -8.54838710 3.03225806 15.04032258 -8.54838710 3.32258065 15.40322581 -8.54838710 3.61290323 15.76612903 -8.54838710 3.90322581 16.12903226 -8.54838710 4.19354839 16.49193548 -8.54838710 4.48387097 16.85483871 -8.54838710 4.77419355 17.21774194 -8.54838710 5.06451613 17.58064516 -8.54838710 5.35483871 17.94354839 -8.54838710 5.64516129 18.30645161 -8.54838710 5.93548387 18.66935484 -8.54838710 6.22580645 19.03225806 -8.54838710 6.51612903 19.39516129 -8.54838710 6.80645161 19.75806452 -8.54838710 7.09677419 20.00000000 -8.54838710 7.38709677 20.00000000 -8.54838710 7.67741935 20.00000000 -8.54838710 7.96774194 20.00000000 -8.54838710 8.25806452 20.00000000 -8.54838710 8.54838710 20.00000000 -8.54838710 8.83870968 20.00000000 -8.54838710 9.12903226 20.00000000 -8.54838710 9.41935484 20.00000000 -8.54838710 9.70967742 20.00000000 -8.54838710 10.00000000 20.00000000 -8.83870968 1.00000000 15.00000000 -8.83870968 1.29032258 15.00000000 -8.83870968 1.58064516 15.00000000 -8.83870968 1.87096774 15.00000000 -8.83870968 2.16129032 15.00000000 -8.83870968 2.45161290 15.00000000 -8.83870968 2.74193548 15.00000000 -8.83870968 3.03225806 15.04032258 -8.83870968 3.32258065 15.40322581 -8.83870968 3.61290323 15.76612903 -8.83870968 3.90322581 16.12903226 -8.83870968 4.19354839 16.49193548 -8.83870968 4.48387097 16.85483871 -8.83870968 4.77419355 17.21774194 -8.83870968 5.06451613 17.58064516 -8.83870968 5.35483871 17.94354839 -8.83870968 5.64516129 18.30645161 -8.83870968 5.93548387 18.66935484 -8.83870968 6.22580645 19.03225806 -8.83870968 6.51612903 19.39516129 -8.83870968 6.80645161 19.75806452 -8.83870968 7.09677419 20.00000000 -8.83870968 7.38709677 20.00000000 -8.83870968 7.67741935 20.00000000 -8.83870968 7.96774194 20.00000000 -8.83870968 8.25806452 20.00000000 -8.83870968 8.54838710 20.00000000 -8.83870968 8.83870968 20.00000000 -8.83870968 9.12903226 20.00000000 -8.83870968 9.41935484 20.00000000 -8.83870968 9.70967742 20.00000000 -8.83870968 10.00000000 20.00000000 -9.12903226 1.00000000 15.00000000 -9.12903226 1.29032258 15.00000000 -9.12903226 1.58064516 15.00000000 -9.12903226 1.87096774 15.00000000 -9.12903226 2.16129032 15.00000000 -9.12903226 2.45161290 15.00000000 -9.12903226 2.74193548 15.00000000 -9.12903226 3.03225806 15.04032258 -9.12903226 3.32258065 15.40322581 -9.12903226 3.61290323 15.76612903 -9.12903226 3.90322581 16.12903226 -9.12903226 4.19354839 16.49193548 -9.12903226 4.48387097 16.85483871 -9.12903226 4.77419355 17.21774194 -9.12903226 5.06451613 17.58064516 -9.12903226 5.35483871 17.94354839 -9.12903226 5.64516129 18.30645161 -9.12903226 5.93548387 18.66935484 -9.12903226 6.22580645 19.03225806 -9.12903226 6.51612903 19.39516129 -9.12903226 6.80645161 19.75806452 -9.12903226 7.09677419 20.00000000 -9.12903226 7.38709677 20.00000000 -9.12903226 7.67741935 20.00000000 -9.12903226 7.96774194 20.00000000 -9.12903226 8.25806452 20.00000000 -9.12903226 8.54838710 20.00000000 -9.12903226 8.83870968 20.00000000 -9.12903226 9.12903226 20.00000000 -9.12903226 9.41935484 20.00000000 -9.12903226 9.70967742 20.00000000 -9.12903226 10.00000000 20.00000000 -9.41935484 1.00000000 15.00000000 -9.41935484 1.29032258 15.00000000 -9.41935484 1.58064516 15.00000000 -9.41935484 1.87096774 15.00000000 -9.41935484 2.16129032 15.00000000 -9.41935484 2.45161290 15.00000000 -9.41935484 2.74193548 15.00000000 -9.41935484 3.03225806 15.04032258 -9.41935484 3.32258065 15.40322581 -9.41935484 3.61290323 15.76612903 -9.41935484 3.90322581 16.12903226 -9.41935484 4.19354839 16.49193548 -9.41935484 4.48387097 16.85483871 -9.41935484 4.77419355 17.21774194 -9.41935484 5.06451613 17.58064516 -9.41935484 5.35483871 17.94354839 -9.41935484 5.64516129 18.30645161 -9.41935484 5.93548387 18.66935484 -9.41935484 6.22580645 19.03225806 -9.41935484 6.51612903 19.39516129 -9.41935484 6.80645161 19.75806452 -9.41935484 7.09677419 20.00000000 -9.41935484 7.38709677 20.00000000 -9.41935484 7.67741935 20.00000000 -9.41935484 7.96774194 20.00000000 -9.41935484 8.25806452 20.00000000 -9.41935484 8.54838710 20.00000000 -9.41935484 8.83870968 20.00000000 -9.41935484 9.12903226 20.00000000 -9.41935484 9.41935484 20.00000000 -9.41935484 9.70967742 20.00000000 -9.41935484 10.00000000 20.00000000 -9.70967742 1.00000000 15.00000000 -9.70967742 1.29032258 15.00000000 -9.70967742 1.58064516 15.00000000 -9.70967742 1.87096774 15.00000000 -9.70967742 2.16129032 15.00000000 -9.70967742 2.45161290 15.00000000 -9.70967742 2.74193548 15.00000000 -9.70967742 3.03225806 15.04032258 -9.70967742 3.32258065 15.40322581 -9.70967742 3.61290323 15.76612903 -9.70967742 3.90322581 16.12903226 -9.70967742 4.19354839 16.49193548 -9.70967742 4.48387097 16.85483871 -9.70967742 4.77419355 17.21774194 -9.70967742 5.06451613 17.58064516 -9.70967742 5.35483871 17.94354839 -9.70967742 5.64516129 18.30645161 -9.70967742 5.93548387 18.66935484 -9.70967742 6.22580645 19.03225806 -9.70967742 6.51612903 19.39516129 -9.70967742 6.80645161 19.75806452 -9.70967742 7.09677419 20.00000000 -9.70967742 7.38709677 20.00000000 -9.70967742 7.67741935 20.00000000 -9.70967742 7.96774194 20.00000000 -9.70967742 8.25806452 20.00000000 -9.70967742 8.54838710 20.00000000 -9.70967742 8.83870968 20.00000000 -9.70967742 9.12903226 20.00000000 -9.70967742 9.41935484 20.00000000 -9.70967742 9.70967742 20.00000000 -9.70967742 10.00000000 20.00000000 -10.00000000 1.00000000 15.00000000 -10.00000000 1.29032258 15.00000000 -10.00000000 1.58064516 15.00000000 -10.00000000 1.87096774 15.00000000 -10.00000000 2.16129032 15.00000000 -10.00000000 2.45161290 15.00000000 -10.00000000 2.74193548 15.00000000 -10.00000000 3.03225806 15.04032258 -10.00000000 3.32258065 15.40322581 -10.00000000 3.61290323 15.76612903 -10.00000000 3.90322581 16.12903226 -10.00000000 4.19354839 16.49193548 -10.00000000 4.48387097 16.85483871 -10.00000000 4.77419355 17.21774194 -10.00000000 5.06451613 17.58064516 -10.00000000 5.35483871 17.94354839 -10.00000000 5.64516129 18.30645161 -10.00000000 5.93548387 18.66935484 -10.00000000 6.22580645 19.03225806 -10.00000000 6.51612903 19.39516129 -10.00000000 6.80645161 19.75806452 -10.00000000 7.09677419 20.00000000 -10.00000000 7.38709677 20.00000000 -10.00000000 7.67741935 20.00000000 -10.00000000 7.96774194 20.00000000 -10.00000000 8.25806452 20.00000000 -10.00000000 8.54838710 20.00000000 -10.00000000 8.83870968 20.00000000 -10.00000000 9.12903226 20.00000000 -10.00000000 9.41935484 20.00000000 -10.00000000 9.70967742 20.00000000 -10.00000000 10.00000000 20.00000000 +FoodQuality Service Tip +1.000000000 1.000000000 10.000000000 +1.000000000 1.290322581 10.000000000 +1.000000000 1.580645161 10.000000000 +1.000000000 1.870967742 10.000000000 +1.000000000 2.161290323 10.000000000 +1.000000000 2.451612903 10.000000000 +1.000000000 2.741935484 10.000000000 +1.000000000 3.032258065 10.040322581 +1.000000000 3.322580645 10.403225806 +1.000000000 3.612903226 10.766129032 +1.000000000 3.903225806 11.129032258 +1.000000000 4.193548387 11.491935484 +1.000000000 4.483870968 11.854838710 +1.000000000 4.774193548 12.217741935 +1.000000000 5.064516129 12.580645161 +1.000000000 5.354838710 12.943548387 +1.000000000 5.645161290 13.306451613 +1.000000000 5.935483871 13.669354839 +1.000000000 6.225806452 14.032258065 +1.000000000 6.516129032 14.395161290 +1.000000000 6.806451613 14.758064516 +1.000000000 7.096774194 15.000000000 +1.000000000 7.387096774 15.000000000 +1.000000000 7.677419355 15.000000000 +1.000000000 7.967741935 15.000000000 +1.000000000 8.258064516 15.000000000 +1.000000000 8.548387097 15.000000000 +1.000000000 8.838709677 15.000000000 +1.000000000 9.129032258 15.000000000 +1.000000000 9.419354839 15.000000000 +1.000000000 9.709677419 15.000000000 +1.000000000 10.000000000 15.000000000 +1.290322581 1.000000000 10.000000000 +1.290322581 1.290322581 10.000000000 +1.290322581 1.580645161 10.000000000 +1.290322581 1.870967742 10.000000000 +1.290322581 2.161290323 10.000000000 +1.290322581 2.451612903 10.000000000 +1.290322581 2.741935484 10.000000000 +1.290322581 3.032258065 10.040322581 +1.290322581 3.322580645 10.403225806 +1.290322581 3.612903226 10.766129032 +1.290322581 3.903225806 11.129032258 +1.290322581 4.193548387 11.491935484 +1.290322581 4.483870968 11.854838710 +1.290322581 4.774193548 12.217741935 +1.290322581 5.064516129 12.580645161 +1.290322581 5.354838710 12.943548387 +1.290322581 5.645161290 13.306451613 +1.290322581 5.935483871 13.669354839 +1.290322581 6.225806452 14.032258065 +1.290322581 6.516129032 14.395161290 +1.290322581 6.806451613 14.758064516 +1.290322581 7.096774194 15.000000000 +1.290322581 7.387096774 15.000000000 +1.290322581 7.677419355 15.000000000 +1.290322581 7.967741935 15.000000000 +1.290322581 8.258064516 15.000000000 +1.290322581 8.548387097 15.000000000 +1.290322581 8.838709677 15.000000000 +1.290322581 9.129032258 15.000000000 +1.290322581 9.419354839 15.000000000 +1.290322581 9.709677419 15.000000000 +1.290322581 10.000000000 15.000000000 +1.580645161 1.000000000 10.000000000 +1.580645161 1.290322581 10.000000000 +1.580645161 1.580645161 10.000000000 +1.580645161 1.870967742 10.000000000 +1.580645161 2.161290323 10.000000000 +1.580645161 2.451612903 10.000000000 +1.580645161 2.741935484 10.000000000 +1.580645161 3.032258065 10.040322581 +1.580645161 3.322580645 10.403225806 +1.580645161 3.612903226 10.766129032 +1.580645161 3.903225806 11.129032258 +1.580645161 4.193548387 11.491935484 +1.580645161 4.483870968 11.854838710 +1.580645161 4.774193548 12.217741935 +1.580645161 5.064516129 12.580645161 +1.580645161 5.354838710 12.943548387 +1.580645161 5.645161290 13.306451613 +1.580645161 5.935483871 13.669354839 +1.580645161 6.225806452 14.032258065 +1.580645161 6.516129032 14.395161290 +1.580645161 6.806451613 14.758064516 +1.580645161 7.096774194 15.000000000 +1.580645161 7.387096774 15.000000000 +1.580645161 7.677419355 15.000000000 +1.580645161 7.967741935 15.000000000 +1.580645161 8.258064516 15.000000000 +1.580645161 8.548387097 15.000000000 +1.580645161 8.838709677 15.000000000 +1.580645161 9.129032258 15.000000000 +1.580645161 9.419354839 15.000000000 +1.580645161 9.709677419 15.000000000 +1.580645161 10.000000000 15.000000000 +1.870967742 1.000000000 10.000000000 +1.870967742 1.290322581 10.000000000 +1.870967742 1.580645161 10.000000000 +1.870967742 1.870967742 10.000000000 +1.870967742 2.161290323 10.000000000 +1.870967742 2.451612903 10.000000000 +1.870967742 2.741935484 10.000000000 +1.870967742 3.032258065 10.040322581 +1.870967742 3.322580645 10.403225806 +1.870967742 3.612903226 10.766129032 +1.870967742 3.903225806 11.129032258 +1.870967742 4.193548387 11.491935484 +1.870967742 4.483870968 11.854838710 +1.870967742 4.774193548 12.217741935 +1.870967742 5.064516129 12.580645161 +1.870967742 5.354838710 12.943548387 +1.870967742 5.645161290 13.306451613 +1.870967742 5.935483871 13.669354839 +1.870967742 6.225806452 14.032258065 +1.870967742 6.516129032 14.395161290 +1.870967742 6.806451613 14.758064516 +1.870967742 7.096774194 15.000000000 +1.870967742 7.387096774 15.000000000 +1.870967742 7.677419355 15.000000000 +1.870967742 7.967741935 15.000000000 +1.870967742 8.258064516 15.000000000 +1.870967742 8.548387097 15.000000000 +1.870967742 8.838709677 15.000000000 +1.870967742 9.129032258 15.000000000 +1.870967742 9.419354839 15.000000000 +1.870967742 9.709677419 15.000000000 +1.870967742 10.000000000 15.000000000 +2.161290323 1.000000000 10.000000000 +2.161290323 1.290322581 10.000000000 +2.161290323 1.580645161 10.000000000 +2.161290323 1.870967742 10.000000000 +2.161290323 2.161290323 10.000000000 +2.161290323 2.451612903 10.000000000 +2.161290323 2.741935484 10.000000000 +2.161290323 3.032258065 10.040322581 +2.161290323 3.322580645 10.403225806 +2.161290323 3.612903226 10.766129032 +2.161290323 3.903225806 11.129032258 +2.161290323 4.193548387 11.491935484 +2.161290323 4.483870968 11.854838710 +2.161290323 4.774193548 12.217741935 +2.161290323 5.064516129 12.580645161 +2.161290323 5.354838710 12.943548387 +2.161290323 5.645161290 13.306451613 +2.161290323 5.935483871 13.669354839 +2.161290323 6.225806452 14.032258065 +2.161290323 6.516129032 14.395161290 +2.161290323 6.806451613 14.758064516 +2.161290323 7.096774194 15.000000000 +2.161290323 7.387096774 15.000000000 +2.161290323 7.677419355 15.000000000 +2.161290323 7.967741935 15.000000000 +2.161290323 8.258064516 15.000000000 +2.161290323 8.548387097 15.000000000 +2.161290323 8.838709677 15.000000000 +2.161290323 9.129032258 15.000000000 +2.161290323 9.419354839 15.000000000 +2.161290323 9.709677419 15.000000000 +2.161290323 10.000000000 15.000000000 +2.451612903 1.000000000 10.000000000 +2.451612903 1.290322581 10.000000000 +2.451612903 1.580645161 10.000000000 +2.451612903 1.870967742 10.000000000 +2.451612903 2.161290323 10.000000000 +2.451612903 2.451612903 10.000000000 +2.451612903 2.741935484 10.000000000 +2.451612903 3.032258065 10.040322581 +2.451612903 3.322580645 10.403225806 +2.451612903 3.612903226 10.766129032 +2.451612903 3.903225806 11.129032258 +2.451612903 4.193548387 11.491935484 +2.451612903 4.483870968 11.854838710 +2.451612903 4.774193548 12.217741935 +2.451612903 5.064516129 12.580645161 +2.451612903 5.354838710 12.943548387 +2.451612903 5.645161290 13.306451613 +2.451612903 5.935483871 13.669354839 +2.451612903 6.225806452 14.032258065 +2.451612903 6.516129032 14.395161290 +2.451612903 6.806451613 14.758064516 +2.451612903 7.096774194 15.000000000 +2.451612903 7.387096774 15.000000000 +2.451612903 7.677419355 15.000000000 +2.451612903 7.967741935 15.000000000 +2.451612903 8.258064516 15.000000000 +2.451612903 8.548387097 15.000000000 +2.451612903 8.838709677 15.000000000 +2.451612903 9.129032258 15.000000000 +2.451612903 9.419354839 15.000000000 +2.451612903 9.709677419 15.000000000 +2.451612903 10.000000000 15.000000000 +2.741935484 1.000000000 10.000000000 +2.741935484 1.290322581 10.000000000 +2.741935484 1.580645161 10.000000000 +2.741935484 1.870967742 10.000000000 +2.741935484 2.161290323 10.000000000 +2.741935484 2.451612903 10.000000000 +2.741935484 2.741935484 10.000000000 +2.741935484 3.032258065 10.040322581 +2.741935484 3.322580645 10.403225806 +2.741935484 3.612903226 10.766129032 +2.741935484 3.903225806 11.129032258 +2.741935484 4.193548387 11.491935484 +2.741935484 4.483870968 11.854838710 +2.741935484 4.774193548 12.217741935 +2.741935484 5.064516129 12.580645161 +2.741935484 5.354838710 12.943548387 +2.741935484 5.645161290 13.306451613 +2.741935484 5.935483871 13.669354839 +2.741935484 6.225806452 14.032258065 +2.741935484 6.516129032 14.395161290 +2.741935484 6.806451613 14.758064516 +2.741935484 7.096774194 15.000000000 +2.741935484 7.387096774 15.000000000 +2.741935484 7.677419355 15.000000000 +2.741935484 7.967741935 15.000000000 +2.741935484 8.258064516 15.000000000 +2.741935484 8.548387097 15.000000000 +2.741935484 8.838709677 15.000000000 +2.741935484 9.129032258 15.000000000 +2.741935484 9.419354839 15.000000000 +2.741935484 9.709677419 15.000000000 +2.741935484 10.000000000 15.000000000 +3.032258065 1.000000000 10.040322581 +3.032258065 1.290322581 10.040322581 +3.032258065 1.580645161 10.040322581 +3.032258065 1.870967742 10.040322581 +3.032258065 2.161290323 10.040322581 +3.032258065 2.451612903 10.040322581 +3.032258065 2.741935484 10.040322581 +3.032258065 3.032258065 10.158730159 +3.032258065 3.322580645 10.515873016 +3.032258065 3.612903226 10.873015873 +3.032258065 3.903225806 11.230158730 +3.032258065 4.193548387 11.587301587 +3.032258065 4.483870968 11.944444444 +3.032258065 4.774193548 12.301587302 +3.032258065 5.064516129 12.658730159 +3.032258065 5.354838710 13.015873016 +3.032258065 5.645161290 13.373015873 +3.032258065 5.935483871 13.730158730 +3.032258065 6.225806452 14.087301587 +3.032258065 6.516129032 14.444444444 +3.032258065 6.806451613 14.801587302 +3.032258065 7.096774194 15.040322581 +3.032258065 7.387096774 15.040322581 +3.032258065 7.677419355 15.040322581 +3.032258065 7.967741935 15.040322581 +3.032258065 8.258064516 15.040322581 +3.032258065 8.548387097 15.040322581 +3.032258065 8.838709677 15.040322581 +3.032258065 9.129032258 15.040322581 +3.032258065 9.419354839 15.040322581 +3.032258065 9.709677419 15.040322581 +3.032258065 10.000000000 15.040322581 +3.322580645 1.000000000 10.403225806 +3.322580645 1.290322581 10.403225806 +3.322580645 1.580645161 10.403225806 +3.322580645 1.870967742 10.403225806 +3.322580645 2.161290323 10.403225806 +3.322580645 2.451612903 10.403225806 +3.322580645 2.741935484 10.403225806 +3.322580645 3.032258065 10.515873016 +3.322580645 3.322580645 11.388888889 +3.322580645 3.612903226 11.701388889 +3.322580645 3.903225806 12.013888889 +3.322580645 4.193548387 12.326388889 +3.322580645 4.483870968 12.638888889 +3.322580645 4.774193548 12.951388889 +3.322580645 5.064516129 13.263888889 +3.322580645 5.354838710 13.576388889 +3.322580645 5.645161290 13.888888889 +3.322580645 5.935483871 14.201388889 +3.322580645 6.225806452 14.513888889 +3.322580645 6.516129032 14.826388889 +3.322580645 6.806451613 15.147058824 +3.322580645 7.096774194 15.403225806 +3.322580645 7.387096774 15.403225806 +3.322580645 7.677419355 15.403225806 +3.322580645 7.967741935 15.403225806 +3.322580645 8.258064516 15.403225806 +3.322580645 8.548387097 15.403225806 +3.322580645 8.838709677 15.403225806 +3.322580645 9.129032258 15.403225806 +3.322580645 9.419354839 15.403225806 +3.322580645 9.709677419 15.403225806 +3.322580645 10.000000000 15.403225806 +3.612903226 1.000000000 10.766129032 +3.612903226 1.290322581 10.766129032 +3.612903226 1.580645161 10.766129032 +3.612903226 1.870967742 10.766129032 +3.612903226 2.161290323 10.766129032 +3.612903226 2.451612903 10.766129032 +3.612903226 2.741935484 10.766129032 +3.612903226 3.032258065 10.873015873 +3.612903226 3.322580645 11.701388889 +3.612903226 3.612903226 12.345679012 +3.612903226 3.903225806 12.623456790 +3.612903226 4.193548387 12.901234568 +3.612903226 4.483870968 13.179012346 +3.612903226 4.774193548 13.456790123 +3.612903226 5.064516129 13.734567901 +3.612903226 5.354838710 14.012345679 +3.612903226 5.645161290 14.290123457 +3.612903226 5.935483871 14.567901235 +3.612903226 6.225806452 14.845679012 +3.612903226 6.516129032 15.129870130 +3.612903226 6.806451613 15.477941176 +3.612903226 7.096774194 15.766129032 +3.612903226 7.387096774 15.766129032 +3.612903226 7.677419355 15.766129032 +3.612903226 7.967741935 15.766129032 +3.612903226 8.258064516 15.766129032 +3.612903226 8.548387097 15.766129032 +3.612903226 8.838709677 15.766129032 +3.612903226 9.129032258 15.766129032 +3.612903226 9.419354839 15.766129032 +3.612903226 9.709677419 15.766129032 +3.612903226 10.000000000 15.766129032 +3.903225806 1.000000000 11.129032258 +3.903225806 1.290322581 11.129032258 +3.903225806 1.580645161 11.129032258 +3.903225806 1.870967742 11.129032258 +3.903225806 2.161290323 11.129032258 +3.903225806 2.451612903 11.129032258 +3.903225806 2.741935484 11.129032258 +3.903225806 3.032258065 11.230158730 +3.903225806 3.322580645 12.013888889 +3.903225806 3.612903226 12.623456790 +3.903225806 3.903225806 13.111111111 +3.903225806 4.193548387 13.361111111 +3.903225806 4.483870968 13.611111111 +3.903225806 4.774193548 13.861111111 +3.903225806 5.064516129 14.111111111 +3.903225806 5.354838710 14.361111111 +3.903225806 5.645161290 14.611111111 +3.903225806 5.935483871 14.861111111 +3.903225806 6.225806452 15.116279070 +3.903225806 6.516129032 15.422077922 +3.903225806 6.806451613 15.808823529 +3.903225806 7.096774194 16.129032258 +3.903225806 7.387096774 16.129032258 +3.903225806 7.677419355 16.129032258 +3.903225806 7.967741935 16.129032258 +3.903225806 8.258064516 16.129032258 +3.903225806 8.548387097 16.129032258 +3.903225806 8.838709677 16.129032258 +3.903225806 9.129032258 16.129032258 +3.903225806 9.419354839 16.129032258 +3.903225806 9.709677419 16.129032258 +3.903225806 10.000000000 16.129032258 +4.193548387 1.000000000 11.491935484 +4.193548387 1.290322581 11.491935484 +4.193548387 1.580645161 11.491935484 +4.193548387 1.870967742 11.491935484 +4.193548387 2.161290323 11.491935484 +4.193548387 2.451612903 11.491935484 +4.193548387 2.741935484 11.491935484 +4.193548387 3.032258065 11.587301587 +4.193548387 3.322580645 12.326388889 +4.193548387 3.612903226 12.901234568 +4.193548387 3.903225806 13.361111111 +4.193548387 4.193548387 13.737373737 +4.193548387 4.483870968 13.964646465 +4.193548387 4.774193548 14.191919192 +4.193548387 5.064516129 14.419191919 +4.193548387 5.354838710 14.646464646 +4.193548387 5.645161290 14.873737374 +4.193548387 5.935483871 15.105263158 +4.193548387 6.225806452 15.377906977 +4.193548387 6.516129032 15.714285714 +4.193548387 6.806451613 16.139705882 +4.193548387 7.096774194 16.491935484 +4.193548387 7.387096774 16.491935484 +4.193548387 7.677419355 16.491935484 +4.193548387 7.967741935 16.491935484 +4.193548387 8.258064516 16.491935484 +4.193548387 8.548387097 16.491935484 +4.193548387 8.838709677 16.491935484 +4.193548387 9.129032258 16.491935484 +4.193548387 9.419354839 16.491935484 +4.193548387 9.709677419 16.491935484 +4.193548387 10.000000000 16.491935484 +4.483870968 1.000000000 11.854838710 +4.483870968 1.290322581 11.854838710 +4.483870968 1.580645161 11.854838710 +4.483870968 1.870967742 11.854838710 +4.483870968 2.161290323 11.854838710 +4.483870968 2.451612903 11.854838710 +4.483870968 2.741935484 11.854838710 +4.483870968 3.032258065 11.944444444 +4.483870968 3.322580645 12.638888889 +4.483870968 3.612903226 13.179012346 +4.483870968 3.903225806 13.611111111 +4.483870968 4.193548387 13.964646465 +4.483870968 4.483870968 14.259259259 +4.483870968 4.774193548 14.467592593 +4.483870968 5.064516129 14.675925926 +4.483870968 5.354838710 14.884259259 +4.483870968 5.645161290 15.096153846 +4.483870968 5.935483871 15.342105263 +4.483870968 6.225806452 15.639534884 +4.483870968 6.516129032 16.006493506 +4.483870968 6.806451613 16.470588235 +4.483870968 7.096774194 16.854838710 +4.483870968 7.387096774 16.854838710 +4.483870968 7.677419355 16.854838710 +4.483870968 7.967741935 16.854838710 +4.483870968 8.258064516 16.854838710 +4.483870968 8.548387097 16.854838710 +4.483870968 8.838709677 16.854838710 +4.483870968 9.129032258 16.854838710 +4.483870968 9.419354839 16.854838710 +4.483870968 9.709677419 16.854838710 +4.483870968 10.000000000 16.854838710 +4.774193548 1.000000000 12.217741935 +4.774193548 1.290322581 12.217741935 +4.774193548 1.580645161 12.217741935 +4.774193548 1.870967742 12.217741935 +4.774193548 2.161290323 12.217741935 +4.774193548 2.451612903 12.217741935 +4.774193548 2.741935484 12.217741935 +4.774193548 3.032258065 12.301587302 +4.774193548 3.322580645 12.951388889 +4.774193548 3.612903226 13.456790123 +4.774193548 3.903225806 13.861111111 +4.774193548 4.193548387 14.191919192 +4.774193548 4.483870968 14.467592593 +4.774193548 4.774193548 14.700854701 +4.774193548 5.064516129 14.893162393 +4.774193548 5.354838710 15.088495575 +4.774193548 5.645161290 15.312500000 +4.774193548 5.935483871 15.578947368 +4.774193548 6.225806452 15.901162791 +4.774193548 6.516129032 16.298701299 +4.774193548 6.806451613 16.801470588 +4.774193548 7.096774194 17.217741935 +4.774193548 7.387096774 17.217741935 +4.774193548 7.677419355 17.217741935 +4.774193548 7.967741935 17.217741935 +4.774193548 8.258064516 17.217741935 +4.774193548 8.548387097 17.217741935 +4.774193548 8.838709677 17.217741935 +4.774193548 9.129032258 17.217741935 +4.774193548 9.419354839 17.217741935 +4.774193548 9.709677419 17.217741935 +4.774193548 10.000000000 17.217741935 +5.064516129 1.000000000 12.580645161 +5.064516129 1.290322581 12.580645161 +5.064516129 1.580645161 12.580645161 +5.064516129 1.870967742 12.580645161 +5.064516129 2.161290323 12.580645161 +5.064516129 2.451612903 12.580645161 +5.064516129 2.741935484 12.580645161 +5.064516129 3.032258065 12.658730159 +5.064516129 3.322580645 13.263888889 +5.064516129 3.612903226 13.734567901 +5.064516129 3.903225806 14.111111111 +5.064516129 4.193548387 14.419191919 +5.064516129 4.483870968 14.675925926 +5.064516129 4.774193548 14.893162393 +5.064516129 5.064516129 15.081967213 +5.064516129 5.354838710 15.287610619 +5.064516129 5.645161290 15.528846154 +5.064516129 5.935483871 15.815789474 +5.064516129 6.225806452 16.162790698 +5.064516129 6.516129032 16.590909091 +5.064516129 6.806451613 17.132352941 +5.064516129 7.096774194 17.580645161 +5.064516129 7.387096774 17.580645161 +5.064516129 7.677419355 17.580645161 +5.064516129 7.967741935 17.580645161 +5.064516129 8.258064516 17.580645161 +5.064516129 8.548387097 17.580645161 +5.064516129 8.838709677 17.580645161 +5.064516129 9.129032258 17.580645161 +5.064516129 9.419354839 17.580645161 +5.064516129 9.709677419 17.580645161 +5.064516129 10.000000000 17.580645161 +5.354838710 1.000000000 12.943548387 +5.354838710 1.290322581 12.943548387 +5.354838710 1.580645161 12.943548387 +5.354838710 1.870967742 12.943548387 +5.354838710 2.161290323 12.943548387 +5.354838710 2.451612903 12.943548387 +5.354838710 2.741935484 12.943548387 +5.354838710 3.032258065 13.015873016 +5.354838710 3.322580645 13.576388889 +5.354838710 3.612903226 14.012345679 +5.354838710 3.903225806 14.361111111 +5.354838710 4.193548387 14.646464646 +5.354838710 4.483870968 14.884259259 +5.354838710 4.774193548 15.088495575 +5.354838710 5.064516129 15.287610619 +5.354838710 5.354838710 15.486725664 +5.354838710 5.645161290 15.745192308 +5.354838710 5.935483871 16.052631579 +5.354838710 6.225806452 16.424418605 +5.354838710 6.516129032 16.883116883 +5.354838710 6.806451613 17.463235294 +5.354838710 7.096774194 17.943548387 +5.354838710 7.387096774 17.943548387 +5.354838710 7.677419355 17.943548387 +5.354838710 7.967741935 17.943548387 +5.354838710 8.258064516 17.943548387 +5.354838710 8.548387097 17.943548387 +5.354838710 8.838709677 17.943548387 +5.354838710 9.129032258 17.943548387 +5.354838710 9.419354839 17.943548387 +5.354838710 9.709677419 17.943548387 +5.354838710 10.000000000 17.943548387 +5.645161290 1.000000000 13.306451613 +5.645161290 1.290322581 13.306451613 +5.645161290 1.580645161 13.306451613 +5.645161290 1.870967742 13.306451613 +5.645161290 2.161290323 13.306451613 +5.645161290 2.451612903 13.306451613 +5.645161290 2.741935484 13.306451613 +5.645161290 3.032258065 13.373015873 +5.645161290 3.322580645 13.888888889 +5.645161290 3.612903226 14.290123457 +5.645161290 3.903225806 14.611111111 +5.645161290 4.193548387 14.873737374 +5.645161290 4.483870968 15.096153846 +5.645161290 4.774193548 15.312500000 +5.645161290 5.064516129 15.528846154 +5.645161290 5.354838710 15.745192308 +5.645161290 5.645161290 15.961538462 +5.645161290 5.935483871 16.289473684 +5.645161290 6.225806452 16.686046512 +5.645161290 6.516129032 17.175324675 +5.645161290 6.806451613 17.794117647 +5.645161290 7.096774194 18.306451613 +5.645161290 7.387096774 18.306451613 +5.645161290 7.677419355 18.306451613 +5.645161290 7.967741935 18.306451613 +5.645161290 8.258064516 18.306451613 +5.645161290 8.548387097 18.306451613 +5.645161290 8.838709677 18.306451613 +5.645161290 9.129032258 18.306451613 +5.645161290 9.419354839 18.306451613 +5.645161290 9.709677419 18.306451613 +5.645161290 10.000000000 18.306451613 +5.935483871 1.000000000 13.669354839 +5.935483871 1.290322581 13.669354839 +5.935483871 1.580645161 13.669354839 +5.935483871 1.870967742 13.669354839 +5.935483871 2.161290323 13.669354839 +5.935483871 2.451612903 13.669354839 +5.935483871 2.741935484 13.669354839 +5.935483871 3.032258065 13.730158730 +5.935483871 3.322580645 14.201388889 +5.935483871 3.612903226 14.567901235 +5.935483871 3.903225806 14.861111111 +5.935483871 4.193548387 15.105263158 +5.935483871 4.483870968 15.342105263 +5.935483871 4.774193548 15.578947368 +5.935483871 5.064516129 15.815789474 +5.935483871 5.354838710 16.052631579 +5.935483871 5.645161290 16.289473684 +5.935483871 5.935483871 16.526315789 +5.935483871 6.225806452 16.947674419 +5.935483871 6.516129032 17.467532468 +5.935483871 6.806451613 18.125000000 +5.935483871 7.096774194 18.669354839 +5.935483871 7.387096774 18.669354839 +5.935483871 7.677419355 18.669354839 +5.935483871 7.967741935 18.669354839 +5.935483871 8.258064516 18.669354839 +5.935483871 8.548387097 18.669354839 +5.935483871 8.838709677 18.669354839 +5.935483871 9.129032258 18.669354839 +5.935483871 9.419354839 18.669354839 +5.935483871 9.709677419 18.669354839 +5.935483871 10.000000000 18.669354839 +6.225806452 1.000000000 14.032258065 +6.225806452 1.290322581 14.032258065 +6.225806452 1.580645161 14.032258065 +6.225806452 1.870967742 14.032258065 +6.225806452 2.161290323 14.032258065 +6.225806452 2.451612903 14.032258065 +6.225806452 2.741935484 14.032258065 +6.225806452 3.032258065 14.087301587 +6.225806452 3.322580645 14.513888889 +6.225806452 3.612903226 14.845679012 +6.225806452 3.903225806 15.116279070 +6.225806452 4.193548387 15.377906977 +6.225806452 4.483870968 15.639534884 +6.225806452 4.774193548 15.901162791 +6.225806452 5.064516129 16.162790698 +6.225806452 5.354838710 16.424418605 +6.225806452 5.645161290 16.686046512 +6.225806452 5.935483871 16.947674419 +6.225806452 6.225806452 17.209302326 +6.225806452 6.516129032 17.759740260 +6.225806452 6.806451613 18.455882353 +6.225806452 7.096774194 19.032258065 +6.225806452 7.387096774 19.032258065 +6.225806452 7.677419355 19.032258065 +6.225806452 7.967741935 19.032258065 +6.225806452 8.258064516 19.032258065 +6.225806452 8.548387097 19.032258065 +6.225806452 8.838709677 19.032258065 +6.225806452 9.129032258 19.032258065 +6.225806452 9.419354839 19.032258065 +6.225806452 9.709677419 19.032258065 +6.225806452 10.000000000 19.032258065 +6.516129032 1.000000000 14.395161290 +6.516129032 1.290322581 14.395161290 +6.516129032 1.580645161 14.395161290 +6.516129032 1.870967742 14.395161290 +6.516129032 2.161290323 14.395161290 +6.516129032 2.451612903 14.395161290 +6.516129032 2.741935484 14.395161290 +6.516129032 3.032258065 14.444444444 +6.516129032 3.322580645 14.826388889 +6.516129032 3.612903226 15.129870130 +6.516129032 3.903225806 15.422077922 +6.516129032 4.193548387 15.714285714 +6.516129032 4.483870968 16.006493506 +6.516129032 4.774193548 16.298701299 +6.516129032 5.064516129 16.590909091 +6.516129032 5.354838710 16.883116883 +6.516129032 5.645161290 17.175324675 +6.516129032 5.935483871 17.467532468 +6.516129032 6.225806452 17.759740260 +6.516129032 6.516129032 18.051948052 +6.516129032 6.806451613 18.786764706 +6.516129032 7.096774194 19.395161290 +6.516129032 7.387096774 19.395161290 +6.516129032 7.677419355 19.395161290 +6.516129032 7.967741935 19.395161290 +6.516129032 8.258064516 19.395161290 +6.516129032 8.548387097 19.395161290 +6.516129032 8.838709677 19.395161290 +6.516129032 9.129032258 19.395161290 +6.516129032 9.419354839 19.395161290 +6.516129032 9.709677419 19.395161290 +6.516129032 10.000000000 19.395161290 +6.806451613 1.000000000 14.758064516 +6.806451613 1.290322581 14.758064516 +6.806451613 1.580645161 14.758064516 +6.806451613 1.870967742 14.758064516 +6.806451613 2.161290323 14.758064516 +6.806451613 2.451612903 14.758064516 +6.806451613 2.741935484 14.758064516 +6.806451613 3.032258065 14.801587302 +6.806451613 3.322580645 15.147058824 +6.806451613 3.612903226 15.477941176 +6.806451613 3.903225806 15.808823529 +6.806451613 4.193548387 16.139705882 +6.806451613 4.483870968 16.470588235 +6.806451613 4.774193548 16.801470588 +6.806451613 5.064516129 17.132352941 +6.806451613 5.354838710 17.463235294 +6.806451613 5.645161290 17.794117647 +6.806451613 5.935483871 18.125000000 +6.806451613 6.225806452 18.455882353 +6.806451613 6.516129032 18.786764706 +6.806451613 6.806451613 19.117647059 +6.806451613 7.096774194 19.758064516 +6.806451613 7.387096774 19.758064516 +6.806451613 7.677419355 19.758064516 +6.806451613 7.967741935 19.758064516 +6.806451613 8.258064516 19.758064516 +6.806451613 8.548387097 19.758064516 +6.806451613 8.838709677 19.758064516 +6.806451613 9.129032258 19.758064516 +6.806451613 9.419354839 19.758064516 +6.806451613 9.709677419 19.758064516 +6.806451613 10.000000000 19.758064516 +7.096774194 1.000000000 15.000000000 +7.096774194 1.290322581 15.000000000 +7.096774194 1.580645161 15.000000000 +7.096774194 1.870967742 15.000000000 +7.096774194 2.161290323 15.000000000 +7.096774194 2.451612903 15.000000000 +7.096774194 2.741935484 15.000000000 +7.096774194 3.032258065 15.040322581 +7.096774194 3.322580645 15.403225806 +7.096774194 3.612903226 15.766129032 +7.096774194 3.903225806 16.129032258 +7.096774194 4.193548387 16.491935484 +7.096774194 4.483870968 16.854838710 +7.096774194 4.774193548 17.217741935 +7.096774194 5.064516129 17.580645161 +7.096774194 5.354838710 17.943548387 +7.096774194 5.645161290 18.306451613 +7.096774194 5.935483871 18.669354839 +7.096774194 6.225806452 19.032258065 +7.096774194 6.516129032 19.395161290 +7.096774194 6.806451613 19.758064516 +7.096774194 7.096774194 20.000000000 +7.096774194 7.387096774 20.000000000 +7.096774194 7.677419355 20.000000000 +7.096774194 7.967741935 20.000000000 +7.096774194 8.258064516 20.000000000 +7.096774194 8.548387097 20.000000000 +7.096774194 8.838709677 20.000000000 +7.096774194 9.129032258 20.000000000 +7.096774194 9.419354839 20.000000000 +7.096774194 9.709677419 20.000000000 +7.096774194 10.000000000 20.000000000 +7.387096774 1.000000000 15.000000000 +7.387096774 1.290322581 15.000000000 +7.387096774 1.580645161 15.000000000 +7.387096774 1.870967742 15.000000000 +7.387096774 2.161290323 15.000000000 +7.387096774 2.451612903 15.000000000 +7.387096774 2.741935484 15.000000000 +7.387096774 3.032258065 15.040322581 +7.387096774 3.322580645 15.403225806 +7.387096774 3.612903226 15.766129032 +7.387096774 3.903225806 16.129032258 +7.387096774 4.193548387 16.491935484 +7.387096774 4.483870968 16.854838710 +7.387096774 4.774193548 17.217741935 +7.387096774 5.064516129 17.580645161 +7.387096774 5.354838710 17.943548387 +7.387096774 5.645161290 18.306451613 +7.387096774 5.935483871 18.669354839 +7.387096774 6.225806452 19.032258065 +7.387096774 6.516129032 19.395161290 +7.387096774 6.806451613 19.758064516 +7.387096774 7.096774194 20.000000000 +7.387096774 7.387096774 20.000000000 +7.387096774 7.677419355 20.000000000 +7.387096774 7.967741935 20.000000000 +7.387096774 8.258064516 20.000000000 +7.387096774 8.548387097 20.000000000 +7.387096774 8.838709677 20.000000000 +7.387096774 9.129032258 20.000000000 +7.387096774 9.419354839 20.000000000 +7.387096774 9.709677419 20.000000000 +7.387096774 10.000000000 20.000000000 +7.677419355 1.000000000 15.000000000 +7.677419355 1.290322581 15.000000000 +7.677419355 1.580645161 15.000000000 +7.677419355 1.870967742 15.000000000 +7.677419355 2.161290323 15.000000000 +7.677419355 2.451612903 15.000000000 +7.677419355 2.741935484 15.000000000 +7.677419355 3.032258065 15.040322581 +7.677419355 3.322580645 15.403225806 +7.677419355 3.612903226 15.766129032 +7.677419355 3.903225806 16.129032258 +7.677419355 4.193548387 16.491935484 +7.677419355 4.483870968 16.854838710 +7.677419355 4.774193548 17.217741935 +7.677419355 5.064516129 17.580645161 +7.677419355 5.354838710 17.943548387 +7.677419355 5.645161290 18.306451613 +7.677419355 5.935483871 18.669354839 +7.677419355 6.225806452 19.032258065 +7.677419355 6.516129032 19.395161290 +7.677419355 6.806451613 19.758064516 +7.677419355 7.096774194 20.000000000 +7.677419355 7.387096774 20.000000000 +7.677419355 7.677419355 20.000000000 +7.677419355 7.967741935 20.000000000 +7.677419355 8.258064516 20.000000000 +7.677419355 8.548387097 20.000000000 +7.677419355 8.838709677 20.000000000 +7.677419355 9.129032258 20.000000000 +7.677419355 9.419354839 20.000000000 +7.677419355 9.709677419 20.000000000 +7.677419355 10.000000000 20.000000000 +7.967741935 1.000000000 15.000000000 +7.967741935 1.290322581 15.000000000 +7.967741935 1.580645161 15.000000000 +7.967741935 1.870967742 15.000000000 +7.967741935 2.161290323 15.000000000 +7.967741935 2.451612903 15.000000000 +7.967741935 2.741935484 15.000000000 +7.967741935 3.032258065 15.040322581 +7.967741935 3.322580645 15.403225806 +7.967741935 3.612903226 15.766129032 +7.967741935 3.903225806 16.129032258 +7.967741935 4.193548387 16.491935484 +7.967741935 4.483870968 16.854838710 +7.967741935 4.774193548 17.217741935 +7.967741935 5.064516129 17.580645161 +7.967741935 5.354838710 17.943548387 +7.967741935 5.645161290 18.306451613 +7.967741935 5.935483871 18.669354839 +7.967741935 6.225806452 19.032258065 +7.967741935 6.516129032 19.395161290 +7.967741935 6.806451613 19.758064516 +7.967741935 7.096774194 20.000000000 +7.967741935 7.387096774 20.000000000 +7.967741935 7.677419355 20.000000000 +7.967741935 7.967741935 20.000000000 +7.967741935 8.258064516 20.000000000 +7.967741935 8.548387097 20.000000000 +7.967741935 8.838709677 20.000000000 +7.967741935 9.129032258 20.000000000 +7.967741935 9.419354839 20.000000000 +7.967741935 9.709677419 20.000000000 +7.967741935 10.000000000 20.000000000 +8.258064516 1.000000000 15.000000000 +8.258064516 1.290322581 15.000000000 +8.258064516 1.580645161 15.000000000 +8.258064516 1.870967742 15.000000000 +8.258064516 2.161290323 15.000000000 +8.258064516 2.451612903 15.000000000 +8.258064516 2.741935484 15.000000000 +8.258064516 3.032258065 15.040322581 +8.258064516 3.322580645 15.403225806 +8.258064516 3.612903226 15.766129032 +8.258064516 3.903225806 16.129032258 +8.258064516 4.193548387 16.491935484 +8.258064516 4.483870968 16.854838710 +8.258064516 4.774193548 17.217741935 +8.258064516 5.064516129 17.580645161 +8.258064516 5.354838710 17.943548387 +8.258064516 5.645161290 18.306451613 +8.258064516 5.935483871 18.669354839 +8.258064516 6.225806452 19.032258065 +8.258064516 6.516129032 19.395161290 +8.258064516 6.806451613 19.758064516 +8.258064516 7.096774194 20.000000000 +8.258064516 7.387096774 20.000000000 +8.258064516 7.677419355 20.000000000 +8.258064516 7.967741935 20.000000000 +8.258064516 8.258064516 20.000000000 +8.258064516 8.548387097 20.000000000 +8.258064516 8.838709677 20.000000000 +8.258064516 9.129032258 20.000000000 +8.258064516 9.419354839 20.000000000 +8.258064516 9.709677419 20.000000000 +8.258064516 10.000000000 20.000000000 +8.548387097 1.000000000 15.000000000 +8.548387097 1.290322581 15.000000000 +8.548387097 1.580645161 15.000000000 +8.548387097 1.870967742 15.000000000 +8.548387097 2.161290323 15.000000000 +8.548387097 2.451612903 15.000000000 +8.548387097 2.741935484 15.000000000 +8.548387097 3.032258065 15.040322581 +8.548387097 3.322580645 15.403225806 +8.548387097 3.612903226 15.766129032 +8.548387097 3.903225806 16.129032258 +8.548387097 4.193548387 16.491935484 +8.548387097 4.483870968 16.854838710 +8.548387097 4.774193548 17.217741935 +8.548387097 5.064516129 17.580645161 +8.548387097 5.354838710 17.943548387 +8.548387097 5.645161290 18.306451613 +8.548387097 5.935483871 18.669354839 +8.548387097 6.225806452 19.032258065 +8.548387097 6.516129032 19.395161290 +8.548387097 6.806451613 19.758064516 +8.548387097 7.096774194 20.000000000 +8.548387097 7.387096774 20.000000000 +8.548387097 7.677419355 20.000000000 +8.548387097 7.967741935 20.000000000 +8.548387097 8.258064516 20.000000000 +8.548387097 8.548387097 20.000000000 +8.548387097 8.838709677 20.000000000 +8.548387097 9.129032258 20.000000000 +8.548387097 9.419354839 20.000000000 +8.548387097 9.709677419 20.000000000 +8.548387097 10.000000000 20.000000000 +8.838709677 1.000000000 15.000000000 +8.838709677 1.290322581 15.000000000 +8.838709677 1.580645161 15.000000000 +8.838709677 1.870967742 15.000000000 +8.838709677 2.161290323 15.000000000 +8.838709677 2.451612903 15.000000000 +8.838709677 2.741935484 15.000000000 +8.838709677 3.032258065 15.040322581 +8.838709677 3.322580645 15.403225806 +8.838709677 3.612903226 15.766129032 +8.838709677 3.903225806 16.129032258 +8.838709677 4.193548387 16.491935484 +8.838709677 4.483870968 16.854838710 +8.838709677 4.774193548 17.217741935 +8.838709677 5.064516129 17.580645161 +8.838709677 5.354838710 17.943548387 +8.838709677 5.645161290 18.306451613 +8.838709677 5.935483871 18.669354839 +8.838709677 6.225806452 19.032258065 +8.838709677 6.516129032 19.395161290 +8.838709677 6.806451613 19.758064516 +8.838709677 7.096774194 20.000000000 +8.838709677 7.387096774 20.000000000 +8.838709677 7.677419355 20.000000000 +8.838709677 7.967741935 20.000000000 +8.838709677 8.258064516 20.000000000 +8.838709677 8.548387097 20.000000000 +8.838709677 8.838709677 20.000000000 +8.838709677 9.129032258 20.000000000 +8.838709677 9.419354839 20.000000000 +8.838709677 9.709677419 20.000000000 +8.838709677 10.000000000 20.000000000 +9.129032258 1.000000000 15.000000000 +9.129032258 1.290322581 15.000000000 +9.129032258 1.580645161 15.000000000 +9.129032258 1.870967742 15.000000000 +9.129032258 2.161290323 15.000000000 +9.129032258 2.451612903 15.000000000 +9.129032258 2.741935484 15.000000000 +9.129032258 3.032258065 15.040322581 +9.129032258 3.322580645 15.403225806 +9.129032258 3.612903226 15.766129032 +9.129032258 3.903225806 16.129032258 +9.129032258 4.193548387 16.491935484 +9.129032258 4.483870968 16.854838710 +9.129032258 4.774193548 17.217741935 +9.129032258 5.064516129 17.580645161 +9.129032258 5.354838710 17.943548387 +9.129032258 5.645161290 18.306451613 +9.129032258 5.935483871 18.669354839 +9.129032258 6.225806452 19.032258065 +9.129032258 6.516129032 19.395161290 +9.129032258 6.806451613 19.758064516 +9.129032258 7.096774194 20.000000000 +9.129032258 7.387096774 20.000000000 +9.129032258 7.677419355 20.000000000 +9.129032258 7.967741935 20.000000000 +9.129032258 8.258064516 20.000000000 +9.129032258 8.548387097 20.000000000 +9.129032258 8.838709677 20.000000000 +9.129032258 9.129032258 20.000000000 +9.129032258 9.419354839 20.000000000 +9.129032258 9.709677419 20.000000000 +9.129032258 10.000000000 20.000000000 +9.419354839 1.000000000 15.000000000 +9.419354839 1.290322581 15.000000000 +9.419354839 1.580645161 15.000000000 +9.419354839 1.870967742 15.000000000 +9.419354839 2.161290323 15.000000000 +9.419354839 2.451612903 15.000000000 +9.419354839 2.741935484 15.000000000 +9.419354839 3.032258065 15.040322581 +9.419354839 3.322580645 15.403225806 +9.419354839 3.612903226 15.766129032 +9.419354839 3.903225806 16.129032258 +9.419354839 4.193548387 16.491935484 +9.419354839 4.483870968 16.854838710 +9.419354839 4.774193548 17.217741935 +9.419354839 5.064516129 17.580645161 +9.419354839 5.354838710 17.943548387 +9.419354839 5.645161290 18.306451613 +9.419354839 5.935483871 18.669354839 +9.419354839 6.225806452 19.032258065 +9.419354839 6.516129032 19.395161290 +9.419354839 6.806451613 19.758064516 +9.419354839 7.096774194 20.000000000 +9.419354839 7.387096774 20.000000000 +9.419354839 7.677419355 20.000000000 +9.419354839 7.967741935 20.000000000 +9.419354839 8.258064516 20.000000000 +9.419354839 8.548387097 20.000000000 +9.419354839 8.838709677 20.000000000 +9.419354839 9.129032258 20.000000000 +9.419354839 9.419354839 20.000000000 +9.419354839 9.709677419 20.000000000 +9.419354839 10.000000000 20.000000000 +9.709677419 1.000000000 15.000000000 +9.709677419 1.290322581 15.000000000 +9.709677419 1.580645161 15.000000000 +9.709677419 1.870967742 15.000000000 +9.709677419 2.161290323 15.000000000 +9.709677419 2.451612903 15.000000000 +9.709677419 2.741935484 15.000000000 +9.709677419 3.032258065 15.040322581 +9.709677419 3.322580645 15.403225806 +9.709677419 3.612903226 15.766129032 +9.709677419 3.903225806 16.129032258 +9.709677419 4.193548387 16.491935484 +9.709677419 4.483870968 16.854838710 +9.709677419 4.774193548 17.217741935 +9.709677419 5.064516129 17.580645161 +9.709677419 5.354838710 17.943548387 +9.709677419 5.645161290 18.306451613 +9.709677419 5.935483871 18.669354839 +9.709677419 6.225806452 19.032258065 +9.709677419 6.516129032 19.395161290 +9.709677419 6.806451613 19.758064516 +9.709677419 7.096774194 20.000000000 +9.709677419 7.387096774 20.000000000 +9.709677419 7.677419355 20.000000000 +9.709677419 7.967741935 20.000000000 +9.709677419 8.258064516 20.000000000 +9.709677419 8.548387097 20.000000000 +9.709677419 8.838709677 20.000000000 +9.709677419 9.129032258 20.000000000 +9.709677419 9.419354839 20.000000000 +9.709677419 9.709677419 20.000000000 +9.709677419 10.000000000 20.000000000 +10.000000000 1.000000000 15.000000000 +10.000000000 1.290322581 15.000000000 +10.000000000 1.580645161 15.000000000 +10.000000000 1.870967742 15.000000000 +10.000000000 2.161290323 15.000000000 +10.000000000 2.451612903 15.000000000 +10.000000000 2.741935484 15.000000000 +10.000000000 3.032258065 15.040322581 +10.000000000 3.322580645 15.403225806 +10.000000000 3.612903226 15.766129032 +10.000000000 3.903225806 16.129032258 +10.000000000 4.193548387 16.491935484 +10.000000000 4.483870968 16.854838710 +10.000000000 4.774193548 17.217741935 +10.000000000 5.064516129 17.580645161 +10.000000000 5.354838710 17.943548387 +10.000000000 5.645161290 18.306451613 +10.000000000 5.935483871 18.669354839 +10.000000000 6.225806452 19.032258065 +10.000000000 6.516129032 19.395161290 +10.000000000 6.806451613 19.758064516 +10.000000000 7.096774194 20.000000000 +10.000000000 7.387096774 20.000000000 +10.000000000 7.677419355 20.000000000 +10.000000000 7.967741935 20.000000000 +10.000000000 8.258064516 20.000000000 +10.000000000 8.548387097 20.000000000 +10.000000000 8.838709677 20.000000000 +10.000000000 9.129032258 20.000000000 +10.000000000 9.419354839 20.000000000 +10.000000000 9.709677419 20.000000000 +10.000000000 10.000000000 20.000000000 diff --git a/examples/takagi-sugeno/octave/linear_tip_calculator.fll b/examples/takagi-sugeno/octave/linear_tip_calculator.fll index 8c1f597..510d8a4 100644 --- a/examples/takagi-sugeno/octave/linear_tip_calculator.fll +++ b/examples/takagi-sugeno/octave/linear_tip_calculator.fll @@ -1,22 +1,24 @@ -Engine: Linear-Tip-Calculator +Engine: linear_tip_calculator InputVariable: FoodQuality enabled: true range: 1.000 10.000 + lock-range: false term: Bad Trapezoid 0.000 1.000 3.000 7.000 term: Good Trapezoid 3.000 7.000 10.000 11.000 InputVariable: Service enabled: true range: 1.000 10.000 + lock-range: false term: Bad Trapezoid 0.000 1.000 3.000 7.000 term: Good Trapezoid 3.000 7.000 10.000 11.000 OutputVariable: Tip enabled: true range: 10.000 20.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage TakagiSugeno default: nan lock-previous: false - lock-range: false term: TenPercent Linear 0.000 0.000 10.000 term: FifteenPercent Linear 0.000 0.000 15.000 term: TwentyPercent Linear 0.000 0.000 20.000 @@ -24,7 +26,8 @@ RuleBlock: enabled: true conjunction: Minimum disjunction: none - activation: none + implication: none + activation: General rule: if FoodQuality is Bad and Service is Bad then Tip is TenPercent rule: if FoodQuality is Bad and Service is Good then Tip is FifteenPercent rule: if FoodQuality is Good and Service is Bad then Tip is FifteenPercent diff --git a/examples/takagi-sugeno/octave/linear_tip_calculator.java b/examples/takagi-sugeno/octave/linear_tip_calculator.java index 0600638..7046734 100644 --- a/examples/takagi-sugeno/octave/linear_tip_calculator.java +++ b/examples/takagi-sugeno/octave/linear_tip_calculator.java @@ -1,4 +1,5 @@ import com.fuzzylite.*; +import com.fuzzylite.activation.* import com.fuzzylite.defuzzifier.*; import com.fuzzylite.factory.*; import com.fuzzylite.hedge.*; @@ -12,45 +13,55 @@ import com.fuzzylite.variable.*; public class linear_tip_calculator{ public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + Engine engine = new Engine(); -engine.setName("Linear-Tip-Calculator"); - -InputVariable inputVariable1 = new InputVariable(); -inputVariable1.setEnabled(true); -inputVariable1.setName("FoodQuality"); -inputVariable1.setRange(1.000, 10.000); -inputVariable1.addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); -inputVariable1.addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); -engine.addInputVariable(inputVariable1); - -InputVariable inputVariable2 = new InputVariable(); -inputVariable2.setEnabled(true); -inputVariable2.setName("Service"); -inputVariable2.setRange(1.000, 10.000); -inputVariable2.addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); -inputVariable2.addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); -engine.addInputVariable(inputVariable2); - -OutputVariable outputVariable = new OutputVariable(); -outputVariable.setEnabled(true); -outputVariable.setName("Tip"); -outputVariable.setRange(10.000, 20.000); -outputVariable.fuzzyOutput().setAccumulation(null); -outputVariable.setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable.setDefaultValue(Double.NaN); -outputVariable.setLockPreviousOutputValue(false); -outputVariable.setLockOutputValueInRange(false); -outputVariable.addTerm(Linear.create("TenPercent", engine, 0.000, 0.000, 10.000)); -outputVariable.addTerm(Linear.create("FifteenPercent", engine, 0.000, 0.000, 15.000)); -outputVariable.addTerm(Linear.create("TwentyPercent", engine, 0.000, 0.000, 20.000)); -engine.addOutputVariable(outputVariable); +engine.setName("linear_tip_calculator"); +engine.setDescription(""); + +InputVariable FoodQuality = new InputVariable(); +FoodQuality.setName("FoodQuality"); +FoodQuality.setDescription(""); +FoodQuality.setEnabled(true); +FoodQuality.setRange(1.000, 10.000); +FoodQuality.setLockValueInRange(false); +FoodQuality.addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); +FoodQuality.addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); +engine.addInputVariable(FoodQuality); + +InputVariable Service = new InputVariable(); +Service.setName("Service"); +Service.setDescription(""); +Service.setEnabled(true); +Service.setRange(1.000, 10.000); +Service.setLockValueInRange(false); +Service.addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); +Service.addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); +engine.addInputVariable(Service); + +OutputVariable Tip = new OutputVariable(); +Tip.setName("Tip"); +Tip.setDescription(""); +Tip.setEnabled(true); +Tip.setRange(10.000, 20.000); +Tip.setLockValueInRange(false); +Tip.setAggregation(null); +Tip.setDefuzzifier(new WeightedAverage("TakagiSugeno")); +Tip.setDefaultValue(Double.NaN); +Tip.setLockPreviousValue(false); +Tip.addTerm(Linear.create("TenPercent", engine, 0.000, 0.000, 10.000)); +Tip.addTerm(Linear.create("FifteenPercent", engine, 0.000, 0.000, 15.000)); +Tip.addTerm(Linear.create("TwentyPercent", engine, 0.000, 0.000, 20.000)); +engine.addOutputVariable(Tip); RuleBlock ruleBlock = new RuleBlock(); -ruleBlock.setEnabled(true); ruleBlock.setName(""); +ruleBlock.setDescription(""); +ruleBlock.setEnabled(true); ruleBlock.setConjunction(new Minimum()); ruleBlock.setDisjunction(null); -ruleBlock.setActivation(null); +ruleBlock.setImplication(null); +ruleBlock.setActivation(new General()); ruleBlock.addRule(Rule.parse("if FoodQuality is Bad and Service is Bad then Tip is TenPercent", engine)); ruleBlock.addRule(Rule.parse("if FoodQuality is Bad and Service is Good then Tip is FifteenPercent", engine)); ruleBlock.addRule(Rule.parse("if FoodQuality is Good and Service is Bad then Tip is FifteenPercent", engine)); diff --git a/examples/takagi-sugeno/octave/linear_tip_calculator.pdf b/examples/takagi-sugeno/octave/linear_tip_calculator.pdf Binary files differnew file mode 100644 index 0000000..357f529 --- /dev/null +++ b/examples/takagi-sugeno/octave/linear_tip_calculator.pdf diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.R b/examples/takagi-sugeno/octave/sugeno_tip_calculator.R new file mode 100644 index 0000000..1491a96 --- /dev/null +++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.R @@ -0,0 +1,119 @@ +#Code automatically generated with fuzzylite 6.0. + +library(ggplot2); + +engine.name = "sugeno_tip_calculator" +engine.fll = "Engine: sugeno_tip_calculator +InputVariable: FoodQuality + enabled: true + range: 1.000 10.000 + lock-range: false + term: Bad Trapezoid 0.000 1.000 3.000 7.000 + term: Good Trapezoid 3.000 7.000 10.000 11.000 +InputVariable: Service + enabled: true + range: 1.000 10.000 + lock-range: false + term: Bad Trapezoid 0.000 1.000 3.000 7.000 + term: Good Trapezoid 3.000 7.000 10.000 11.000 +OutputVariable: CheapTip + enabled: true + range: 5.000 25.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage TakagiSugeno + default: nan + lock-previous: false + term: Low Constant 10.000 + term: Medium Constant 15.000 + term: High Constant 20.000 +OutputVariable: AverageTip + enabled: true + range: 5.000 25.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage TakagiSugeno + default: nan + lock-previous: false + term: Low Constant 10.000 + term: Medium Constant 15.000 + term: High Constant 20.000 +OutputVariable: GenerousTip + enabled: true + range: 5.000 25.000 + lock-range: false + aggregation: none + defuzzifier: WeightedAverage TakagiSugeno + default: nan + lock-previous: false + term: Low Constant 10.000 + term: Medium Constant 15.000 + term: High Constant 20.000 +RuleBlock: + enabled: true + conjunction: EinsteinProduct + disjunction: none + implication: none + activation: General + rule: if FoodQuality is extremely Bad and Service is extremely Bad then CheapTip is extremely Low and AverageTip is very Low and GenerousTip is Low + rule: if FoodQuality is Good and Service is extremely Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium + rule: if FoodQuality is very Good and Service is very Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High + rule: if FoodQuality is Bad and Service is Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium + rule: if FoodQuality is Good and Service is Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High + rule: if FoodQuality is extremely Good and Service is Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is very High + rule: if FoodQuality is Bad and Service is Good then CheapTip is Low and AverageTip is Medium and GenerousTip is High + rule: if FoodQuality is Good and Service is Good then CheapTip is Medium and AverageTip is Medium and GenerousTip is very High + rule: if FoodQuality is very Bad and Service is very Good then CheapTip is Low and AverageTip is Medium and GenerousTip is High + rule: if FoodQuality is very very Good and Service is very very Good then CheapTip is High and AverageTip is very High and GenerousTip is extremely High" + +engine.fldFile = "sugeno_tip_calculator.fld" +if (require(data.table)) { + engine.df = data.table::fread(engine.fldFile, sep="auto", header="auto") +} else { + engine.df = read.table(engine.fldFile, header=TRUE) +} + +engine.plot.i1i2_o1 = ggplot(engine.df, aes(FoodQuality, Service)) + + geom_tile(aes(fill=CheapTip)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=FoodQuality, y=Service, z=CheapTip), color="black") + + ggtitle("(FoodQuality, Service) = CheapTip") + +engine.plot.i2i1_o1 = ggplot(engine.df, aes(Service, FoodQuality)) + + geom_tile(aes(fill=CheapTip)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=Service, y=FoodQuality, z=CheapTip), color="black") + + ggtitle("(Service, FoodQuality) = CheapTip") + +engine.plot.i1i2_o2 = ggplot(engine.df, aes(FoodQuality, Service)) + + geom_tile(aes(fill=AverageTip)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=FoodQuality, y=Service, z=AverageTip), color="black") + + ggtitle("(FoodQuality, Service) = AverageTip") + +engine.plot.i2i1_o2 = ggplot(engine.df, aes(Service, FoodQuality)) + + geom_tile(aes(fill=AverageTip)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=Service, y=FoodQuality, z=AverageTip), color="black") + + ggtitle("(Service, FoodQuality) = AverageTip") + +engine.plot.i1i2_o3 = ggplot(engine.df, aes(FoodQuality, Service)) + + geom_tile(aes(fill=GenerousTip)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=FoodQuality, y=Service, z=GenerousTip), color="black") + + ggtitle("(FoodQuality, Service) = GenerousTip") + +engine.plot.i2i1_o3 = ggplot(engine.df, aes(Service, FoodQuality)) + + geom_tile(aes(fill=GenerousTip)) + + scale_fill_gradient(low="yellow", high="red") + + stat_contour(aes(x=Service, y=FoodQuality, z=GenerousTip), color="black") + + ggtitle("(Service, FoodQuality) = GenerousTip") + +if (require(gridExtra)) { + engine.plots = arrangeGrob(engine.plot.i1i2_o1, engine.plot.i2i1_o1, engine.plot.i1i2_o2, engine.plot.i2i1_o2, engine.plot.i1i2_o3, engine.plot.i2i1_o3, ncol=2, top=engine.name) + ggsave(paste0(engine.name, ".pdf"), engine.plots) + if (require(grid)) { + grid.newpage() + grid.draw(engine.plots) + } +} diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.cpp b/examples/takagi-sugeno/octave/sugeno_tip_calculator.cpp index d92de0a..96536fa 100644 --- a/examples/takagi-sugeno/octave/sugeno_tip_calculator.cpp +++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.cpp @@ -1,85 +1,97 @@ #include <fl/Headers.h> int main(int argc, char** argv){ +//Code automatically generated with fuzzylite 6.0. + using namespace fl; Engine* engine = new Engine; -engine->setName("Sugeno-Tip-Calculator"); +engine->setName("sugeno_tip_calculator"); +engine->setDescription(""); -InputVariable* inputVariable1 = new InputVariable; -inputVariable1->setEnabled(true); -inputVariable1->setName("FoodQuality"); -inputVariable1->setRange(1.000, 10.000); -inputVariable1->addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); -inputVariable1->addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); -engine->addInputVariable(inputVariable1); +InputVariable* FoodQuality = new InputVariable; +FoodQuality->setName("FoodQuality"); +FoodQuality->setDescription(""); +FoodQuality->setEnabled(true); +FoodQuality->setRange(1.000, 10.000); +FoodQuality->setLockValueInRange(false); +FoodQuality->addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); +FoodQuality->addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); +engine->addInputVariable(FoodQuality); -InputVariable* inputVariable2 = new InputVariable; -inputVariable2->setEnabled(true); -inputVariable2->setName("Service"); -inputVariable2->setRange(1.000, 10.000); -inputVariable2->addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); -inputVariable2->addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); -engine->addInputVariable(inputVariable2); +InputVariable* Service = new InputVariable; +Service->setName("Service"); +Service->setDescription(""); +Service->setEnabled(true); +Service->setRange(1.000, 10.000); +Service->setLockValueInRange(false); +Service->addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); +Service->addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); +engine->addInputVariable(Service); -OutputVariable* outputVariable1 = new OutputVariable; -outputVariable1->setEnabled(true); -outputVariable1->setName("CheapTip"); -outputVariable1->setRange(5.000, 25.000); -outputVariable1->fuzzyOutput()->setAccumulation(fl::null); -outputVariable1->setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable1->setDefaultValue(fl::nan); -outputVariable1->setLockPreviousOutputValue(false); -outputVariable1->setLockOutputValueInRange(false); -outputVariable1->addTerm(new Constant("Low", 10.000)); -outputVariable1->addTerm(new Constant("Medium", 15.000)); -outputVariable1->addTerm(new Constant("High", 20.000)); -engine->addOutputVariable(outputVariable1); +OutputVariable* CheapTip = new OutputVariable; +CheapTip->setName("CheapTip"); +CheapTip->setDescription(""); +CheapTip->setEnabled(true); +CheapTip->setRange(5.000, 25.000); +CheapTip->setLockValueInRange(false); +CheapTip->setAggregation(fl::null); +CheapTip->setDefuzzifier(new WeightedAverage("TakagiSugeno")); +CheapTip->setDefaultValue(fl::nan); +CheapTip->setLockPreviousValue(false); +CheapTip->addTerm(new Constant("Low", 10.000)); +CheapTip->addTerm(new Constant("Medium", 15.000)); +CheapTip->addTerm(new Constant("High", 20.000)); +engine->addOutputVariable(CheapTip); -OutputVariable* outputVariable2 = new OutputVariable; -outputVariable2->setEnabled(true); -outputVariable2->setName("AverageTip"); -outputVariable2->setRange(5.000, 25.000); -outputVariable2->fuzzyOutput()->setAccumulation(fl::null); -outputVariable2->setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable2->setDefaultValue(fl::nan); -outputVariable2->setLockPreviousOutputValue(false); -outputVariable2->setLockOutputValueInRange(false); -outputVariable2->addTerm(new Constant("Low", 10.000)); -outputVariable2->addTerm(new Constant("Medium", 15.000)); -outputVariable2->addTerm(new Constant("High", 20.000)); -engine->addOutputVariable(outputVariable2); +OutputVariable* AverageTip = new OutputVariable; +AverageTip->setName("AverageTip"); +AverageTip->setDescription(""); +AverageTip->setEnabled(true); +AverageTip->setRange(5.000, 25.000); +AverageTip->setLockValueInRange(false); +AverageTip->setAggregation(fl::null); +AverageTip->setDefuzzifier(new WeightedAverage("TakagiSugeno")); +AverageTip->setDefaultValue(fl::nan); +AverageTip->setLockPreviousValue(false); +AverageTip->addTerm(new Constant("Low", 10.000)); +AverageTip->addTerm(new Constant("Medium", 15.000)); +AverageTip->addTerm(new Constant("High", 20.000)); +engine->addOutputVariable(AverageTip); -OutputVariable* outputVariable3 = new OutputVariable; -outputVariable3->setEnabled(true); -outputVariable3->setName("GenerousTip"); -outputVariable3->setRange(5.000, 25.000); -outputVariable3->fuzzyOutput()->setAccumulation(fl::null); -outputVariable3->setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable3->setDefaultValue(fl::nan); -outputVariable3->setLockPreviousOutputValue(false); -outputVariable3->setLockOutputValueInRange(false); -outputVariable3->addTerm(new Constant("Low", 10.000)); -outputVariable3->addTerm(new Constant("Medium", 15.000)); -outputVariable3->addTerm(new Constant("High", 20.000)); -engine->addOutputVariable(outputVariable3); +OutputVariable* GenerousTip = new OutputVariable; +GenerousTip->setName("GenerousTip"); +GenerousTip->setDescription(""); +GenerousTip->setEnabled(true); +GenerousTip->setRange(5.000, 25.000); +GenerousTip->setLockValueInRange(false); +GenerousTip->setAggregation(fl::null); +GenerousTip->setDefuzzifier(new WeightedAverage("TakagiSugeno")); +GenerousTip->setDefaultValue(fl::nan); +GenerousTip->setLockPreviousValue(false); +GenerousTip->addTerm(new Constant("Low", 10.000)); +GenerousTip->addTerm(new Constant("Medium", 15.000)); +GenerousTip->addTerm(new Constant("High", 20.000)); +engine->addOutputVariable(GenerousTip); RuleBlock* ruleBlock = new RuleBlock; -ruleBlock->setEnabled(true); ruleBlock->setName(""); +ruleBlock->setDescription(""); +ruleBlock->setEnabled(true); ruleBlock->setConjunction(new EinsteinProduct); ruleBlock->setDisjunction(fl::null); -ruleBlock->setActivation(fl::null); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is extremely Bad and Service is extremely Bad then CheapTip is extremely Low and AverageTip is very Low and GenerousTip is Low", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Good and Service is extremely Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is very Good and Service is very Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Bad and Service is Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Good and Service is Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is extremely Good and Service is Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is very High", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Bad and Service is Good then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is Good and Service is Good then CheapTip is Medium and AverageTip is Medium and GenerousTip is very High", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is very Bad and Service is very Good then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); -ruleBlock->addRule(fl::Rule::parse("if FoodQuality is very very Good and Service is very very Good then CheapTip is High and AverageTip is very High and GenerousTip is extremely High", engine)); +ruleBlock->setImplication(fl::null); +ruleBlock->setActivation(new General); +ruleBlock->addRule(Rule::parse("if FoodQuality is extremely Bad and Service is extremely Bad then CheapTip is extremely Low and AverageTip is very Low and GenerousTip is Low", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is Good and Service is extremely Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is very Good and Service is very Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is Bad and Service is Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is Good and Service is Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is extremely Good and Service is Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is very High", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is Bad and Service is Good then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is Good and Service is Good then CheapTip is Medium and AverageTip is Medium and GenerousTip is very High", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is very Bad and Service is very Good then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); +ruleBlock->addRule(Rule::parse("if FoodQuality is very very Good and Service is very very Good then CheapTip is High and AverageTip is very High and GenerousTip is extremely High", engine)); engine->addRuleBlock(ruleBlock); diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl index ad98f68..fcb857c 100644 --- a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl +++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fcl @@ -1,4 +1,6 @@ -FUNCTION_BLOCK Sugeno-Tip-Calculator +//Code automatically generated with fuzzylite 6.0. + +FUNCTION_BLOCK sugeno_tip_calculator VAR_INPUT FoodQuality: REAL; diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fis b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fis index 4349913..3d28f10 100644 --- a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fis +++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fis @@ -1,13 +1,16 @@ +#Code automatically generated with fuzzylite 6.0. + [System] -Name='Sugeno-Tip-Calculator' +Name='sugeno_tip_calculator' Type='sugeno' +Version=6.0 NumInputs=2 NumOutputs=3 NumRules=10 AndMethod='einstein_product' -OrMethod='' -ImpMethod='' -AggMethod='' +OrMethod='max' +ImpMethod='min' +AggMethod='max' DefuzzMethod='wtaver' [Input1] diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fld b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fld index 6816af5..ce942fd 100644 --- a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fld +++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fld @@ -1,1026 +1,1025 @@ -#@Engine: Sugeno-Tip-Calculator; -#@InputVariable: FoodQuality; @InputVariable: Service; @OutputVariable: CheapTip; @OutputVariable: AverageTip; @OutputVariable: GenerousTip; -1.00000000 1.00000000 10.00000000 10.00000000 12.50000000 -1.00000000 1.29032258 10.00000000 10.00000000 12.50000000 -1.00000000 1.58064516 10.00000000 10.00000000 12.50000000 -1.00000000 1.87096774 10.00000000 10.00000000 12.50000000 -1.00000000 2.16129032 10.00000000 10.00000000 12.50000000 -1.00000000 2.45161290 10.00000000 10.00000000 12.50000000 -1.00000000 2.74193548 10.00000000 10.00000000 12.50000000 -1.00000000 3.03225806 10.00000000 10.02032322 12.52040460 -1.00000000 3.32258065 10.00000000 10.21723908 12.72618837 -1.00000000 3.61290323 10.00000000 10.43854143 12.97859532 -1.00000000 3.90322581 10.00000000 10.68860515 13.30323372 -1.00000000 4.19354839 10.00000000 10.98519415 13.75455390 -1.00000000 4.48387097 10.00000000 11.36896201 14.43109544 -1.00000000 4.77419355 10.00000000 11.91319586 15.48909397 -1.00000000 5.06451613 10.00000000 12.68223479 17.02303230 -1.00000000 5.35483871 10.00000000 13.34274407 18.15544945 -1.00000000 5.64516129 10.00000000 13.79246624 18.75419392 -1.00000000 5.93548387 10.00000000 14.13081618 19.12558840 -1.00000000 6.22580645 10.00000000 14.41328213 19.41290031 -1.00000000 6.51612903 10.00000000 14.65879553 19.65878725 -1.00000000 6.80645161 10.00000000 14.87303754 19.87303753 -1.00000000 7.09677419 10.00000000 15.00000000 20.00000000 -1.00000000 7.38709677 10.00000000 15.00000000 20.00000000 -1.00000000 7.67741935 10.00000000 15.00000000 20.00000000 -1.00000000 7.96774194 10.00000000 15.00000000 20.00000000 -1.00000000 8.25806452 10.00000000 15.00000000 20.00000000 -1.00000000 8.54838710 10.00000000 15.00000000 20.00000000 -1.00000000 8.83870968 10.00000000 15.00000000 20.00000000 -1.00000000 9.12903226 10.00000000 15.00000000 20.00000000 -1.00000000 9.41935484 10.00000000 15.00000000 20.00000000 -1.00000000 9.70967742 10.00000000 15.00000000 20.00000000 -1.00000000 10.00000000 10.00000000 15.00000000 20.00000000 -1.29032258 1.00000000 10.00000000 10.00000000 12.50000000 -1.29032258 1.29032258 10.00000000 10.00000000 12.50000000 -1.29032258 1.58064516 10.00000000 10.00000000 12.50000000 -1.29032258 1.87096774 10.00000000 10.00000000 12.50000000 -1.29032258 2.16129032 10.00000000 10.00000000 12.50000000 -1.29032258 2.45161290 10.00000000 10.00000000 12.50000000 -1.29032258 2.74193548 10.00000000 10.00000000 12.50000000 -1.29032258 3.03225806 10.00000000 10.02032322 12.52040460 -1.29032258 3.32258065 10.00000000 10.21723908 12.72618837 -1.29032258 3.61290323 10.00000000 10.43854143 12.97859532 -1.29032258 3.90322581 10.00000000 10.68860515 13.30323372 -1.29032258 4.19354839 10.00000000 10.98519415 13.75455390 -1.29032258 4.48387097 10.00000000 11.36896201 14.43109544 -1.29032258 4.77419355 10.00000000 11.91319586 15.48909397 -1.29032258 5.06451613 10.00000000 12.68223479 17.02303230 -1.29032258 5.35483871 10.00000000 13.34274407 18.15544945 -1.29032258 5.64516129 10.00000000 13.79246624 18.75419392 -1.29032258 5.93548387 10.00000000 14.13081618 19.12558840 -1.29032258 6.22580645 10.00000000 14.41328213 19.41290031 -1.29032258 6.51612903 10.00000000 14.65879553 19.65878725 -1.29032258 6.80645161 10.00000000 14.87303754 19.87303753 -1.29032258 7.09677419 10.00000000 15.00000000 20.00000000 -1.29032258 7.38709677 10.00000000 15.00000000 20.00000000 -1.29032258 7.67741935 10.00000000 15.00000000 20.00000000 -1.29032258 7.96774194 10.00000000 15.00000000 20.00000000 -1.29032258 8.25806452 10.00000000 15.00000000 20.00000000 -1.29032258 8.54838710 10.00000000 15.00000000 20.00000000 -1.29032258 8.83870968 10.00000000 15.00000000 20.00000000 -1.29032258 9.12903226 10.00000000 15.00000000 20.00000000 -1.29032258 9.41935484 10.00000000 15.00000000 20.00000000 -1.29032258 9.70967742 10.00000000 15.00000000 20.00000000 -1.29032258 10.00000000 10.00000000 15.00000000 20.00000000 -1.58064516 1.00000000 10.00000000 10.00000000 12.50000000 -1.58064516 1.29032258 10.00000000 10.00000000 12.50000000 -1.58064516 1.58064516 10.00000000 10.00000000 12.50000000 -1.58064516 1.87096774 10.00000000 10.00000000 12.50000000 -1.58064516 2.16129032 10.00000000 10.00000000 12.50000000 -1.58064516 2.45161290 10.00000000 10.00000000 12.50000000 -1.58064516 2.74193548 10.00000000 10.00000000 12.50000000 -1.58064516 3.03225806 10.00000000 10.02032322 12.52040460 -1.58064516 3.32258065 10.00000000 10.21723908 12.72618837 -1.58064516 3.61290323 10.00000000 10.43854143 12.97859532 -1.58064516 3.90322581 10.00000000 10.68860515 13.30323372 -1.58064516 4.19354839 10.00000000 10.98519415 13.75455390 -1.58064516 4.48387097 10.00000000 11.36896201 14.43109544 -1.58064516 4.77419355 10.00000000 11.91319586 15.48909397 -1.58064516 5.06451613 10.00000000 12.68223479 17.02303230 -1.58064516 5.35483871 10.00000000 13.34274407 18.15544945 -1.58064516 5.64516129 10.00000000 13.79246624 18.75419392 -1.58064516 5.93548387 10.00000000 14.13081618 19.12558840 -1.58064516 6.22580645 10.00000000 14.41328213 19.41290031 -1.58064516 6.51612903 10.00000000 14.65879553 19.65878725 -1.58064516 6.80645161 10.00000000 14.87303754 19.87303753 -1.58064516 7.09677419 10.00000000 15.00000000 20.00000000 -1.58064516 7.38709677 10.00000000 15.00000000 20.00000000 -1.58064516 7.67741935 10.00000000 15.00000000 20.00000000 -1.58064516 7.96774194 10.00000000 15.00000000 20.00000000 -1.58064516 8.25806452 10.00000000 15.00000000 20.00000000 -1.58064516 8.54838710 10.00000000 15.00000000 20.00000000 -1.58064516 8.83870968 10.00000000 15.00000000 20.00000000 -1.58064516 9.12903226 10.00000000 15.00000000 20.00000000 -1.58064516 9.41935484 10.00000000 15.00000000 20.00000000 -1.58064516 9.70967742 10.00000000 15.00000000 20.00000000 -1.58064516 10.00000000 10.00000000 15.00000000 20.00000000 -1.87096774 1.00000000 10.00000000 10.00000000 12.50000000 -1.87096774 1.29032258 10.00000000 10.00000000 12.50000000 -1.87096774 1.58064516 10.00000000 10.00000000 12.50000000 -1.87096774 1.87096774 10.00000000 10.00000000 12.50000000 -1.87096774 2.16129032 10.00000000 10.00000000 12.50000000 -1.87096774 2.45161290 10.00000000 10.00000000 12.50000000 -1.87096774 2.74193548 10.00000000 10.00000000 12.50000000 -1.87096774 3.03225806 10.00000000 10.02032322 12.52040460 -1.87096774 3.32258065 10.00000000 10.21723908 12.72618837 -1.87096774 3.61290323 10.00000000 10.43854143 12.97859532 -1.87096774 3.90322581 10.00000000 10.68860515 13.30323372 -1.87096774 4.19354839 10.00000000 10.98519415 13.75455390 -1.87096774 4.48387097 10.00000000 11.36896201 14.43109544 -1.87096774 4.77419355 10.00000000 11.91319586 15.48909397 -1.87096774 5.06451613 10.00000000 12.68223479 17.02303230 -1.87096774 5.35483871 10.00000000 13.34274407 18.15544945 -1.87096774 5.64516129 10.00000000 13.79246624 18.75419392 -1.87096774 5.93548387 10.00000000 14.13081618 19.12558840 -1.87096774 6.22580645 10.00000000 14.41328213 19.41290031 -1.87096774 6.51612903 10.00000000 14.65879553 19.65878725 -1.87096774 6.80645161 10.00000000 14.87303754 19.87303753 -1.87096774 7.09677419 10.00000000 15.00000000 20.00000000 -1.87096774 7.38709677 10.00000000 15.00000000 20.00000000 -1.87096774 7.67741935 10.00000000 15.00000000 20.00000000 -1.87096774 7.96774194 10.00000000 15.00000000 20.00000000 -1.87096774 8.25806452 10.00000000 15.00000000 20.00000000 -1.87096774 8.54838710 10.00000000 15.00000000 20.00000000 -1.87096774 8.83870968 10.00000000 15.00000000 20.00000000 -1.87096774 9.12903226 10.00000000 15.00000000 20.00000000 -1.87096774 9.41935484 10.00000000 15.00000000 20.00000000 -1.87096774 9.70967742 10.00000000 15.00000000 20.00000000 -1.87096774 10.00000000 10.00000000 15.00000000 20.00000000 -2.16129032 1.00000000 10.00000000 10.00000000 12.50000000 -2.16129032 1.29032258 10.00000000 10.00000000 12.50000000 -2.16129032 1.58064516 10.00000000 10.00000000 12.50000000 -2.16129032 1.87096774 10.00000000 10.00000000 12.50000000 -2.16129032 2.16129032 10.00000000 10.00000000 12.50000000 -2.16129032 2.45161290 10.00000000 10.00000000 12.50000000 -2.16129032 2.74193548 10.00000000 10.00000000 12.50000000 -2.16129032 3.03225806 10.00000000 10.02032322 12.52040460 -2.16129032 3.32258065 10.00000000 10.21723908 12.72618837 -2.16129032 3.61290323 10.00000000 10.43854143 12.97859532 -2.16129032 3.90322581 10.00000000 10.68860515 13.30323372 -2.16129032 4.19354839 10.00000000 10.98519415 13.75455390 -2.16129032 4.48387097 10.00000000 11.36896201 14.43109544 -2.16129032 4.77419355 10.00000000 11.91319586 15.48909397 -2.16129032 5.06451613 10.00000000 12.68223479 17.02303230 -2.16129032 5.35483871 10.00000000 13.34274407 18.15544945 -2.16129032 5.64516129 10.00000000 13.79246624 18.75419392 -2.16129032 5.93548387 10.00000000 14.13081618 19.12558840 -2.16129032 6.22580645 10.00000000 14.41328213 19.41290031 -2.16129032 6.51612903 10.00000000 14.65879553 19.65878725 -2.16129032 6.80645161 10.00000000 14.87303754 19.87303753 -2.16129032 7.09677419 10.00000000 15.00000000 20.00000000 -2.16129032 7.38709677 10.00000000 15.00000000 20.00000000 -2.16129032 7.67741935 10.00000000 15.00000000 20.00000000 -2.16129032 7.96774194 10.00000000 15.00000000 20.00000000 -2.16129032 8.25806452 10.00000000 15.00000000 20.00000000 -2.16129032 8.54838710 10.00000000 15.00000000 20.00000000 -2.16129032 8.83870968 10.00000000 15.00000000 20.00000000 -2.16129032 9.12903226 10.00000000 15.00000000 20.00000000 -2.16129032 9.41935484 10.00000000 15.00000000 20.00000000 -2.16129032 9.70967742 10.00000000 15.00000000 20.00000000 -2.16129032 10.00000000 10.00000000 15.00000000 20.00000000 -2.45161290 1.00000000 10.00000000 10.00000000 12.50000000 -2.45161290 1.29032258 10.00000000 10.00000000 12.50000000 -2.45161290 1.58064516 10.00000000 10.00000000 12.50000000 -2.45161290 1.87096774 10.00000000 10.00000000 12.50000000 -2.45161290 2.16129032 10.00000000 10.00000000 12.50000000 -2.45161290 2.45161290 10.00000000 10.00000000 12.50000000 -2.45161290 2.74193548 10.00000000 10.00000000 12.50000000 -2.45161290 3.03225806 10.00000000 10.02032322 12.52040460 -2.45161290 3.32258065 10.00000000 10.21723908 12.72618837 -2.45161290 3.61290323 10.00000000 10.43854143 12.97859532 -2.45161290 3.90322581 10.00000000 10.68860515 13.30323372 -2.45161290 4.19354839 10.00000000 10.98519415 13.75455390 -2.45161290 4.48387097 10.00000000 11.36896201 14.43109544 -2.45161290 4.77419355 10.00000000 11.91319586 15.48909397 -2.45161290 5.06451613 10.00000000 12.68223479 17.02303230 -2.45161290 5.35483871 10.00000000 13.34274407 18.15544945 -2.45161290 5.64516129 10.00000000 13.79246624 18.75419392 -2.45161290 5.93548387 10.00000000 14.13081618 19.12558840 -2.45161290 6.22580645 10.00000000 14.41328213 19.41290031 -2.45161290 6.51612903 10.00000000 14.65879553 19.65878725 -2.45161290 6.80645161 10.00000000 14.87303754 19.87303753 -2.45161290 7.09677419 10.00000000 15.00000000 20.00000000 -2.45161290 7.38709677 10.00000000 15.00000000 20.00000000 -2.45161290 7.67741935 10.00000000 15.00000000 20.00000000 -2.45161290 7.96774194 10.00000000 15.00000000 20.00000000 -2.45161290 8.25806452 10.00000000 15.00000000 20.00000000 -2.45161290 8.54838710 10.00000000 15.00000000 20.00000000 -2.45161290 8.83870968 10.00000000 15.00000000 20.00000000 -2.45161290 9.12903226 10.00000000 15.00000000 20.00000000 -2.45161290 9.41935484 10.00000000 15.00000000 20.00000000 -2.45161290 9.70967742 10.00000000 15.00000000 20.00000000 -2.45161290 10.00000000 10.00000000 15.00000000 20.00000000 -2.74193548 1.00000000 10.00000000 10.00000000 12.50000000 -2.74193548 1.29032258 10.00000000 10.00000000 12.50000000 -2.74193548 1.58064516 10.00000000 10.00000000 12.50000000 -2.74193548 1.87096774 10.00000000 10.00000000 12.50000000 -2.74193548 2.16129032 10.00000000 10.00000000 12.50000000 -2.74193548 2.45161290 10.00000000 10.00000000 12.50000000 -2.74193548 2.74193548 10.00000000 10.00000000 12.50000000 -2.74193548 3.03225806 10.00000000 10.02032322 12.52040460 -2.74193548 3.32258065 10.00000000 10.21723908 12.72618837 -2.74193548 3.61290323 10.00000000 10.43854143 12.97859532 -2.74193548 3.90322581 10.00000000 10.68860515 13.30323372 -2.74193548 4.19354839 10.00000000 10.98519415 13.75455390 -2.74193548 4.48387097 10.00000000 11.36896201 14.43109544 -2.74193548 4.77419355 10.00000000 11.91319586 15.48909397 -2.74193548 5.06451613 10.00000000 12.68223479 17.02303230 -2.74193548 5.35483871 10.00000000 13.34274407 18.15544945 -2.74193548 5.64516129 10.00000000 13.79246624 18.75419392 -2.74193548 5.93548387 10.00000000 14.13081618 19.12558840 -2.74193548 6.22580645 10.00000000 14.41328213 19.41290031 -2.74193548 6.51612903 10.00000000 14.65879553 19.65878725 -2.74193548 6.80645161 10.00000000 14.87303754 19.87303753 -2.74193548 7.09677419 10.00000000 15.00000000 20.00000000 -2.74193548 7.38709677 10.00000000 15.00000000 20.00000000 -2.74193548 7.67741935 10.00000000 15.00000000 20.00000000 -2.74193548 7.96774194 10.00000000 15.00000000 20.00000000 -2.74193548 8.25806452 10.00000000 15.00000000 20.00000000 -2.74193548 8.54838710 10.00000000 15.00000000 20.00000000 -2.74193548 8.83870968 10.00000000 15.00000000 20.00000000 -2.74193548 9.12903226 10.00000000 15.00000000 20.00000000 -2.74193548 9.41935484 10.00000000 15.00000000 20.00000000 -2.74193548 9.70967742 10.00000000 15.00000000 20.00000000 -2.74193548 10.00000000 10.00000000 15.00000000 20.00000000 -3.03225806 1.00000000 10.00000000 10.02056414 12.53036255 -3.03225806 1.29032258 10.00000000 10.02056414 12.53036255 -3.03225806 1.58064516 10.00000000 10.02056414 12.53036255 -3.03225806 1.87096774 10.00000000 10.02056414 12.53036255 -3.03225806 2.16129032 10.00000000 10.02056414 12.53036255 -3.03225806 2.45161290 10.00000000 10.02056414 12.53036255 -3.03225806 2.74193548 10.00000000 10.02056414 12.53036255 -3.03225806 3.03225806 10.00008162 10.04023401 12.54971361 -3.03225806 3.32258065 10.00084536 10.23133043 12.74581753 -3.03225806 3.61290323 10.00166050 10.44709908 12.98846248 -3.03225806 3.90322581 10.00253632 10.69213103 13.30366093 -3.03225806 4.19354839 10.00350696 10.98431132 13.74623534 -3.03225806 4.48387097 10.00465122 11.36442108 14.41531219 -3.03225806 4.77419355 10.00613539 11.90630175 15.46893972 -3.03225806 5.06451613 10.00830466 12.67597755 17.00612582 -3.03225806 5.35483871 10.01079710 13.33923254 18.14567412 -3.03225806 5.64516129 10.01307288 13.79127531 18.74912170 -3.03225806 5.93548387 10.01499275 14.13114438 19.12316822 -3.03225806 6.22580645 10.01659745 14.41445725 19.41211259 -3.03225806 6.51612903 10.01801781 14.66014744 19.65891493 -3.03225806 6.80645161 10.01938833 14.87383528 19.87334753 -3.03225806 7.09677419 10.02032454 15.00000000 20.00000000 -3.03225806 7.38709677 10.02032454 15.00000000 20.00000000 -3.03225806 7.67741935 10.02032454 15.00000000 20.00000000 -3.03225806 7.96774194 10.02032454 15.00000000 20.00000000 -3.03225806 8.25806452 10.02032454 15.00000000 20.00000000 -3.03225806 8.54838710 10.02032454 15.00000000 20.00000000 -3.03225806 8.83870968 10.02032454 15.00000000 20.00000000 -3.03225806 9.12903226 10.02032454 15.00000000 20.00000000 -3.03225806 9.41935484 10.02032454 15.00000000 20.00000000 -3.03225806 9.70967742 10.02032454 15.00000000 20.00000000 -3.03225806 10.00000000 10.02032454 15.00000000 20.00000000 -3.32258065 1.00000000 10.00000000 10.23852600 12.81465712 -3.32258065 1.29032258 10.00000000 10.23852600 12.81465712 -3.32258065 1.58064516 10.00000000 10.23852600 12.81465712 -3.32258065 1.87096774 10.00000000 10.23852600 12.81465712 -3.32258065 2.16129032 10.00000000 10.23852600 12.81465712 -3.32258065 2.45161290 10.00000000 10.23852600 12.81465712 -3.32258065 2.74193548 10.00000000 10.23852600 12.81465712 -3.32258065 3.03225806 10.00081091 10.25216001 12.82509445 -3.32258065 3.32258065 10.00847573 10.39024810 12.94131554 -3.32258065 3.61290323 10.01682656 10.55678831 13.10652832 -3.32258065 3.90322581 10.02600789 10.75843537 13.34992628 -3.32258065 4.19354839 10.03642525 11.01464869 13.72980008 -3.32258065 4.48387097 10.04898564 11.36779630 14.35055538 -3.32258065 4.77419355 10.06563624 11.89543354 15.38280506 -3.32258065 5.06451613 10.09043159 12.66530578 16.93433074 -3.32258065 5.35483871 10.11905829 13.33050784 18.08725853 -3.32258065 5.64516129 10.14531886 13.79087513 18.71123750 -3.32258065 5.93548387 10.16705394 14.13888710 19.10302935 -3.32258065 6.22580645 10.18433380 14.42710664 19.40531141 -3.32258065 6.51612903 10.19847233 14.67287318 19.66004764 -3.32258065 6.80645161 10.21090121 14.88093570 19.87607311 -3.32258065 7.09677419 10.21874952 15.00000000 20.00000000 -3.32258065 7.38709677 10.21874952 15.00000000 20.00000000 -3.32258065 7.67741935 10.21874952 15.00000000 20.00000000 -3.32258065 7.96774194 10.21874952 15.00000000 20.00000000 -3.32258065 8.25806452 10.21874952 15.00000000 20.00000000 -3.32258065 8.54838710 10.21874952 15.00000000 20.00000000 -3.32258065 8.83870968 10.21874952 15.00000000 20.00000000 -3.32258065 9.12903226 10.21874952 15.00000000 20.00000000 -3.32258065 9.41935484 10.21874952 15.00000000 20.00000000 -3.32258065 9.70967742 10.21874952 15.00000000 20.00000000 -3.32258065 10.00000000 10.21874952 15.00000000 20.00000000 -3.61290323 1.00000000 10.00000000 10.50490830 13.12845546 -3.61290323 1.29032258 10.00000000 10.50490830 13.12845546 -3.61290323 1.58064516 10.00000000 10.50490830 13.12845546 -3.61290323 1.87096774 10.00000000 10.50490830 13.12845546 -3.61290323 2.16129032 10.00000000 10.50490830 13.12845546 -3.61290323 2.45161290 10.00000000 10.50490830 13.12845546 -3.61290323 2.74193548 10.00000000 10.50490830 13.12845546 -3.61290323 3.03225806 10.00151654 10.51262673 13.13088541 -3.61290323 3.32258065 10.01600168 10.59992682 13.17930400 -3.61290323 3.61290323 10.03212956 10.72120213 13.28528620 -3.61290323 3.90322581 10.05031902 10.88533698 13.48054126 -3.61290323 4.19354839 10.07154360 11.11425892 13.82721937 -3.61290323 4.48387097 10.09785029 11.45287584 14.43542451 -3.61290323 4.77419355 10.13366827 11.98002190 15.48143735 -3.61290323 5.06451613 10.18719850 12.73374607 17.00406518 -3.61290323 5.35483871 10.24796420 13.36174755 18.08140820 -3.61290323 5.64516129 10.30403654 13.80875389 18.68736063 -3.61290323 5.93548387 10.35025162 14.15521373 19.08606379 -3.61290323 6.22580645 10.38608863 14.44355382 19.39936608 -3.61290323 6.51612903 10.41383257 14.68673503 19.66149620 -3.61290323 6.80645161 10.43623515 14.88800549 19.87887528 -3.61290323 7.09677419 10.44926133 15.00000088 20.00000000 -3.61290323 7.38709677 10.44926133 15.00000088 20.00000000 -3.61290323 7.67741935 10.44926133 15.00000088 20.00000000 -3.61290323 7.96774194 10.44926133 15.00000088 20.00000000 -3.61290323 8.25806452 10.44926133 15.00000088 20.00000000 -3.61290323 8.54838710 10.44926133 15.00000088 20.00000000 -3.61290323 8.83870968 10.44926133 15.00000088 20.00000000 -3.61290323 9.12903226 10.44926133 15.00000088 20.00000000 -3.61290323 9.41935484 10.44926133 15.00000088 20.00000000 -3.61290323 9.70967742 10.44926133 15.00000088 20.00000000 -3.61290323 10.00000000 10.44926133 15.00000088 20.00000000 -3.90322581 1.00000000 10.00000000 10.81017051 13.50482619 -3.90322581 1.29032258 10.00000000 10.81017051 13.50482619 -3.90322581 1.58064516 10.00000000 10.81017051 13.50482619 -3.90322581 1.87096774 10.00000000 10.81017051 13.50482619 -3.90322581 2.16129032 10.00000000 10.81017051 13.50482619 -3.90322581 2.45161290 10.00000000 10.81017051 13.50482619 -3.90322581 2.74193548 10.00000000 10.81017051 13.50482619 -3.90322581 3.03225806 10.00219148 10.81256800 13.49994499 -3.90322581 3.32258065 10.02334161 10.85552124 13.49103677 -3.90322581 3.61290323 10.04741939 10.93971057 13.55528460 -3.90322581 3.90322581 10.07534164 11.07630295 13.72649949 -3.90322581 4.19354839 10.10893601 11.29025424 14.07090979 -3.90322581 4.48387097 10.15193928 11.62903831 14.70330070 -3.90322581 4.77419355 10.21233649 12.16677306 15.79128080 -3.90322581 5.06451613 10.30009318 12.86586763 17.18478750 -3.90322581 5.35483871 10.39754980 13.42561609 18.11553344 -3.90322581 5.64516129 10.48826068 13.84290562 18.67501261 -3.90322581 5.93548387 10.56389908 14.17975972 19.07251531 -3.90322581 6.22580645 10.62276486 14.46381877 19.39494339 -3.90322581 6.51612903 10.66748610 14.70188269 19.66385099 -3.90322581 6.80645161 10.70191101 14.89518965 19.88205071 -3.90322581 7.09677419 10.72100391 15.00002113 20.00000000 -3.90322581 7.38709677 10.72100391 15.00002113 20.00000000 -3.90322581 7.67741935 10.72100391 15.00002113 20.00000000 -3.90322581 7.96774194 10.72100391 15.00002113 20.00000000 -3.90322581 8.25806452 10.72100391 15.00002113 20.00000000 -3.90322581 8.54838710 10.72100391 15.00002113 20.00000000 -3.90322581 8.83870968 10.72100391 15.00002113 20.00000000 -3.90322581 9.12903226 10.72100391 15.00002113 20.00000000 -3.90322581 9.41935484 10.72100391 15.00002113 20.00000000 -3.90322581 9.70967742 10.72100391 15.00002113 20.00000000 -3.90322581 10.00000000 10.72100391 15.00002113 20.00000000 -4.19354839 1.00000000 10.00000000 11.15752390 14.00262973 -4.19354839 1.29032258 10.00000000 11.15752390 14.00262973 -4.19354839 1.58064516 10.00000000 11.15752390 14.00262973 -4.19354839 1.87096774 10.00000000 11.15752390 14.00262973 -4.19354839 2.16129032 10.00000000 11.15752390 14.00262973 -4.19354839 2.45161290 10.00000000 11.15752390 14.00262973 -4.19354839 2.74193548 10.00000000 11.15752390 14.00262973 -4.19354839 3.03225806 10.00284797 11.15550089 13.99105017 -4.19354839 3.32258065 10.03061130 11.16343190 13.93454481 -4.19354839 3.61290323 10.06293737 11.22200777 13.97446418 -4.19354839 3.90322581 10.10150367 11.34453978 14.14653042 -4.19354839 4.19354839 10.14947661 11.55849242 14.51982064 -4.19354839 4.48387097 10.21306769 11.91049442 15.20610247 -4.19354839 4.77419355 10.30455207 12.44702544 16.30551023 -4.19354839 5.06451613 10.42825336 13.03462310 17.41989968 -4.19354839 5.35483871 10.56483051 13.51054329 18.16893632 -4.19354839 5.64516129 10.69399611 13.89010562 18.67059669 -4.19354839 5.93548387 10.80488969 14.21182688 19.06294905 -4.19354839 6.22580645 10.89398583 14.48780444 19.39301254 -4.19354839 6.51612903 10.96315550 14.71842615 19.66783672 -4.19354839 6.80645161 11.01688740 14.90267275 19.88592684 -4.19354839 7.09677419 11.04734052 15.00021055 20.00000000 -4.19354839 7.38709677 11.04734052 15.00021055 20.00000000 -4.19354839 7.67741935 11.04734052 15.00021055 20.00000000 -4.19354839 7.96774194 11.04734052 15.00021055 20.00000000 -4.19354839 8.25806452 11.04734052 15.00021055 20.00000000 -4.19354839 8.54838710 11.04734052 15.00021055 20.00000000 -4.19354839 8.83870968 11.04734052 15.00021055 20.00000000 -4.19354839 9.12903226 11.04734052 15.00021055 20.00000000 -4.19354839 9.41935484 11.04734052 15.00021055 20.00000000 -4.19354839 9.70967742 11.04734052 15.00021055 20.00000000 -4.19354839 10.00000000 11.04734052 15.00021055 20.00000000 -4.48387097 1.00000000 10.00000000 11.56528482 14.70576330 -4.48387097 1.29032258 10.00000000 11.56528482 14.70576330 -4.48387097 1.58064516 10.00000000 11.56528482 14.70576330 -4.48387097 1.87096774 10.00000000 11.56528482 14.70576330 -4.48387097 2.16129032 10.00000000 11.56528482 14.70576330 -4.48387097 2.45161290 10.00000000 11.56528482 14.70576330 -4.48387097 2.74193548 10.00000000 11.56528482 14.70576330 -4.48387097 3.03225806 10.00351833 11.55997110 14.68853149 -4.48387097 3.32258065 10.03814879 11.54406758 14.59669714 -4.48387097 3.61290323 10.07937305 11.59012375 14.63057323 -4.48387097 3.90322581 10.12999914 11.71265167 14.82664243 -4.48387097 4.19354839 10.19514264 11.93798653 15.24939300 -4.48387097 4.48387097 10.28453809 12.29965873 15.97812311 -4.48387097 4.77419355 10.40728869 12.75130857 16.85678574 -4.48387097 5.06451613 10.56626545 13.21039199 17.64813719 -4.48387097 5.35483871 10.74201361 13.60560816 18.22456849 -4.48387097 5.64516129 10.91294483 13.94712330 18.67257728 -4.48387097 5.93548387 11.06666959 14.25051940 19.05879821 -4.48387097 6.22580645 11.19709582 14.51530775 19.39489256 -4.48387097 6.51612903 11.30393014 14.73651306 19.67429340 -4.48387097 6.80645161 11.39171986 14.91090478 19.89084781 -4.48387097 7.09677419 11.44506880 15.00128458 20.00000000 -4.48387097 7.38709677 11.44506880 15.00128458 20.00000000 -4.48387097 7.67741935 11.44506880 15.00128458 20.00000000 -4.48387097 7.96774194 11.44506880 15.00128458 20.00000000 -4.48387097 8.25806452 11.44506880 15.00128458 20.00000000 -4.48387097 8.54838710 11.44506880 15.00128458 20.00000000 -4.48387097 8.83870968 11.44506880 15.00128458 20.00000000 -4.48387097 9.12903226 11.44506880 15.00128458 20.00000000 -4.48387097 9.41935484 11.44506880 15.00128458 20.00000000 -4.48387097 9.70967742 11.44506880 15.00128458 20.00000000 -4.48387097 10.00000000 11.44506880 15.00128458 20.00000000 -4.77419355 1.00000000 10.00000000 12.05898046 15.70102169 -4.77419355 1.29032258 10.00000000 12.05898046 15.70102169 -4.77419355 1.58064516 10.00000000 12.05898046 15.70102169 -4.77419355 1.87096774 10.00000000 12.05898046 15.70102169 -4.77419355 2.16129032 10.00000000 12.05898046 15.70102169 -4.77419355 2.45161290 10.00000000 12.05898046 15.70102169 -4.77419355 2.74193548 10.00000000 12.05898046 15.70102169 -4.77419355 3.03225806 10.00425780 12.05183116 15.68076127 -4.77419355 3.32258065 10.04656050 12.02438408 15.57411145 -4.77419355 3.61290323 10.09802059 12.06833124 15.61725364 -4.77419355 3.90322581 10.16302652 12.19562117 15.84003779 -4.77419355 4.19354839 10.24884203 12.41521338 16.25899815 -4.77419355 4.48387097 10.36281190 12.69904450 16.77664315 -4.77419355 4.77419355 10.51269012 13.02442268 17.31761601 -4.77419355 5.06451613 10.70326374 13.37314904 17.83311892 -4.77419355 5.35483871 10.91644419 13.70398283 18.27798568 -4.77419355 5.64516129 11.13258860 14.01140956 18.68338981 -4.77419355 5.93548387 11.33885271 14.29485387 19.06262803 -4.77419355 6.22580645 11.52611738 14.54611158 19.40221067 -4.77419355 6.51612903 11.69068129 14.75656882 19.68409833 -4.77419355 6.80645161 11.83652379 14.92121904 19.89713492 -4.77419355 7.09677419 11.93184447 15.00571281 20.00000000 -4.77419355 7.38709677 11.93184447 15.00571281 20.00000000 -4.77419355 7.67741935 11.93184447 15.00571281 20.00000000 -4.77419355 7.96774194 11.93184447 15.00571281 20.00000000 -4.77419355 8.25806452 11.93184447 15.00571281 20.00000000 -4.77419355 8.54838710 11.93184447 15.00571281 20.00000000 -4.77419355 8.83870968 11.93184447 15.00571281 20.00000000 -4.77419355 9.12903226 11.93184447 15.00571281 20.00000000 -4.77419355 9.41935484 11.93184447 15.00571281 20.00000000 -4.77419355 9.70967742 11.93184447 15.00571281 20.00000000 -4.77419355 10.00000000 11.93184447 15.00571281 20.00000000 -5.06451613 1.00000000 10.00000000 12.62161977 16.93336867 -5.06451613 1.29032258 10.00000000 12.62161977 16.93336867 -5.06451613 1.58064516 10.00000000 12.62161977 16.93336867 -5.06451613 1.87096774 10.00000000 12.62161977 16.93336867 -5.06451613 2.16129032 10.00000000 12.62161977 16.93336867 -5.06451613 2.45161290 10.00000000 12.62161977 16.93336867 -5.06451613 2.74193548 10.00000000 12.62161977 16.93336867 -5.06451613 3.03225806 10.00514671 12.61436601 16.91498077 -5.06451613 3.32258065 10.05669829 12.58189344 16.81059366 -5.06451613 3.61290323 10.12016954 12.60900573 16.81743639 -5.06451613 3.90322581 10.20030048 12.69329287 16.92465057 -5.06451613 4.19354839 10.30333031 12.82979245 17.11064279 -5.06451613 4.48387097 10.43676106 13.01355965 17.35314038 -5.06451613 4.77419355 10.60858414 13.24246568 17.64074677 -5.06451613 5.06451613 10.82506593 13.51723830 17.97839577 -5.06451613 5.35483871 11.07335436 13.80267877 18.33779748 -5.06451613 5.64516129 11.33833932 14.08082078 18.70901812 -5.06451613 5.93548387 11.60813624 14.34372309 19.07791541 -5.06451613 6.22580645 11.87123458 14.58015261 19.41671660 -5.06451613 6.51612903 12.12014276 14.77981816 19.69800848 -5.06451613 6.80645161 12.35752048 14.93719431 19.90501710 -5.06451613 7.09677419 12.52110295 15.02031920 20.00000000 -5.06451613 7.38709677 12.52110295 15.02031920 20.00000000 -5.06451613 7.67741935 12.52110295 15.02031920 20.00000000 -5.06451613 7.96774194 12.52110295 15.02031920 20.00000000 -5.06451613 8.25806452 12.52110295 15.02031920 20.00000000 -5.06451613 8.54838710 12.52110295 15.02031920 20.00000000 -5.06451613 8.83870968 12.52110295 15.02031920 20.00000000 -5.06451613 9.12903226 12.52110295 15.02031920 20.00000000 -5.06451613 9.41935484 12.52110295 15.02031920 20.00000000 -5.06451613 9.70967742 12.52110295 15.02031920 20.00000000 -5.06451613 10.00000000 12.52110295 15.02031920 20.00000000 -5.35483871 1.00000000 10.00000000 13.01386190 17.72252667 -5.35483871 1.29032258 10.00000000 13.01386190 17.72252667 -5.35483871 1.58064516 10.00000000 13.01386190 17.72252667 -5.35483871 1.87096774 10.00000000 13.01386190 17.72252667 -5.35483871 2.16129032 10.00000000 13.01386190 17.72252667 -5.35483871 2.45161290 10.00000000 13.01386190 17.72252667 -5.35483871 2.74193548 10.00000000 13.01386190 17.72252667 -5.35483871 3.03225806 10.00601495 13.00686969 17.70685129 -5.35483871 3.32258065 10.06634293 12.96547134 17.59385080 -5.35483871 3.61290323 10.14023145 12.96440313 17.53452108 -5.35483871 3.90322581 10.23227056 13.00488842 17.52903392 -5.35483871 4.19354839 10.34858062 13.08810799 17.57595632 -5.35483871 4.48387097 10.49681892 13.21678700 17.67789446 -5.35483871 4.77419355 10.68605152 13.39618613 17.84588275 -5.35483871 5.06451613 10.92582927 13.63255921 18.09900113 -5.35483871 5.35483871 11.20991976 13.89010102 18.40855831 -5.35483871 5.64516129 11.52857074 14.14622502 18.75108786 -5.35483871 5.93548387 11.87259469 14.39188070 19.10579009 -5.35483871 6.22580645 12.23015522 14.61596607 19.43909490 -5.35483871 6.51612903 12.59107968 14.80868432 19.71627593 -5.35483871 6.80645161 12.95594174 14.96716502 19.91453659 -5.35483871 7.09677419 13.21476275 15.06095073 20.00000000 -5.35483871 7.38709677 13.21476275 15.06095073 20.00000000 -5.35483871 7.67741935 13.21476275 15.06095073 20.00000000 -5.35483871 7.96774194 13.21476275 15.06095073 20.00000000 -5.35483871 8.25806452 13.21476275 15.06095073 20.00000000 -5.35483871 8.54838710 13.21476275 15.06095073 20.00000000 -5.35483871 8.83870968 13.21476275 15.06095073 20.00000000 -5.35483871 9.12903226 13.21476275 15.06095073 20.00000000 -5.35483871 9.41935484 13.21476275 15.06095073 20.00000000 -5.35483871 9.70967742 13.21476275 15.06095073 20.00000000 -5.35483871 10.00000000 13.21476275 15.06095073 20.00000000 -5.64516129 1.00000000 10.00000000 13.24478345 18.10948914 -5.64516129 1.29032258 10.00000000 13.24478345 18.10948914 -5.64516129 1.58064516 10.00000000 13.24478345 18.10948914 -5.64516129 1.87096774 10.00000000 13.24478345 18.10948914 -5.64516129 2.16129032 10.00000000 13.24478345 18.10948914 -5.64516129 2.45161290 10.00000000 13.24478345 18.10948914 -5.64516129 2.74193548 10.00000000 13.24478345 18.10948914 -5.64516129 3.03225806 10.00676630 13.23777415 18.09507267 -5.64516129 3.32258065 10.07445919 13.19087287 17.97991142 -5.64516129 3.61290323 10.15668214 13.17534466 17.89493493 -5.64516129 3.90322581 10.25790645 13.19448141 17.84556990 -5.64516129 4.19354839 10.38436340 13.25231438 17.83870593 -5.64516129 4.48387097 10.54440886 13.35439086 17.88514140 -5.64516129 4.77419355 10.74903309 13.50842487 18.00199210 -5.64516129 5.06451613 11.01198391 13.72314620 18.21285792 -5.64516129 5.35483871 11.33358994 13.96248512 18.48921917 -5.64516129 5.64516129 11.71006848 14.20295570 18.80628061 -5.64516129 5.93548387 12.13699441 14.43664044 19.14441571 -5.64516129 6.22580645 12.60472073 14.65433972 19.46851033 -5.64516129 6.51612903 13.10163256 14.84960699 19.73841715 -5.64516129 6.80645161 13.62372773 15.02857701 19.92548914 -5.64516129 7.09677419 13.99614692 15.15882564 20.00000000 -5.64516129 7.38709677 13.99614692 15.15882564 20.00000000 -5.64516129 7.67741935 13.99614692 15.15882564 20.00000000 -5.64516129 7.96774194 13.99614692 15.15882564 20.00000000 -5.64516129 8.25806452 13.99614692 15.15882564 20.00000000 -5.64516129 8.54838710 13.99614692 15.15882564 20.00000000 -5.64516129 8.83870968 13.99614692 15.15882564 20.00000000 -5.64516129 9.12903226 13.99614692 15.15882564 20.00000000 -5.64516129 9.41935484 13.99614692 15.15882564 20.00000000 -5.64516129 9.70967742 13.99614692 15.15882564 20.00000000 -5.64516129 10.00000000 13.99614692 15.15882564 20.00000000 -5.93548387 1.00000000 10.00000000 13.40120867 18.33397089 -5.93548387 1.29032258 10.00000000 13.40120867 18.33397089 -5.93548387 1.58064516 10.00000000 13.40120867 18.33397089 -5.93548387 1.87096774 10.00000000 13.40120867 18.33397089 -5.93548387 2.16129032 10.00000000 13.40120867 18.33397089 -5.93548387 2.45161290 10.00000000 13.40120867 18.33397089 -5.93548387 2.74193548 10.00000000 13.40120867 18.33397089 -5.93548387 3.03225806 10.00744380 13.39407329 18.32019470 -5.93548387 3.32258065 10.08152139 13.34352984 18.20598565 -5.93548387 3.61290323 10.17060647 13.32009277 18.11340822 -5.93548387 3.90322581 10.27923715 13.32771096 18.04912878 -5.93548387 4.19354839 10.41406163 13.37128448 18.02197505 -5.93548387 4.48387097 10.58455108 13.45730945 18.04456687 -5.93548387 4.77419355 10.80408104 13.59471590 18.13562017 -5.93548387 5.06451613 11.09099369 13.79430829 18.32113067 -5.93548387 5.35483871 11.45208902 14.02065538 18.57338072 -5.93548387 5.64516129 11.89026400 14.25075408 18.86869733 -5.93548387 5.93548387 12.40745964 14.47898935 19.19011429 -5.93548387 6.22580645 12.99767141 14.70031056 19.50287840 -5.93548387 6.51612903 13.64712779 14.91660867 19.76327022 -5.93548387 6.80645161 14.34097951 15.15349351 19.93748440 -5.93548387 7.09677419 14.82768590 15.36421869 20.00000000 -5.93548387 7.38709677 14.82768590 15.36421869 20.00000000 -5.93548387 7.67741935 14.82768590 15.36421869 20.00000000 -5.93548387 7.96774194 14.82768590 15.36421869 20.00000000 -5.93548387 8.25806452 14.82768590 15.36421869 20.00000000 -5.93548387 8.54838710 14.82768590 15.36421869 20.00000000 -5.93548387 8.83870968 14.82768590 15.36421869 20.00000000 -5.93548387 9.12903226 14.82768590 15.36421869 20.00000000 -5.93548387 9.41935484 14.82768590 15.36421869 20.00000000 -5.93548387 9.70967742 14.82768590 15.36421869 20.00000000 -5.93548387 10.00000000 14.82768590 15.36421869 20.00000000 -6.22580645 1.00000000 10.00000000 13.52140723 18.49028183 -6.22580645 1.29032258 10.00000000 13.52140723 18.49028183 -6.22580645 1.58064516 10.00000000 13.52140723 18.49028183 -6.22580645 1.87096774 10.00000000 13.52140723 18.49028183 -6.22580645 2.16129032 10.00000000 13.52140723 18.49028183 -6.22580645 2.45161290 10.00000000 13.52140723 18.49028183 -6.22580645 2.74193548 10.00000000 13.52140723 18.49028183 -6.22580645 3.03225806 10.00810302 13.51414064 18.47696951 -6.22580645 3.32258065 10.08815300 13.46083531 18.36487771 -6.22580645 3.61290323 10.18335204 13.43182492 18.27056725 -6.22580645 3.90322581 10.29853084 13.43120310 18.20072122 -6.22580645 4.19354839 10.44105662 13.46414597 18.16435180 -6.22580645 4.48387097 10.62187043 13.53764372 18.17434053 -6.22580645 4.77419355 10.85711240 13.66162818 18.24992950 -6.22580645 5.06451613 11.17010593 13.84903800 18.41864073 -6.22580645 5.35483871 11.57429140 14.06601569 18.65350731 -6.22580645 5.64516129 12.07969940 14.29125163 18.93164466 -6.22580645 5.93548387 12.69488978 14.52340191 19.23816286 -6.22580645 6.22580645 13.41621771 14.76582129 19.53932638 -6.22580645 6.51612903 14.22291873 15.03682794 19.78943564 -6.22580645 6.80645161 15.07877121 15.39191301 19.95021830 -6.22580645 7.09677419 15.65721613 15.73541361 20.00000000 -6.22580645 7.38709677 15.65721613 15.73541361 20.00000000 -6.22580645 7.67741935 15.65721613 15.73541361 20.00000000 -6.22580645 7.96774194 15.65721613 15.73541361 20.00000000 -6.22580645 8.25806452 15.65721613 15.73541361 20.00000000 -6.22580645 8.54838710 15.65721613 15.73541361 20.00000000 -6.22580645 8.83870968 15.65721613 15.73541361 20.00000000 -6.22580645 9.12903226 15.65721613 15.73541361 20.00000000 -6.22580645 9.41935484 15.65721613 15.73541361 20.00000000 -6.22580645 9.70967742 15.65721613 15.73541361 20.00000000 -6.22580645 10.00000000 15.65721613 15.73541361 20.00000000 -6.51612903 1.00000000 10.00000000 13.61972094 18.60880619 -6.51612903 1.29032258 10.00000000 13.61972094 18.60880619 -6.51612903 1.58064516 10.00000000 13.61972094 18.60880619 -6.51612903 1.87096774 10.00000000 13.61972094 18.60880619 -6.51612903 2.16129032 10.00000000 13.61972094 18.60880619 -6.51612903 2.45161290 10.00000000 13.61972094 18.60880619 -6.51612903 2.74193548 10.00000000 13.61972094 18.60880619 -6.51612903 3.03225806 10.00879607 13.61234668 18.59585828 -6.51612903 3.32258065 10.09491449 13.55680524 18.48591333 -6.51612903 3.61290323 10.19606794 13.52317278 18.39148132 -6.51612903 3.90322581 10.31763361 13.51550375 18.31902161 -6.51612903 4.19354839 10.46805711 13.53910437 18.27742836 -6.51612903 4.48387097 10.66021718 13.60138870 18.27957680 -6.51612903 4.77419355 10.91360186 13.71334196 18.34495215 -6.51612903 5.06451613 11.25720210 13.89035326 18.50206810 -6.51612903 5.35483871 11.71156099 14.10154931 18.72464991 -6.51612903 5.64516129 12.29365018 14.32963573 18.99000850 -6.51612903 5.93548387 13.01651193 14.58179014 19.28447671 -6.51612903 6.22580645 13.87303537 14.87722915 19.57556793 -6.51612903 6.51612903 14.82531306 15.25898022 19.81660791 -6.51612903 6.80645161 15.80446772 15.80314051 19.96387362 -6.51612903 7.09677419 16.43160099 16.29997299 20.00000000 -6.51612903 7.38709677 16.43160099 16.29997299 20.00000000 -6.51612903 7.67741935 16.43160099 16.29997299 20.00000000 -6.51612903 7.96774194 16.43160099 16.29997299 20.00000000 -6.51612903 8.25806452 16.43160099 16.29997299 20.00000000 -6.51612903 8.54838710 16.43160099 16.29997299 20.00000000 -6.51612903 8.83870968 16.43160099 16.29997299 20.00000000 -6.51612903 9.12903226 16.43160099 16.29997299 20.00000000 -6.51612903 9.41935484 16.43160099 16.29997299 20.00000000 -6.51612903 9.70967742 16.43160099 16.29997299 20.00000000 -6.51612903 10.00000000 16.43160099 16.29997299 20.00000000 -6.80645161 1.00000000 10.00000000 13.70214059 18.70056855 -6.80645161 1.29032258 10.00000000 13.70214059 18.70056855 -6.80645161 1.58064516 10.00000000 13.70214059 18.70056855 -6.80645161 1.87096774 10.00000000 13.70214059 18.70056855 -6.80645161 2.16129032 10.00000000 13.70214059 18.70056855 -6.80645161 2.45161290 10.00000000 13.70214059 18.70056855 -6.80645161 2.74193548 10.00000000 13.70214059 18.70056855 -6.80645161 3.03225806 10.00956688 13.69469565 18.68788903 -6.80645161 3.32258065 10.10223923 13.63745767 18.57975796 -6.80645161 3.61290323 10.20959709 13.59997149 18.48577395 -6.80645161 3.90322581 10.33793179 13.58608880 18.41208791 -6.80645161 4.19354839 10.49735957 13.60114711 18.36739388 -6.80645161 4.48387097 10.70355023 13.65298813 18.36446614 -6.80645161 4.77419355 10.98045881 13.75389532 18.42285704 -6.80645161 5.06451613 11.36399277 13.92258835 18.57166481 -6.80645161 5.35483871 11.88233270 14.13399003 18.78543130 -6.80645161 5.64516129 12.55749197 14.38001472 19.04156376 -6.80645161 5.93548387 13.40037073 14.68481595 19.32760098 -6.80645161 6.22580645 14.38806526 15.09217911 19.61310066 -6.80645161 6.51612903 15.45207816 15.66063766 19.84876184 -6.80645161 6.80645161 16.48822744 16.42159603 19.97852673 -6.80645161 7.09677419 17.11075039 17.00762602 20.00000000 -6.80645161 7.38709677 17.11075039 17.00762602 20.00000000 -6.80645161 7.67741935 17.11075039 17.00762602 20.00000000 -6.80645161 7.96774194 17.11075039 17.00762602 20.00000000 -6.80645161 8.25806452 17.11075039 17.00762602 20.00000000 -6.80645161 8.54838710 17.11075039 17.00762602 20.00000000 -6.80645161 8.83870968 17.11075039 17.00762602 20.00000000 -6.80645161 9.12903226 17.11075039 17.00762602 20.00000000 -6.80645161 9.41935484 17.11075039 17.00762602 20.00000000 -6.80645161 9.70967742 17.11075039 17.00762602 20.00000000 -6.80645161 10.00000000 17.11075039 17.00762602 20.00000000 -7.09677419 1.00000000 10.00000000 13.75000000 18.75000000 -7.09677419 1.29032258 10.00000000 13.75000000 18.75000000 -7.09677419 1.58064516 10.00000000 13.75000000 18.75000000 -7.09677419 1.87096774 10.00000000 13.75000000 18.75000000 -7.09677419 2.16129032 10.00000000 13.75000000 18.75000000 -7.09677419 2.45161290 10.00000000 13.75000000 18.75000000 -7.09677419 2.74193548 10.00000000 13.75000000 18.75000000 -7.09677419 3.03225806 10.01014215 13.74253652 18.73745586 -7.09677419 3.32258065 10.10759368 13.68455725 18.63042380 -7.09677419 3.61290323 10.21937858 13.64503060 18.53708695 -7.09677419 3.90322581 10.35276814 13.62755769 18.46331909 -7.09677419 4.19354839 10.51962543 13.63742744 18.41759948 -7.09677419 4.48387097 10.73840842 13.68281858 18.41253579 -7.09677419 4.77419355 11.03721734 13.77727807 18.46758374 -7.09677419 5.06451613 11.45766304 13.94303282 18.61200965 -7.09677419 5.35483871 12.03283452 14.16229115 18.82112467 -7.09677419 5.64516129 12.78467382 14.43913152 19.07300014 -7.09677419 5.93548387 13.71462338 14.81596996 19.35739569 -7.09677419 6.22580645 14.77874402 15.35015506 19.64585006 -7.09677419 6.51612903 15.88319867 16.07541438 19.87869941 -7.09677419 6.80645161 16.90953845 16.93241475 19.98661180 -7.09677419 7.09677419 17.50000000 17.50000000 20.00000000 -7.09677419 7.38709677 17.50000000 17.50000000 20.00000000 -7.09677419 7.67741935 17.50000000 17.50000000 20.00000000 -7.09677419 7.96774194 17.50000000 17.50000000 20.00000000 -7.09677419 8.25806452 17.50000000 17.50000000 20.00000000 -7.09677419 8.54838710 17.50000000 17.50000000 20.00000000 -7.09677419 8.83870968 17.50000000 17.50000000 20.00000000 -7.09677419 9.12903226 17.50000000 17.50000000 20.00000000 -7.09677419 9.41935484 17.50000000 17.50000000 20.00000000 -7.09677419 9.70967742 17.50000000 17.50000000 20.00000000 -7.09677419 10.00000000 17.50000000 17.50000000 20.00000000 -7.38709677 1.00000000 10.00000000 13.75000000 18.75000000 -7.38709677 1.29032258 10.00000000 13.75000000 18.75000000 -7.38709677 1.58064516 10.00000000 13.75000000 18.75000000 -7.38709677 1.87096774 10.00000000 13.75000000 18.75000000 -7.38709677 2.16129032 10.00000000 13.75000000 18.75000000 -7.38709677 2.45161290 10.00000000 13.75000000 18.75000000 -7.38709677 2.74193548 10.00000000 13.75000000 18.75000000 -7.38709677 3.03225806 10.01014215 13.74253652 18.73745586 -7.38709677 3.32258065 10.10759368 13.68455725 18.63042380 -7.38709677 3.61290323 10.21937858 13.64503060 18.53708695 -7.38709677 3.90322581 10.35276814 13.62755769 18.46331909 -7.38709677 4.19354839 10.51962543 13.63742744 18.41759948 -7.38709677 4.48387097 10.73840842 13.68281858 18.41253579 -7.38709677 4.77419355 11.03721734 13.77727807 18.46758374 -7.38709677 5.06451613 11.45766304 13.94303282 18.61200965 -7.38709677 5.35483871 12.03283452 14.16229115 18.82112467 -7.38709677 5.64516129 12.78467382 14.43913152 19.07300014 -7.38709677 5.93548387 13.71462338 14.81596996 19.35739569 -7.38709677 6.22580645 14.77874402 15.35015506 19.64585006 -7.38709677 6.51612903 15.88319867 16.07541438 19.87869941 -7.38709677 6.80645161 16.90953845 16.93241475 19.98661180 -7.38709677 7.09677419 17.50000000 17.50000000 20.00000000 -7.38709677 7.38709677 17.50000000 17.50000000 20.00000000 -7.38709677 7.67741935 17.50000000 17.50000000 20.00000000 -7.38709677 7.96774194 17.50000000 17.50000000 20.00000000 -7.38709677 8.25806452 17.50000000 17.50000000 20.00000000 -7.38709677 8.54838710 17.50000000 17.50000000 20.00000000 -7.38709677 8.83870968 17.50000000 17.50000000 20.00000000 -7.38709677 9.12903226 17.50000000 17.50000000 20.00000000 -7.38709677 9.41935484 17.50000000 17.50000000 20.00000000 -7.38709677 9.70967742 17.50000000 17.50000000 20.00000000 -7.38709677 10.00000000 17.50000000 17.50000000 20.00000000 -7.67741935 1.00000000 10.00000000 13.75000000 18.75000000 -7.67741935 1.29032258 10.00000000 13.75000000 18.75000000 -7.67741935 1.58064516 10.00000000 13.75000000 18.75000000 -7.67741935 1.87096774 10.00000000 13.75000000 18.75000000 -7.67741935 2.16129032 10.00000000 13.75000000 18.75000000 -7.67741935 2.45161290 10.00000000 13.75000000 18.75000000 -7.67741935 2.74193548 10.00000000 13.75000000 18.75000000 -7.67741935 3.03225806 10.01014215 13.74253652 18.73745586 -7.67741935 3.32258065 10.10759368 13.68455725 18.63042380 -7.67741935 3.61290323 10.21937858 13.64503060 18.53708695 -7.67741935 3.90322581 10.35276814 13.62755769 18.46331909 -7.67741935 4.19354839 10.51962543 13.63742744 18.41759948 -7.67741935 4.48387097 10.73840842 13.68281858 18.41253579 -7.67741935 4.77419355 11.03721734 13.77727807 18.46758374 -7.67741935 5.06451613 11.45766304 13.94303282 18.61200965 -7.67741935 5.35483871 12.03283452 14.16229115 18.82112467 -7.67741935 5.64516129 12.78467382 14.43913152 19.07300014 -7.67741935 5.93548387 13.71462338 14.81596996 19.35739569 -7.67741935 6.22580645 14.77874402 15.35015506 19.64585006 -7.67741935 6.51612903 15.88319867 16.07541438 19.87869941 -7.67741935 6.80645161 16.90953845 16.93241475 19.98661180 -7.67741935 7.09677419 17.50000000 17.50000000 20.00000000 -7.67741935 7.38709677 17.50000000 17.50000000 20.00000000 -7.67741935 7.67741935 17.50000000 17.50000000 20.00000000 -7.67741935 7.96774194 17.50000000 17.50000000 20.00000000 -7.67741935 8.25806452 17.50000000 17.50000000 20.00000000 -7.67741935 8.54838710 17.50000000 17.50000000 20.00000000 -7.67741935 8.83870968 17.50000000 17.50000000 20.00000000 -7.67741935 9.12903226 17.50000000 17.50000000 20.00000000 -7.67741935 9.41935484 17.50000000 17.50000000 20.00000000 -7.67741935 9.70967742 17.50000000 17.50000000 20.00000000 -7.67741935 10.00000000 17.50000000 17.50000000 20.00000000 -7.96774194 1.00000000 10.00000000 13.75000000 18.75000000 -7.96774194 1.29032258 10.00000000 13.75000000 18.75000000 -7.96774194 1.58064516 10.00000000 13.75000000 18.75000000 -7.96774194 1.87096774 10.00000000 13.75000000 18.75000000 -7.96774194 2.16129032 10.00000000 13.75000000 18.75000000 -7.96774194 2.45161290 10.00000000 13.75000000 18.75000000 -7.96774194 2.74193548 10.00000000 13.75000000 18.75000000 -7.96774194 3.03225806 10.01014215 13.74253652 18.73745586 -7.96774194 3.32258065 10.10759368 13.68455725 18.63042380 -7.96774194 3.61290323 10.21937858 13.64503060 18.53708695 -7.96774194 3.90322581 10.35276814 13.62755769 18.46331909 -7.96774194 4.19354839 10.51962543 13.63742744 18.41759948 -7.96774194 4.48387097 10.73840842 13.68281858 18.41253579 -7.96774194 4.77419355 11.03721734 13.77727807 18.46758374 -7.96774194 5.06451613 11.45766304 13.94303282 18.61200965 -7.96774194 5.35483871 12.03283452 14.16229115 18.82112467 -7.96774194 5.64516129 12.78467382 14.43913152 19.07300014 -7.96774194 5.93548387 13.71462338 14.81596996 19.35739569 -7.96774194 6.22580645 14.77874402 15.35015506 19.64585006 -7.96774194 6.51612903 15.88319867 16.07541438 19.87869941 -7.96774194 6.80645161 16.90953845 16.93241475 19.98661180 -7.96774194 7.09677419 17.50000000 17.50000000 20.00000000 -7.96774194 7.38709677 17.50000000 17.50000000 20.00000000 -7.96774194 7.67741935 17.50000000 17.50000000 20.00000000 -7.96774194 7.96774194 17.50000000 17.50000000 20.00000000 -7.96774194 8.25806452 17.50000000 17.50000000 20.00000000 -7.96774194 8.54838710 17.50000000 17.50000000 20.00000000 -7.96774194 8.83870968 17.50000000 17.50000000 20.00000000 -7.96774194 9.12903226 17.50000000 17.50000000 20.00000000 -7.96774194 9.41935484 17.50000000 17.50000000 20.00000000 -7.96774194 9.70967742 17.50000000 17.50000000 20.00000000 -7.96774194 10.00000000 17.50000000 17.50000000 20.00000000 -8.25806452 1.00000000 10.00000000 13.75000000 18.75000000 -8.25806452 1.29032258 10.00000000 13.75000000 18.75000000 -8.25806452 1.58064516 10.00000000 13.75000000 18.75000000 -8.25806452 1.87096774 10.00000000 13.75000000 18.75000000 -8.25806452 2.16129032 10.00000000 13.75000000 18.75000000 -8.25806452 2.45161290 10.00000000 13.75000000 18.75000000 -8.25806452 2.74193548 10.00000000 13.75000000 18.75000000 -8.25806452 3.03225806 10.01014215 13.74253652 18.73745586 -8.25806452 3.32258065 10.10759368 13.68455725 18.63042380 -8.25806452 3.61290323 10.21937858 13.64503060 18.53708695 -8.25806452 3.90322581 10.35276814 13.62755769 18.46331909 -8.25806452 4.19354839 10.51962543 13.63742744 18.41759948 -8.25806452 4.48387097 10.73840842 13.68281858 18.41253579 -8.25806452 4.77419355 11.03721734 13.77727807 18.46758374 -8.25806452 5.06451613 11.45766304 13.94303282 18.61200965 -8.25806452 5.35483871 12.03283452 14.16229115 18.82112467 -8.25806452 5.64516129 12.78467382 14.43913152 19.07300014 -8.25806452 5.93548387 13.71462338 14.81596996 19.35739569 -8.25806452 6.22580645 14.77874402 15.35015506 19.64585006 -8.25806452 6.51612903 15.88319867 16.07541438 19.87869941 -8.25806452 6.80645161 16.90953845 16.93241475 19.98661180 -8.25806452 7.09677419 17.50000000 17.50000000 20.00000000 -8.25806452 7.38709677 17.50000000 17.50000000 20.00000000 -8.25806452 7.67741935 17.50000000 17.50000000 20.00000000 -8.25806452 7.96774194 17.50000000 17.50000000 20.00000000 -8.25806452 8.25806452 17.50000000 17.50000000 20.00000000 -8.25806452 8.54838710 17.50000000 17.50000000 20.00000000 -8.25806452 8.83870968 17.50000000 17.50000000 20.00000000 -8.25806452 9.12903226 17.50000000 17.50000000 20.00000000 -8.25806452 9.41935484 17.50000000 17.50000000 20.00000000 -8.25806452 9.70967742 17.50000000 17.50000000 20.00000000 -8.25806452 10.00000000 17.50000000 17.50000000 20.00000000 -8.54838710 1.00000000 10.00000000 13.75000000 18.75000000 -8.54838710 1.29032258 10.00000000 13.75000000 18.75000000 -8.54838710 1.58064516 10.00000000 13.75000000 18.75000000 -8.54838710 1.87096774 10.00000000 13.75000000 18.75000000 -8.54838710 2.16129032 10.00000000 13.75000000 18.75000000 -8.54838710 2.45161290 10.00000000 13.75000000 18.75000000 -8.54838710 2.74193548 10.00000000 13.75000000 18.75000000 -8.54838710 3.03225806 10.01014215 13.74253652 18.73745586 -8.54838710 3.32258065 10.10759368 13.68455725 18.63042380 -8.54838710 3.61290323 10.21937858 13.64503060 18.53708695 -8.54838710 3.90322581 10.35276814 13.62755769 18.46331909 -8.54838710 4.19354839 10.51962543 13.63742744 18.41759948 -8.54838710 4.48387097 10.73840842 13.68281858 18.41253579 -8.54838710 4.77419355 11.03721734 13.77727807 18.46758374 -8.54838710 5.06451613 11.45766304 13.94303282 18.61200965 -8.54838710 5.35483871 12.03283452 14.16229115 18.82112467 -8.54838710 5.64516129 12.78467382 14.43913152 19.07300014 -8.54838710 5.93548387 13.71462338 14.81596996 19.35739569 -8.54838710 6.22580645 14.77874402 15.35015506 19.64585006 -8.54838710 6.51612903 15.88319867 16.07541438 19.87869941 -8.54838710 6.80645161 16.90953845 16.93241475 19.98661180 -8.54838710 7.09677419 17.50000000 17.50000000 20.00000000 -8.54838710 7.38709677 17.50000000 17.50000000 20.00000000 -8.54838710 7.67741935 17.50000000 17.50000000 20.00000000 -8.54838710 7.96774194 17.50000000 17.50000000 20.00000000 -8.54838710 8.25806452 17.50000000 17.50000000 20.00000000 -8.54838710 8.54838710 17.50000000 17.50000000 20.00000000 -8.54838710 8.83870968 17.50000000 17.50000000 20.00000000 -8.54838710 9.12903226 17.50000000 17.50000000 20.00000000 -8.54838710 9.41935484 17.50000000 17.50000000 20.00000000 -8.54838710 9.70967742 17.50000000 17.50000000 20.00000000 -8.54838710 10.00000000 17.50000000 17.50000000 20.00000000 -8.83870968 1.00000000 10.00000000 13.75000000 18.75000000 -8.83870968 1.29032258 10.00000000 13.75000000 18.75000000 -8.83870968 1.58064516 10.00000000 13.75000000 18.75000000 -8.83870968 1.87096774 10.00000000 13.75000000 18.75000000 -8.83870968 2.16129032 10.00000000 13.75000000 18.75000000 -8.83870968 2.45161290 10.00000000 13.75000000 18.75000000 -8.83870968 2.74193548 10.00000000 13.75000000 18.75000000 -8.83870968 3.03225806 10.01014215 13.74253652 18.73745586 -8.83870968 3.32258065 10.10759368 13.68455725 18.63042380 -8.83870968 3.61290323 10.21937858 13.64503060 18.53708695 -8.83870968 3.90322581 10.35276814 13.62755769 18.46331909 -8.83870968 4.19354839 10.51962543 13.63742744 18.41759948 -8.83870968 4.48387097 10.73840842 13.68281858 18.41253579 -8.83870968 4.77419355 11.03721734 13.77727807 18.46758374 -8.83870968 5.06451613 11.45766304 13.94303282 18.61200965 -8.83870968 5.35483871 12.03283452 14.16229115 18.82112467 -8.83870968 5.64516129 12.78467382 14.43913152 19.07300014 -8.83870968 5.93548387 13.71462338 14.81596996 19.35739569 -8.83870968 6.22580645 14.77874402 15.35015506 19.64585006 -8.83870968 6.51612903 15.88319867 16.07541438 19.87869941 -8.83870968 6.80645161 16.90953845 16.93241475 19.98661180 -8.83870968 7.09677419 17.50000000 17.50000000 20.00000000 -8.83870968 7.38709677 17.50000000 17.50000000 20.00000000 -8.83870968 7.67741935 17.50000000 17.50000000 20.00000000 -8.83870968 7.96774194 17.50000000 17.50000000 20.00000000 -8.83870968 8.25806452 17.50000000 17.50000000 20.00000000 -8.83870968 8.54838710 17.50000000 17.50000000 20.00000000 -8.83870968 8.83870968 17.50000000 17.50000000 20.00000000 -8.83870968 9.12903226 17.50000000 17.50000000 20.00000000 -8.83870968 9.41935484 17.50000000 17.50000000 20.00000000 -8.83870968 9.70967742 17.50000000 17.50000000 20.00000000 -8.83870968 10.00000000 17.50000000 17.50000000 20.00000000 -9.12903226 1.00000000 10.00000000 13.75000000 18.75000000 -9.12903226 1.29032258 10.00000000 13.75000000 18.75000000 -9.12903226 1.58064516 10.00000000 13.75000000 18.75000000 -9.12903226 1.87096774 10.00000000 13.75000000 18.75000000 -9.12903226 2.16129032 10.00000000 13.75000000 18.75000000 -9.12903226 2.45161290 10.00000000 13.75000000 18.75000000 -9.12903226 2.74193548 10.00000000 13.75000000 18.75000000 -9.12903226 3.03225806 10.01014215 13.74253652 18.73745586 -9.12903226 3.32258065 10.10759368 13.68455725 18.63042380 -9.12903226 3.61290323 10.21937858 13.64503060 18.53708695 -9.12903226 3.90322581 10.35276814 13.62755769 18.46331909 -9.12903226 4.19354839 10.51962543 13.63742744 18.41759948 -9.12903226 4.48387097 10.73840842 13.68281858 18.41253579 -9.12903226 4.77419355 11.03721734 13.77727807 18.46758374 -9.12903226 5.06451613 11.45766304 13.94303282 18.61200965 -9.12903226 5.35483871 12.03283452 14.16229115 18.82112467 -9.12903226 5.64516129 12.78467382 14.43913152 19.07300014 -9.12903226 5.93548387 13.71462338 14.81596996 19.35739569 -9.12903226 6.22580645 14.77874402 15.35015506 19.64585006 -9.12903226 6.51612903 15.88319867 16.07541438 19.87869941 -9.12903226 6.80645161 16.90953845 16.93241475 19.98661180 -9.12903226 7.09677419 17.50000000 17.50000000 20.00000000 -9.12903226 7.38709677 17.50000000 17.50000000 20.00000000 -9.12903226 7.67741935 17.50000000 17.50000000 20.00000000 -9.12903226 7.96774194 17.50000000 17.50000000 20.00000000 -9.12903226 8.25806452 17.50000000 17.50000000 20.00000000 -9.12903226 8.54838710 17.50000000 17.50000000 20.00000000 -9.12903226 8.83870968 17.50000000 17.50000000 20.00000000 -9.12903226 9.12903226 17.50000000 17.50000000 20.00000000 -9.12903226 9.41935484 17.50000000 17.50000000 20.00000000 -9.12903226 9.70967742 17.50000000 17.50000000 20.00000000 -9.12903226 10.00000000 17.50000000 17.50000000 20.00000000 -9.41935484 1.00000000 10.00000000 13.75000000 18.75000000 -9.41935484 1.29032258 10.00000000 13.75000000 18.75000000 -9.41935484 1.58064516 10.00000000 13.75000000 18.75000000 -9.41935484 1.87096774 10.00000000 13.75000000 18.75000000 -9.41935484 2.16129032 10.00000000 13.75000000 18.75000000 -9.41935484 2.45161290 10.00000000 13.75000000 18.75000000 -9.41935484 2.74193548 10.00000000 13.75000000 18.75000000 -9.41935484 3.03225806 10.01014215 13.74253652 18.73745586 -9.41935484 3.32258065 10.10759368 13.68455725 18.63042380 -9.41935484 3.61290323 10.21937858 13.64503060 18.53708695 -9.41935484 3.90322581 10.35276814 13.62755769 18.46331909 -9.41935484 4.19354839 10.51962543 13.63742744 18.41759948 -9.41935484 4.48387097 10.73840842 13.68281858 18.41253579 -9.41935484 4.77419355 11.03721734 13.77727807 18.46758374 -9.41935484 5.06451613 11.45766304 13.94303282 18.61200965 -9.41935484 5.35483871 12.03283452 14.16229115 18.82112467 -9.41935484 5.64516129 12.78467382 14.43913152 19.07300014 -9.41935484 5.93548387 13.71462338 14.81596996 19.35739569 -9.41935484 6.22580645 14.77874402 15.35015506 19.64585006 -9.41935484 6.51612903 15.88319867 16.07541438 19.87869941 -9.41935484 6.80645161 16.90953845 16.93241475 19.98661180 -9.41935484 7.09677419 17.50000000 17.50000000 20.00000000 -9.41935484 7.38709677 17.50000000 17.50000000 20.00000000 -9.41935484 7.67741935 17.50000000 17.50000000 20.00000000 -9.41935484 7.96774194 17.50000000 17.50000000 20.00000000 -9.41935484 8.25806452 17.50000000 17.50000000 20.00000000 -9.41935484 8.54838710 17.50000000 17.50000000 20.00000000 -9.41935484 8.83870968 17.50000000 17.50000000 20.00000000 -9.41935484 9.12903226 17.50000000 17.50000000 20.00000000 -9.41935484 9.41935484 17.50000000 17.50000000 20.00000000 -9.41935484 9.70967742 17.50000000 17.50000000 20.00000000 -9.41935484 10.00000000 17.50000000 17.50000000 20.00000000 -9.70967742 1.00000000 10.00000000 13.75000000 18.75000000 -9.70967742 1.29032258 10.00000000 13.75000000 18.75000000 -9.70967742 1.58064516 10.00000000 13.75000000 18.75000000 -9.70967742 1.87096774 10.00000000 13.75000000 18.75000000 -9.70967742 2.16129032 10.00000000 13.75000000 18.75000000 -9.70967742 2.45161290 10.00000000 13.75000000 18.75000000 -9.70967742 2.74193548 10.00000000 13.75000000 18.75000000 -9.70967742 3.03225806 10.01014215 13.74253652 18.73745586 -9.70967742 3.32258065 10.10759368 13.68455725 18.63042380 -9.70967742 3.61290323 10.21937858 13.64503060 18.53708695 -9.70967742 3.90322581 10.35276814 13.62755769 18.46331909 -9.70967742 4.19354839 10.51962543 13.63742744 18.41759948 -9.70967742 4.48387097 10.73840842 13.68281858 18.41253579 -9.70967742 4.77419355 11.03721734 13.77727807 18.46758374 -9.70967742 5.06451613 11.45766304 13.94303282 18.61200965 -9.70967742 5.35483871 12.03283452 14.16229115 18.82112467 -9.70967742 5.64516129 12.78467382 14.43913152 19.07300014 -9.70967742 5.93548387 13.71462338 14.81596996 19.35739569 -9.70967742 6.22580645 14.77874402 15.35015506 19.64585006 -9.70967742 6.51612903 15.88319867 16.07541438 19.87869941 -9.70967742 6.80645161 16.90953845 16.93241475 19.98661180 -9.70967742 7.09677419 17.50000000 17.50000000 20.00000000 -9.70967742 7.38709677 17.50000000 17.50000000 20.00000000 -9.70967742 7.67741935 17.50000000 17.50000000 20.00000000 -9.70967742 7.96774194 17.50000000 17.50000000 20.00000000 -9.70967742 8.25806452 17.50000000 17.50000000 20.00000000 -9.70967742 8.54838710 17.50000000 17.50000000 20.00000000 -9.70967742 8.83870968 17.50000000 17.50000000 20.00000000 -9.70967742 9.12903226 17.50000000 17.50000000 20.00000000 -9.70967742 9.41935484 17.50000000 17.50000000 20.00000000 -9.70967742 9.70967742 17.50000000 17.50000000 20.00000000 -9.70967742 10.00000000 17.50000000 17.50000000 20.00000000 -10.00000000 1.00000000 10.00000000 13.75000000 18.75000000 -10.00000000 1.29032258 10.00000000 13.75000000 18.75000000 -10.00000000 1.58064516 10.00000000 13.75000000 18.75000000 -10.00000000 1.87096774 10.00000000 13.75000000 18.75000000 -10.00000000 2.16129032 10.00000000 13.75000000 18.75000000 -10.00000000 2.45161290 10.00000000 13.75000000 18.75000000 -10.00000000 2.74193548 10.00000000 13.75000000 18.75000000 -10.00000000 3.03225806 10.01014215 13.74253652 18.73745586 -10.00000000 3.32258065 10.10759368 13.68455725 18.63042380 -10.00000000 3.61290323 10.21937858 13.64503060 18.53708695 -10.00000000 3.90322581 10.35276814 13.62755769 18.46331909 -10.00000000 4.19354839 10.51962543 13.63742744 18.41759948 -10.00000000 4.48387097 10.73840842 13.68281858 18.41253579 -10.00000000 4.77419355 11.03721734 13.77727807 18.46758374 -10.00000000 5.06451613 11.45766304 13.94303282 18.61200965 -10.00000000 5.35483871 12.03283452 14.16229115 18.82112467 -10.00000000 5.64516129 12.78467382 14.43913152 19.07300014 -10.00000000 5.93548387 13.71462338 14.81596996 19.35739569 -10.00000000 6.22580645 14.77874402 15.35015506 19.64585006 -10.00000000 6.51612903 15.88319867 16.07541438 19.87869941 -10.00000000 6.80645161 16.90953845 16.93241475 19.98661180 -10.00000000 7.09677419 17.50000000 17.50000000 20.00000000 -10.00000000 7.38709677 17.50000000 17.50000000 20.00000000 -10.00000000 7.67741935 17.50000000 17.50000000 20.00000000 -10.00000000 7.96774194 17.50000000 17.50000000 20.00000000 -10.00000000 8.25806452 17.50000000 17.50000000 20.00000000 -10.00000000 8.54838710 17.50000000 17.50000000 20.00000000 -10.00000000 8.83870968 17.50000000 17.50000000 20.00000000 -10.00000000 9.12903226 17.50000000 17.50000000 20.00000000 -10.00000000 9.41935484 17.50000000 17.50000000 20.00000000 -10.00000000 9.70967742 17.50000000 17.50000000 20.00000000 -10.00000000 10.00000000 17.50000000 17.50000000 20.00000000 +FoodQuality Service CheapTip AverageTip GenerousTip +1.000000000 1.000000000 10.000000000 10.000000000 12.500000000 +1.000000000 1.290322581 10.000000000 10.000000000 12.500000000 +1.000000000 1.580645161 10.000000000 10.000000000 12.500000000 +1.000000000 1.870967742 10.000000000 10.000000000 12.500000000 +1.000000000 2.161290323 10.000000000 10.000000000 12.500000000 +1.000000000 2.451612903 10.000000000 10.000000000 12.500000000 +1.000000000 2.741935484 10.000000000 10.000000000 12.500000000 +1.000000000 3.032258065 10.000000000 10.020323221 12.520404599 +1.000000000 3.322580645 10.000000000 10.217239082 12.726188365 +1.000000000 3.612903226 10.000000000 10.438541426 12.978595315 +1.000000000 3.903225806 10.000000000 10.688605148 13.303233716 +1.000000000 4.193548387 10.000000000 10.985194151 13.754553905 +1.000000000 4.483870968 10.000000000 11.368962007 14.431095437 +1.000000000 4.774193548 10.000000000 11.913195856 15.489093970 +1.000000000 5.064516129 10.000000000 12.682234786 17.023032304 +1.000000000 5.354838710 10.000000000 13.342744072 18.155449447 +1.000000000 5.645161290 10.000000000 13.792466240 18.754193916 +1.000000000 5.935483871 10.000000000 14.130816184 19.125588403 +1.000000000 6.225806452 10.000000000 14.413282130 19.412900315 +1.000000000 6.516129032 10.000000000 14.658795531 19.658787254 +1.000000000 6.806451613 10.000000000 14.873037538 19.873037533 +1.000000000 7.096774194 10.000000000 15.000000000 20.000000000 +1.000000000 7.387096774 10.000000000 15.000000000 20.000000000 +1.000000000 7.677419355 10.000000000 15.000000000 20.000000000 +1.000000000 7.967741935 10.000000000 15.000000000 20.000000000 +1.000000000 8.258064516 10.000000000 15.000000000 20.000000000 +1.000000000 8.548387097 10.000000000 15.000000000 20.000000000 +1.000000000 8.838709677 10.000000000 15.000000000 20.000000000 +1.000000000 9.129032258 10.000000000 15.000000000 20.000000000 +1.000000000 9.419354839 10.000000000 15.000000000 20.000000000 +1.000000000 9.709677419 10.000000000 15.000000000 20.000000000 +1.000000000 10.000000000 10.000000000 15.000000000 20.000000000 +1.290322581 1.000000000 10.000000000 10.000000000 12.500000000 +1.290322581 1.290322581 10.000000000 10.000000000 12.500000000 +1.290322581 1.580645161 10.000000000 10.000000000 12.500000000 +1.290322581 1.870967742 10.000000000 10.000000000 12.500000000 +1.290322581 2.161290323 10.000000000 10.000000000 12.500000000 +1.290322581 2.451612903 10.000000000 10.000000000 12.500000000 +1.290322581 2.741935484 10.000000000 10.000000000 12.500000000 +1.290322581 3.032258065 10.000000000 10.020323221 12.520404599 +1.290322581 3.322580645 10.000000000 10.217239082 12.726188365 +1.290322581 3.612903226 10.000000000 10.438541426 12.978595315 +1.290322581 3.903225806 10.000000000 10.688605148 13.303233716 +1.290322581 4.193548387 10.000000000 10.985194151 13.754553905 +1.290322581 4.483870968 10.000000000 11.368962007 14.431095437 +1.290322581 4.774193548 10.000000000 11.913195856 15.489093970 +1.290322581 5.064516129 10.000000000 12.682234786 17.023032304 +1.290322581 5.354838710 10.000000000 13.342744072 18.155449447 +1.290322581 5.645161290 10.000000000 13.792466240 18.754193916 +1.290322581 5.935483871 10.000000000 14.130816184 19.125588403 +1.290322581 6.225806452 10.000000000 14.413282130 19.412900315 +1.290322581 6.516129032 10.000000000 14.658795531 19.658787254 +1.290322581 6.806451613 10.000000000 14.873037538 19.873037533 +1.290322581 7.096774194 10.000000000 15.000000000 20.000000000 +1.290322581 7.387096774 10.000000000 15.000000000 20.000000000 +1.290322581 7.677419355 10.000000000 15.000000000 20.000000000 +1.290322581 7.967741935 10.000000000 15.000000000 20.000000000 +1.290322581 8.258064516 10.000000000 15.000000000 20.000000000 +1.290322581 8.548387097 10.000000000 15.000000000 20.000000000 +1.290322581 8.838709677 10.000000000 15.000000000 20.000000000 +1.290322581 9.129032258 10.000000000 15.000000000 20.000000000 +1.290322581 9.419354839 10.000000000 15.000000000 20.000000000 +1.290322581 9.709677419 10.000000000 15.000000000 20.000000000 +1.290322581 10.000000000 10.000000000 15.000000000 20.000000000 +1.580645161 1.000000000 10.000000000 10.000000000 12.500000000 +1.580645161 1.290322581 10.000000000 10.000000000 12.500000000 +1.580645161 1.580645161 10.000000000 10.000000000 12.500000000 +1.580645161 1.870967742 10.000000000 10.000000000 12.500000000 +1.580645161 2.161290323 10.000000000 10.000000000 12.500000000 +1.580645161 2.451612903 10.000000000 10.000000000 12.500000000 +1.580645161 2.741935484 10.000000000 10.000000000 12.500000000 +1.580645161 3.032258065 10.000000000 10.020323221 12.520404599 +1.580645161 3.322580645 10.000000000 10.217239082 12.726188365 +1.580645161 3.612903226 10.000000000 10.438541426 12.978595315 +1.580645161 3.903225806 10.000000000 10.688605148 13.303233716 +1.580645161 4.193548387 10.000000000 10.985194151 13.754553905 +1.580645161 4.483870968 10.000000000 11.368962007 14.431095437 +1.580645161 4.774193548 10.000000000 11.913195856 15.489093970 +1.580645161 5.064516129 10.000000000 12.682234786 17.023032304 +1.580645161 5.354838710 10.000000000 13.342744072 18.155449447 +1.580645161 5.645161290 10.000000000 13.792466240 18.754193916 +1.580645161 5.935483871 10.000000000 14.130816184 19.125588403 +1.580645161 6.225806452 10.000000000 14.413282130 19.412900315 +1.580645161 6.516129032 10.000000000 14.658795531 19.658787254 +1.580645161 6.806451613 10.000000000 14.873037538 19.873037533 +1.580645161 7.096774194 10.000000000 15.000000000 20.000000000 +1.580645161 7.387096774 10.000000000 15.000000000 20.000000000 +1.580645161 7.677419355 10.000000000 15.000000000 20.000000000 +1.580645161 7.967741935 10.000000000 15.000000000 20.000000000 +1.580645161 8.258064516 10.000000000 15.000000000 20.000000000 +1.580645161 8.548387097 10.000000000 15.000000000 20.000000000 +1.580645161 8.838709677 10.000000000 15.000000000 20.000000000 +1.580645161 9.129032258 10.000000000 15.000000000 20.000000000 +1.580645161 9.419354839 10.000000000 15.000000000 20.000000000 +1.580645161 9.709677419 10.000000000 15.000000000 20.000000000 +1.580645161 10.000000000 10.000000000 15.000000000 20.000000000 +1.870967742 1.000000000 10.000000000 10.000000000 12.500000000 +1.870967742 1.290322581 10.000000000 10.000000000 12.500000000 +1.870967742 1.580645161 10.000000000 10.000000000 12.500000000 +1.870967742 1.870967742 10.000000000 10.000000000 12.500000000 +1.870967742 2.161290323 10.000000000 10.000000000 12.500000000 +1.870967742 2.451612903 10.000000000 10.000000000 12.500000000 +1.870967742 2.741935484 10.000000000 10.000000000 12.500000000 +1.870967742 3.032258065 10.000000000 10.020323221 12.520404599 +1.870967742 3.322580645 10.000000000 10.217239082 12.726188365 +1.870967742 3.612903226 10.000000000 10.438541426 12.978595315 +1.870967742 3.903225806 10.000000000 10.688605148 13.303233716 +1.870967742 4.193548387 10.000000000 10.985194151 13.754553905 +1.870967742 4.483870968 10.000000000 11.368962007 14.431095437 +1.870967742 4.774193548 10.000000000 11.913195856 15.489093970 +1.870967742 5.064516129 10.000000000 12.682234786 17.023032304 +1.870967742 5.354838710 10.000000000 13.342744072 18.155449447 +1.870967742 5.645161290 10.000000000 13.792466240 18.754193916 +1.870967742 5.935483871 10.000000000 14.130816184 19.125588403 +1.870967742 6.225806452 10.000000000 14.413282130 19.412900315 +1.870967742 6.516129032 10.000000000 14.658795531 19.658787254 +1.870967742 6.806451613 10.000000000 14.873037538 19.873037533 +1.870967742 7.096774194 10.000000000 15.000000000 20.000000000 +1.870967742 7.387096774 10.000000000 15.000000000 20.000000000 +1.870967742 7.677419355 10.000000000 15.000000000 20.000000000 +1.870967742 7.967741935 10.000000000 15.000000000 20.000000000 +1.870967742 8.258064516 10.000000000 15.000000000 20.000000000 +1.870967742 8.548387097 10.000000000 15.000000000 20.000000000 +1.870967742 8.838709677 10.000000000 15.000000000 20.000000000 +1.870967742 9.129032258 10.000000000 15.000000000 20.000000000 +1.870967742 9.419354839 10.000000000 15.000000000 20.000000000 +1.870967742 9.709677419 10.000000000 15.000000000 20.000000000 +1.870967742 10.000000000 10.000000000 15.000000000 20.000000000 +2.161290323 1.000000000 10.000000000 10.000000000 12.500000000 +2.161290323 1.290322581 10.000000000 10.000000000 12.500000000 +2.161290323 1.580645161 10.000000000 10.000000000 12.500000000 +2.161290323 1.870967742 10.000000000 10.000000000 12.500000000 +2.161290323 2.161290323 10.000000000 10.000000000 12.500000000 +2.161290323 2.451612903 10.000000000 10.000000000 12.500000000 +2.161290323 2.741935484 10.000000000 10.000000000 12.500000000 +2.161290323 3.032258065 10.000000000 10.020323221 12.520404599 +2.161290323 3.322580645 10.000000000 10.217239082 12.726188365 +2.161290323 3.612903226 10.000000000 10.438541426 12.978595315 +2.161290323 3.903225806 10.000000000 10.688605148 13.303233716 +2.161290323 4.193548387 10.000000000 10.985194151 13.754553905 +2.161290323 4.483870968 10.000000000 11.368962007 14.431095437 +2.161290323 4.774193548 10.000000000 11.913195856 15.489093970 +2.161290323 5.064516129 10.000000000 12.682234786 17.023032304 +2.161290323 5.354838710 10.000000000 13.342744072 18.155449447 +2.161290323 5.645161290 10.000000000 13.792466240 18.754193916 +2.161290323 5.935483871 10.000000000 14.130816184 19.125588403 +2.161290323 6.225806452 10.000000000 14.413282130 19.412900315 +2.161290323 6.516129032 10.000000000 14.658795531 19.658787254 +2.161290323 6.806451613 10.000000000 14.873037538 19.873037533 +2.161290323 7.096774194 10.000000000 15.000000000 20.000000000 +2.161290323 7.387096774 10.000000000 15.000000000 20.000000000 +2.161290323 7.677419355 10.000000000 15.000000000 20.000000000 +2.161290323 7.967741935 10.000000000 15.000000000 20.000000000 +2.161290323 8.258064516 10.000000000 15.000000000 20.000000000 +2.161290323 8.548387097 10.000000000 15.000000000 20.000000000 +2.161290323 8.838709677 10.000000000 15.000000000 20.000000000 +2.161290323 9.129032258 10.000000000 15.000000000 20.000000000 +2.161290323 9.419354839 10.000000000 15.000000000 20.000000000 +2.161290323 9.709677419 10.000000000 15.000000000 20.000000000 +2.161290323 10.000000000 10.000000000 15.000000000 20.000000000 +2.451612903 1.000000000 10.000000000 10.000000000 12.500000000 +2.451612903 1.290322581 10.000000000 10.000000000 12.500000000 +2.451612903 1.580645161 10.000000000 10.000000000 12.500000000 +2.451612903 1.870967742 10.000000000 10.000000000 12.500000000 +2.451612903 2.161290323 10.000000000 10.000000000 12.500000000 +2.451612903 2.451612903 10.000000000 10.000000000 12.500000000 +2.451612903 2.741935484 10.000000000 10.000000000 12.500000000 +2.451612903 3.032258065 10.000000000 10.020323221 12.520404599 +2.451612903 3.322580645 10.000000000 10.217239082 12.726188365 +2.451612903 3.612903226 10.000000000 10.438541426 12.978595315 +2.451612903 3.903225806 10.000000000 10.688605148 13.303233716 +2.451612903 4.193548387 10.000000000 10.985194151 13.754553905 +2.451612903 4.483870968 10.000000000 11.368962007 14.431095437 +2.451612903 4.774193548 10.000000000 11.913195856 15.489093970 +2.451612903 5.064516129 10.000000000 12.682234786 17.023032304 +2.451612903 5.354838710 10.000000000 13.342744072 18.155449447 +2.451612903 5.645161290 10.000000000 13.792466240 18.754193916 +2.451612903 5.935483871 10.000000000 14.130816184 19.125588403 +2.451612903 6.225806452 10.000000000 14.413282130 19.412900315 +2.451612903 6.516129032 10.000000000 14.658795531 19.658787254 +2.451612903 6.806451613 10.000000000 14.873037538 19.873037533 +2.451612903 7.096774194 10.000000000 15.000000000 20.000000000 +2.451612903 7.387096774 10.000000000 15.000000000 20.000000000 +2.451612903 7.677419355 10.000000000 15.000000000 20.000000000 +2.451612903 7.967741935 10.000000000 15.000000000 20.000000000 +2.451612903 8.258064516 10.000000000 15.000000000 20.000000000 +2.451612903 8.548387097 10.000000000 15.000000000 20.000000000 +2.451612903 8.838709677 10.000000000 15.000000000 20.000000000 +2.451612903 9.129032258 10.000000000 15.000000000 20.000000000 +2.451612903 9.419354839 10.000000000 15.000000000 20.000000000 +2.451612903 9.709677419 10.000000000 15.000000000 20.000000000 +2.451612903 10.000000000 10.000000000 15.000000000 20.000000000 +2.741935484 1.000000000 10.000000000 10.000000000 12.500000000 +2.741935484 1.290322581 10.000000000 10.000000000 12.500000000 +2.741935484 1.580645161 10.000000000 10.000000000 12.500000000 +2.741935484 1.870967742 10.000000000 10.000000000 12.500000000 +2.741935484 2.161290323 10.000000000 10.000000000 12.500000000 +2.741935484 2.451612903 10.000000000 10.000000000 12.500000000 +2.741935484 2.741935484 10.000000000 10.000000000 12.500000000 +2.741935484 3.032258065 10.000000000 10.020323221 12.520404599 +2.741935484 3.322580645 10.000000000 10.217239082 12.726188365 +2.741935484 3.612903226 10.000000000 10.438541426 12.978595315 +2.741935484 3.903225806 10.000000000 10.688605148 13.303233716 +2.741935484 4.193548387 10.000000000 10.985194151 13.754553905 +2.741935484 4.483870968 10.000000000 11.368962007 14.431095437 +2.741935484 4.774193548 10.000000000 11.913195856 15.489093970 +2.741935484 5.064516129 10.000000000 12.682234786 17.023032304 +2.741935484 5.354838710 10.000000000 13.342744072 18.155449447 +2.741935484 5.645161290 10.000000000 13.792466240 18.754193916 +2.741935484 5.935483871 10.000000000 14.130816184 19.125588403 +2.741935484 6.225806452 10.000000000 14.413282130 19.412900315 +2.741935484 6.516129032 10.000000000 14.658795531 19.658787254 +2.741935484 6.806451613 10.000000000 14.873037538 19.873037533 +2.741935484 7.096774194 10.000000000 15.000000000 20.000000000 +2.741935484 7.387096774 10.000000000 15.000000000 20.000000000 +2.741935484 7.677419355 10.000000000 15.000000000 20.000000000 +2.741935484 7.967741935 10.000000000 15.000000000 20.000000000 +2.741935484 8.258064516 10.000000000 15.000000000 20.000000000 +2.741935484 8.548387097 10.000000000 15.000000000 20.000000000 +2.741935484 8.838709677 10.000000000 15.000000000 20.000000000 +2.741935484 9.129032258 10.000000000 15.000000000 20.000000000 +2.741935484 9.419354839 10.000000000 15.000000000 20.000000000 +2.741935484 9.709677419 10.000000000 15.000000000 20.000000000 +2.741935484 10.000000000 10.000000000 15.000000000 20.000000000 +3.032258065 1.000000000 10.000000000 10.020564138 12.530362554 +3.032258065 1.290322581 10.000000000 10.020564138 12.530362554 +3.032258065 1.580645161 10.000000000 10.020564138 12.530362554 +3.032258065 1.870967742 10.000000000 10.020564138 12.530362554 +3.032258065 2.161290323 10.000000000 10.020564138 12.530362554 +3.032258065 2.451612903 10.000000000 10.020564138 12.530362554 +3.032258065 2.741935484 10.000000000 10.020564138 12.530362554 +3.032258065 3.032258065 10.000081623 10.040234008 12.549713610 +3.032258065 3.322580645 10.000845356 10.231330430 12.745817533 +3.032258065 3.612903226 10.001660504 10.447099078 12.988462480 +3.032258065 3.903225806 10.002536324 10.692131028 13.303660935 +3.032258065 4.193548387 10.003506957 10.984311315 13.746235339 +3.032258065 4.483870968 10.004651223 11.364421081 14.415312194 +3.032258065 4.774193548 10.006135391 11.906301747 15.468939718 +3.032258065 5.064516129 10.008304662 12.675977549 17.006125822 +3.032258065 5.354838710 10.010797104 13.339232540 18.145674121 +3.032258065 5.645161290 10.013072877 13.791275308 18.749121698 +3.032258065 5.935483871 10.014992751 14.131144375 19.123168222 +3.032258065 6.225806452 10.016597454 14.414457255 19.412112587 +3.032258065 6.516129032 10.018017808 14.660147444 19.658914932 +3.032258065 6.806451613 10.019388331 14.873835282 19.873347530 +3.032258065 7.096774194 10.020324537 15.000000000 20.000000000 +3.032258065 7.387096774 10.020324537 15.000000000 20.000000000 +3.032258065 7.677419355 10.020324537 15.000000000 20.000000000 +3.032258065 7.967741935 10.020324537 15.000000000 20.000000000 +3.032258065 8.258064516 10.020324537 15.000000000 20.000000000 +3.032258065 8.548387097 10.020324537 15.000000000 20.000000000 +3.032258065 8.838709677 10.020324537 15.000000000 20.000000000 +3.032258065 9.129032258 10.020324537 15.000000000 20.000000000 +3.032258065 9.419354839 10.020324537 15.000000000 20.000000000 +3.032258065 9.709677419 10.020324537 15.000000000 20.000000000 +3.032258065 10.000000000 10.020324537 15.000000000 20.000000000 +3.322580645 1.000000000 10.000000000 10.238526001 12.814657118 +3.322580645 1.290322581 10.000000000 10.238526001 12.814657118 +3.322580645 1.580645161 10.000000000 10.238526001 12.814657118 +3.322580645 1.870967742 10.000000000 10.238526001 12.814657118 +3.322580645 2.161290323 10.000000000 10.238526001 12.814657118 +3.322580645 2.451612903 10.000000000 10.238526001 12.814657118 +3.322580645 2.741935484 10.000000000 10.238526001 12.814657118 +3.322580645 3.032258065 10.000810912 10.252160009 12.825094452 +3.322580645 3.322580645 10.008475729 10.390248102 12.941315539 +3.322580645 3.612903226 10.016826559 10.556788308 13.106528324 +3.322580645 3.903225806 10.026007885 10.758435372 13.349926281 +3.322580645 4.193548387 10.036425250 11.014648689 13.729800083 +3.322580645 4.483870968 10.048985641 11.367796303 14.350555384 +3.322580645 4.774193548 10.065636239 11.895433538 15.382805064 +3.322580645 5.064516129 10.090431587 12.665305783 16.934330737 +3.322580645 5.354838710 10.119058291 13.330507836 18.087258535 +3.322580645 5.645161290 10.145318864 13.790875134 18.711237499 +3.322580645 5.935483871 10.167053939 14.138887104 19.103029349 +3.322580645 6.225806452 10.184333797 14.427106637 19.405311407 +3.322580645 6.516129032 10.198472326 14.672873177 19.660047640 +3.322580645 6.806451613 10.210901210 14.880935703 19.876073110 +3.322580645 7.096774194 10.218749520 15.000000005 20.000000000 +3.322580645 7.387096774 10.218749520 15.000000005 20.000000000 +3.322580645 7.677419355 10.218749520 15.000000005 20.000000000 +3.322580645 7.967741935 10.218749520 15.000000005 20.000000000 +3.322580645 8.258064516 10.218749520 15.000000005 20.000000000 +3.322580645 8.548387097 10.218749520 15.000000005 20.000000000 +3.322580645 8.838709677 10.218749520 15.000000005 20.000000000 +3.322580645 9.129032258 10.218749520 15.000000005 20.000000000 +3.322580645 9.419354839 10.218749520 15.000000005 20.000000000 +3.322580645 9.709677419 10.218749520 15.000000005 20.000000000 +3.322580645 10.000000000 10.218749520 15.000000005 20.000000000 +3.612903226 1.000000000 10.000000000 10.504908296 13.128455463 +3.612903226 1.290322581 10.000000000 10.504908296 13.128455463 +3.612903226 1.580645161 10.000000000 10.504908296 13.128455463 +3.612903226 1.870967742 10.000000000 10.504908296 13.128455463 +3.612903226 2.161290323 10.000000000 10.504908296 13.128455463 +3.612903226 2.451612903 10.000000000 10.504908296 13.128455463 +3.612903226 2.741935484 10.000000000 10.504908296 13.128455463 +3.612903226 3.032258065 10.001516539 10.512626733 13.130885405 +3.612903226 3.322580645 10.016001683 10.599926822 13.179304000 +3.612903226 3.612903226 10.032129555 10.721202126 13.285286198 +3.612903226 3.903225806 10.050319022 10.885336976 13.480541261 +3.612903226 4.193548387 10.071543600 11.114258924 13.827219367 +3.612903226 4.483870968 10.097850290 11.452875842 14.435424511 +3.612903226 4.774193548 10.133668269 11.980021902 15.481437354 +3.612903226 5.064516129 10.187198497 12.733746068 17.004065185 +3.612903226 5.354838710 10.247964197 13.361747553 18.081408199 +3.612903226 5.645161290 10.304036539 13.808753893 18.687360629 +3.612903226 5.935483871 10.350251618 14.155213729 19.086063787 +3.612903226 6.225806452 10.386088635 14.443553815 19.399366077 +3.612903226 6.516129032 10.413832571 14.686735031 19.661496202 +3.612903226 6.806451613 10.436235155 14.888005490 19.878875276 +3.612903226 7.096774194 10.449261329 15.000000885 20.000000000 +3.612903226 7.387096774 10.449261329 15.000000885 20.000000000 +3.612903226 7.677419355 10.449261329 15.000000885 20.000000000 +3.612903226 7.967741935 10.449261329 15.000000885 20.000000000 +3.612903226 8.258064516 10.449261329 15.000000885 20.000000000 +3.612903226 8.548387097 10.449261329 15.000000885 20.000000000 +3.612903226 8.838709677 10.449261329 15.000000885 20.000000000 +3.612903226 9.129032258 10.449261329 15.000000885 20.000000000 +3.612903226 9.419354839 10.449261329 15.000000885 20.000000000 +3.612903226 9.709677419 10.449261329 15.000000885 20.000000000 +3.612903226 10.000000000 10.449261329 15.000000885 20.000000000 +3.903225806 1.000000000 10.000000000 10.810170511 13.504826188 +3.903225806 1.290322581 10.000000000 10.810170511 13.504826188 +3.903225806 1.580645161 10.000000000 10.810170511 13.504826188 +3.903225806 1.870967742 10.000000000 10.810170511 13.504826188 +3.903225806 2.161290323 10.000000000 10.810170511 13.504826188 +3.903225806 2.451612903 10.000000000 10.810170511 13.504826188 +3.903225806 2.741935484 10.000000000 10.810170511 13.504826188 +3.903225806 3.032258065 10.002191475 10.812567996 13.499944985 +3.903225806 3.322580645 10.023341607 10.855521242 13.491036767 +3.903225806 3.612903226 10.047419391 10.939710572 13.555284598 +3.903225806 3.903225806 10.075341637 11.076302955 13.726499490 +3.903225806 4.193548387 10.108936013 11.290254243 14.070909786 +3.903225806 4.483870968 10.151939277 11.629038311 14.703300699 +3.903225806 4.774193548 10.212336488 12.166773063 15.791280803 +3.903225806 5.064516129 10.300093175 12.865867633 17.184787504 +3.903225806 5.354838710 10.397549799 13.425616094 18.115533442 +3.903225806 5.645161290 10.488260676 13.842905617 18.675012612 +3.903225806 5.935483871 10.563899084 14.179759717 19.072515315 +3.903225806 6.225806452 10.622764862 14.463818768 19.394943387 +3.903225806 6.516129032 10.667486100 14.701882692 19.663850989 +3.903225806 6.806451613 10.701911006 14.895189653 19.882050715 +3.903225806 7.096774194 10.721003908 15.000021130 20.000000000 +3.903225806 7.387096774 10.721003908 15.000021130 20.000000000 +3.903225806 7.677419355 10.721003908 15.000021130 20.000000000 +3.903225806 7.967741935 10.721003908 15.000021130 20.000000000 +3.903225806 8.258064516 10.721003908 15.000021130 20.000000000 +3.903225806 8.548387097 10.721003908 15.000021130 20.000000000 +3.903225806 8.838709677 10.721003908 15.000021130 20.000000000 +3.903225806 9.129032258 10.721003908 15.000021130 20.000000000 +3.903225806 9.419354839 10.721003908 15.000021130 20.000000000 +3.903225806 9.709677419 10.721003908 15.000021130 20.000000000 +3.903225806 10.000000000 10.721003908 15.000021130 20.000000000 +4.193548387 1.000000000 10.000000000 11.157523904 14.002629729 +4.193548387 1.290322581 10.000000000 11.157523904 14.002629729 +4.193548387 1.580645161 10.000000000 11.157523904 14.002629729 +4.193548387 1.870967742 10.000000000 11.157523904 14.002629729 +4.193548387 2.161290323 10.000000000 11.157523904 14.002629729 +4.193548387 2.451612903 10.000000000 11.157523904 14.002629729 +4.193548387 2.741935484 10.000000000 11.157523904 14.002629729 +4.193548387 3.032258065 10.002847967 11.155500895 13.991050173 +4.193548387 3.322580645 10.030611301 11.163431904 13.934544815 +4.193548387 3.612903226 10.062937365 11.222007768 13.974464175 +4.193548387 3.903225806 10.101503669 11.344539784 14.146530424 +4.193548387 4.193548387 10.149476613 11.558492423 14.519820638 +4.193548387 4.483870968 10.213067693 11.910494416 15.206102473 +4.193548387 4.774193548 10.304552071 12.447025439 16.305510232 +4.193548387 5.064516129 10.428253360 13.034623096 17.419899680 +4.193548387 5.354838710 10.564830507 13.510543286 18.168936315 +4.193548387 5.645161290 10.693996106 13.890105622 18.670596691 +4.193548387 5.935483871 10.804889687 14.211826878 19.062949046 +4.193548387 6.225806452 10.893985831 14.487804439 19.393012538 +4.193548387 6.516129032 10.963155502 14.718426145 19.667836719 +4.193548387 6.806451613 11.016887401 14.902672746 19.885926843 +4.193548387 7.096774194 11.047340520 15.000210546 20.000000000 +4.193548387 7.387096774 11.047340520 15.000210546 20.000000000 +4.193548387 7.677419355 11.047340520 15.000210546 20.000000000 +4.193548387 7.967741935 11.047340520 15.000210546 20.000000000 +4.193548387 8.258064516 11.047340520 15.000210546 20.000000000 +4.193548387 8.548387097 11.047340520 15.000210546 20.000000000 +4.193548387 8.838709677 11.047340520 15.000210546 20.000000000 +4.193548387 9.129032258 11.047340520 15.000210546 20.000000000 +4.193548387 9.419354839 11.047340520 15.000210546 20.000000000 +4.193548387 9.709677419 11.047340520 15.000210546 20.000000000 +4.193548387 10.000000000 11.047340520 15.000210546 20.000000000 +4.483870968 1.000000000 10.000000000 11.565284816 14.705763295 +4.483870968 1.290322581 10.000000000 11.565284816 14.705763295 +4.483870968 1.580645161 10.000000000 11.565284816 14.705763295 +4.483870968 1.870967742 10.000000000 11.565284816 14.705763295 +4.483870968 2.161290323 10.000000000 11.565284816 14.705763295 +4.483870968 2.451612903 10.000000000 11.565284816 14.705763295 +4.483870968 2.741935484 10.000000000 11.565284816 14.705763295 +4.483870968 3.032258065 10.003518332 11.559971097 14.688531488 +4.483870968 3.322580645 10.038148789 11.544067577 14.596697135 +4.483870968 3.612903226 10.079373052 11.590123754 14.630573226 +4.483870968 3.903225806 10.129999142 11.712651674 14.826642427 +4.483870968 4.193548387 10.195142637 11.937986529 15.249393001 +4.483870968 4.483870968 10.284538090 12.299658730 15.978123106 +4.483870968 4.774193548 10.407288688 12.751308571 16.856785744 +4.483870968 5.064516129 10.566265451 13.210391988 17.648137186 +4.483870968 5.354838710 10.742013612 13.605608156 18.224568495 +4.483870968 5.645161290 10.912944832 13.947123303 18.672577283 +4.483870968 5.935483871 11.066669588 14.250519401 19.058798213 +4.483870968 6.225806452 11.197095817 14.515307747 19.394892563 +4.483870968 6.516129032 11.303930141 14.736513059 19.674293402 +4.483870968 6.806451613 11.391719855 14.910904783 19.890847813 +4.483870968 7.096774194 11.445068797 15.001284580 20.000000000 +4.483870968 7.387096774 11.445068797 15.001284580 20.000000000 +4.483870968 7.677419355 11.445068797 15.001284580 20.000000000 +4.483870968 7.967741935 11.445068797 15.001284580 20.000000000 +4.483870968 8.258064516 11.445068797 15.001284580 20.000000000 +4.483870968 8.548387097 11.445068797 15.001284580 20.000000000 +4.483870968 8.838709677 11.445068797 15.001284580 20.000000000 +4.483870968 9.129032258 11.445068797 15.001284580 20.000000000 +4.483870968 9.419354839 11.445068797 15.001284580 20.000000000 +4.483870968 9.709677419 11.445068797 15.001284580 20.000000000 +4.483870968 10.000000000 11.445068797 15.001284580 20.000000000 +4.774193548 1.000000000 10.000000000 12.058980464 15.701021693 +4.774193548 1.290322581 10.000000000 12.058980464 15.701021693 +4.774193548 1.580645161 10.000000000 12.058980464 15.701021693 +4.774193548 1.870967742 10.000000000 12.058980464 15.701021693 +4.774193548 2.161290323 10.000000000 12.058980464 15.701021693 +4.774193548 2.451612903 10.000000000 12.058980464 15.701021693 +4.774193548 2.741935484 10.000000000 12.058980464 15.701021693 +4.774193548 3.032258065 10.004257800 12.051831158 15.680761274 +4.774193548 3.322580645 10.046560497 12.024384078 15.574111451 +4.774193548 3.612903226 10.098020591 12.068331239 15.617253641 +4.774193548 3.903225806 10.163026519 12.195621174 15.840037790 +4.774193548 4.193548387 10.248842025 12.415213380 16.258998150 +4.774193548 4.483870968 10.362811901 12.699044498 16.776643149 +4.774193548 4.774193548 10.512690124 13.024422676 17.317616013 +4.774193548 5.064516129 10.703263743 13.373149036 17.833118921 +4.774193548 5.354838710 10.916444195 13.703982825 18.277985683 +4.774193548 5.645161290 11.132588599 14.011409556 18.683389813 +4.774193548 5.935483871 11.338852711 14.294853866 19.062628031 +4.774193548 6.225806452 11.526117376 14.546111577 19.402210670 +4.774193548 6.516129032 11.690681294 14.756568825 19.684098329 +4.774193548 6.806451613 11.836523788 14.921219044 19.897134924 +4.774193548 7.096774194 11.931844472 15.005712815 20.000000000 +4.774193548 7.387096774 11.931844472 15.005712815 20.000000000 +4.774193548 7.677419355 11.931844472 15.005712815 20.000000000 +4.774193548 7.967741935 11.931844472 15.005712815 20.000000000 +4.774193548 8.258064516 11.931844472 15.005712815 20.000000000 +4.774193548 8.548387097 11.931844472 15.005712815 20.000000000 +4.774193548 8.838709677 11.931844472 15.005712815 20.000000000 +4.774193548 9.129032258 11.931844472 15.005712815 20.000000000 +4.774193548 9.419354839 11.931844472 15.005712815 20.000000000 +4.774193548 9.709677419 11.931844472 15.005712815 20.000000000 +4.774193548 10.000000000 11.931844472 15.005712815 20.000000000 +5.064516129 1.000000000 10.000000000 12.621619769 16.933368673 +5.064516129 1.290322581 10.000000000 12.621619769 16.933368673 +5.064516129 1.580645161 10.000000000 12.621619769 16.933368673 +5.064516129 1.870967742 10.000000000 12.621619769 16.933368673 +5.064516129 2.161290323 10.000000000 12.621619769 16.933368673 +5.064516129 2.451612903 10.000000000 12.621619769 16.933368673 +5.064516129 2.741935484 10.000000000 12.621619769 16.933368673 +5.064516129 3.032258065 10.005146712 12.614366006 16.914980770 +5.064516129 3.322580645 10.056698295 12.581893441 16.810593662 +5.064516129 3.612903226 10.120169544 12.609005731 16.817436387 +5.064516129 3.903225806 10.200300484 12.693292869 16.924650571 +5.064516129 4.193548387 10.303330308 12.829792446 17.110642790 +5.064516129 4.483870968 10.436761057 13.013559654 17.353140381 +5.064516129 4.774193548 10.608584137 13.242465682 17.640746773 +5.064516129 5.064516129 10.825065934 13.517238305 17.978395774 +5.064516129 5.354838710 11.073354364 13.802678770 18.337797480 +5.064516129 5.645161290 11.338339319 14.080820782 18.709018123 +5.064516129 5.935483871 11.608136235 14.343723093 19.077915408 +5.064516129 6.225806452 11.871234576 14.580152615 19.416716601 +5.064516129 6.516129032 12.120142764 14.779818162 19.698008481 +5.064516129 6.806451613 12.357520482 14.937194312 19.905017104 +5.064516129 7.096774194 12.521102945 15.020319196 20.000000000 +5.064516129 7.387096774 12.521102945 15.020319196 20.000000000 +5.064516129 7.677419355 12.521102945 15.020319196 20.000000000 +5.064516129 7.967741935 12.521102945 15.020319196 20.000000000 +5.064516129 8.258064516 12.521102945 15.020319196 20.000000000 +5.064516129 8.548387097 12.521102945 15.020319196 20.000000000 +5.064516129 8.838709677 12.521102945 15.020319196 20.000000000 +5.064516129 9.129032258 12.521102945 15.020319196 20.000000000 +5.064516129 9.419354839 12.521102945 15.020319196 20.000000000 +5.064516129 9.709677419 12.521102945 15.020319196 20.000000000 +5.064516129 10.000000000 12.521102945 15.020319196 20.000000000 +5.354838710 1.000000000 10.000000000 13.013861899 17.722526667 +5.354838710 1.290322581 10.000000000 13.013861899 17.722526667 +5.354838710 1.580645161 10.000000000 13.013861899 17.722526667 +5.354838710 1.870967742 10.000000000 13.013861899 17.722526667 +5.354838710 2.161290323 10.000000000 13.013861899 17.722526667 +5.354838710 2.451612903 10.000000000 13.013861899 17.722526667 +5.354838710 2.741935484 10.000000000 13.013861899 17.722526667 +5.354838710 3.032258065 10.006014949 13.006869691 17.706851286 +5.354838710 3.322580645 10.066342933 12.965471340 17.593850801 +5.354838710 3.612903226 10.140231454 12.964403129 17.534521084 +5.354838710 3.903225806 10.232270564 13.004888418 17.529033919 +5.354838710 4.193548387 10.348580620 13.088107989 17.575956320 +5.354838710 4.483870968 10.496818921 13.216786998 17.677894459 +5.354838710 4.774193548 10.686051524 13.396186129 17.845882749 +5.354838710 5.064516129 10.925829268 13.632559211 18.099001135 +5.354838710 5.354838710 11.209919760 13.890101018 18.408558307 +5.354838710 5.645161290 11.528570742 14.146225018 18.751087862 +5.354838710 5.935483871 11.872594688 14.391880702 19.105790086 +5.354838710 6.225806452 12.230155222 14.615966067 19.439094903 +5.354838710 6.516129032 12.591079681 14.808684323 19.716275926 +5.354838710 6.806451613 12.955941737 14.967165018 19.914536590 +5.354838710 7.096774194 13.214762751 15.060950730 20.000000000 +5.354838710 7.387096774 13.214762751 15.060950730 20.000000000 +5.354838710 7.677419355 13.214762751 15.060950730 20.000000000 +5.354838710 7.967741935 13.214762751 15.060950730 20.000000000 +5.354838710 8.258064516 13.214762751 15.060950730 20.000000000 +5.354838710 8.548387097 13.214762751 15.060950730 20.000000000 +5.354838710 8.838709677 13.214762751 15.060950730 20.000000000 +5.354838710 9.129032258 13.214762751 15.060950730 20.000000000 +5.354838710 9.419354839 13.214762751 15.060950730 20.000000000 +5.354838710 9.709677419 13.214762751 15.060950730 20.000000000 +5.354838710 10.000000000 13.214762751 15.060950730 20.000000000 +5.645161290 1.000000000 10.000000000 13.244783448 18.109489138 +5.645161290 1.290322581 10.000000000 13.244783448 18.109489138 +5.645161290 1.580645161 10.000000000 13.244783448 18.109489138 +5.645161290 1.870967742 10.000000000 13.244783448 18.109489138 +5.645161290 2.161290323 10.000000000 13.244783448 18.109489138 +5.645161290 2.451612903 10.000000000 13.244783448 18.109489138 +5.645161290 2.741935484 10.000000000 13.244783448 18.109489138 +5.645161290 3.032258065 10.006766298 13.237774154 18.095072669 +5.645161290 3.322580645 10.074459191 13.190872866 17.979911424 +5.645161290 3.612903226 10.156682138 13.175344657 17.894934931 +5.645161290 3.903225806 10.257906448 13.194481414 17.845569901 +5.645161290 4.193548387 10.384363399 13.252314383 17.838705930 +5.645161290 4.483870968 10.544408861 13.354390862 17.885141400 +5.645161290 4.774193548 10.749033088 13.508424871 18.001992097 +5.645161290 5.064516129 11.011983915 13.723146199 18.212857917 +5.645161290 5.354838710 11.333589940 13.962485123 18.489219169 +5.645161290 5.645161290 11.710068477 14.202955697 18.806280615 +5.645161290 5.935483871 12.136994407 14.436640443 19.144415713 +5.645161290 6.225806452 12.604720729 14.654339717 19.468510328 +5.645161290 6.516129032 13.101632560 14.849606989 19.738417145 +5.645161290 6.806451613 13.623727732 15.028577014 19.925489144 +5.645161290 7.096774194 13.996146922 15.158825640 20.000000000 +5.645161290 7.387096774 13.996146922 15.158825640 20.000000000 +5.645161290 7.677419355 13.996146922 15.158825640 20.000000000 +5.645161290 7.967741935 13.996146922 15.158825640 20.000000000 +5.645161290 8.258064516 13.996146922 15.158825640 20.000000000 +5.645161290 8.548387097 13.996146922 15.158825640 20.000000000 +5.645161290 8.838709677 13.996146922 15.158825640 20.000000000 +5.645161290 9.129032258 13.996146922 15.158825640 20.000000000 +5.645161290 9.419354839 13.996146922 15.158825640 20.000000000 +5.645161290 9.709677419 13.996146922 15.158825640 20.000000000 +5.645161290 10.000000000 13.996146922 15.158825640 20.000000000 +5.935483871 1.000000000 10.000000000 13.401208666 18.333970891 +5.935483871 1.290322581 10.000000000 13.401208666 18.333970891 +5.935483871 1.580645161 10.000000000 13.401208666 18.333970891 +5.935483871 1.870967742 10.000000000 13.401208666 18.333970891 +5.935483871 2.161290323 10.000000000 13.401208666 18.333970891 +5.935483871 2.451612903 10.000000000 13.401208666 18.333970891 +5.935483871 2.741935484 10.000000000 13.401208666 18.333970891 +5.935483871 3.032258065 10.007443801 13.394073286 18.320194702 +5.935483871 3.322580645 10.081521395 13.343529838 18.205985651 +5.935483871 3.612903226 10.170606472 13.320092774 18.113408216 +5.935483871 3.903225806 10.279237154 13.327710961 18.049128779 +5.935483871 4.193548387 10.414061629 13.371284478 18.021975049 +5.935483871 4.483870968 10.584551085 13.457309453 18.044566871 +5.935483871 4.774193548 10.804081039 13.594715896 18.135620170 +5.935483871 5.064516129 11.090993693 13.794308290 18.321130673 +5.935483871 5.354838710 11.452089024 14.020655377 18.573380719 +5.935483871 5.645161290 11.890263995 14.250754084 18.868697334 +5.935483871 5.935483871 12.407459638 14.478989354 19.190114288 +5.935483871 6.225806452 12.997671406 14.700310557 19.502878399 +5.935483871 6.516129032 13.647127791 14.916608672 19.763270216 +5.935483871 6.806451613 14.340979512 15.153493506 19.937484405 +5.935483871 7.096774194 14.827685905 15.364218694 20.000000000 +5.935483871 7.387096774 14.827685905 15.364218694 20.000000000 +5.935483871 7.677419355 14.827685905 15.364218694 20.000000000 +5.935483871 7.967741935 14.827685905 15.364218694 20.000000000 +5.935483871 8.258064516 14.827685905 15.364218694 20.000000000 +5.935483871 8.548387097 14.827685905 15.364218694 20.000000000 +5.935483871 8.838709677 14.827685905 15.364218694 20.000000000 +5.935483871 9.129032258 14.827685905 15.364218694 20.000000000 +5.935483871 9.419354839 14.827685905 15.364218694 20.000000000 +5.935483871 9.709677419 14.827685905 15.364218694 20.000000000 +5.935483871 10.000000000 14.827685905 15.364218694 20.000000000 +6.225806452 1.000000000 10.000000000 13.521407226 18.490281826 +6.225806452 1.290322581 10.000000000 13.521407226 18.490281826 +6.225806452 1.580645161 10.000000000 13.521407226 18.490281826 +6.225806452 1.870967742 10.000000000 13.521407226 18.490281826 +6.225806452 2.161290323 10.000000000 13.521407226 18.490281826 +6.225806452 2.451612903 10.000000000 13.521407226 18.490281826 +6.225806452 2.741935484 10.000000000 13.521407226 18.490281826 +6.225806452 3.032258065 10.008103023 13.514140641 18.476969515 +6.225806452 3.322580645 10.088153003 13.460835310 18.364877707 +6.225806452 3.612903226 10.183352044 13.431824922 18.270567249 +6.225806452 3.903225806 10.298530841 13.431203100 18.200721216 +6.225806452 4.193548387 10.441056619 13.464145973 18.164351799 +6.225806452 4.483870968 10.621870428 13.537643724 18.174340531 +6.225806452 4.774193548 10.857112400 13.661628176 18.249929499 +6.225806452 5.064516129 11.170105930 13.849038003 18.418640731 +6.225806452 5.354838710 11.574291401 14.066015685 18.653507307 +6.225806452 5.645161290 12.079699400 14.291251628 18.931644662 +6.225806452 5.935483871 12.694889781 14.523401908 19.238162865 +6.225806452 6.225806452 13.416217710 14.765821293 19.539326380 +6.225806452 6.516129032 14.222918735 15.036827937 19.789435643 +6.225806452 6.806451613 15.078771212 15.391913006 19.950218302 +6.225806452 7.096774194 15.657216132 15.735413612 20.000000000 +6.225806452 7.387096774 15.657216132 15.735413612 20.000000000 +6.225806452 7.677419355 15.657216132 15.735413612 20.000000000 +6.225806452 7.967741935 15.657216132 15.735413612 20.000000000 +6.225806452 8.258064516 15.657216132 15.735413612 20.000000000 +6.225806452 8.548387097 15.657216132 15.735413612 20.000000000 +6.225806452 8.838709677 15.657216132 15.735413612 20.000000000 +6.225806452 9.129032258 15.657216132 15.735413612 20.000000000 +6.225806452 9.419354839 15.657216132 15.735413612 20.000000000 +6.225806452 9.709677419 15.657216132 15.735413612 20.000000000 +6.225806452 10.000000000 15.657216132 15.735413612 20.000000000 +6.516129032 1.000000000 10.000000000 13.619720941 18.608806194 +6.516129032 1.290322581 10.000000000 13.619720941 18.608806194 +6.516129032 1.580645161 10.000000000 13.619720941 18.608806194 +6.516129032 1.870967742 10.000000000 13.619720941 18.608806194 +6.516129032 2.161290323 10.000000000 13.619720941 18.608806194 +6.516129032 2.451612903 10.000000000 13.619720941 18.608806194 +6.516129032 2.741935484 10.000000000 13.619720941 18.608806194 +6.516129032 3.032258065 10.008796065 13.612346679 18.595858277 +6.516129032 3.322580645 10.094914486 13.556805241 18.485913330 +6.516129032 3.612903226 10.196067943 13.523172782 18.391481322 +6.516129032 3.903225806 10.317633610 13.515503749 18.319021613 +6.516129032 4.193548387 10.468057112 13.539104368 18.277428362 +6.516129032 4.483870968 10.660217177 13.601388696 18.279576799 +6.516129032 4.774193548 10.913601861 13.713341965 18.344952152 +6.516129032 5.064516129 11.257202098 13.890353256 18.502068098 +6.516129032 5.354838710 11.711560991 14.101549313 18.724649911 +6.516129032 5.645161290 12.293650185 14.329635734 18.990008501 +6.516129032 5.935483871 13.016511933 14.581790143 19.284476712 +6.516129032 6.225806452 13.873035372 14.877229146 19.575567933 +6.516129032 6.516129032 14.825313064 15.258980220 19.816607913 +6.516129032 6.806451613 15.804467725 15.803140508 19.963873617 +6.516129032 7.096774194 16.431600988 16.299972993 20.000000000 +6.516129032 7.387096774 16.431600988 16.299972993 20.000000000 +6.516129032 7.677419355 16.431600988 16.299972993 20.000000000 +6.516129032 7.967741935 16.431600988 16.299972993 20.000000000 +6.516129032 8.258064516 16.431600988 16.299972993 20.000000000 +6.516129032 8.548387097 16.431600988 16.299972993 20.000000000 +6.516129032 8.838709677 16.431600988 16.299972993 20.000000000 +6.516129032 9.129032258 16.431600988 16.299972993 20.000000000 +6.516129032 9.419354839 16.431600988 16.299972993 20.000000000 +6.516129032 9.709677419 16.431600988 16.299972993 20.000000000 +6.516129032 10.000000000 16.431600988 16.299972993 20.000000000 +6.806451613 1.000000000 10.000000000 13.702140588 18.700568553 +6.806451613 1.290322581 10.000000000 13.702140588 18.700568553 +6.806451613 1.580645161 10.000000000 13.702140588 18.700568553 +6.806451613 1.870967742 10.000000000 13.702140588 18.700568553 +6.806451613 2.161290323 10.000000000 13.702140588 18.700568553 +6.806451613 2.451612903 10.000000000 13.702140588 18.700568553 +6.806451613 2.741935484 10.000000000 13.702140588 18.700568553 +6.806451613 3.032258065 10.009566877 13.694695654 18.687889031 +6.806451613 3.322580645 10.102239226 13.637457673 18.579757963 +6.806451613 3.612903226 10.209597091 13.599971487 18.485773947 +6.806451613 3.903225806 10.337931790 13.586088799 18.412087907 +6.806451613 4.193548387 10.497359572 13.601147106 18.367393881 +6.806451613 4.483870968 10.703550229 13.652988131 18.364466144 +6.806451613 4.774193548 10.980458810 13.753895322 18.422857042 +6.806451613 5.064516129 11.363992774 13.922588347 18.571664806 +6.806451613 5.354838710 11.882332702 14.133990028 18.785431300 +6.806451613 5.645161290 12.557491974 14.380014720 19.041563761 +6.806451613 5.935483871 13.400370731 14.684815949 19.327600979 +6.806451613 6.225806452 14.388065262 15.092179113 19.613100661 +6.806451613 6.516129032 15.452078155 15.660637661 19.848761837 +6.806451613 6.806451613 16.488227443 16.421596031 19.978526735 +6.806451613 7.096774194 17.110750392 17.007626023 20.000000000 +6.806451613 7.387096774 17.110750392 17.007626023 20.000000000 +6.806451613 7.677419355 17.110750392 17.007626023 20.000000000 +6.806451613 7.967741935 17.110750392 17.007626023 20.000000000 +6.806451613 8.258064516 17.110750392 17.007626023 20.000000000 +6.806451613 8.548387097 17.110750392 17.007626023 20.000000000 +6.806451613 8.838709677 17.110750392 17.007626023 20.000000000 +6.806451613 9.129032258 17.110750392 17.007626023 20.000000000 +6.806451613 9.419354839 17.110750392 17.007626023 20.000000000 +6.806451613 9.709677419 17.110750392 17.007626023 20.000000000 +6.806451613 10.000000000 17.110750392 17.007626023 20.000000000 +7.096774194 1.000000000 10.000000000 13.750000000 18.750000000 +7.096774194 1.290322581 10.000000000 13.750000000 18.750000000 +7.096774194 1.580645161 10.000000000 13.750000000 18.750000000 +7.096774194 1.870967742 10.000000000 13.750000000 18.750000000 +7.096774194 2.161290323 10.000000000 13.750000000 18.750000000 +7.096774194 2.451612903 10.000000000 13.750000000 18.750000000 +7.096774194 2.741935484 10.000000000 13.750000000 18.750000000 +7.096774194 3.032258065 10.010142154 13.742536520 18.737455859 +7.096774194 3.322580645 10.107593677 13.684557246 18.630423796 +7.096774194 3.612903226 10.219378581 13.645030600 18.537086952 +7.096774194 3.903225806 10.352768137 13.627557695 18.463319088 +7.096774194 4.193548387 10.519625429 13.637427439 18.417599484 +7.096774194 4.483870968 10.738408418 13.682818578 18.412535791 +7.096774194 4.774193548 11.037217342 13.777278068 18.467583744 +7.096774194 5.064516129 11.457663040 13.943032824 18.612009655 +7.096774194 5.354838710 12.032834518 14.162291151 18.821124666 +7.096774194 5.645161290 12.784673825 14.439131521 19.073000135 +7.096774194 5.935483871 13.714623381 14.815969959 19.357395690 +7.096774194 6.225806452 14.778744019 15.350155064 19.645850060 +7.096774194 6.516129032 15.883198672 16.075414380 19.878699414 +7.096774194 6.806451613 16.909538446 16.932414748 19.986611801 +7.096774194 7.096774194 17.500000000 17.500000000 20.000000000 +7.096774194 7.387096774 17.500000000 17.500000000 20.000000000 +7.096774194 7.677419355 17.500000000 17.500000000 20.000000000 +7.096774194 7.967741935 17.500000000 17.500000000 20.000000000 +7.096774194 8.258064516 17.500000000 17.500000000 20.000000000 +7.096774194 8.548387097 17.500000000 17.500000000 20.000000000 +7.096774194 8.838709677 17.500000000 17.500000000 20.000000000 +7.096774194 9.129032258 17.500000000 17.500000000 20.000000000 +7.096774194 9.419354839 17.500000000 17.500000000 20.000000000 +7.096774194 9.709677419 17.500000000 17.500000000 20.000000000 +7.096774194 10.000000000 17.500000000 17.500000000 20.000000000 +7.387096774 1.000000000 10.000000000 13.750000000 18.750000000 +7.387096774 1.290322581 10.000000000 13.750000000 18.750000000 +7.387096774 1.580645161 10.000000000 13.750000000 18.750000000 +7.387096774 1.870967742 10.000000000 13.750000000 18.750000000 +7.387096774 2.161290323 10.000000000 13.750000000 18.750000000 +7.387096774 2.451612903 10.000000000 13.750000000 18.750000000 +7.387096774 2.741935484 10.000000000 13.750000000 18.750000000 +7.387096774 3.032258065 10.010142154 13.742536520 18.737455859 +7.387096774 3.322580645 10.107593677 13.684557246 18.630423796 +7.387096774 3.612903226 10.219378581 13.645030600 18.537086952 +7.387096774 3.903225806 10.352768137 13.627557695 18.463319088 +7.387096774 4.193548387 10.519625429 13.637427439 18.417599484 +7.387096774 4.483870968 10.738408418 13.682818578 18.412535791 +7.387096774 4.774193548 11.037217342 13.777278068 18.467583744 +7.387096774 5.064516129 11.457663040 13.943032824 18.612009655 +7.387096774 5.354838710 12.032834518 14.162291151 18.821124666 +7.387096774 5.645161290 12.784673825 14.439131521 19.073000135 +7.387096774 5.935483871 13.714623381 14.815969959 19.357395690 +7.387096774 6.225806452 14.778744019 15.350155064 19.645850060 +7.387096774 6.516129032 15.883198672 16.075414380 19.878699414 +7.387096774 6.806451613 16.909538446 16.932414748 19.986611801 +7.387096774 7.096774194 17.500000000 17.500000000 20.000000000 +7.387096774 7.387096774 17.500000000 17.500000000 20.000000000 +7.387096774 7.677419355 17.500000000 17.500000000 20.000000000 +7.387096774 7.967741935 17.500000000 17.500000000 20.000000000 +7.387096774 8.258064516 17.500000000 17.500000000 20.000000000 +7.387096774 8.548387097 17.500000000 17.500000000 20.000000000 +7.387096774 8.838709677 17.500000000 17.500000000 20.000000000 +7.387096774 9.129032258 17.500000000 17.500000000 20.000000000 +7.387096774 9.419354839 17.500000000 17.500000000 20.000000000 +7.387096774 9.709677419 17.500000000 17.500000000 20.000000000 +7.387096774 10.000000000 17.500000000 17.500000000 20.000000000 +7.677419355 1.000000000 10.000000000 13.750000000 18.750000000 +7.677419355 1.290322581 10.000000000 13.750000000 18.750000000 +7.677419355 1.580645161 10.000000000 13.750000000 18.750000000 +7.677419355 1.870967742 10.000000000 13.750000000 18.750000000 +7.677419355 2.161290323 10.000000000 13.750000000 18.750000000 +7.677419355 2.451612903 10.000000000 13.750000000 18.750000000 +7.677419355 2.741935484 10.000000000 13.750000000 18.750000000 +7.677419355 3.032258065 10.010142154 13.742536520 18.737455859 +7.677419355 3.322580645 10.107593677 13.684557246 18.630423796 +7.677419355 3.612903226 10.219378581 13.645030600 18.537086952 +7.677419355 3.903225806 10.352768137 13.627557695 18.463319088 +7.677419355 4.193548387 10.519625429 13.637427439 18.417599484 +7.677419355 4.483870968 10.738408418 13.682818578 18.412535791 +7.677419355 4.774193548 11.037217342 13.777278068 18.467583744 +7.677419355 5.064516129 11.457663040 13.943032824 18.612009655 +7.677419355 5.354838710 12.032834518 14.162291151 18.821124666 +7.677419355 5.645161290 12.784673825 14.439131521 19.073000135 +7.677419355 5.935483871 13.714623381 14.815969959 19.357395690 +7.677419355 6.225806452 14.778744019 15.350155064 19.645850060 +7.677419355 6.516129032 15.883198672 16.075414380 19.878699414 +7.677419355 6.806451613 16.909538446 16.932414748 19.986611801 +7.677419355 7.096774194 17.500000000 17.500000000 20.000000000 +7.677419355 7.387096774 17.500000000 17.500000000 20.000000000 +7.677419355 7.677419355 17.500000000 17.500000000 20.000000000 +7.677419355 7.967741935 17.500000000 17.500000000 20.000000000 +7.677419355 8.258064516 17.500000000 17.500000000 20.000000000 +7.677419355 8.548387097 17.500000000 17.500000000 20.000000000 +7.677419355 8.838709677 17.500000000 17.500000000 20.000000000 +7.677419355 9.129032258 17.500000000 17.500000000 20.000000000 +7.677419355 9.419354839 17.500000000 17.500000000 20.000000000 +7.677419355 9.709677419 17.500000000 17.500000000 20.000000000 +7.677419355 10.000000000 17.500000000 17.500000000 20.000000000 +7.967741935 1.000000000 10.000000000 13.750000000 18.750000000 +7.967741935 1.290322581 10.000000000 13.750000000 18.750000000 +7.967741935 1.580645161 10.000000000 13.750000000 18.750000000 +7.967741935 1.870967742 10.000000000 13.750000000 18.750000000 +7.967741935 2.161290323 10.000000000 13.750000000 18.750000000 +7.967741935 2.451612903 10.000000000 13.750000000 18.750000000 +7.967741935 2.741935484 10.000000000 13.750000000 18.750000000 +7.967741935 3.032258065 10.010142154 13.742536520 18.737455859 +7.967741935 3.322580645 10.107593677 13.684557246 18.630423796 +7.967741935 3.612903226 10.219378581 13.645030600 18.537086952 +7.967741935 3.903225806 10.352768137 13.627557695 18.463319088 +7.967741935 4.193548387 10.519625429 13.637427439 18.417599484 +7.967741935 4.483870968 10.738408418 13.682818578 18.412535791 +7.967741935 4.774193548 11.037217342 13.777278068 18.467583744 +7.967741935 5.064516129 11.457663040 13.943032824 18.612009655 +7.967741935 5.354838710 12.032834518 14.162291151 18.821124666 +7.967741935 5.645161290 12.784673825 14.439131521 19.073000135 +7.967741935 5.935483871 13.714623381 14.815969959 19.357395690 +7.967741935 6.225806452 14.778744019 15.350155064 19.645850060 +7.967741935 6.516129032 15.883198672 16.075414380 19.878699414 +7.967741935 6.806451613 16.909538446 16.932414748 19.986611801 +7.967741935 7.096774194 17.500000000 17.500000000 20.000000000 +7.967741935 7.387096774 17.500000000 17.500000000 20.000000000 +7.967741935 7.677419355 17.500000000 17.500000000 20.000000000 +7.967741935 7.967741935 17.500000000 17.500000000 20.000000000 +7.967741935 8.258064516 17.500000000 17.500000000 20.000000000 +7.967741935 8.548387097 17.500000000 17.500000000 20.000000000 +7.967741935 8.838709677 17.500000000 17.500000000 20.000000000 +7.967741935 9.129032258 17.500000000 17.500000000 20.000000000 +7.967741935 9.419354839 17.500000000 17.500000000 20.000000000 +7.967741935 9.709677419 17.500000000 17.500000000 20.000000000 +7.967741935 10.000000000 17.500000000 17.500000000 20.000000000 +8.258064516 1.000000000 10.000000000 13.750000000 18.750000000 +8.258064516 1.290322581 10.000000000 13.750000000 18.750000000 +8.258064516 1.580645161 10.000000000 13.750000000 18.750000000 +8.258064516 1.870967742 10.000000000 13.750000000 18.750000000 +8.258064516 2.161290323 10.000000000 13.750000000 18.750000000 +8.258064516 2.451612903 10.000000000 13.750000000 18.750000000 +8.258064516 2.741935484 10.000000000 13.750000000 18.750000000 +8.258064516 3.032258065 10.010142154 13.742536520 18.737455859 +8.258064516 3.322580645 10.107593677 13.684557246 18.630423796 +8.258064516 3.612903226 10.219378581 13.645030600 18.537086952 +8.258064516 3.903225806 10.352768137 13.627557695 18.463319088 +8.258064516 4.193548387 10.519625429 13.637427439 18.417599484 +8.258064516 4.483870968 10.738408418 13.682818578 18.412535791 +8.258064516 4.774193548 11.037217342 13.777278068 18.467583744 +8.258064516 5.064516129 11.457663040 13.943032824 18.612009655 +8.258064516 5.354838710 12.032834518 14.162291151 18.821124666 +8.258064516 5.645161290 12.784673825 14.439131521 19.073000135 +8.258064516 5.935483871 13.714623381 14.815969959 19.357395690 +8.258064516 6.225806452 14.778744019 15.350155064 19.645850060 +8.258064516 6.516129032 15.883198672 16.075414380 19.878699414 +8.258064516 6.806451613 16.909538446 16.932414748 19.986611801 +8.258064516 7.096774194 17.500000000 17.500000000 20.000000000 +8.258064516 7.387096774 17.500000000 17.500000000 20.000000000 +8.258064516 7.677419355 17.500000000 17.500000000 20.000000000 +8.258064516 7.967741935 17.500000000 17.500000000 20.000000000 +8.258064516 8.258064516 17.500000000 17.500000000 20.000000000 +8.258064516 8.548387097 17.500000000 17.500000000 20.000000000 +8.258064516 8.838709677 17.500000000 17.500000000 20.000000000 +8.258064516 9.129032258 17.500000000 17.500000000 20.000000000 +8.258064516 9.419354839 17.500000000 17.500000000 20.000000000 +8.258064516 9.709677419 17.500000000 17.500000000 20.000000000 +8.258064516 10.000000000 17.500000000 17.500000000 20.000000000 +8.548387097 1.000000000 10.000000000 13.750000000 18.750000000 +8.548387097 1.290322581 10.000000000 13.750000000 18.750000000 +8.548387097 1.580645161 10.000000000 13.750000000 18.750000000 +8.548387097 1.870967742 10.000000000 13.750000000 18.750000000 +8.548387097 2.161290323 10.000000000 13.750000000 18.750000000 +8.548387097 2.451612903 10.000000000 13.750000000 18.750000000 +8.548387097 2.741935484 10.000000000 13.750000000 18.750000000 +8.548387097 3.032258065 10.010142154 13.742536520 18.737455859 +8.548387097 3.322580645 10.107593677 13.684557246 18.630423796 +8.548387097 3.612903226 10.219378581 13.645030600 18.537086952 +8.548387097 3.903225806 10.352768137 13.627557695 18.463319088 +8.548387097 4.193548387 10.519625429 13.637427439 18.417599484 +8.548387097 4.483870968 10.738408418 13.682818578 18.412535791 +8.548387097 4.774193548 11.037217342 13.777278068 18.467583744 +8.548387097 5.064516129 11.457663040 13.943032824 18.612009655 +8.548387097 5.354838710 12.032834518 14.162291151 18.821124666 +8.548387097 5.645161290 12.784673825 14.439131521 19.073000135 +8.548387097 5.935483871 13.714623381 14.815969959 19.357395690 +8.548387097 6.225806452 14.778744019 15.350155064 19.645850060 +8.548387097 6.516129032 15.883198672 16.075414380 19.878699414 +8.548387097 6.806451613 16.909538446 16.932414748 19.986611801 +8.548387097 7.096774194 17.500000000 17.500000000 20.000000000 +8.548387097 7.387096774 17.500000000 17.500000000 20.000000000 +8.548387097 7.677419355 17.500000000 17.500000000 20.000000000 +8.548387097 7.967741935 17.500000000 17.500000000 20.000000000 +8.548387097 8.258064516 17.500000000 17.500000000 20.000000000 +8.548387097 8.548387097 17.500000000 17.500000000 20.000000000 +8.548387097 8.838709677 17.500000000 17.500000000 20.000000000 +8.548387097 9.129032258 17.500000000 17.500000000 20.000000000 +8.548387097 9.419354839 17.500000000 17.500000000 20.000000000 +8.548387097 9.709677419 17.500000000 17.500000000 20.000000000 +8.548387097 10.000000000 17.500000000 17.500000000 20.000000000 +8.838709677 1.000000000 10.000000000 13.750000000 18.750000000 +8.838709677 1.290322581 10.000000000 13.750000000 18.750000000 +8.838709677 1.580645161 10.000000000 13.750000000 18.750000000 +8.838709677 1.870967742 10.000000000 13.750000000 18.750000000 +8.838709677 2.161290323 10.000000000 13.750000000 18.750000000 +8.838709677 2.451612903 10.000000000 13.750000000 18.750000000 +8.838709677 2.741935484 10.000000000 13.750000000 18.750000000 +8.838709677 3.032258065 10.010142154 13.742536520 18.737455859 +8.838709677 3.322580645 10.107593677 13.684557246 18.630423796 +8.838709677 3.612903226 10.219378581 13.645030600 18.537086952 +8.838709677 3.903225806 10.352768137 13.627557695 18.463319088 +8.838709677 4.193548387 10.519625429 13.637427439 18.417599484 +8.838709677 4.483870968 10.738408418 13.682818578 18.412535791 +8.838709677 4.774193548 11.037217342 13.777278068 18.467583744 +8.838709677 5.064516129 11.457663040 13.943032824 18.612009655 +8.838709677 5.354838710 12.032834518 14.162291151 18.821124666 +8.838709677 5.645161290 12.784673825 14.439131521 19.073000135 +8.838709677 5.935483871 13.714623381 14.815969959 19.357395690 +8.838709677 6.225806452 14.778744019 15.350155064 19.645850060 +8.838709677 6.516129032 15.883198672 16.075414380 19.878699414 +8.838709677 6.806451613 16.909538446 16.932414748 19.986611801 +8.838709677 7.096774194 17.500000000 17.500000000 20.000000000 +8.838709677 7.387096774 17.500000000 17.500000000 20.000000000 +8.838709677 7.677419355 17.500000000 17.500000000 20.000000000 +8.838709677 7.967741935 17.500000000 17.500000000 20.000000000 +8.838709677 8.258064516 17.500000000 17.500000000 20.000000000 +8.838709677 8.548387097 17.500000000 17.500000000 20.000000000 +8.838709677 8.838709677 17.500000000 17.500000000 20.000000000 +8.838709677 9.129032258 17.500000000 17.500000000 20.000000000 +8.838709677 9.419354839 17.500000000 17.500000000 20.000000000 +8.838709677 9.709677419 17.500000000 17.500000000 20.000000000 +8.838709677 10.000000000 17.500000000 17.500000000 20.000000000 +9.129032258 1.000000000 10.000000000 13.750000000 18.750000000 +9.129032258 1.290322581 10.000000000 13.750000000 18.750000000 +9.129032258 1.580645161 10.000000000 13.750000000 18.750000000 +9.129032258 1.870967742 10.000000000 13.750000000 18.750000000 +9.129032258 2.161290323 10.000000000 13.750000000 18.750000000 +9.129032258 2.451612903 10.000000000 13.750000000 18.750000000 +9.129032258 2.741935484 10.000000000 13.750000000 18.750000000 +9.129032258 3.032258065 10.010142154 13.742536520 18.737455859 +9.129032258 3.322580645 10.107593677 13.684557246 18.630423796 +9.129032258 3.612903226 10.219378581 13.645030600 18.537086952 +9.129032258 3.903225806 10.352768137 13.627557695 18.463319088 +9.129032258 4.193548387 10.519625429 13.637427439 18.417599484 +9.129032258 4.483870968 10.738408418 13.682818578 18.412535791 +9.129032258 4.774193548 11.037217342 13.777278068 18.467583744 +9.129032258 5.064516129 11.457663040 13.943032824 18.612009655 +9.129032258 5.354838710 12.032834518 14.162291151 18.821124666 +9.129032258 5.645161290 12.784673825 14.439131521 19.073000135 +9.129032258 5.935483871 13.714623381 14.815969959 19.357395690 +9.129032258 6.225806452 14.778744019 15.350155064 19.645850060 +9.129032258 6.516129032 15.883198672 16.075414380 19.878699414 +9.129032258 6.806451613 16.909538446 16.932414748 19.986611801 +9.129032258 7.096774194 17.500000000 17.500000000 20.000000000 +9.129032258 7.387096774 17.500000000 17.500000000 20.000000000 +9.129032258 7.677419355 17.500000000 17.500000000 20.000000000 +9.129032258 7.967741935 17.500000000 17.500000000 20.000000000 +9.129032258 8.258064516 17.500000000 17.500000000 20.000000000 +9.129032258 8.548387097 17.500000000 17.500000000 20.000000000 +9.129032258 8.838709677 17.500000000 17.500000000 20.000000000 +9.129032258 9.129032258 17.500000000 17.500000000 20.000000000 +9.129032258 9.419354839 17.500000000 17.500000000 20.000000000 +9.129032258 9.709677419 17.500000000 17.500000000 20.000000000 +9.129032258 10.000000000 17.500000000 17.500000000 20.000000000 +9.419354839 1.000000000 10.000000000 13.750000000 18.750000000 +9.419354839 1.290322581 10.000000000 13.750000000 18.750000000 +9.419354839 1.580645161 10.000000000 13.750000000 18.750000000 +9.419354839 1.870967742 10.000000000 13.750000000 18.750000000 +9.419354839 2.161290323 10.000000000 13.750000000 18.750000000 +9.419354839 2.451612903 10.000000000 13.750000000 18.750000000 +9.419354839 2.741935484 10.000000000 13.750000000 18.750000000 +9.419354839 3.032258065 10.010142154 13.742536520 18.737455859 +9.419354839 3.322580645 10.107593677 13.684557246 18.630423796 +9.419354839 3.612903226 10.219378581 13.645030600 18.537086952 +9.419354839 3.903225806 10.352768137 13.627557695 18.463319088 +9.419354839 4.193548387 10.519625429 13.637427439 18.417599484 +9.419354839 4.483870968 10.738408418 13.682818578 18.412535791 +9.419354839 4.774193548 11.037217342 13.777278068 18.467583744 +9.419354839 5.064516129 11.457663040 13.943032824 18.612009655 +9.419354839 5.354838710 12.032834518 14.162291151 18.821124666 +9.419354839 5.645161290 12.784673825 14.439131521 19.073000135 +9.419354839 5.935483871 13.714623381 14.815969959 19.357395690 +9.419354839 6.225806452 14.778744019 15.350155064 19.645850060 +9.419354839 6.516129032 15.883198672 16.075414380 19.878699414 +9.419354839 6.806451613 16.909538446 16.932414748 19.986611801 +9.419354839 7.096774194 17.500000000 17.500000000 20.000000000 +9.419354839 7.387096774 17.500000000 17.500000000 20.000000000 +9.419354839 7.677419355 17.500000000 17.500000000 20.000000000 +9.419354839 7.967741935 17.500000000 17.500000000 20.000000000 +9.419354839 8.258064516 17.500000000 17.500000000 20.000000000 +9.419354839 8.548387097 17.500000000 17.500000000 20.000000000 +9.419354839 8.838709677 17.500000000 17.500000000 20.000000000 +9.419354839 9.129032258 17.500000000 17.500000000 20.000000000 +9.419354839 9.419354839 17.500000000 17.500000000 20.000000000 +9.419354839 9.709677419 17.500000000 17.500000000 20.000000000 +9.419354839 10.000000000 17.500000000 17.500000000 20.000000000 +9.709677419 1.000000000 10.000000000 13.750000000 18.750000000 +9.709677419 1.290322581 10.000000000 13.750000000 18.750000000 +9.709677419 1.580645161 10.000000000 13.750000000 18.750000000 +9.709677419 1.870967742 10.000000000 13.750000000 18.750000000 +9.709677419 2.161290323 10.000000000 13.750000000 18.750000000 +9.709677419 2.451612903 10.000000000 13.750000000 18.750000000 +9.709677419 2.741935484 10.000000000 13.750000000 18.750000000 +9.709677419 3.032258065 10.010142154 13.742536520 18.737455859 +9.709677419 3.322580645 10.107593677 13.684557246 18.630423796 +9.709677419 3.612903226 10.219378581 13.645030600 18.537086952 +9.709677419 3.903225806 10.352768137 13.627557695 18.463319088 +9.709677419 4.193548387 10.519625429 13.637427439 18.417599484 +9.709677419 4.483870968 10.738408418 13.682818578 18.412535791 +9.709677419 4.774193548 11.037217342 13.777278068 18.467583744 +9.709677419 5.064516129 11.457663040 13.943032824 18.612009655 +9.709677419 5.354838710 12.032834518 14.162291151 18.821124666 +9.709677419 5.645161290 12.784673825 14.439131521 19.073000135 +9.709677419 5.935483871 13.714623381 14.815969959 19.357395690 +9.709677419 6.225806452 14.778744019 15.350155064 19.645850060 +9.709677419 6.516129032 15.883198672 16.075414380 19.878699414 +9.709677419 6.806451613 16.909538446 16.932414748 19.986611801 +9.709677419 7.096774194 17.500000000 17.500000000 20.000000000 +9.709677419 7.387096774 17.500000000 17.500000000 20.000000000 +9.709677419 7.677419355 17.500000000 17.500000000 20.000000000 +9.709677419 7.967741935 17.500000000 17.500000000 20.000000000 +9.709677419 8.258064516 17.500000000 17.500000000 20.000000000 +9.709677419 8.548387097 17.500000000 17.500000000 20.000000000 +9.709677419 8.838709677 17.500000000 17.500000000 20.000000000 +9.709677419 9.129032258 17.500000000 17.500000000 20.000000000 +9.709677419 9.419354839 17.500000000 17.500000000 20.000000000 +9.709677419 9.709677419 17.500000000 17.500000000 20.000000000 +9.709677419 10.000000000 17.500000000 17.500000000 20.000000000 +10.000000000 1.000000000 10.000000000 13.750000000 18.750000000 +10.000000000 1.290322581 10.000000000 13.750000000 18.750000000 +10.000000000 1.580645161 10.000000000 13.750000000 18.750000000 +10.000000000 1.870967742 10.000000000 13.750000000 18.750000000 +10.000000000 2.161290323 10.000000000 13.750000000 18.750000000 +10.000000000 2.451612903 10.000000000 13.750000000 18.750000000 +10.000000000 2.741935484 10.000000000 13.750000000 18.750000000 +10.000000000 3.032258065 10.010142154 13.742536520 18.737455859 +10.000000000 3.322580645 10.107593677 13.684557246 18.630423796 +10.000000000 3.612903226 10.219378581 13.645030600 18.537086952 +10.000000000 3.903225806 10.352768137 13.627557695 18.463319088 +10.000000000 4.193548387 10.519625429 13.637427439 18.417599484 +10.000000000 4.483870968 10.738408418 13.682818578 18.412535791 +10.000000000 4.774193548 11.037217342 13.777278068 18.467583744 +10.000000000 5.064516129 11.457663040 13.943032824 18.612009655 +10.000000000 5.354838710 12.032834518 14.162291151 18.821124666 +10.000000000 5.645161290 12.784673825 14.439131521 19.073000135 +10.000000000 5.935483871 13.714623381 14.815969959 19.357395690 +10.000000000 6.225806452 14.778744019 15.350155064 19.645850060 +10.000000000 6.516129032 15.883198672 16.075414380 19.878699414 +10.000000000 6.806451613 16.909538446 16.932414748 19.986611801 +10.000000000 7.096774194 17.500000000 17.500000000 20.000000000 +10.000000000 7.387096774 17.500000000 17.500000000 20.000000000 +10.000000000 7.677419355 17.500000000 17.500000000 20.000000000 +10.000000000 7.967741935 17.500000000 17.500000000 20.000000000 +10.000000000 8.258064516 17.500000000 17.500000000 20.000000000 +10.000000000 8.548387097 17.500000000 17.500000000 20.000000000 +10.000000000 8.838709677 17.500000000 17.500000000 20.000000000 +10.000000000 9.129032258 17.500000000 17.500000000 20.000000000 +10.000000000 9.419354839 17.500000000 17.500000000 20.000000000 +10.000000000 9.709677419 17.500000000 17.500000000 20.000000000 +10.000000000 10.000000000 17.500000000 17.500000000 20.000000000 diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fll b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fll index 611d6eb..1b51806 100644 --- a/examples/takagi-sugeno/octave/sugeno_tip_calculator.fll +++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.fll @@ -1,44 +1,46 @@ -Engine: Sugeno-Tip-Calculator +Engine: sugeno_tip_calculator InputVariable: FoodQuality enabled: true range: 1.000 10.000 + lock-range: false term: Bad Trapezoid 0.000 1.000 3.000 7.000 term: Good Trapezoid 3.000 7.000 10.000 11.000 InputVariable: Service enabled: true range: 1.000 10.000 + lock-range: false term: Bad Trapezoid 0.000 1.000 3.000 7.000 term: Good Trapezoid 3.000 7.000 10.000 11.000 OutputVariable: CheapTip enabled: true range: 5.000 25.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage TakagiSugeno default: nan lock-previous: false - lock-range: false term: Low Constant 10.000 term: Medium Constant 15.000 term: High Constant 20.000 OutputVariable: AverageTip enabled: true range: 5.000 25.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage TakagiSugeno default: nan lock-previous: false - lock-range: false term: Low Constant 10.000 term: Medium Constant 15.000 term: High Constant 20.000 OutputVariable: GenerousTip enabled: true range: 5.000 25.000 - accumulation: none + lock-range: false + aggregation: none defuzzifier: WeightedAverage TakagiSugeno default: nan lock-previous: false - lock-range: false term: Low Constant 10.000 term: Medium Constant 15.000 term: High Constant 20.000 @@ -46,7 +48,8 @@ RuleBlock: enabled: true conjunction: EinsteinProduct disjunction: none - activation: none + implication: none + activation: General rule: if FoodQuality is extremely Bad and Service is extremely Bad then CheapTip is extremely Low and AverageTip is very Low and GenerousTip is Low rule: if FoodQuality is Good and Service is extremely Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium rule: if FoodQuality is very Good and Service is very Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.java b/examples/takagi-sugeno/octave/sugeno_tip_calculator.java index 939649e..d64e722 100644 --- a/examples/takagi-sugeno/octave/sugeno_tip_calculator.java +++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.java @@ -1,4 +1,5 @@ import com.fuzzylite.*; +import com.fuzzylite.activation.* import com.fuzzylite.defuzzifier.*; import com.fuzzylite.factory.*; import com.fuzzylite.hedge.*; @@ -12,73 +13,85 @@ import com.fuzzylite.variable.*; public class sugeno_tip_calculator{ public static void main(String[] args){ +//Code automatically generated with fuzzylite 6.0. + Engine engine = new Engine(); -engine.setName("Sugeno-Tip-Calculator"); +engine.setName("sugeno_tip_calculator"); +engine.setDescription(""); -InputVariable inputVariable1 = new InputVariable(); -inputVariable1.setEnabled(true); -inputVariable1.setName("FoodQuality"); -inputVariable1.setRange(1.000, 10.000); -inputVariable1.addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); -inputVariable1.addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); -engine.addInputVariable(inputVariable1); +InputVariable FoodQuality = new InputVariable(); +FoodQuality.setName("FoodQuality"); +FoodQuality.setDescription(""); +FoodQuality.setEnabled(true); +FoodQuality.setRange(1.000, 10.000); +FoodQuality.setLockValueInRange(false); +FoodQuality.addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); +FoodQuality.addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); +engine.addInputVariable(FoodQuality); -InputVariable inputVariable2 = new InputVariable(); -inputVariable2.setEnabled(true); -inputVariable2.setName("Service"); -inputVariable2.setRange(1.000, 10.000); -inputVariable2.addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); -inputVariable2.addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); -engine.addInputVariable(inputVariable2); +InputVariable Service = new InputVariable(); +Service.setName("Service"); +Service.setDescription(""); +Service.setEnabled(true); +Service.setRange(1.000, 10.000); +Service.setLockValueInRange(false); +Service.addTerm(new Trapezoid("Bad", 0.000, 1.000, 3.000, 7.000)); +Service.addTerm(new Trapezoid("Good", 3.000, 7.000, 10.000, 11.000)); +engine.addInputVariable(Service); -OutputVariable outputVariable1 = new OutputVariable(); -outputVariable1.setEnabled(true); -outputVariable1.setName("CheapTip"); -outputVariable1.setRange(5.000, 25.000); -outputVariable1.fuzzyOutput().setAccumulation(null); -outputVariable1.setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable1.setDefaultValue(Double.NaN); -outputVariable1.setLockPreviousOutputValue(false); -outputVariable1.setLockOutputValueInRange(false); -outputVariable1.addTerm(new Constant("Low", 10.000)); -outputVariable1.addTerm(new Constant("Medium", 15.000)); -outputVariable1.addTerm(new Constant("High", 20.000)); -engine.addOutputVariable(outputVariable1); +OutputVariable CheapTip = new OutputVariable(); +CheapTip.setName("CheapTip"); +CheapTip.setDescription(""); +CheapTip.setEnabled(true); +CheapTip.setRange(5.000, 25.000); +CheapTip.setLockValueInRange(false); +CheapTip.setAggregation(null); +CheapTip.setDefuzzifier(new WeightedAverage("TakagiSugeno")); +CheapTip.setDefaultValue(Double.NaN); +CheapTip.setLockPreviousValue(false); +CheapTip.addTerm(new Constant("Low", 10.000)); +CheapTip.addTerm(new Constant("Medium", 15.000)); +CheapTip.addTerm(new Constant("High", 20.000)); +engine.addOutputVariable(CheapTip); -OutputVariable outputVariable2 = new OutputVariable(); -outputVariable2.setEnabled(true); -outputVariable2.setName("AverageTip"); -outputVariable2.setRange(5.000, 25.000); -outputVariable2.fuzzyOutput().setAccumulation(null); -outputVariable2.setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable2.setDefaultValue(Double.NaN); -outputVariable2.setLockPreviousOutputValue(false); -outputVariable2.setLockOutputValueInRange(false); -outputVariable2.addTerm(new Constant("Low", 10.000)); -outputVariable2.addTerm(new Constant("Medium", 15.000)); -outputVariable2.addTerm(new Constant("High", 20.000)); -engine.addOutputVariable(outputVariable2); +OutputVariable AverageTip = new OutputVariable(); +AverageTip.setName("AverageTip"); +AverageTip.setDescription(""); +AverageTip.setEnabled(true); +AverageTip.setRange(5.000, 25.000); +AverageTip.setLockValueInRange(false); +AverageTip.setAggregation(null); +AverageTip.setDefuzzifier(new WeightedAverage("TakagiSugeno")); +AverageTip.setDefaultValue(Double.NaN); +AverageTip.setLockPreviousValue(false); +AverageTip.addTerm(new Constant("Low", 10.000)); +AverageTip.addTerm(new Constant("Medium", 15.000)); +AverageTip.addTerm(new Constant("High", 20.000)); +engine.addOutputVariable(AverageTip); -OutputVariable outputVariable3 = new OutputVariable(); -outputVariable3.setEnabled(true); -outputVariable3.setName("GenerousTip"); -outputVariable3.setRange(5.000, 25.000); -outputVariable3.fuzzyOutput().setAccumulation(null); -outputVariable3.setDefuzzifier(new WeightedAverage("TakagiSugeno")); -outputVariable3.setDefaultValue(Double.NaN); -outputVariable3.setLockPreviousOutputValue(false); -outputVariable3.setLockOutputValueInRange(false); -outputVariable3.addTerm(new Constant("Low", 10.000)); -outputVariable3.addTerm(new Constant("Medium", 15.000)); -outputVariable3.addTerm(new Constant("High", 20.000)); -engine.addOutputVariable(outputVariable3); +OutputVariable GenerousTip = new OutputVariable(); +GenerousTip.setName("GenerousTip"); +GenerousTip.setDescription(""); +GenerousTip.setEnabled(true); +GenerousTip.setRange(5.000, 25.000); +GenerousTip.setLockValueInRange(false); +GenerousTip.setAggregation(null); +GenerousTip.setDefuzzifier(new WeightedAverage("TakagiSugeno")); +GenerousTip.setDefaultValue(Double.NaN); +GenerousTip.setLockPreviousValue(false); +GenerousTip.addTerm(new Constant("Low", 10.000)); +GenerousTip.addTerm(new Constant("Medium", 15.000)); +GenerousTip.addTerm(new Constant("High", 20.000)); +engine.addOutputVariable(GenerousTip); RuleBlock ruleBlock = new RuleBlock(); -ruleBlock.setEnabled(true); ruleBlock.setName(""); +ruleBlock.setDescription(""); +ruleBlock.setEnabled(true); ruleBlock.setConjunction(new EinsteinProduct()); ruleBlock.setDisjunction(null); -ruleBlock.setActivation(null); +ruleBlock.setImplication(null); +ruleBlock.setActivation(new General()); ruleBlock.addRule(Rule.parse("if FoodQuality is extremely Bad and Service is extremely Bad then CheapTip is extremely Low and AverageTip is very Low and GenerousTip is Low", engine)); ruleBlock.addRule(Rule.parse("if FoodQuality is Good and Service is extremely Bad then CheapTip is Low and AverageTip is Low and GenerousTip is Medium", engine)); ruleBlock.addRule(Rule.parse("if FoodQuality is very Good and Service is very Bad then CheapTip is Low and AverageTip is Medium and GenerousTip is High", engine)); diff --git a/examples/takagi-sugeno/octave/sugeno_tip_calculator.pdf b/examples/takagi-sugeno/octave/sugeno_tip_calculator.pdf Binary files differnew file mode 100644 index 0000000..f138223 --- /dev/null +++ b/examples/takagi-sugeno/octave/sugeno_tip_calculator.pdf |