(*~\Глагол\Отделы\ЧисАн\64\д.N\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                     ОТДЕЛ дВектор;
(*============================================================================*
 * НАЗНАЧЕНИЕ: определение векторов действительных\вещ. чисел (64 разряда)
 *============================================================================*)

ИСПОЛЬЗУЕТ
 дМатем   ИЗ "..\..\..\..\Отделы\ЧисАн\64\д\";

ВИД
       (* вид Вещ - это удвоенная точность 64 разряда (18 десятичных знаков)  *)
  Вещ = дМатем.Вещ;                   (* локально *)
                     Вид- = РЯД ИЗ Вещ;
  Доступ- = ДОСТУП К Вид;


(*-оооооооооооооо- опережающие определения/заготовки задач -ооооооооооооооооо-*)

 
(*----------------------------------------------------------------------------*
 * Стандартные функции: мин, макс векторов из действительных
 *----------------------------------------------------------------------------*)

ЗАДАЧА^ мин- (дВект-:Вид; N-:ЦЕЛ):Вещ;      (* наименьший элемент вектора вещ.64 бита *)
ЗАДАЧА^ макс-(дВект-:Вид; N-:ЦЕЛ):Вещ;      (* наибольший элемент вектора вещ.64 бита *)

(*----------------------------------------------------------------------------*
 * арифметические действия над векторами из действительных
 *----------------------------------------------------------------------------*)

ЗАДАЧА^ умнНаВещ-(дВход- :Вид; v:Вещ;
                  дВыход+:Вид; N-:ЦЕЛ);    (* дВыход:=дВход*v - умножение вектора на вещ. v *)
ЗАДАЧА^ делНаВещ-(дВход- :Вид; v:Вещ;
                  дВыход+:Вид; N-:ЦЕЛ);    (* дВыход:=дВход/v - деление   вектора на вещ. v *)
ЗАДАЧА^ увеличВдейств-(        v:Вещ;
                   дВект+:Вид; N-:ЦЕЛ);    (* дВект *= v - увеличить себя в действ. число v раз *)
ЗАДАЧА^ уменьшВдейств-(        v:Вещ;
                   дВект+:Вид; N-:ЦЕЛ);    (* дВект /= v - уменьшить себя в действ. число v раз *)

(*----------------------------------------------------------------------------*
 * Переписывание действительных векторов
 *----------------------------------------------------------------------------*)

ЗАДАЧА^ Списать-(дВход-,дВыход+:Вид; N-:ЦЕЛ);


(*=рррррррррррррррррррррррр= реализация задач =рррррррррррррррррррррррррррррр=*)


(*============================================================================*
 * Стандартные функции: мин, макс векторов из действительных
 *============================================================================*)

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА мин-(дВект-:Вид; N-:ЦЕЛ):Вещ;
ПЕР
           Минимум:Вещ;
          (* N:ЦЕЛ; *)                      (* рабочая длина вектора N - любая заданная *)
     i:ЦЕЛ;
УКАЗ      (* N <= РАЗМЕР(дВект);*)
           Минимум:=дВект[0];
  ОТ i:=1 ДО N-1 ВЫП
    ЕСЛИ            дВект[i] < Минимум ТО 
           Минимум:=дВект[i]
    КОН 
  КОН;
  ВОЗВРАТ  Минимум
КОН мин;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА макс-(дВект-:Вид; N-:ЦЕЛ):Вещ;
ПЕР
          Максимум:Вещ;
          (* N:ЦЕЛ; *)                      (* рабочая длина вектора N - любая заданная *)
     i:ЦЕЛ;
УКАЗ      (* N <= РАЗМЕР(дВект);*)
          Максимум:=дВект[0];
  ОТ i:=1 ДО N-1 ВЫП
    ЕСЛИ            дВект[i] > Максимум ТО 
          Максимум:=дВект[i]
    КОН 
  КОН;
  ВОЗВРАТ Максимум
КОН макс;

(*============================================================================*
 * арифметические действия над векторами из действительных
 *============================================================================*)

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА умнНаВещ-(дВход- :Вид; v:Вещ;
                 дВыход+:Вид; N-:ЦЕЛ);     (* дВыход:=дВход*v - умножение вектора на вещ. v *)
ПЕР
          (* N:ЦЕЛ; *)                      (* рабочая длина вектора N - любая заданная *)
     i:ЦЕЛ;
УКАЗ      (* N <= РАЗМЕР(дВход);*)
   (* нормировка на вещественное v
                              действительного вектора дВход (временного ряда) *)
  ОТ i:=0 ДО N-1 ВЫП
    дВыход[i]:=дВход[i]*v;
  КОН
КОН умнНаВещ;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА делНаВещ-(дВход- :Вид; v:Вещ;
                 дВыход+:Вид; N-:ЦЕЛ);     (* дВыход:=дВход/v - деление   вектора на вещ. v *)
ПЕР
          (* N:ЦЕЛ; *)                      (* рабочая длина вектора N - любая заданная *)
     i:ЦЕЛ;
УКАЗ      (* N <= РАЗМЕР(дВход);*)
   (* нормировка на вещественное 1/v
                              действительного вектора дВход (временного ряда) *)
  ОТ i:=0 ДО N-1 ВЫП
    дВыход[i]:=дВход[i]/v;
  КОН
КОН делНаВещ;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА увеличВдейств-(        v:Вещ;
                   дВект+:Вид; N-:ЦЕЛ);    (* дВект *= v - увеличить себя в действ. число v раз *)
ПЕР
          (* N:ЦЕЛ; *)                      (* рабочая длина вектора N - любая заданная *)
     i:ЦЕЛ;
УКАЗ      (* N <= РАЗМЕР(дВект);*)
   (* нормировка на вещественное v
                              действительного вектора дВект (временного ряда) *)
  ОТ i:=0 ДО N-1 ВЫП
          дВект[i]:=дВект[i]*v;
  КОН
КОН увеличВдейств;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА уменьшВдейств-(        v:Вещ;
                   дВект+:Вид; N-:ЦЕЛ);    (* дВект /= v - уменьшить себя в действ. число v раз *)
ПЕР
          (* N:ЦЕЛ; *)                      (* рабочая длина вектора N - любая заданная *)
     i:ЦЕЛ;
УКАЗ      (* N <= РАЗМЕР(дВект);*)
   (* нормировка на вещественное 1/v
                              действительного вектора дВект (временного ряда) *)
  ОТ i:=0 ДО N-1 ВЫП
          дВект[i]:=дВект[i]/v;
  КОН
КОН уменьшВдейств;


(*============================================================================*
 * Переписывание действительных векторов
 *============================================================================*)

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Списать-(дВход-,дВыход+:Вид; N-:ЦЕЛ);
ПЕР
          (* N:ЦЕЛ; *)                      (* рабочая длина вектора N - любая заданная *)
     i:ЦЕЛ;
УКАЗ      (* N <= РАЗМЕР(дВход);*)
  ОТ i:=0 ДО N-1 ВЫП
    дВыход[i]:=дВход[i]
  КОН
КОН Списать;

КОН дВектор.
