//+------------------------------------------------------------------+
//|                                Trend direction & force index.mq4 |
//|                                                           mladen |
//| original metastock indicator made by Piotr Wojdylo               |
//+------------------------------------------------------------------+
#property copyright "mladen"
#property link      "mladenfx@gmail.com"
#property indicator_separate_window
#property indicator_maximum  1
#property indicator_minimum  -1
#property indicator_buffers  5
#property indicator_color1   SlateGray
#property indicator_color2   Lime
#property indicator_color3   Lime
#property indicator_color4   Red
#property indicator_color5   Red

enum   enDouble{max,mima,min};
input  enDouble mm             = max;
extern int      TrendPeriod    = 9;
extern int      mnj            = 3;
extern bool     Color          = true;
extern bool     eco            = false;

int length,tr1_1,tr1_2,tr1_3,tr1_4,tr2_1,tr2_2,tr2_3,tr2_4,tr3_1,tr3_2,tr3_3,tr3_4,tr4_1,tr4_2,tr4_3,tr4_4;
datetime time0;
double B0[],B1[],B2[],B3[],B4[],//Btr1[],Btr2[],Bup[],Bdw[],
 B_1_1_0[], B_1_1_1[],B_1_1_2[],B_1_1_3[],     B_1_2_0[], B_1_2_1[],B_1_2_2[],B_1_2_3[],     B_1_3_0[], B_1_3_1[],B_1_3_2[],B_1_3_3[],     B_1_4_0[], B_1_4_1[],B_1_4_2[],B_1_4_3[],
 B_1_5_0[],           B_1_5_2[],B_1_5_3[],     B_1_6_0[],           B_1_6_2[],B_1_6_3[],     B_1_7_0[],           B_1_7_2[],B_1_7_3[],     B_1_8_0[],           B_1_8_2[],B_1_8_3[],
 B_1_9_0[],           B_1_9_2[],B_1_9_3[],     B_1_10_0[],          B_1_10_2[],B_1_10_3[],   B_1_11_0[],          B_1_11_2[],B_1_11_3[],   B_1_12_0[],          B_1_12_2[],B_1_12_3[],
 B_1_13_0[],          B_1_13_2[],B_1_13_3[],   B_1_14_0[],          B_1_14_2[],B_1_14_3[],   B_1_15_0[],          B_1_15_2[],B_1_15_3[],   B_1_16_0[],          B_1_16_2[],B_1_16_3[],
 B_2_1_0[], B_2_1_1[],B_2_1_2[],B_2_1_3[],     B_2_2_0[], B_2_2_1[],B_2_2_2[],B_2_2_3[],     B_2_3_0[], B_2_3_1[],B_2_3_2[],B_2_3_3[],     B_2_4_0[], B_2_4_1[],B_2_4_2[],B_2_4_3[],
 B_2_5_0[],           B_2_5_2[],B_2_5_3[],     B_2_6_0[],           B_2_6_2[],B_2_6_3[],     B_2_7_0[],           B_2_7_2[],B_2_7_3[],     B_2_8_0[],           B_2_8_2[],B_2_8_3[],
 B_2_9_0[],           B_2_9_2[],B_2_9_3[],     B_2_10_0[],          B_2_10_2[],B_2_10_3[],   B_2_11_0[],          B_2_11_2[],B_2_11_3[],   B_2_12_0[],          B_2_12_2[],B_2_12_3[],
 B_2_13_0[],          B_2_13_2[],B_2_13_3[],   B_2_14_0[],          B_2_14_2[],B_2_14_3[],   B_2_15_0[],          B_2_15_2[],B_2_15_3[],   B_2_16_0[],          B_2_16_2[],B_2_16_3[],
 B_3_1_0[], B_3_1_1[],B_3_1_2[],B_3_1_3[],     B_3_2_0[], B_3_2_1[],B_3_2_2[],B_3_2_3[],     B_3_3_0[], B_3_3_1[],B_3_3_2[],B_3_3_3[],     B_3_4_0[], B_3_4_1[],B_3_4_2[],B_3_4_3[],
 B_3_5_0[],           B_3_5_2[],B_3_5_3[],     B_3_6_0[],           B_3_6_2[],B_3_6_3[],     B_3_7_0[],           B_3_7_2[],B_3_7_3[],     B_3_8_0[],           B_3_8_2[],B_3_8_3[],
 B_3_9_0[],           B_3_9_2[],B_3_9_3[],     B_3_10_0[],          B_3_10_2[],B_3_10_3[],   B_3_11_0[],          B_3_11_2[],B_3_11_3[],   B_3_12_0[],          B_3_12_2[],B_3_12_3[],
 B_3_13_0[],          B_3_13_2[],B_3_13_3[],   B_3_14_0[],          B_3_14_2[],B_3_14_3[],   B_3_15_0[],          B_3_15_2[],B_3_15_3[],   B_3_16_0[],          B_3_16_2[],B_3_16_3[],
 B_4_1_0[], B_4_1_1[],B_4_1_2[],B_4_1_3[],     B_4_2_0[], B_4_2_1[],B_4_2_2[],B_4_2_3[],     B_4_3_0[], B_4_3_1[],B_4_3_2[],B_4_3_3[],     B_4_4_0[], B_4_4_1[],B_4_4_2[],B_4_4_3[],
 B_4_5_0[],           B_4_5_2[],B_4_5_3[],     B_4_6_0[],           B_4_6_2[],B_4_6_3[],     B_4_7_0[],           B_4_7_2[],B_4_7_3[],     B_4_8_0[],           B_4_8_2[],B_4_8_3[],
 B_4_9_0[],           B_4_9_2[],B_4_9_3[],     B_4_10_0[],          B_4_10_2[],B_4_10_3[],   B_4_11_0[],          B_4_11_2[],B_4_11_3[],   B_4_12_0[],          B_4_12_2[],B_4_12_3[],
 B_4_13_0[],          B_4_13_2[],B_4_13_3[],   B_4_14_0[],          B_4_14_2[],B_4_14_3[],   B_4_15_0[],          B_4_15_2[],B_4_15_3[],   B_4_16_0[],          B_4_16_2[],B_4_16_3[];

