/* This file was automatically generated by fcc. Do not modify. */

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

#include "cartcontroller.h"

/* ------------------------------------------------------------ */

#ifndef min
#define min(a,b) ((a) < (b) ? (a) : (b))
#define max(a,b) ((a) > (b) ? (a) : (b))
#endif

#define FC_IS_F    1
#define FC_ISNOT_F 2
#define FC_IS_C    3
#define FC_ISNOT_C 4
#define FLMEMF_InputPO1 0
#define FLMEMF_InputZE1 1
#define FLMEMF_InputNE1 2
#define FLMEMF_InputVS1 3
#define FLMEMF_InputPO2 4
#define FLMEMF_InputZE2 5
#define FLMEMF_InputNE2 6
#define FLMEMF_InputVS2 7
#define FLMEMF_InputPO3 8
#define FLMEMF_InputNE3 9
#define FLMEMF_InputPO4 10
#define FLMEMF_InputNE4 11
#define FLMEMF_InputPS4 12
#define FLMEMF_InputNS4 13
#define FLMEMF_ControlPL 0
#define FLMEMF_ControlPM 1
#define FLMEMF_ControlPS 2
#define FLMEMF_ControlPVS 3
#define FLMEMF_ControlZE 4
#define FLMEMF_ControlNL 5
#define FLMEMF_ControlNM 6
#define FLMEMF_ControlNS 7
#define FLMEMF_ControlNVS 8
static int flmemfunc_subsets[2] = {14,9};
#define FLVAR_Pos 0
#define FLVAR_Posdot 1
#define FLVAR_Angle 2
#define FLVAR_Angledot 3
#define FLVAR_Control 4
#define FL_NUMVARIABLES 5

/* ------------------------------------------------------------ */

static int    flvariable_set[FL_NUMVARIABLES]; 
static double flvariable_val[FL_NUMVARIABLES]; 
static double flvariable_def[FL_NUMVARIABLES] = {0,0,0,0,0};
static double flvarPos[14];
static double flvarPosdot[14];
static double flvarAngle[14];
static double flvarAngledot[14];
static double flvarControl[9];
/* ------------------------------------------------------------ */

static void FL_Initialize(int all)

