//Code automatically generated with fuzzylite 6.0.

FUNCTION_BLOCK cubic_approximator

VAR_INPUT
  X: REAL;
END_VAR

VAR_OUTPUT
  ApproxXCubed: REAL;
END_VAR

FUZZIFY X
  RANGE := (-5.000 .. 5.000);
  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;
END_FUZZIFY

DEFUZZIFY ApproxXCubed
  RANGE := (-5.000 .. 5.000);
  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;
  METHOD : COGS;
  DEFAULT := nan;
END_DEFUZZIFY

RULEBLOCK 
  RULE 1 : if X is AboutNegFive then ApproxXCubed is TangentatNegFive
  RULE 2 : if X is AboutNegFour then ApproxXCubed is TangentatNegFour
  RULE 3 : if X is AboutNegThree then ApproxXCubed is TangentatNegThree
  RULE 4 : if X is AboutNegTwo then ApproxXCubed is TangentatNegTwo
  RULE 5 : if X is AboutNegOne then ApproxXCubed is TangentatNegOne
  RULE 6 : if X is AboutZero then ApproxXCubed is TangentatZero
  RULE 7 : if X is AboutOne then ApproxXCubed is TangentatOne
  RULE 8 : if X is AboutTwo then ApproxXCubed is TangentatTwo
  RULE 9 : if X is AboutThree then ApproxXCubed is TangentatThree
  RULE 10 : if X is AboutFour then ApproxXCubed is TangentatFour
  RULE 11 : if X is AboutFive then ApproxXCubed is TangentatFive
END_RULEBLOCK

END_FUNCTION_BLOCK
