(*~\Глагол\ПриложенияЧисАн\64\к\Пара\МатФункции\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                                 ОТДЕЛ ПроКомплПара+;
(*============================================================================*
 * НАЗНАЧЕНИЕ: проверка вычислений с комплексными числами в виде пары
 *============================================================================*)

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

 дВектор  ИЗ "..\..\..\..\..\Отделы\ЧисАн\64\д\",
(*
 дВектВВ  ИЗ "..\..\..\..\..\Отделы\ЧисАн\64\д\ВводВывод\",
*)
кпМатем   ИЗ "..\..\..\..\..\Отделы\ЧисАн\64\к\Пара\",
(*
кпМатрица ИЗ "..\..\..\..\..\Отделы\ЧисАн\64\к\Пара\",

кпМатрВВ  ИЗ "..\..\..\..\..\Отделы\ЧисАн\64\к\Пара\ВводВывод\",
кпВектВВ  ИЗ "..\..\..\..\..\Отделы\ЧисАн\64\к\Пара\ВводВывод\",

  ИзФайла ИЗ "..\..\..\..\..\Отделы\Обмен\ВводВывод\",
*)
  НаЭкран ИЗ "..\..\..\..\..\Отделы\Обмен\ВводВывод\";

ПОСТ
  АРГУМЕНТОВ = 20; (* число аргументов *)

ВИД
        (* вид Вещ - это удвоенная точность 64 разряда (16 десятичных знаков) *)
  Вещ = дМатем.Вещ;                   (* локально *)

  Функция = ЗАДАЧА(дZ1-,мZ1-,дZ2+,мZ2+:Вещ);

    дВЕКТ = РЯД АРГУМЕНТОВ+1 ИЗ Вещ;


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


(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Арифметика;
ПЕР
  Xд,Xм,
  Yд,Yм,
  Zд,Zм:Вещ;
УКАЗ
  НаЭкран.ВсяЦепь('^*** Комплексная арифметика из кпМатем.отд: ***^ сложить(), вычесть(), умножить(), делить().^');
  кпМатем.алгебрВид(1, 1,Yд,Yм);                               (* кY = 1 + i*1     *)
  кпМатем.алгебрВид(2,-1,Zд,Zм);                               (* кZ = 2 - i*1     *)
  НаЭкран.Вещ4числа('  Пусть Yд,Yм = (%5f;%5f), а Zд,Zм = (%5f;%5f), тогда:^^',
                             Yд,Yм,               Zд,Zм
                   );
  кпМатем.сложить (Yд,Yм,Zд,Zм,Xд,Xм); НаЭкран.Вещ4числа('Yд,Yм + Zд,Zм = (%5f;%5f)^',Xд,Xм,0,0);
  кпМатем.вычесть (Yд,Yм,Zд,Zм,Xд,Xм); НаЭкран.Вещ4числа('Yд,Yм - Zд,Zм = (%5f;%5f)^',Xд,Xм,0,0);
  кпМатем.умножить(Yд,Yм,Zд,Zм,Xд,Xм); НаЭкран.Вещ4числа('Yд,Yм * Zд,Zм = (%5f;%5f)^',Xд,Xм,0,0);
  кпМатем.делить  (Yд,Yм,Zд,Zм,Xд,Xм); НаЭкран.Вещ4числа('Yд,Yм / Zд,Zм = (%5f;%5f)^',Xд,Xм,0,0)
КОН Арифметика;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Корень;
ПЕР
  n:ЦЕЛ;
  Xд,Xм,
  Zд,Zм,
  Yд,Yм:Вещ;
УКАЗ
  кпМатем.алгебрВид(-1,1,Xд,Xм);                    (*  кX=-1 + i*1       *)
  НаЭкран.ВсяЦепь('^*** 3 комплексных кубических корня из кX=(-1;1)^^');
  НаЭкран.ВсяЦепь(' n,      Zд, Zм,         Zд, Zм**(1/3), [Zд, Zм**(1/3)]**3^');
  ОТ n:=0 ДО 2 ВЫП
    кпМатем.корни(Xд,Xм,n,3,Zд,Zм);                 (*     кZ=кор(кX,n,3) *)
    кпМатем.степКЦ(Zд,Zм, 3,Yд,Yм);                 (*  кY=кZ**3          *)
    НаЭкран.Вещ4числа(' %d,  (%5f;%5f),  ',n,Xд,Xм,0);
    НаЭкран.Вещ4числа('(%5f;%5f),  (%5f;%5f)^',Zд,Zм,Yд,Yм)
  КОН
КОН Корень;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Оборот(прямИмя-,обрИмя-:ЦЕПЬ; прямФ,
                                      обрФ:Функция);
ПЕР
  i:ЦЕЛ;
  дВект,мВект: дВЕКТ; (* :дВектор.Вид; *)           (* ряд из АРГУМЕНТОВ=20+1 *)
  Yд,Yм,
  Zд,Zм:Вещ;
УКАЗ
                 (* вычисление 20 комплексных элементов ряда *)
  кпМатем.алгебрВид(   0,   0,дВект[ 1],мВект[ 1]);
  кпМатем.алгебрВид( 0.5, 0.5,дВект[ 2],мВект[ 2]);
  кпМатем.алгебрВид(-0.5, 0.5,дВект[ 3],мВект[ 3]);
  кпМатем.алгебрВид(-0.5,-0.5,дВект[ 4],мВект[ 4]);
  кпМатем.алгебрВид( 0.5,-0.5,дВект[ 5],мВект[ 5]);
  кпМатем.алгебрВид(   1,   0,дВект[ 6],мВект[ 6]);
  кпМатем.алгебрВид(   1,   1,дВект[ 7],мВект[ 7]);
  кпМатем.алгебрВид(   0,   1,дВект[ 8],мВект[ 8]);
  кпМатем.алгебрВид(  -1,   1,дВект[ 9],мВект[ 9]);
  кпМатем.алгебрВид(  -1,   0,дВект[10],мВект[10]);
  кпМатем.алгебрВид(  -1,  -1,дВект[11],мВект[11]);
  кпМатем.алгебрВид(   0,  -1,дВект[12],мВект[12]);
  кпМатем.алгебрВид(   1,  -1,дВект[13],мВект[13]);
  кпМатем.алгебрВид(   5,   0,дВект[14],мВект[14]);
  кпМатем.алгебрВид(   5,   3,дВект[15],мВект[15]);
  кпМатем.алгебрВид(   0,   3,дВект[16],мВект[16]);
  кпМатем.алгебрВид(  -5,   3,дВект[17],мВект[17]);
  кпМатем.алгебрВид(  -5,   0,дВект[18],мВект[18]);
  кпМатем.алгебрВид(   5,  -3,дВект[19],мВект[19]);
  кпМатем.алгебрВид(   0,  -3,дВект[20],мВект[20]);
          (* печать 20 элементов для заданной функции комплексного аргумента *)
  НаЭкран.ВсяЦепь('^ дВект[i],мВект[i],     Yд,Yм = ');
  НаЭкран.ВсяЦепь(прямИмя);
  НаЭкран.ВсяЦепь('(дВект[i],мВект[i]),  Zд,Zм = ');
  НаЭкран.ВсяЦепь(обрИмя);
  НаЭкран.ВсяЦепь('(Yд,Yм)^');

  ОТ i:=1 ДО АРГУМЕНТОВ ВЫП
    НаЭкран.Вещ4числа('(%10.2e;%10.2e),  ',дВект[i],мВект[i],0,0);
    прямФ(дВект[i],мВект[i],Yд,Yм);

    ЕСЛИ дМатем.код = 0 ТО
      НаЭкран.Вещ4числа('(%10.2e;%10.2e),  ',Yд,Yм,0,0);
      обрФ(Yд,Yм,Zд,Zм);
      ЕСЛИ дМатем.код = 0 ТО
        НаЭкран.Вещ4числа('(%10.2e;%10.2e)^',Zд,Zм,0,0)
      ИНАЧЕ
        НаЭкран.Вещ4числа('неопределено^',Zд,Zм,0,0)
      КОН
    ИНАЧЕ
      НаЭкран.Вещ4числа('неопределено^',Zд,Zм,0,0)
    КОН
  КОН
КОН Оборот;

(*-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-*)
УКАЗ
  Арифметика;
  Корень;
  Оборот('ln'     ,'exp',кпМатем.ln     ,кпМатем.exp);
  Оборот('arcsin' ,'sin',кпМатем.arcsin ,кпМатем.sin);
  Оборот('arccos' ,'cos',кпМатем.arccos ,кпМатем.cos);
  Оборот('arctg'  ,'tg' ,кпМатем.arctg  ,кпМатем.tg );
  Оборот('Arsh'   ,'sh' ,кпМатем.Arsh   ,кпМатем.sh );
  Оборот('Arch'   ,'ch' ,кпМатем.Arch   ,кпМатем.ch );
  Оборот('Arth'   ,'th' ,кпМатем.Arth   ,кпМатем.th );
  Оборот('lnГ'    ,'exp',кпМатем.lnГ    ,кпМатем.exp)
КОН ПроКомплПара.