{
  register int i;

  if (all)
     for (i = 0; i < FL_NUMVARIABLES; i++)
         {
          flvariable_set[i] = 0;

         }

  for (i = 0; i < 14; i++)
      flvarPos[i] = 0.0;
  for (i = 0; i < 14; i++)
      flvarPosdot[i] = 0.0;
  for (i = 0; i < 14; i++)
      flvarAngle[i] = 0.0;
  for (i = 0; i < 14; i++)
      flvarAngledot[i] = 0.0;
  for (i = 0; i < 9; i++)
      flvarControl[i] = 0.0;
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputPO1(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.300000);
  if (value >= 0.300000)
     result = 1.000000;
  else
    if ((value <= 0.300000) && (delta <= 0.300000))
       result = 1.0 - delta * 3.333333;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputZE1(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.000000);
  if ((value >= 0.000000) && (delta <= 0.300000))
     result = 1.0 - delta * 3.333333;
  else
    if ((value <= 0.000000) && (delta <= 0.300000))
       result = 1.0 - delta * 3.333333;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputNE1(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - -0.300000);
  if ((value >= -0.300000) && (delta <= 0.300000))
     result = 1.0 - delta * 3.333333;
  else
  if (value <= -0.300000)
     result = 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputVS1(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.000000);
  if ((value >= 0.000000) && (delta <= 0.050000))
     result = 1.0 - delta * 20.000000;
  else
    if ((value <= 0.000000) && (delta <= 0.050000))
       result = 1.0 - delta * 20.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputPO2(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 1.000000);
  if (value >= 1.000000)
     result = 1.000000;
  else
    if ((value <= 1.000000) && (delta <= 1.000000))
       result = 1.0 - delta * 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputZE2(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.000000);
  if ((value >= 0.000000) && (delta <= 1.000000))
     result = 1.0 - delta * 1.000000;
  else
    if ((value <= 0.000000) && (delta <= 1.000000))
       result = 1.0 - delta * 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputNE2(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - -1.000000);
  if ((value >= -1.000000) && (delta <= 1.000000))
     result = 1.0 - delta * 1.000000;
  else
  if (value <= -1.000000)
     result = 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputVS2(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.000000);
  if ((value >= 0.000000) && (delta <= 0.100000))
     result = 1.0 - delta * 10.000000;
  else
    if ((value <= 0.000000) && (delta <= 0.100000))
       result = 1.0 - delta * 10.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputPO3(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.500000);
  if (value >= 0.500000)
     result = 1.000000;
  else
    if ((value <= 0.500000) && (delta <= 0.500000))
       result = 1.0 - delta * 2.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputNE3(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - -0.500000);
  if ((value >= -0.500000) && (delta <= 0.500000))
     result = 1.0 - delta * 2.000000;
  else
  if (value <= -0.500000)
     result = 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputPO4(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 1.000000);
  if (value >= 1.000000)
     result = 1.000000;
  else
    if ((value <= 1.000000) && (delta <= 1.000000))
       result = 1.0 - delta * 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputNE4(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - -1.000000);
  if ((value >= -1.000000) && (delta <= 1.000000))
     result = 1.0 - delta * 1.000000;
  else
  if (value <= -1.000000)
     result = 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputPS4(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.000000);
  if ((value >= 0.000000) && (delta <= 1.000000))
     result = 1.0 - delta * 1.000000;
  else
    if ((value <= 0.000000) && (delta <= 0.010000))
       result = 1.0 - delta * 100.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipInputNS4(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.000000);
  if ((value >= 0.000000) && (delta <= 0.010000))
     result = 1.0 - delta * 100.000000;
  else
    if ((value <= 0.000000) && (delta <= 1.000000))
       result = 1.0 - delta * 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlPL(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 20.000000);
  if ((value >= 20.000000) && (delta <= 50.000000))
     result = 1.0 - delta * 0.020000;
  else
    if ((value <= 20.000000) && (delta <= 5.000000))
       result = 1.0 - delta * 0.200000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlPM(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 10.000000);
  if ((value >= 10.000000) && (delta <= 5.000000))
     result = 1.0 - delta * 0.200000;
  else
    if ((value <= 10.000000) && (delta <= 5.000000))
       result = 1.0 - delta * 0.200000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlPS(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 5.000000);
  if ((value >= 5.000000) && (delta <= 5.000000))
     result = 1.0 - delta * 0.200000;
  else
    if ((value <= 5.000000) && (delta <= 4.000000))
       result = 1.0 - delta * 0.250000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlPVS(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 1.000000);
  if ((value >= 1.000000) && (delta <= 1.000000))
     result = 1.0 - delta * 1.000000;
  else
    if ((value <= 1.000000) && (delta <= 1.000000))
       result = 1.0 - delta * 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlZE(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - 0.000000);
  if ((value >= 0.000000) && (delta <= 1.000000))
     result = 1.0 - delta * 1.000000;
  else
    if ((value <= 0.000000) && (delta <= 1.000000))
       result = 1.0 - delta * 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlNL(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - -20.000000);
  if ((value >= -20.000000) && (delta <= 5.000000))
     result = 1.0 - delta * 0.200000;
  else
    if ((value <= -20.000000) && (delta <= 50.000000))
       result = 1.0 - delta * 0.020000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlNM(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - -10.000000);
  if ((value >= -10.000000) && (delta <= 5.000000))
     result = 1.0 - delta * 0.200000;
  else
    if ((value <= -10.000000) && (delta <= 6.000000))
       result = 1.0 - delta * 0.166667;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlNS(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - -5.000000);
  if ((value >= -5.000000) && (delta <= 4.000000))
     result = 1.0 - delta * 0.250000;
  else
    if ((value <= -5.000000) && (delta <= 5.000000))
       result = 1.0 - delta * 0.200000;
  return(result);
}

/* ------------------------------------------------------------ */

static double FL_MemshipControlNVS(double value)

{
  double result,delta;

  result = 0.0;
  delta  = fabs(value - -1.000000);
  if ((value >= -1.000000) && (delta <= 1.000000))
     result = 1.0 - delta * 1.000000;
  else
    if ((value <= -1.000000) && (delta <= 1.000000))
       result = 1.0 - delta * 1.000000;
  return(result);
}

/* ------------------------------------------------------------ */

void FL_SetcartcontrollerPos(double value)

{
  flvariable_val[FLVAR_Pos] = value;
}

/* ------------------------------------------------------------ */

void FL_SetcartcontrollerPosdot(double value)

{
  flvariable_val[FLVAR_Posdot] = value;
}

/* ------------------------------------------------------------ */

void FL_SetcartcontrollerAngle(double value)

{
  flvariable_val[FLVAR_Angle] = value;
}

/* ------------------------------------------------------------ */

void FL_SetcartcontrollerAngledot(double value)

{
  flvariable_val[FLVAR_Angledot] = value;
}

/* ------------------------------------------------------------ */

void FL_SetcartcontrollerControl(double value)

{
  flvariable_val[FLVAR_Control] = value;
}

/* ------------------------------------------------------------ */

double FL_GetcartcontrollerPos(void)

{
  if (flvariable_set[FLVAR_Pos])
     return(flvariable_val[FLVAR_Pos]);
  return(flvariable_def[FLVAR_Pos]);
}

/* ------------------------------------------------------------ */

double FL_GetcartcontrollerPosdot(void)

{
  if (flvariable_set[FLVAR_Posdot])
     return(flvariable_val[FLVAR_Posdot]);
  return(flvariable_def[FLVAR_Posdot]);
}

/* ------------------------------------------------------------ */

double FL_GetcartcontrollerAngle(void)

