'-- **************************************************************************' 
function ARRAverage (Dat!() as single, MinEl  as integer, MaxEl as integer) as single
' calculate average value from function Dat1!() 
defint  p
defsng ARMid!=0

FOR p = MinEl TO MaxEl:
ARMid! = ARMid! + Dat!(p):
NEXT p

average! = ARMid! / (MaxEl-MinEl+1)

result=average!
END function
'-- **************************************************************************' 
sub ARRAverageSubtract (Dat!() as single) 
' calculate and subtract average value from function Dat1!() 
defint  p, Lmin1, Lmax1
Lmin1 = LBOUND(Dat!):Lmax1 = UBOUND(Dat!) 
defsng ARMid!=0

FOR p = Lmin1 TO Lmax1:
ARMid! = ARMid! + Dat!(p):
NEXT p

average! = ARMid! / (Lmax1-LMin1+1)

FOR p = LMin1 TO Lmax1: Dat!(p) = Dat!(p) - average!: NEXT p

END sub

'-- **************************************************************************' 
FUNCTION ARRMax (Dat!() as single, MinEl  as integer, MaxEl as integer) as single
'find max element of array 
defint  p

defsng ARMax!=Dat!(MinEl)

FOR p = MinEl TO MaxEl:
IF Dat!(p) > ARMax! THEN ARMax! = Dat!(p):
NEXT p

result = ARMax!

END FUNCTION
'-- **************************************************************************' 

FUNCTION ARRMin (Dat!() as single, MinEl  as integer, MaxEl as integer) as single 
'find min element of array 
defint p
'MaxEl = UBOUND(Dat!):  In function it's bug
'MinEl = LBOUND(Dat!):  

defsng ARMin!=Dat!(MinEl)

FOR p = MinEl TO MaxEl:

IF Dat!(p) < ARMin! THEN ARMin! = Dat!(p):
NEXT p
result = ARMin!
END FUNCTION

'********************************************************************** 
sub ArrExtr (Dat!() as single, byref DatMin!, byref DatMax!) '' as single  
defint  p
defint MaxEl,MinEl

MinEl=DatMin!
MaxEl=DatMax!

defsng ARMax!=Dat!(MinEl)
defsng ARMin!=Dat!(MinEl)

FOR p = MinEl TO MaxEl:
IF Dat!(p) > ARMax! THEN ARMax! = Dat!(p):
IF Dat!(p) < ARMin! THEN ARMin! = Dat!(p):

NEXT p
DatMax!=ARMax!
print "DatMax=" ,DatMax!
DatMin!=ARMin!
print "DatMin=" ,DatMin!

END SUB

'-- ********************************************************************** 
Sub ArrRaznost (Dat1!() as single , Dat2!() as single, Raznost!() as single) 
Lmin1 = LBOUND(Dat1!):Lmax1 = UBOUND(Dat1!) 
Lmin2 = LBOUND(Dat2!) : Lmax2 = UBOUND(Dat2!)

REDIM Raznost!(Lmin1 to Lmax1)

FOR i = Lmin1 TO Lmax1: 
Raznost!(i) = Dat1!(i) - Dat2!(i): 
'print "Raznost!(",i, ") =" ,Raznost!(i) 
NEXT i

END SUB
'********************************************************************** 
Sub ArrSum (Dat1!() as single , Dat2!() as single, SumA!() as single) 
Lmin1 = LBOUND(Dat1!):Lmax1 = UBOUND(Dat1!) 
Lmin2 = LBOUND(Dat2!) : Lmax2 = UBOUND(Dat2!)
REDIM SumA!(Lmin1 to Lmax1)
FOR i = Lmin1 TO Lmax1: SumA!(i) = Dat1!(i) + Dat2!(i): NEXT i
END SUB
'**********************************************************************