int init(){
   IndicatorBuffers(217);
   SetIndexBuffer(0,B0);
   SetIndexBuffer(1,B1);     SetIndexLabel(1,NULL);
   SetIndexBuffer(2,B2);     SetIndexLabel(2,NULL);
   SetIndexBuffer(3,B3);     SetIndexLabel(3,NULL);
   SetIndexBuffer(4,B4);     SetIndexLabel(4,NULL);
   //SetIndexBuffer(5,Btr1);
   //SetIndexBuffer(6,Btr2);
   //SetIndexBuffer(7,Bup);
   //SetIndexBuffer(8,Bdw);
   SetIndexBuffer(9, B_1_1_0);  SetIndexBuffer(10,B_1_1_1);  SetIndexBuffer(11,B_1_1_2);   SetIndexBuffer(12,B_1_1_3);
   SetIndexBuffer(13,B_1_2_0);  SetIndexBuffer(14,B_1_2_1);  SetIndexBuffer(15,B_1_2_2);   SetIndexBuffer(16,B_1_2_3);
   SetIndexBuffer(17,B_1_3_0);  SetIndexBuffer(18,B_1_3_1);  SetIndexBuffer(19,B_1_3_2);   SetIndexBuffer(20,B_1_3_3);
   SetIndexBuffer(21,B_1_4_0);  SetIndexBuffer(22,B_1_4_1);  SetIndexBuffer(23,B_1_4_2);   SetIndexBuffer(24,B_1_4_3);
   SetIndexBuffer(25,B_1_5_0);                               SetIndexBuffer(26,B_1_5_2);   SetIndexBuffer(27,B_1_5_3);
   SetIndexBuffer(28,B_1_6_0);                               SetIndexBuffer(29,B_1_6_2);   SetIndexBuffer(30,B_1_6_3);
   SetIndexBuffer(31,B_1_7_0);                               SetIndexBuffer(32,B_1_7_2);   SetIndexBuffer(33,B_1_7_3);
   SetIndexBuffer(34,B_1_8_0);                               SetIndexBuffer(35,B_1_8_2);   SetIndexBuffer(36,B_1_8_3);
   SetIndexBuffer(37,B_1_9_0);                               SetIndexBuffer(38,B_1_9_2);   SetIndexBuffer(39,B_1_9_3);
   SetIndexBuffer(40,B_1_10_0);                              SetIndexBuffer(41,B_1_10_2);  SetIndexBuffer(42,B_1_10_3);
   SetIndexBuffer(43,B_1_11_0);                              SetIndexBuffer(44,B_1_11_2);  SetIndexBuffer(45,B_1_11_3);
   SetIndexBuffer(46,B_1_12_0);                              SetIndexBuffer(47,B_1_12_2);  SetIndexBuffer(48,B_1_12_3);
   SetIndexBuffer(49,B_1_13_0);                              SetIndexBuffer(50,B_1_13_2);  SetIndexBuffer(51,B_1_13_3);
   SetIndexBuffer(52,B_1_14_0);                              SetIndexBuffer(53,B_1_14_2);  SetIndexBuffer(54,B_1_14_3);
   SetIndexBuffer(55,B_1_15_0);                              SetIndexBuffer(56,B_1_15_2);  SetIndexBuffer(57,B_1_15_3);
   SetIndexBuffer(58,B_1_16_0);                              SetIndexBuffer(59,B_1_16_2);  SetIndexBuffer(60,B_1_16_3);
   SetIndexBuffer(61,B_2_1_0);  SetIndexBuffer(62,B_2_1_1);  SetIndexBuffer(63,B_2_1_2);   SetIndexBuffer(64,B_2_1_3);
   SetIndexBuffer(65,B_2_2_0);  SetIndexBuffer(66,B_2_2_1);  SetIndexBuffer(67,B_2_2_2);   SetIndexBuffer(68,B_2_2_3);
   SetIndexBuffer(69,B_2_3_0);  SetIndexBuffer(70,B_2_3_1);  SetIndexBuffer(71,B_2_3_2);   SetIndexBuffer(72,B_2_3_3);
   SetIndexBuffer(73,B_2_4_0);  SetIndexBuffer(74,B_2_4_1);  SetIndexBuffer(75,B_2_4_2);   SetIndexBuffer(76,B_2_4_3);
   SetIndexBuffer(77,B_2_5_0);                               SetIndexBuffer(78,B_2_5_2);   SetIndexBuffer(79,B_2_5_3);
   SetIndexBuffer(80,B_2_6_0);                               SetIndexBuffer(81,B_2_6_2);   SetIndexBuffer(82,B_2_6_3);
   SetIndexBuffer(83,B_2_7_0);                               SetIndexBuffer(84,B_2_7_2);   SetIndexBuffer(85,B_2_7_3);
   SetIndexBuffer(86,B_2_8_0);                               SetIndexBuffer(87,B_2_8_2);   SetIndexBuffer(88,B_2_8_3);
   SetIndexBuffer(89,B_2_9_0);                               SetIndexBuffer(90,B_2_9_2);   SetIndexBuffer(91,B_2_9_3);
   SetIndexBuffer(92,B_2_10_0);                              SetIndexBuffer(93,B_2_10_2);  SetIndexBuffer(94,B_2_10_3);
   SetIndexBuffer(95,B_2_11_0);                              SetIndexBuffer(96,B_2_11_2);  SetIndexBuffer(97,B_2_11_3);
   SetIndexBuffer(98,B_2_12_0);                              SetIndexBuffer(99,B_2_12_2);  SetIndexBuffer(100,B_2_12_3);
   SetIndexBuffer(101,B_2_13_0);                             SetIndexBuffer(102,B_2_13_2); SetIndexBuffer(103,B_2_13_3);
   SetIndexBuffer(104,B_2_14_0);                             SetIndexBuffer(105,B_2_14_2); SetIndexBuffer(106,B_2_14_3);
   SetIndexBuffer(107,B_2_15_0);                             SetIndexBuffer(108,B_2_15_2); SetIndexBuffer(109,B_2_15_3);
   SetIndexBuffer(110,B_2_16_0);                             SetIndexBuffer(111,B_2_16_2); SetIndexBuffer(112,B_2_16_3);
   SetIndexBuffer(113,B_3_1_0); SetIndexBuffer(114,B_3_1_1); SetIndexBuffer(115,B_3_1_2);  SetIndexBuffer(116,B_3_1_3);
   SetIndexBuffer(117,B_3_2_0); SetIndexBuffer(118,B_3_2_1); SetIndexBuffer(119,B_3_2_2);  SetIndexBuffer(120,B_3_2_3);
   SetIndexBuffer(121,B_3_3_0); SetIndexBuffer(122,B_3_3_1); SetIndexBuffer(123,B_3_3_2);  SetIndexBuffer(124,B_3_3_3);
   SetIndexBuffer(125,B_3_4_0); SetIndexBuffer(126,B_3_4_1); SetIndexBuffer(127,B_3_4_2);  SetIndexBuffer(128,B_3_4_3);
   SetIndexBuffer(129,B_3_5_0);                              SetIndexBuffer(130,B_3_5_2);  SetIndexBuffer(131,B_3_5_3);
   SetIndexBuffer(132,B_3_6_0);                              SetIndexBuffer(133,B_3_6_2);  SetIndexBuffer(134,B_3_6_3);
   SetIndexBuffer(135,B_3_7_0);                              SetIndexBuffer(136,B_3_7_2);  SetIndexBuffer(137,B_3_7_3);
   SetIndexBuffer(138,B_3_8_0);                              SetIndexBuffer(139,B_3_8_2);  SetIndexBuffer(140,B_3_8_3);
   SetIndexBuffer(141,B_3_9_0);                              SetIndexBuffer(142,B_3_9_2);  SetIndexBuffer(143,B_3_9_3);
   SetIndexBuffer(144,B_3_10_0);                             SetIndexBuffer(145,B_3_10_2); SetIndexBuffer(146,B_3_10_3);
   SetIndexBuffer(147,B_3_11_0);                             SetIndexBuffer(148,B_3_11_2); SetIndexBuffer(149,B_3_11_3);
   SetIndexBuffer(150,B_3_12_0);                             SetIndexBuffer(151,B_3_12_2); SetIndexBuffer(152,B_3_12_3);
   SetIndexBuffer(153,B_3_13_0);                             SetIndexBuffer(154,B_3_13_2); SetIndexBuffer(155,B_3_13_3);
   SetIndexBuffer(156,B_3_14_0);                             SetIndexBuffer(157,B_3_14_2); SetIndexBuffer(158,B_3_14_3);
   SetIndexBuffer(159,B_3_15_0);                             SetIndexBuffer(160,B_3_15_2); SetIndexBuffer(161,B_3_15_3);
   SetIndexBuffer(162,B_3_16_0);                             SetIndexBuffer(163,B_3_16_2); SetIndexBuffer(164,B_3_16_3);
   SetIndexBuffer(165,B_4_1_0); SetIndexBuffer(166,B_4_1_1); SetIndexBuffer(167,B_4_1_2);  SetIndexBuffer(168,B_4_1_3);
   SetIndexBuffer(169,B_4_2_0); SetIndexBuffer(170,B_4_2_1); SetIndexBuffer(171,B_4_2_2);  SetIndexBuffer(172,B_4_2_3);
   SetIndexBuffer(173,B_4_3_0); SetIndexBuffer(174,B_4_3_1); SetIndexBuffer(175,B_4_3_2);  SetIndexBuffer(176,B_4_3_3);
   SetIndexBuffer(177,B_4_4_0); SetIndexBuffer(178,B_4_4_1); SetIndexBuffer(179,B_4_4_2);  SetIndexBuffer(180,B_4_4_3);
   SetIndexBuffer(181,B_4_5_0);                              SetIndexBuffer(182,B_4_5_2);  SetIndexBuffer(183,B_4_5_3);
   SetIndexBuffer(184,B_4_6_0);                              SetIndexBuffer(185,B_4_6_2);  SetIndexBuffer(186,B_4_6_3);
   SetIndexBuffer(187,B_4_7_0);                              SetIndexBuffer(188,B_4_7_2);  SetIndexBuffer(189,B_4_7_3);
   SetIndexBuffer(190,B_4_8_0);                              SetIndexBuffer(191,B_4_8_2);  SetIndexBuffer(192,B_4_8_3);
   SetIndexBuffer(193,B_4_9_0);                              SetIndexBuffer(194,B_4_9_2);  SetIndexBuffer(195,B_4_9_3);
   SetIndexBuffer(196,B_4_10_0);                             SetIndexBuffer(197,B_4_10_2); SetIndexBuffer(198,B_4_10_3);
   SetIndexBuffer(199,B_4_11_0);                             SetIndexBuffer(200,B_4_11_2); SetIndexBuffer(201,B_4_11_3);
   SetIndexBuffer(202,B_4_12_0);                             SetIndexBuffer(203,B_4_12_2); SetIndexBuffer(204,B_4_12_3);
   SetIndexBuffer(205,B_4_13_0);                             SetIndexBuffer(206,B_4_13_2); SetIndexBuffer(207,B_4_13_3);
   SetIndexBuffer(208,B_4_14_0);                             SetIndexBuffer(209,B_4_14_2); SetIndexBuffer(210,B_4_14_3);
   SetIndexBuffer(211,B_4_15_0);                             SetIndexBuffer(212,B_4_15_2); SetIndexBuffer(213,B_4_15_3);
   SetIndexBuffer(214,B_4_16_0);                             SetIndexBuffer(215,B_4_16_2); SetIndexBuffer(216,B_4_16_3);
   IndicatorShortName(NULL);
   tr1_1=MathCeil(TrendPeriod*0.5); tr1_2=MathCeil(TrendPeriod*0.75); tr1_3=TrendPeriod;   tr1_4=MathCeil(TrendPeriod*1.25);
   if(tr1_1<2)tr1_1=2;              if(tr1_2<2)tr1_2=2;
   tr2_1=tr1_1+1;                   tr2_2=tr1_2+1;                    tr2_3=TrendPeriod+1; tr2_4=tr1_4+1;
   tr3_1=tr1_1+2;                   tr3_2=tr1_2+2;                    tr3_3=TrendPeriod+2; tr3_4=tr1_4+2;
   tr4_1=tr1_1+3;                   tr4_2=tr1_2+3;                    tr4_3=TrendPeriod+3; tr4_4=tr1_4+3;
   length=TrendPeriod*mnj;
   return(0);
}