{
  if (flvariable_set[FLVAR_Angle])
     return(flvariable_val[FLVAR_Angle]);
  return(flvariable_def[FLVAR_Angle]);
}

/* ------------------------------------------------------------ */

double FL_GetcartcontrollerAngledot(void)

{
  if (flvariable_set[FLVAR_Angledot])
     return(flvariable_val[FLVAR_Angledot]);
  return(flvariable_def[FLVAR_Angledot]);
}

/* ------------------------------------------------------------ */

double FL_GetcartcontrollerControl(void)

{
  if (flvariable_set[FLVAR_Control])
     return(flvariable_val[FLVAR_Control]);
  return(flvariable_def[FLVAR_Control]);
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule1(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputPO1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputPO2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlPL]     = max(result,flvarControl[FLMEMF_ControlPL]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule2(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputPO1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputZE2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlPM]     = max(result,flvarControl[FLMEMF_ControlPM]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule3(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputPO1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputNE2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlZE]     = max(result,flvarControl[FLMEMF_ControlZE]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule4(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputZE1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputPO2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlPS]     = max(result,flvarControl[FLMEMF_ControlPS]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule5(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputZE1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputZE2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlZE]     = max(result,flvarControl[FLMEMF_ControlZE]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule6(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputZE1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputNE2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlNS]     = max(result,flvarControl[FLMEMF_ControlNS]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule7(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputNE1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputPO2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlZE]     = max(result,flvarControl[FLMEMF_ControlZE]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule8(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputNE1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputZE2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlNM]     = max(result,flvarControl[FLMEMF_ControlNM]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule9(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputNE1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputNE2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlNL]     = max(result,flvarControl[FLMEMF_ControlNL]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule10(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputVS1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputVS2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputPO3(flvariable_val[FLVAR_Pos]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputPO4(flvariable_val[FLVAR_Posdot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlPM]     = max(result,flvarControl[FLMEMF_ControlPM]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule11(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputVS1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputVS2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputPO3(flvariable_val[FLVAR_Pos]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputPS4(flvariable_val[FLVAR_Posdot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlPS]     = max(result,flvarControl[FLMEMF_ControlPS]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule12(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputVS1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputVS2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputNE3(flvariable_val[FLVAR_Pos]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputNE4(flvariable_val[FLVAR_Posdot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlNM]     = max(result,flvarControl[FLMEMF_ControlNM]); 
}

/* ------------------------------------------------------------ */

static void FL_RuleMainRule13(void)

{
  double result,degree,temp; 
 
   result = 1.0;

     degree = 0.0;
     temp = FL_MemshipInputVS1(flvariable_val[FLVAR_Angle]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputVS2(flvariable_val[FLVAR_Angledot]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputNE3(flvariable_val[FLVAR_Pos]);
     degree  = max(temp,degree);

   result = min(degree,result);

     degree = 0.0;
     temp = FL_MemshipInputNS4(flvariable_val[FLVAR_Posdot]);
     degree  = max(temp,degree);

   result = min(degree,result);


   flvariable_set[FLVAR_Control] = 1; 
   flvarControl[FLMEMF_ControlNS]     = max(result,flvarControl[FLMEMF_ControlNS]); 
}

/* ------------------------------------------------------------ */

static void FL_ObjectMain(void)

{
   register int    i,defuzzify;
   register double sum,value;

   /* Reset Variable Control */
   flvariable_set[FLVAR_Control] = 0;
   for (i = 0; i < 9; i++)
      flvarControl[i] = 0.0;
   FL_RuleMainRule1();
   FL_RuleMainRule2();
   FL_RuleMainRule3();
   FL_RuleMainRule4();
   FL_RuleMainRule5();
   FL_RuleMainRule6();
   FL_RuleMainRule7();
   FL_RuleMainRule8();
   FL_RuleMainRule9();
   FL_RuleMainRule10();
   FL_RuleMainRule11();
   FL_RuleMainRule12();
   FL_RuleMainRule13();
   /* Evaluate Variable Control */
   for (defuzzify = 0, i = 0; ((i < 9) && (!defuzzify)); i++)
       if (flvarControl[i] > 0.0)
          defuzzify = 1;

   if (defuzzify)
      {
       sum = 0;
       for (i = 0; i < 9; i++)
           sum += flvarControl[i];
       value = 0;
       value += (flvarControl[0] * 20.000000);
       value += (flvarControl[1] * 10.000000);
       value += (flvarControl[2] * 5.000000);
       value += (flvarControl[3] * 1.000000);
       value += (flvarControl[4] * 0.000000);
       value += (flvarControl[5] * -20.000000);
       value += (flvarControl[6] * -10.000000);
       value += (flvarControl[7] * -5.000000);
       value += (flvarControl[8] * -1.000000);
       flvariable_val[FLVAR_Control] = value/sum;
      }
}
void FL_Runcartcontroller(void)

{
   FL_ObjectMain();
}
