Для вычисления арккосинуса в Паскале нет стандартной функции, но его можно выразить через другие тригонометрические функции. Подробности смотрите в реализации арксинуса. Используя связь арксинуса и арккосинуса, несложно переделать реализацию арксинуса в реализацию арккосинуса.
Реализация
program MyArcCos;
function ArcCos(X: Real): Real;
begin
if X <= -1.0 then
ArcCos := Pi
else if X < -Sqrt(2) / 2 then
ArcCos := Pi + ArcTan(Sqrt(1 - Sqr(X)) / X) { левый край }
else if X <= Sqrt(2) / 2 then
ArcCos := Pi / 2 - ArcTan(X / Sqrt(1 - Sqr(X))) { центр }
else if X < 1.0 then
ArcCos := ArcTan(Sqrt(1 - Sqr(X)) / X) { правый край }
else
ArcCos := 0.0
end;
begin
WriteLn(ArcCos(-1.0):0:3, ' ', ArcCos(-0.9):0:3, ' ',
ArcCos(0.3):0:3, ' ', ArcCos(0.9):0:3, ' ',
ArcCos(1.0):0:3);
{ 3.142 2.691 1.266 0.451 0.000 }
end.
function ArcCos(X: Real): Real;
begin
if X <= -1.0 then
ArcCos := Pi
else if X < -Sqrt(2) / 2 then
ArcCos := Pi + ArcTan(Sqrt(1 - Sqr(X)) / X) { левый край }
else if X <= Sqrt(2) / 2 then
ArcCos := Pi / 2 - ArcTan(X / Sqrt(1 - Sqr(X))) { центр }
else if X < 1.0 then
ArcCos := ArcTan(Sqrt(1 - Sqr(X)) / X) { правый край }
else
ArcCos := 0.0
end;
begin
WriteLn(ArcCos(-1.0):0:3, ' ', ArcCos(-0.9):0:3, ' ',
ArcCos(0.3):0:3, ' ', ArcCos(0.9):0:3, ' ',
ArcCos(1.0):0:3);
{ 3.142 2.691 1.266 0.451 0.000 }
end.