Delphi6 数学单元(math.pas)中的函数错误!!!

housisong 2002-08-12 06:54:22
Delphi6 数学单元(math.pas)中的函数错误!!!

(也许只是我使用的版本有问题,希望大家也看看!)

//反余切函数
ArcCot(x)=ArcTan(1/X) //Delphi6 误为 ArcCot(x)=Tan(1/X) !
//反正割函数
ArcSec(x)=ArcCos(1/X) //Delphi6 误为 ArcSec(x)=Cos(1/X) !
//反余割函数
ArcCsc(x)=ArcSin(1/X) //Delphi6 误为 ArcCsc(x)=Sin(1/X) !

//反双曲余切函数
ArcCotH(x)=ArcTanH(1/X) //Delphi6 误为 ArcCotH(x)=1/ArcCot(X) !
//反双曲正割函数
ArcSecH(x)=ArcCosH(1/X) //Delphi6 误为 ArcSecH(x)=1/ArcSec(X) !
//反双曲余割函数
ArcCscH(x)=ArcSinH(1/X) //Delphi6 误为 ArcCscH(x)=1/ArcCsc(X) !


你可以试验一下以下的代码:

var
x :extended;
begin
x:=3;
x:=csc(arccsc(x));//等等,测试其他函数时请注意值域
self.Edit1.Text:=floattostr(x);
end;

如果x不约等于3就有错
改正请看上面,然后重新编译Math.pas单元

...全文
51 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
housisong 2002-08-29
  • 打赏
  • 举报
回复
好像D7没有问题
erickleung 2002-08-24
  • 打赏
  • 举报
回复
我看错了, D7 是如下的:

function ArcCot(const X: Extended): Extended;
begin
if IsZero(X) then
Result := PI / 2
else
Result := ArcTan(1 / X);
end;

function ArcSec(const X: Extended): Extended;
begin
if IsZero(X) then
Result := Infinity
else
Result := ArcCos(1 / X);
end;

function ArcCsc(const X: Extended): Extended;
begin
if IsZero(X) then
Result := Infinity
else
Result := ArcSin(1 / X);
end;

function ArcCotH(const X: Extended): Extended;
begin
if SameValue(X, 1) then
Result := Infinity
else if SameValue(X, -1) then
Result := NegInfinity
else
Result := 0.5 * Ln((X + 1) / (X - 1));
end;

function ArcSecH(const X: Extended): Extended;
begin
if IsZero(X) then
Result := Infinity
else if SameValue(X, 1) then
Result := 0
else
Result := Ln((Sqrt(1 - X * X) + 1) / X);
end;

function ArcCscH(const X: Extended): Extended;
begin
Result := Ln(Sqrt(1 + (1 / (X * X)) + (1 / X)));
end;
改好了吧
erickleung 2002-08-24
  • 打赏
  • 举报
回复
D7也有相同的问题!!
wxn1983 2002-08-24
  • 打赏
  • 举报
回复
也没发现错误呀明天试试吧。
Eastunfail 2002-08-24
  • 打赏
  • 举报
回复
是的,呵呵,Borland好粗心阿
netlib 2002-08-24
  • 打赏
  • 举报
回复
我用正版D6,没有这个问题。
tigerchina 2002-08-17
  • 打赏
  • 举报
回复
我刚查过5和4的Math文件,都没有这三个函数,看来是Delphi6在Math中新提供的。而且看Math文件,发现确实是错了。
smhpnuaa 2002-08-17
  • 打赏
  • 举报
回复
向borland反映一下!
耙子 2002-08-15
  • 打赏
  • 举报
回复
我还在用delphi 5,没用6,
5上面是正常的。

我想d6不至于出现如此的大bug吧?d6也出来很久了,应该很多人用在数学上过,如果有这问题肯定早被发现了。
housisong 2002-08-15
  • 打赏
  • 举报
回复
有谁能帮忙测试一下上面提到的六个函数
ArcCot(x)=ArcTan(1/X) //Delphi6 误为 ArcCot(x)=Tan(1/X) !
//反正割函数
ArcSec(x)=ArcCos(1/X) //Delphi6 误为 ArcSec(x)=Cos(1/X) !
//反余割函数
ArcCsc(x)=ArcSin(1/X) //Delphi6 误为 ArcCsc(x)=Sin(1/X) !

//反双曲余切函数
ArcCotH(x)=ArcTanH(1/X) //Delphi6 误为 ArcCotH(x)=1/ArcCot(X) !
//反双曲正割函数
ArcSecH(x)=ArcCosH(1/X) //Delphi6 误为 ArcSecH(x)=1/ArcSec(X) !
//反双曲余割函数
ArcCscH(x)=ArcSinH(1/X) //Delphi6 误为 ArcCscH(x)=1/ArcCsc(X) !


torrentwang 2002-08-13
  • 打赏
  • 举报
回复
关注
hwkknd 2002-08-13
  • 打赏
  • 举报
回复
D6的Trunc我用过N次,没出现过这种情况……
greenspan 2002-08-13
  • 打赏
  • 举报
回复
不会吧!好像忘完了,记不起具体的意思了!
至少楼上的我看不懂,好像trunc没有错呀!
qingniaor 2002-08-12
  • 打赏
  • 举报
回复
难免,delphi也是人写的!不过delphi这样会闯大祸了!trunc函数也有错误
trunc(200)=200
I=200,trunc(I)=199
erickleung 2002-08-12
  • 打赏
  • 举报
回复
不曾用过math.pas.
谢谢分享.
madyak 2002-08-12
  • 打赏
  • 举报
回复
没注意过!
zhc 2002-08-12
  • 打赏
  • 举报
回复
关注

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