int start(){int t0=1; if(eco==true && time0==Time[0]){return(0);}else
                      if(eco==true && time0!=Time[0]){time0=Time[0]; t0=0;}

   int i,limit=Bars-IndicatorCounted()-t0; double b4,b11,b21,b31,b41;

   for(i=limit;i>=0;i--){B_1_1_1[i]=iMA(NULL,0,tr1_1,0,2,0,i); B_1_2_1[i]=iMA(NULL,0,tr1_2,0,0,0,i); B_1_3_1[i]=iMA(NULL,0,tr1_3,0,1,0,i); B_1_4_1[i]=iMA(NULL,0,tr1_4,0,3,0,i);
                         B_2_1_1[i]=iMA(NULL,0,tr2_1,0,2,0,i); B_2_2_1[i]=iMA(NULL,0,tr2_2,0,0,0,i); B_2_3_1[i]=iMA(NULL,0,tr2_3,0,1,0,i); B_2_4_1[i]=iMA(NULL,0,tr2_4,0,3,0,i);
                         B_3_1_1[i]=iMA(NULL,0,tr3_1,0,2,0,i); B_3_2_1[i]=iMA(NULL,0,tr3_2,0,0,0,i); B_3_3_1[i]=iMA(NULL,0,tr3_3,0,1,0,i); B_3_4_1[i]=iMA(NULL,0,tr3_4,0,3,0,i);
                         B_4_1_1[i]=iMA(NULL,0,tr4_1,0,2,0,i); B_4_2_1[i]=iMA(NULL,0,tr4_2,0,0,0,i); B_4_3_1[i]=iMA(NULL,0,tr4_3,0,1,0,i); B_4_4_1[i]=iMA(NULL,0,tr4_4,0,3,0,i); }

   for(i=limit;i>=0;i--){b11=B_1_1_1[i]-B_1_1_1[i+1]; b21=B_1_2_1[i]-B_1_2_1[i+1]; b31=B_1_3_1[i]-B_1_3_1[i+1]; b41=B_1_4_1[i]-B_1_4_1[i+1]; double ma=-1, mi=1;
    B_1_1_2[i] =iMAOnArray(B_1_1_1,0,tr1_1,0,2,i); B_1_1_3[i] =MathAbs(B_1_1_1[i]-B_1_1_2[i]) *MathPow(b11+B_1_1_2[i] -B_1_1_2[i+1], 3); b4=absHighest(B_1_1_3, i);  if(b4>0){B_1_1_0[i] =B_1_1_3[i] /b4;} else{B_1_1_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_1_0[i]){ma=B_1_1_0[i];} if(mi>B_1_1_0[i]){mi=B_1_1_0[i];}}
    B_1_2_2[i] =iMAOnArray(B_1_2_1,0,tr1_2,0,0,i); B_1_2_3[i] =MathAbs(B_1_2_1[i]-B_1_2_2[i]) *MathPow(b21+B_1_2_2[i] -B_1_2_2[i+1], 3); b4=absHighest(B_1_2_3, i);  if(b4>0){B_1_2_0[i] =B_1_2_3[i] /b4;} else{B_1_2_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_2_0[i]){ma=B_1_2_0[i];} if(mi>B_1_2_0[i]){mi=B_1_2_0[i];}}
    B_1_3_2[i] =iMAOnArray(B_1_3_1,0,tr1_3,0,1,i); B_1_3_3[i] =MathAbs(B_1_3_1[i]-B_1_3_2[i]) *MathPow(b31+B_1_3_2[i] -B_1_3_2[i+1], 3); b4=absHighest(B_1_3_3, i);  if(b4>0){B_1_3_0[i] =B_1_3_3[i] /b4;} else{B_1_3_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_3_0[i]){ma=B_1_3_0[i];} if(mi>B_1_3_0[i]){mi=B_1_3_0[i];}}
    B_1_4_2[i] =iMAOnArray(B_1_4_1,0,tr1_4,0,3,i); B_1_4_3[i] =MathAbs(B_1_4_1[i]-B_1_4_2[i]) *MathPow(b41+B_1_4_2[i] -B_1_4_2[i+1], 3); b4=absHighest(B_1_4_3, i);  if(b4>0){B_1_4_0[i] =B_1_4_3[i] /b4;} else{B_1_4_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_4_0[i]){ma=B_1_4_0[i];} if(mi>B_1_4_0[i]){mi=B_1_4_0[i];}}
    B_1_5_2[i] =iMAOnArray(B_1_1_1,0,tr1_4,0,3,i); B_1_5_3[i] =MathAbs(B_1_1_1[i]-B_1_5_2[i]) *MathPow(b11+B_1_5_2[i] -B_1_5_2[i+1], 3); b4=absHighest(B_1_5_3, i);  if(b4>0){B_1_5_0[i] =B_1_5_3[i] /b4;} else{B_1_5_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_5_0[i]){ma=B_1_5_0[i];} if(mi>B_1_5_0[i]){mi=B_1_5_0[i];}}
    B_1_6_2[i] =iMAOnArray(B_1_2_1,0,tr1_1,0,2,i); B_1_6_3[i] =MathAbs(B_1_2_1[i]-B_1_6_2[i]) *MathPow(b21+B_1_6_2[i] -B_1_6_2[i+1], 3); b4=absHighest(B_1_6_3, i);  if(b4>0){B_1_6_0[i] =B_1_6_3[i] /b4;} else{B_1_6_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_6_0[i]){ma=B_1_6_0[i];} if(mi>B_1_6_0[i]){mi=B_1_6_0[i];}}
    B_1_7_2[i] =iMAOnArray(B_1_3_1,0,tr1_2,0,0,i); B_1_7_3[i] =MathAbs(B_1_3_1[i]-B_1_7_2[i]) *MathPow(b31+B_1_7_2[i] -B_1_7_2[i+1], 3); b4=absHighest(B_1_7_3, i);  if(b4>0){B_1_7_0[i] =B_1_7_3[i] /b4;} else{B_1_7_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_7_0[i]){ma=B_1_7_0[i];} if(mi>B_1_7_0[i]){mi=B_1_7_0[i];}}
    B_1_8_2[i] =iMAOnArray(B_1_4_1,0,tr1_3,0,1,i); B_1_8_3[i] =MathAbs(B_1_4_1[i]-B_1_8_2[i]) *MathPow(b41+B_1_8_2[i] -B_1_8_2[i+1], 3); b4=absHighest(B_1_8_3, i);  if(b4>0){B_1_8_0[i] =B_1_8_3[i] /b4;} else{B_1_8_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_8_0[i]){ma=B_1_8_0[i];} if(mi>B_1_8_0[i]){mi=B_1_8_0[i];}}
    B_1_9_2[i] =iMAOnArray(B_1_1_1,0,tr1_3,0,1,i); B_1_9_3[i] =MathAbs(B_1_1_1[i]-B_1_9_2[i]) *MathPow(b11+B_1_9_2[i] -B_1_9_2[i+1], 3); b4=absHighest(B_1_9_3, i);  if(b4>0){B_1_9_0[i] =B_1_9_3[i] /b4;} else{B_1_9_0[i] =0;} if(mm==max || mm==min){if(ma<B_1_9_0[i]){ma=B_1_9_0[i];} if(mi>B_1_9_0[i]){mi=B_1_9_0[i];}}
    B_1_10_2[i]=iMAOnArray(B_1_2_1,0,tr1_4,0,3,i); B_1_10_3[i]=MathAbs(B_1_2_1[i]-B_1_10_2[i])*MathPow(b21+B_1_10_2[i]-B_1_10_2[i+1],3); b4=absHighest(B_1_10_3,i);  if(b4>0){B_1_10_0[i]=B_1_10_3[i]/b4;} else{B_1_10_0[i]=0;} if(mm==max || mm==min){if(ma<B_1_10_0[i]){ma=B_1_10_0[i];} if(mi>B_1_10_0[i]){mi=B_1_10_0[i];}}
    B_1_11_2[i]=iMAOnArray(B_1_3_1,0,tr1_1,0,2,i); B_1_11_3[i]=MathAbs(B_1_3_1[i]-B_1_11_2[i])*MathPow(b31+B_1_11_2[i]-B_1_11_2[i+1],3); b4=absHighest(B_1_11_3,i);  if(b4>0){B_1_11_0[i]=B_1_11_3[i]/b4;} else{B_1_11_0[i]=0;} if(mm==max || mm==min){if(ma<B_1_11_0[i]){ma=B_1_11_0[i];} if(mi>B_1_11_0[i]){mi=B_1_11_0[i];}}
    B_1_12_2[i]=iMAOnArray(B_1_4_1,0,tr1_2,0,0,i); B_1_12_3[i]=MathAbs(B_1_4_1[i]-B_1_12_2[i])*MathPow(b41+B_1_12_2[i]-B_1_12_2[i+1],3); b4=absHighest(B_1_12_3,i);  if(b4>0){B_1_12_0[i]=B_1_12_3[i]/b4;} else{B_1_12_0[i]=0;} if(mm==max || mm==min){if(ma<B_1_12_0[i]){ma=B_1_12_0[i];} if(mi>B_1_12_0[i]){mi=B_1_12_0[i];}}
    B_1_13_2[i]=iMAOnArray(B_1_1_1,0,tr1_2,0,0,i); B_1_13_3[i]=MathAbs(B_1_1_1[i]-B_1_13_2[i])*MathPow(b11+B_1_13_2[i]-B_1_13_2[i+1],3); b4=absHighest(B_1_13_3,i);  if(b4>0){B_1_13_0[i]=B_1_13_3[i]/b4;} else{B_1_13_0[i]=0;} if(mm==max || mm==min){if(ma<B_1_13_0[i]){ma=B_1_13_0[i];} if(mi>B_1_13_0[i]){mi=B_1_13_0[i];}}
    B_1_14_2[i]=iMAOnArray(B_1_2_1,0,tr1_3,0,1,i); B_1_14_3[i]=MathAbs(B_1_2_1[i]-B_1_14_2[i])*MathPow(b21+B_1_14_2[i]-B_1_14_2[i+1],3); b4=absHighest(B_1_14_3,i);  if(b4>0){B_1_14_0[i]=B_1_14_3[i]/b4;} else{B_1_14_0[i]=0;} if(mm==max || mm==min){if(ma<B_1_14_0[i]){ma=B_1_14_0[i];} if(mi>B_1_14_0[i]){mi=B_1_14_0[i];}}
    B_1_15_2[i]=iMAOnArray(B_1_3_1,0,tr1_4,0,3,i); B_1_15_3[i]=MathAbs(B_1_3_1[i]-B_1_15_2[i])*MathPow(b31+B_1_15_2[i]-B_1_15_2[i+1],3); b4=absHighest(B_1_15_3,i);  if(b4>0){B_1_15_0[i]=B_1_15_3[i]/b4;} else{B_1_15_0[i]=0;} if(mm==max || mm==min){if(ma<B_1_15_0[i]){ma=B_1_15_0[i];} if(mi>B_1_15_0[i]){mi=B_1_15_0[i];}}
    B_1_16_2[i]=iMAOnArray(B_1_4_1,0,tr1_1,0,2,i); B_1_16_3[i]=MathAbs(B_1_4_1[i]-B_1_16_2[i])*MathPow(b41+B_1_16_2[i]-B_1_16_2[i+1],3); b4=absHighest(B_1_16_3,i);  if(b4>0){B_1_16_0[i]=B_1_16_3[i]/b4;} else{B_1_16_0[i]=0;} if(mm==max || mm==min){if(ma<B_1_16_0[i]){ma=B_1_16_0[i];} if(mi>B_1_16_0[i]){mi=B_1_16_0[i];}}
                         b11=B_2_1_1[i]-B_2_1_1[i+1]; b21=B_2_2_1[i]-B_2_2_1[i+1]; b31=B_2_3_1[i]-B_2_3_1[i+1]; b41=B_2_4_1[i]-B_2_4_1[i+1];
    B_2_1_2[i] =iMAOnArray(B_2_1_1,0,tr2_1,0,2,i); B_2_1_3[i] =MathAbs(B_2_1_1[i]-B_2_1_2[i]) *MathPow(b11+B_2_1_2[i] -B_2_1_2[i+1], 3); b4=absHighest(B_2_1_3, i);  if(b4>0){B_2_1_0[i] =B_2_1_3[i] /b4;} else{B_2_1_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_1_0[i]){ma=B_2_1_0[i];} if(mi>B_2_1_0[i]){mi=B_2_1_0[i];}}
    B_2_2_2[i] =iMAOnArray(B_2_2_1,0,tr2_2,0,0,i); B_2_2_3[i] =MathAbs(B_2_2_1[i]-B_2_2_2[i]) *MathPow(b21+B_2_2_2[i] -B_2_2_2[i+1], 3); b4=absHighest(B_2_2_3, i);  if(b4>0){B_2_2_0[i] =B_2_2_3[i] /b4;} else{B_2_2_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_2_0[i]){ma=B_2_2_0[i];} if(mi>B_2_2_0[i]){mi=B_2_2_0[i];}}
    B_2_3_2[i] =iMAOnArray(B_2_3_1,0,tr2_3,0,1,i); B_2_3_3[i] =MathAbs(B_2_3_1[i]-B_2_3_2[i]) *MathPow(b31+B_2_3_2[i] -B_2_3_2[i+1], 3); b4=absHighest(B_2_3_3, i);  if(b4>0){B_2_3_0[i] =B_2_3_3[i] /b4;} else{B_2_3_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_3_0[i]){ma=B_2_3_0[i];} if(mi>B_2_3_0[i]){mi=B_2_3_0[i];}}
    B_2_4_2[i] =iMAOnArray(B_2_4_1,0,tr2_4,0,3,i); B_2_4_3[i] =MathAbs(B_2_4_1[i]-B_2_4_2[i]) *MathPow(b41+B_2_4_2[i] -B_2_4_2[i+1], 3); b4=absHighest(B_2_4_3, i);  if(b4>0){B_2_4_0[i] =B_2_4_3[i] /b4;} else{B_2_4_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_4_0[i]){ma=B_2_4_0[i];} if(mi>B_2_4_0[i]){mi=B_2_4_0[i];}}
    B_2_5_2[i] =iMAOnArray(B_2_1_1,0,tr2_4,0,3,i); B_2_5_3[i] =MathAbs(B_2_1_1[i]-B_2_5_2[i]) *MathPow(b11+B_2_5_2[i] -B_2_5_2[i+1], 3); b4=absHighest(B_2_5_3, i);  if(b4>0){B_2_5_0[i] =B_2_5_3[i] /b4;} else{B_2_5_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_5_0[i]){ma=B_2_5_0[i];} if(mi>B_2_5_0[i]){mi=B_2_5_0[i];}}
    B_2_6_2[i] =iMAOnArray(B_2_2_1,0,tr2_1,0,2,i); B_2_6_3[i] =MathAbs(B_2_2_1[i]-B_2_6_2[i]) *MathPow(b21+B_2_6_2[i] -B_2_6_2[i+1], 3); b4=absHighest(B_2_6_3, i);  if(b4>0){B_2_6_0[i] =B_2_6_3[i] /b4;} else{B_2_6_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_6_0[i]){ma=B_2_6_0[i];} if(mi>B_2_6_0[i]){mi=B_2_6_0[i];}}
    B_2_7_2[i] =iMAOnArray(B_2_3_1,0,tr2_2,0,0,i); B_2_7_3[i] =MathAbs(B_2_3_1[i]-B_2_7_2[i]) *MathPow(b31+B_2_7_2[i] -B_2_7_2[i+1], 3); b4=absHighest(B_2_7_3, i);  if(b4>0){B_2_7_0[i] =B_2_7_3[i] /b4;} else{B_2_7_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_7_0[i]){ma=B_2_7_0[i];} if(mi>B_2_7_0[i]){mi=B_2_7_0[i];}}
    B_2_8_2[i] =iMAOnArray(B_2_4_1,0,tr2_3,0,1,i); B_2_8_3[i] =MathAbs(B_2_4_1[i]-B_2_8_2[i]) *MathPow(b41+B_2_8_2[i] -B_2_8_2[i+1], 3); b4=absHighest(B_2_8_3, i);  if(b4>0){B_2_8_0[i] =B_2_8_3[i] /b4;} else{B_2_8_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_8_0[i]){ma=B_2_8_0[i];} if(mi>B_2_8_0[i]){mi=B_2_8_0[i];}}
    B_2_9_2[i] =iMAOnArray(B_2_1_1,0,tr2_3,0,1,i); B_2_9_3[i] =MathAbs(B_2_1_1[i]-B_2_9_2[i]) *MathPow(b11+B_2_9_2[i] -B_2_9_2[i+1], 3); b4=absHighest(B_2_9_3, i);  if(b4>0){B_2_9_0[i] =B_2_9_3[i] /b4;} else{B_2_9_0[i] =0;} if(mm==max || mm==min){if(ma<B_2_9_0[i]){ma=B_2_9_0[i];} if(mi>B_2_9_0[i]){mi=B_2_9_0[i];}}
    B_2_10_2[i]=iMAOnArray(B_2_2_1,0,tr2_4,0,3,i); B_2_10_3[i]=MathAbs(B_2_2_1[i]-B_2_10_2[i])*MathPow(b21+B_2_10_2[i]-B_2_10_2[i+1],3); b4=absHighest(B_2_10_3,i);  if(b4>0){B_2_10_0[i]=B_2_10_3[i]/b4;} else{B_2_10_0[i]=0;} if(mm==max || mm==min){if(ma<B_2_10_0[i]){ma=B_2_10_0[i];} if(mi>B_2_10_0[i]){mi=B_2_10_0[i];}}
    B_2_11_2[i]=iMAOnArray(B_2_3_1,0,tr2_1,0,2,i); B_2_11_3[i]=MathAbs(B_2_3_1[i]-B_2_11_2[i])*MathPow(b31+B_2_11_2[i]-B_2_11_2[i+1],3); b4=absHighest(B_2_11_3,i);  if(b4>0){B_2_11_0[i]=B_2_11_3[i]/b4;} else{B_2_11_0[i]=0;} if(mm==max || mm==min){if(ma<B_2_11_0[i]){ma=B_2_11_0[i];} if(mi>B_2_11_0[i]){mi=B_2_11_0[i];}}
    B_2_12_2[i]=iMAOnArray(B_2_4_1,0,tr2_2,0,0,i); B_2_12_3[i]=MathAbs(B_2_4_1[i]-B_2_12_2[i])*MathPow(b41+B_2_12_2[i]-B_2_12_2[i+1],3); b4=absHighest(B_2_12_3,i);  if(b4>0){B_2_12_0[i]=B_2_12_3[i]/b4;} else{B_2_12_0[i]=0;} if(mm==max || mm==min){if(ma<B_2_12_0[i]){ma=B_2_12_0[i];} if(mi>B_2_12_0[i]){mi=B_2_12_0[i];}}
    B_2_13_2[i]=iMAOnArray(B_2_1_1,0,tr2_2,0,0,i); B_2_13_3[i]=MathAbs(B_2_1_1[i]-B_2_13_2[i])*MathPow(b11+B_2_13_2[i]-B_2_13_2[i+1],3); b4=absHighest(B_2_13_3,i);  if(b4>0){B_2_13_0[i]=B_2_13_3[i]/b4;} else{B_2_13_0[i]=0;} if(mm==max || mm==min){if(ma<B_2_13_0[i]){ma=B_2_13_0[i];} if(mi>B_2_13_0[i]){mi=B_2_13_0[i];}}
    B_2_14_2[i]=iMAOnArray(B_2_2_1,0,tr2_3,0,1,i); B_2_14_3[i]=MathAbs(B_2_2_1[i]-B_2_14_2[i])*MathPow(b21+B_2_14_2[i]-B_2_14_2[i+1],3); b4=absHighest(B_2_14_3,i);  if(b4>0){B_2_14_0[i]=B_2_14_3[i]/b4;} else{B_2_14_0[i]=0;} if(mm==max || mm==min){if(ma<B_2_14_0[i]){ma=B_2_14_0[i];} if(mi>B_2_14_0[i]){mi=B_2_14_0[i];}}
    B_2_15_2[i]=iMAOnArray(B_2_3_1,0,tr2_4,0,3,i); B_2_15_3[i]=MathAbs(B_2_3_1[i]-B_2_15_2[i])*MathPow(b31+B_2_15_2[i]-B_2_15_2[i+1],3); b4=absHighest(B_2_15_3,i);  if(b4>0){B_2_15_0[i]=B_2_15_3[i]/b4;} else{B_2_15_0[i]=0;} if(mm==max || mm==min){if(ma<B_2_15_0[i]){ma=B_2_15_0[i];} if(mi>B_2_15_0[i]){mi=B_2_15_0[i];}}
    B_2_16_2[i]=iMAOnArray(B_2_4_1,0,tr2_1,0,2,i); B_2_16_3[i]=MathAbs(B_2_4_1[i]-B_2_16_2[i])*MathPow(b41+B_2_16_2[i]-B_2_16_2[i+1],3); b4=absHighest(B_2_16_3,i);  if(b4>0){B_2_16_0[i]=B_2_16_3[i]/b4;} else{B_2_16_0[i]=0;} if(mm==max || mm==min){if(ma<B_2_16_0[i]){ma=B_2_16_0[i];} if(mi>B_2_16_0[i]){mi=B_2_16_0[i];}}
                         b11=B_3_1_1[i]-B_3_1_1[i+1]; b21=B_3_2_1[i]-B_3_2_1[i+1]; b31=B_3_3_1[i]-B_3_3_1[i+1]; b41=B_3_4_1[i]-B_3_4_1[i+1];
    B_3_1_2[i] =iMAOnArray(B_3_1_1,0,tr3_1,0,2,i); B_3_1_3[i] =MathAbs(B_3_1_1[i]-B_3_1_2[i]) *MathPow(b11+B_3_1_2[i] -B_3_1_2[i+1], 3); b4=absHighest(B_3_1_3, i);  if(b4>0){B_3_1_0[i] =B_3_1_3[i] /b4;} else{B_3_1_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_1_0[i]){ma=B_3_1_0[i];} if(mi>B_3_1_0[i]){mi=B_3_1_0[i];}}
    B_3_2_2[i] =iMAOnArray(B_3_2_1,0,tr3_2,0,0,i); B_3_2_3[i] =MathAbs(B_3_2_1[i]-B_3_2_2[i]) *MathPow(b21+B_3_2_2[i] -B_3_2_2[i+1], 3); b4=absHighest(B_3_2_3, i);  if(b4>0){B_3_2_0[i] =B_3_2_3[i] /b4;} else{B_3_2_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_2_0[i]){ma=B_3_2_0[i];} if(mi>B_3_2_0[i]){mi=B_3_2_0[i];}}
    B_3_3_2[i] =iMAOnArray(B_3_3_1,0,tr3_3,0,1,i); B_3_3_3[i] =MathAbs(B_3_3_1[i]-B_3_3_2[i]) *MathPow(b31+B_3_3_2[i] -B_3_3_2[i+1], 3); b4=absHighest(B_3_3_3, i);  if(b4>0){B_3_3_0[i] =B_3_3_3[i] /b4;} else{B_3_3_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_3_0[i]){ma=B_3_3_0[i];} if(mi>B_3_3_0[i]){mi=B_3_3_0[i];}}
    B_3_4_2[i] =iMAOnArray(B_3_4_1,0,tr3_4,0,3,i); B_3_4_3[i] =MathAbs(B_3_4_1[i]-B_3_4_2[i]) *MathPow(b41+B_3_4_2[i] -B_3_4_2[i+1], 3); b4=absHighest(B_3_4_3, i);  if(b4>0){B_3_4_0[i] =B_3_4_3[i] /b4;} else{B_3_4_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_4_0[i]){ma=B_3_4_0[i];} if(mi>B_3_4_0[i]){mi=B_3_4_0[i];}}
    B_3_5_2[i] =iMAOnArray(B_3_1_1,0,tr3_4,0,3,i); B_3_5_3[i] =MathAbs(B_3_1_1[i]-B_3_5_2[i]) *MathPow(b11+B_3_5_2[i] -B_3_5_2[i+1], 3); b4=absHighest(B_3_5_3, i);  if(b4>0){B_3_5_0[i] =B_3_5_3[i] /b4;} else{B_3_5_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_5_0[i]){ma=B_3_5_0[i];} if(mi>B_3_5_0[i]){mi=B_3_5_0[i];}}
    B_3_6_2[i] =iMAOnArray(B_3_2_1,0,tr3_1,0,2,i); B_3_6_3[i] =MathAbs(B_3_2_1[i]-B_3_6_2[i]) *MathPow(b21+B_3_6_2[i] -B_3_6_2[i+1], 3); b4=absHighest(B_3_6_3, i);  if(b4>0){B_3_6_0[i] =B_3_6_3[i] /b4;} else{B_3_6_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_6_0[i]){ma=B_3_6_0[i];} if(mi>B_3_6_0[i]){mi=B_3_6_0[i];}}
    B_3_7_2[i] =iMAOnArray(B_3_3_1,0,tr3_2,0,0,i); B_3_7_3[i] =MathAbs(B_3_3_1[i]-B_3_7_2[i]) *MathPow(b31+B_3_7_2[i] -B_3_7_2[i+1], 3); b4=absHighest(B_3_7_3, i);  if(b4>0){B_3_7_0[i] =B_3_7_3[i] /b4;} else{B_3_7_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_7_0[i]){ma=B_3_7_0[i];} if(mi>B_3_7_0[i]){mi=B_3_7_0[i];}}
    B_3_8_2[i] =iMAOnArray(B_3_4_1,0,tr3_3,0,1,i); B_3_8_3[i] =MathAbs(B_3_4_1[i]-B_3_8_2[i]) *MathPow(b41+B_3_8_2[i] -B_3_8_2[i+1], 3); b4=absHighest(B_3_8_3, i);  if(b4>0){B_3_8_0[i] =B_3_8_3[i] /b4;} else{B_3_8_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_8_0[i]){ma=B_3_8_0[i];} if(mi>B_3_8_0[i]){mi=B_3_8_0[i];}}
    B_3_9_2[i] =iMAOnArray(B_3_1_1,0,tr3_3,0,1,i); B_3_9_3[i] =MathAbs(B_3_1_1[i]-B_3_9_2[i]) *MathPow(b11+B_3_9_2[i] -B_3_9_2[i+1], 3); b4=absHighest(B_3_9_3, i);  if(b4>0){B_3_9_0[i] =B_3_9_3[i] /b4;} else{B_3_9_0[i] =0;} if(mm==max || mm==min){if(ma<B_3_9_0[i]){ma=B_3_9_0[i];} if(mi>B_3_9_0[i]){mi=B_3_9_0[i];}}
    B_3_10_2[i]=iMAOnArray(B_3_2_1,0,tr3_4,0,3,i); B_3_10_3[i]=MathAbs(B_3_2_1[i]-B_3_10_2[i])*MathPow(b21+B_3_10_2[i]-B_3_10_2[i+1],3); b4=absHighest(B_3_10_3,i);  if(b4>0){B_3_10_0[i]=B_3_10_3[i]/b4;} else{B_3_10_0[i]=0;} if(mm==max || mm==min){if(ma<B_3_10_0[i]){ma=B_3_10_0[i];} if(mi>B_3_10_0[i]){mi=B_3_10_0[i];}}
    B_3_11_2[i]=iMAOnArray(B_3_3_1,0,tr3_1,0,2,i); B_3_11_3[i]=MathAbs(B_3_3_1[i]-B_3_11_2[i])*MathPow(b31+B_3_11_2[i]-B_3_11_2[i+1],3); b4=absHighest(B_3_11_3,i);  if(b4>0){B_3_11_0[i]=B_3_11_3[i]/b4;} else{B_3_11_0[i]=0;} if(mm==max || mm==min){if(ma<B_3_11_0[i]){ma=B_3_11_0[i];} if(mi>B_3_11_0[i]){mi=B_3_11_0[i];}}
    B_3_12_2[i]=iMAOnArray(B_3_4_1,0,tr3_2,0,0,i); B_3_12_3[i]=MathAbs(B_3_4_1[i]-B_3_12_2[i])*MathPow(b41+B_3_12_2[i]-B_3_12_2[i+1],3); b4=absHighest(B_3_12_3,i);  if(b4>0){B_3_12_0[i]=B_3_12_3[i]/b4;} else{B_3_12_0[i]=0;} if(mm==max || mm==min){if(ma<B_3_12_0[i]){ma=B_3_12_0[i];} if(mi>B_3_12_0[i]){mi=B_3_12_0[i];}}
    B_3_13_2[i]=iMAOnArray(B_3_1_1,0,tr3_2,0,0,i); B_3_13_3[i]=MathAbs(B_3_1_1[i]-B_3_13_2[i])*MathPow(b11+B_3_13_2[i]-B_3_13_2[i+1],3); b4=absHighest(B_3_13_3,i);  if(b4>0){B_3_13_0[i]=B_3_13_3[i]/b4;} else{B_3_13_0[i]=0;} if(mm==max || mm==min){if(ma<B_3_13_0[i]){ma=B_3_13_0[i];} if(mi>B_3_13_0[i]){mi=B_3_13_0[i];}}
    B_3_14_2[i]=iMAOnArray(B_3_2_1,0,tr3_3,0,1,i); B_3_14_3[i]=MathAbs(B_3_2_1[i]-B_3_14_2[i])*MathPow(b21+B_3_14_2[i]-B_3_14_2[i+1],3); b4=absHighest(B_3_14_3,i);  if(b4>0){B_3_14_0[i]=B_3_14_3[i]/b4;} else{B_3_14_0[i]=0;} if(mm==max || mm==min){if(ma<B_3_14_0[i]){ma=B_3_14_0[i];} if(mi>B_3_14_0[i]){mi=B_3_14_0[i];}}
    B_3_15_2[i]=iMAOnArray(B_3_3_1,0,tr3_4,0,3,i); B_3_15_3[i]=MathAbs(B_3_3_1[i]-B_3_15_2[i])*MathPow(b31+B_3_15_2[i]-B_3_15_2[i+1],3); b4=absHighest(B_3_15_3,i);  if(b4>0){B_3_15_0[i]=B_3_15_3[i]/b4;} else{B_3_15_0[i]=0;} if(mm==max || mm==min){if(ma<B_3_15_0[i]){ma=B_3_15_0[i];} if(mi>B_3_15_0[i]){mi=B_3_15_0[i];}}
    B_3_16_2[i]=iMAOnArray(B_3_4_1,0,tr3_1,0,2,i); B_3_16_3[i]=MathAbs(B_3_4_1[i]-B_3_16_2[i])*MathPow(b41+B_3_16_2[i]-B_3_16_2[i+1],3); b4=absHighest(B_3_16_3,i);  if(b4>0){B_3_16_0[i]=B_3_16_3[i]/b4;} else{B_3_16_0[i]=0;} if(mm==max || mm==min){if(ma<B_3_16_0[i]){ma=B_3_16_0[i];} if(mi>B_3_16_0[i]){mi=B_3_16_0[i];}}
                         b11=B_4_1_1[i]-B_4_1_1[i+1]; b21=B_4_2_1[i]-B_4_2_1[i+1]; b31=B_4_3_1[i]-B_4_3_1[i+1]; b41=B_4_4_1[i]-B_4_4_1[i+1];
    B_4_1_2[i] =iMAOnArray(B_4_1_1,0,tr4_1,0,2,i); B_4_1_3[i] =MathAbs(B_4_1_1[i]-B_4_1_2[i]) *MathPow(b11+B_4_1_2[i] -B_4_1_2[i+1], 3); b4=absHighest(B_4_1_3, i);  if(b4>0){B_4_1_0[i] =B_4_1_3[i] /b4;} else{B_4_1_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_1_0[i]){ma=B_4_1_0[i];} if(mi>B_4_1_0[i]){mi=B_4_1_0[i];}}
    B_4_2_2[i] =iMAOnArray(B_4_2_1,0,tr4_2,0,0,i); B_4_2_3[i] =MathAbs(B_4_2_1[i]-B_4_2_2[i]) *MathPow(b21+B_4_2_2[i] -B_4_2_2[i+1], 3); b4=absHighest(B_4_2_3, i);  if(b4>0){B_4_2_0[i] =B_4_2_3[i] /b4;} else{B_4_2_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_2_0[i]){ma=B_4_2_0[i];} if(mi>B_4_2_0[i]){mi=B_4_2_0[i];}}
    B_4_3_2[i] =iMAOnArray(B_4_3_1,0,tr4_3,0,1,i); B_4_3_3[i] =MathAbs(B_4_3_1[i]-B_4_3_2[i]) *MathPow(b31+B_4_3_2[i] -B_4_3_2[i+1], 3); b4=absHighest(B_4_3_3, i);  if(b4>0){B_4_3_0[i] =B_4_3_3[i] /b4;} else{B_4_3_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_3_0[i]){ma=B_4_3_0[i];} if(mi>B_4_3_0[i]){mi=B_4_3_0[i];}}
    B_4_4_2[i] =iMAOnArray(B_4_4_1,0,tr4_4,0,3,i); B_4_4_3[i] =MathAbs(B_4_4_1[i]-B_4_4_2[i]) *MathPow(b41+B_4_4_2[i] -B_4_4_2[i+1], 3); b4=absHighest(B_4_4_3, i);  if(b4>0){B_4_4_0[i] =B_4_4_3[i] /b4;} else{B_4_4_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_4_0[i]){ma=B_4_4_0[i];} if(mi>B_4_4_0[i]){mi=B_4_4_0[i];}}
    B_4_5_2[i] =iMAOnArray(B_4_1_1,0,tr4_4,0,3,i); B_4_5_3[i] =MathAbs(B_4_1_1[i]-B_4_5_2[i]) *MathPow(b11+B_4_5_2[i] -B_4_5_2[i+1], 3); b4=absHighest(B_4_5_3, i);  if(b4>0){B_4_5_0[i] =B_4_5_3[i] /b4;} else{B_4_5_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_5_0[i]){ma=B_4_5_0[i];} if(mi>B_4_5_0[i]){mi=B_4_5_0[i];}}
    B_4_6_2[i] =iMAOnArray(B_4_2_1,0,tr4_1,0,2,i); B_4_6_3[i] =MathAbs(B_4_2_1[i]-B_4_6_2[i]) *MathPow(b21+B_4_6_2[i] -B_4_6_2[i+1], 3); b4=absHighest(B_4_6_3, i);  if(b4>0){B_4_6_0[i] =B_4_6_3[i] /b4;} else{B_4_6_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_6_0[i]){ma=B_4_6_0[i];} if(mi>B_4_6_0[i]){mi=B_4_6_0[i];}}
    B_4_7_2[i] =iMAOnArray(B_4_3_1,0,tr4_2,0,0,i); B_4_7_3[i] =MathAbs(B_4_3_1[i]-B_4_7_2[i]) *MathPow(b31+B_4_7_2[i] -B_4_7_2[i+1], 3); b4=absHighest(B_4_7_3, i);  if(b4>0){B_4_7_0[i] =B_4_7_3[i] /b4;} else{B_4_7_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_7_0[i]){ma=B_4_7_0[i];} if(mi>B_4_7_0[i]){mi=B_4_7_0[i];}}
    B_4_8_2[i] =iMAOnArray(B_4_4_1,0,tr4_3,0,1,i); B_4_8_3[i] =MathAbs(B_4_4_1[i]-B_4_8_2[i]) *MathPow(b41+B_4_8_2[i] -B_4_8_2[i+1], 3); b4=absHighest(B_4_8_3, i);  if(b4>0){B_4_8_0[i] =B_4_8_3[i] /b4;} else{B_4_8_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_8_0[i]){ma=B_4_8_0[i];} if(mi>B_4_8_0[i]){mi=B_4_8_0[i];}}
    B_4_9_2[i] =iMAOnArray(B_4_1_1,0,tr4_3,0,1,i); B_4_9_3[i] =MathAbs(B_4_1_1[i]-B_4_9_2[i]) *MathPow(b11+B_4_9_2[i] -B_4_9_2[i+1], 3); b4=absHighest(B_4_9_3, i);  if(b4>0){B_4_9_0[i] =B_4_9_3[i] /b4;} else{B_4_9_0[i] =0;} if(mm==max || mm==min){if(ma<B_4_9_0[i]){ma=B_4_9_0[i];} if(mi>B_4_9_0[i]){mi=B_4_9_0[i];}}
    B_4_10_2[i]=iMAOnArray(B_4_2_1,0,tr4_4,0,3,i); B_4_10_3[i]=MathAbs(B_4_2_1[i]-B_4_10_2[i])*MathPow(b21+B_4_10_2[i]-B_4_10_2[i+1],3); b4=absHighest(B_4_10_3,i);  if(b4>0){B_4_10_0[i]=B_4_10_3[i]/b4;} else{B_4_10_0[i]=0;} if(mm==max || mm==min){if(ma<B_4_10_0[i]){ma=B_4_10_0[i];} if(mi>B_4_10_0[i]){mi=B_4_10_0[i];}}
    B_4_11_2[i]=iMAOnArray(B_4_3_1,0,tr4_1,0,2,i); B_4_11_3[i]=MathAbs(B_4_3_1[i]-B_4_11_2[i])*MathPow(b31+B_4_11_2[i]-B_4_11_2[i+1],3); b4=absHighest(B_4_11_3,i);  if(b4>0){B_4_11_0[i]=B_4_11_3[i]/b4;} else{B_4_11_0[i]=0;} if(mm==max || mm==min){if(ma<B_4_11_0[i]){ma=B_4_11_0[i];} if(mi>B_4_11_0[i]){mi=B_4_11_0[i];}}
    B_4_12_2[i]=iMAOnArray(B_4_4_1,0,tr4_2,0,0,i); B_4_12_3[i]=MathAbs(B_4_4_1[i]-B_4_12_2[i])*MathPow(b41+B_4_12_2[i]-B_4_12_2[i+1],3); b4=absHighest(B_4_12_3,i);  if(b4>0){B_4_12_0[i]=B_4_12_3[i]/b4;} else{B_4_12_0[i]=0;} if(mm==max || mm==min){if(ma<B_4_12_0[i]){ma=B_4_12_0[i];} if(mi>B_4_12_0[i]){mi=B_4_12_0[i];}}
    B_4_13_2[i]=iMAOnArray(B_4_1_1,0,tr4_2,0,0,i); B_4_13_3[i]=MathAbs(B_4_1_1[i]-B_4_13_2[i])*MathPow(b11+B_4_13_2[i]-B_4_13_2[i+1],3); b4=absHighest(B_4_13_3,i);  if(b4>0){B_4_13_0[i]=B_4_13_3[i]/b4;} else{B_4_13_0[i]=0;} if(mm==max || mm==min){if(ma<B_4_13_0[i]){ma=B_4_13_0[i];} if(mi>B_4_13_0[i]){mi=B_4_13_0[i];}}
    B_4_14_2[i]=iMAOnArray(B_4_2_1,0,tr4_3,0,1,i); B_4_14_3[i]=MathAbs(B_4_2_1[i]-B_4_14_2[i])*MathPow(b21+B_4_14_2[i]-B_4_14_2[i+1],3); b4=absHighest(B_4_14_3,i);  if(b4>0){B_4_14_0[i]=B_4_14_3[i]/b4;} else{B_4_14_0[i]=0;} if(mm==max || mm==min){if(ma<B_4_14_0[i]){ma=B_4_14_0[i];} if(mi>B_4_14_0[i]){mi=B_4_14_0[i];}}
    B_4_15_2[i]=iMAOnArray(B_4_3_1,0,tr4_4,0,3,i); B_4_15_3[i]=MathAbs(B_4_3_1[i]-B_4_15_2[i])*MathPow(b31+B_4_15_2[i]-B_4_15_2[i+1],3); b4=absHighest(B_4_15_3,i);  if(b4>0){B_4_15_0[i]=B_4_15_3[i]/b4;} else{B_4_15_0[i]=0;} if(mm==max || mm==min){if(ma<B_4_15_0[i]){ma=B_4_15_0[i];} if(mi>B_4_15_0[i]){mi=B_4_15_0[i];}}
    B_4_16_2[i]=iMAOnArray(B_4_4_1,0,tr4_1,0,2,i); B_4_16_3[i]=MathAbs(B_4_4_1[i]-B_4_16_2[i])*MathPow(b41+B_4_16_2[i]-B_4_16_2[i+1],3); b4=absHighest(B_4_16_3,i);  if(b4>0){B_4_16_0[i]=B_4_16_3[i]/b4;} else{B_4_16_0[i]=0;} if(mm==max || mm==min){if(ma<B_4_16_0[i]){ma=B_4_16_0[i];} if(mi>B_4_16_0[i]){mi=B_4_16_0[i];}}

    if(mm==max){if(MathAbs(ma)>MathAbs(mi)){B0[i]=ma;}else if(MathAbs(ma)<MathAbs(mi)){B0[i]=mi;}else{B0[i]=(ma+mi)/2;}} else{
    if(mm==min){if(MathAbs(ma)<MathAbs(mi)){B0[i]=ma;}else if(MathAbs(ma)>MathAbs(mi)){B0[i]=mi;}else{B0[i]=(ma+mi)/2;}} else{
    if(mm==mima){B0[i]=(B_1_1_0[i]+B_1_2_0[i]+B_1_3_0[i]+B_1_4_0[i]+B_1_5_0[i]+B_1_6_0[i]+B_1_7_0[i]+B_1_8_0[i]+B_1_9_0[i]+B_1_10_0[i]+B_1_11_0[i]+B_1_12_0[i]+B_1_13_0[i]+B_1_14_0[i]+B_1_15_0[i]+B_1_16_0[i]+
                        B_2_1_0[i]+B_2_2_0[i]+B_2_3_0[i]+B_2_4_0[i]+B_2_5_0[i]+B_2_6_0[i]+B_2_7_0[i]+B_2_8_0[i]+B_2_9_0[i]+B_2_10_0[i]+B_2_11_0[i]+B_2_12_0[i]+B_2_13_0[i]+B_2_14_0[i]+B_2_15_0[i]+B_2_16_0[i]+
                        B_3_1_0[i]+B_3_2_0[i]+B_3_3_0[i]+B_3_4_0[i]+B_3_5_0[i]+B_3_6_0[i]+B_3_7_0[i]+B_3_8_0[i]+B_3_9_0[i]+B_3_10_0[i]+B_3_11_0[i]+B_3_12_0[i]+B_3_13_0[i]+B_3_14_0[i]+B_3_15_0[i]+B_3_16_0[i]+
                        B_4_1_0[i]+B_4_2_0[i]+B_4_3_0[i]+B_4_4_0[i]+B_4_5_0[i]+B_4_6_0[i]+B_4_7_0[i]+B_4_8_0[i]+B_4_9_0[i]+B_4_10_0[i]+B_4_11_0[i]+B_4_12_0[i]+B_4_13_0[i]+B_4_14_0[i]+B_4_15_0[i]+B_4_16_0[i])/64;}}}}

    if(Color==false){return(0);}
    for(i=limit;i>=0;i--){if(B0[i]> 0){B3[i]=EMPTY_VALUE; B4[i]=EMPTY_VALUE;
                                       if(B0[i+1]> 0)                                                                                        {B1[i+1]=B0[i+1]; B1[i]=B0[i];}else
                                       if(B0[i+1]< 0){if((B2[i+2]!=EMPTY_VALUE && B2[i+3]!=EMPTY_VALUE) || (B0[i+2]< 0)){B1[i+2]=EMPTY_VALUE; B1[i+1]=B0[i+1]; B1[i]=B0[i];}else
                                                       if(B1[i+2]!=EMPTY_VALUE && B1[i+3]!=EMPTY_VALUE)                 {B2[i+2]=EMPTY_VALUE; B2[i+1]=B0[i+1]; B2[i]=B0[i];}}}else
                          if(B0[i]==0){B1[i]=EMPTY_VALUE; B2[i]=EMPTY_VALUE; B3[i]=EMPTY_VALUE; B4[i]=EMPTY_VALUE;}else
                          if(B0[i]< 0){B1[i]=EMPTY_VALUE; B2[i]=EMPTY_VALUE;
                                       if(B0[i+1]< 0)                                                                                        {B3[i+1]=B0[i+1]; B3[i]=B0[i];}else
                                       if(B0[i+1]> 0){if((B4[i+2]!=EMPTY_VALUE && B4[i+3]!=EMPTY_VALUE) || (B0[i+2]> 0)){B3[i+2]=EMPTY_VALUE; B3[i+1]=B0[i+1]; B3[i]=B0[i];}else
                                                       if(B3[i+2]!=EMPTY_VALUE && B3[i+3]!=EMPTY_VALUE)                 {B4[i+2]=EMPTY_VALUE; B4[i+1]=B0[i+1]; B4[i]=B0[i];}}}}
   return(0);
}

double absHighest(double array[], int i2){double result=0;
   for(int i=length-1;i>=0;i--){if(result<MathAbs(array[i2+i])){result=MathAbs(array[i2+i]);}}
   return(result);
}