{"title":"简易互惠","authors":"Stanley Mazor","doi":"10.1109/mahc.2024.3364901","DOIUrl":null,"url":null,"abstract":"Prior to the availability of electronic calculators, people used voluminous published data tables to quickly provide transcendental functions, square roots, and logarithms. One would look up a value; if the exact entry was not there, then interpolation between two neighboring values gave an estimate. Such tables are also useful for getting a first-guess value when using iteration to get a better result, as with Newton's method for obtaining a square root. In 1909, Percy Ludgate invented a programmable mechanical computer [1], [2] and suggested doing division, a/b, with multiplication hardware for a × b\n<sup xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">−1</sup>\n, but taking the reciprocal of b without a division. To get a reciprocal he proposed a lookup table for the first estimate and then a novel iterative method explained here. Each successive estimate for b\n<italic xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"><sup>−</sup></i>\n<sup xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">1</sup> uses a multiply and then a subtract. Nearly 90 years later, Intel's Pentium CPUs and other microprocessors also began using an on-chip table for their divide operations.\n<sup xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">1</sup> To get the reciprocal N\n<sup xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">−1</sup> (1/N) when division is not available or practical, the reciprocal can be calculated using an iterative scheme. Note that the product of N\n<sup xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">−1</sup> × N should equal a value very close to 1, after which the estimated N\n<sup xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">−1</sup> can be improved proportionally in successive steps.","PeriodicalId":55033,"journal":{"name":"IEEE Annals of the History of Computing","volume":"31 1","pages":""},"PeriodicalIF":0.5000,"publicationDate":"2024-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Easy Reciprocals\",\"authors\":\"Stanley Mazor\",\"doi\":\"10.1109/mahc.2024.3364901\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Prior to the availability of electronic calculators, people used voluminous published data tables to quickly provide transcendental functions, square roots, and logarithms. One would look up a value; if the exact entry was not there, then interpolation between two neighboring values gave an estimate. Such tables are also useful for getting a first-guess value when using iteration to get a better result, as with Newton's method for obtaining a square root. In 1909, Percy Ludgate invented a programmable mechanical computer [1], [2] and suggested doing division, a/b, with multiplication hardware for a × b\\n<sup xmlns:mml=\\\"http://www.w3.org/1998/Math/MathML\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">−1</sup>\\n, but taking the reciprocal of b without a division. To get a reciprocal he proposed a lookup table for the first estimate and then a novel iterative method explained here. Each successive estimate for b\\n<italic xmlns:mml=\\\"http://www.w3.org/1998/Math/MathML\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"><sup>−</sup></i>\\n<sup xmlns:mml=\\\"http://www.w3.org/1998/Math/MathML\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">1</sup> uses a multiply and then a subtract. Nearly 90 years later, Intel's Pentium CPUs and other microprocessors also began using an on-chip table for their divide operations.\\n<sup xmlns:mml=\\\"http://www.w3.org/1998/Math/MathML\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">1</sup> To get the reciprocal N\\n<sup xmlns:mml=\\\"http://www.w3.org/1998/Math/MathML\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">−1</sup> (1/N) when division is not available or practical, the reciprocal can be calculated using an iterative scheme. Note that the product of N\\n<sup xmlns:mml=\\\"http://www.w3.org/1998/Math/MathML\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">−1</sup> × N should equal a value very close to 1, after which the estimated N\\n<sup xmlns:mml=\\\"http://www.w3.org/1998/Math/MathML\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\">−1</sup> can be improved proportionally in successive steps.\",\"PeriodicalId\":55033,\"journal\":{\"name\":\"IEEE Annals of the History of Computing\",\"volume\":\"31 1\",\"pages\":\"\"},\"PeriodicalIF\":0.5000,\"publicationDate\":\"2024-04-01\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"IEEE Annals of the History of Computing\",\"FirstCategoryId\":\"98\",\"ListUrlMain\":\"https://doi.org/10.1109/mahc.2024.3364901\",\"RegionNum\":3,\"RegionCategory\":\"哲学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q4\",\"JCRName\":\"COMPUTER SCIENCE, THEORY & METHODS\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"IEEE Annals of the History of Computing","FirstCategoryId":"98","ListUrlMain":"https://doi.org/10.1109/mahc.2024.3364901","RegionNum":3,"RegionCategory":"哲学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q4","JCRName":"COMPUTER SCIENCE, THEORY & METHODS","Score":null,"Total":0}
引用次数: 0
摘要
在有电子计算器之前,人们使用大量出版的数据表来快速提供超越函数、平方根和对数。人们可以查找一个值;如果没有精确的条目,则可以通过两个相邻值之间的内插法得出一个估计值。当使用迭代法获得更好的结果时,这种表格也有助于获得一个初步估计值,就像牛顿求平方根的方法一样。1909 年,Percy Ludgate 发明了可编程机械计算机[1]、[2],并建议用 a × b-1 的乘法硬件进行 a/b 除法运算,但取 b 的倒数时不进行除法运算。为了得到倒数,他建议使用查找表进行第一次估算,然后使用一种新颖的迭代方法,在此进行说明。对 b-1 的每次连续估计都使用乘法,然后再减法。将近 90 年后,英特尔的奔腾 CPU 和其他微处理器也开始使用片上查找表进行除法运算。1 当除法运算无法使用或不实用时,可以使用迭代方案计算倒数 N-1 (1/N)。需要注意的是,N-1 × N 的乘积应等于一个非常接近 1 的值,之后,N-1 的估计值可按比例逐级改进。
Prior to the availability of electronic calculators, people used voluminous published data tables to quickly provide transcendental functions, square roots, and logarithms. One would look up a value; if the exact entry was not there, then interpolation between two neighboring values gave an estimate. Such tables are also useful for getting a first-guess value when using iteration to get a better result, as with Newton's method for obtaining a square root. In 1909, Percy Ludgate invented a programmable mechanical computer [1], [2] and suggested doing division, a/b, with multiplication hardware for a × b
−1
, but taking the reciprocal of b without a division. To get a reciprocal he proposed a lookup table for the first estimate and then a novel iterative method explained here. Each successive estimate for b
−1 uses a multiply and then a subtract. Nearly 90 years later, Intel's Pentium CPUs and other microprocessors also began using an on-chip table for their divide operations.
1 To get the reciprocal N
−1 (1/N) when division is not available or practical, the reciprocal can be calculated using an iterative scheme. Note that the product of N
−1 × N should equal a value very close to 1, after which the estimated N
−1 can be improved proportionally in successive steps.
期刊介绍:
The IEEE Annals of the History of Computing serves as a record of vital contributions which recount, preserve, and analyze the history of computing and the impact of computing on society. Where possible, first hand accounts of events and activities are recorded with minimal editorial change, and scholarly reports of analyses of the historical record from archives and personal contact are published so as to better understand both the past and the future of our field.