ibu*_*fen 11
不是一个完整的答案,但也许有点有用。
更多在早期适应中使用三角函数的例子列表。也看看 UNIX 世界。
关于历史的有趣论文:
ALGOL 是在 1950 年代开发的。在 1958 年欧洲和美国计算机科学家的联席会议上,人们还获得了国际算法语言的初步报告,又名苏黎世报告。在那个时代,工作是统一符号以及如何为计算机编写算法。作为 58' 报告的摘录,以显示这方面的一些讨论:
“指定函数的标识符,就像在变量的情况下一样,可以根据喜好选择。但是,某些标识符应保留用于分析的标准功能。
此保留列表应包含:
abs (E) 为表达式 E 的值的模数(绝对值) 符号 (E) 为 E 值的符号 整个 (E) 为不大于 E 值的最大整数 sqrt (E) 为 E 值的平方根 sin (E) 为 E 值的正弦根据常用的数学符号,依此类推。”
从 ALGOL 58 得到了 ALGOL 60,也许可以说这项工作也更具体地说明了作为基础的内容(关于三角函数:
简而言之,建议sin
,cos
并arctan
作为标准功能。
如果看一下在数字时代进行数学运算的装置,一台早期的机器是 Bendix G-15 计算机(1950 年代后期)。它使用受 ALGOL 58 影响的 ALGO。它有一个不属于 Algo 系统的库。库中的程序如下:, ,SIN
,:COS
ARCTN
arcsine
和arccosine
使用 的例程arctan
。(常规卡片的日期是 1957 年,所以不确定它是否是一些初步实验的一部分:?)要使用这些例程是通过使用代码字加载的:
SIN 0101000
COS 0168000
ARCTN 0164000
Run Code Online (Sandbox Code Playgroud)
加载例如:
LIBRAry SIN{0101000}
Run Code Online (Sandbox Code Playgroud)
正如它所说
“可以将机器语言例程添加到库中。” ,但这三个是库中包含的。(它也使用十六进制表示十六进制 - 但这不是重点,但很有趣。)
包含 UNIX版本 1bas
,一种基本方言(由 Thompson 拥有)。它包括以下内建函数:arg
,exp
,log
,sin
,cos
,atn
,rnd
,expr
和int
。
版本 2也有bas
,另外还有一个子程序列表,其中列出了:atan
, hypot
, log
, sin
(sine / cosine)。它也与dc
.
还有bc
,但那是为了编译 B 程序。
另外值得一提的是:ttt
(tick-tack-toe)、bj
(black-jack)、moo
(MOO的游戏)。
第 5 版。如果一个人想看看的源代码sin/cos
,atan
等一个例如可以看看这个代码:
usr/source/s3/{atan.s,sin.s}
usr/source/s1/bas4.s
注意!例如 1972-stuff (s2) 中的档案具有绝对路径!
在 V7 中找到的 mathlib 被扩展为包括tan
等。
还包括 Fortran77。
BC 在 1975 年重见天日,正如前面提到的,BC 还包括这三种基本方法。由 Robert Morris 和 Lorinda Cherry 开发。从/usr/doc/bc/bc
V6 版本 (1975) 开始:
3.有一个数学函数库,可以通过在命令级别键入来获得
bc –l
Run Code Online (Sandbox Code Playgroud)
此命令将加载一组库函数,在撰写本文时,这些函数包括正弦(名为“s”)、余弦(“c”)、反正切(“a”)、自然对数(“l”)、指数(`e') 和整数阶贝塞尔函数 (`j(n,x)')。毫无疑问,更多的功能会及时添加。库将比例设置为 20。如果您愿意,可以将其重置为其他值。这些数学库例程的设计在别处讨论
[4]
。
[4]
Robert Morris,参考标准数学子程序库,然而,那篇论文似乎很难找到。
因此,从列表中可以看出,基本的触发功能早在 V1 时就已成为系统的一部分。bc
在加载例程中使用这些。
来自 Unix Heritage Wiki (cc) 的注释
Life with Unix 说:写 dc 并与 Lorinda Cherry 在一起。
一位研究 Unix 的读者说: 鲍勃 (罗伯特) 莫里斯介入了任何涉及数学的领域,无论是数值分析还是数论。Bob 发明了独特的原始实用程序typo
, and dc
- bc
(与 Lorinda Cherry 一起),编写了大部分数学库,并编写了质数和因数(与 Thompson 一起)。他的一系列密码程序培养了中心对密码学的持续兴趣。
Life with Unix 说:Writer's Workbench 的 Writer(措辞、风格等)、be 和 dc。写eqn
有bwk
。
一位研究 Unix 的读者说: Lorinda L. Cherry 与 Morris 在dc
-bc
和typo
. 一直对文本处理着迷的 Lorinda 发起eqn
并发明了部分,这是一种近似解析器,在著名的 Writer's Workbench® ww6(v8) 中得到了利用。
当然也不是说没有系统实现了更多功能,或者可能没有将这些作为核心功能。但那是历史......:P
arccos
, arcsin
, tan
- 是, , 的补充sin
cos
arctan
。
77 1977: sin
, cos
, tan
, asin
, acos
, atan
, ...
II 1958: SIN
, COS
, ATAN
,TANH
作为磁带库函数。
BASIC 1964年出生的有SIN
,COS
,TAN
和 ATN
。
根据@roaima 的评论。
家用计算机上使用的大多数 BASIC 方言(大约 1975 年以后)也有 SIN、COS、TAN、ATN(arctan)。没有其他的反转。我假设包含 TAN 是为了在使用 SIN/COS 时最小化误差范围,因为所有这些触发函数都是通过一个相当小的查找表生成的。
APOLLO 11 命令和月球模块的源代码显示它们至少有一个子程序用于ARCTAN
的逼近TAN(-20)
由SIN(-20)
(度)
你可以争辩说他们设法在没有子程序的情况下登陆月球TAN
;)
CORDIC(Volder 算法)在触发实现方面值得一提。
@Stephen Kitt 的一个有趣的补充,来自评论:
另一篇有趣的论文是1973 年发表的关于计算机中心库中数学子程序使用的统计,这表明 1973 年初在普渡大学,sin / cos / atan 是最常用的三角函数,远远领先于 tan / asin / acos / tanh :
sin / cos 39,462
atan 27,248
tan 4,707
asin / acos 4,139
tanh 2,546
Run Code Online (Sandbox Code Playgroud)
不是深入研究,但至少在这个主题上多一点。ALGOL 的论文可能是最符合标准的。
至于 BC ,Morris / Cherry 决定通过从库中加载选项来包含这些特定的基本功能,但没有找到直接引用-l
。
简而言之,这并不是人们不想要的tan
,而是历史表明,根据资源和用途,选择了哪些触发函数作为基础来实现。