From 55df400a3e235bdf5b39d934342bae74d90e530b Mon Sep 17 00:00:00 2001 From: statementreply Date: Thu, 9 Jan 2020 21:25:33 +0800 Subject: [PATCH] stdlib: Improve asin, acos and atan (4/2/3) Robust: 4/4 (Does it work for all input values?) Accurate: 2/4 (How accurate is the result?) Well behaved: 3/4 (Does it preserve math properties?) --- "lib/\347\256\227\347\266\223.wy" | 172 ++++++++++++++++++++---------- 1 file changed, 113 insertions(+), 59 deletions(-) diff --git "a/lib/\347\256\227\347\266\223.wy" "b/lib/\347\256\227\347\266\223.wy" index 30f132d0..bdd16b4e 100644 --- "a/lib/\347\256\227\347\266\223.wy" +++ "b/lib/\347\256\227\347\266\223.wy" @@ -571,17 +571,18 @@ 乃得「甲」也。 若「乙」小於「正餘弦角限」者。 乘「甲」於「甲」。名之曰「二次冪」。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。乘其以「甲」。乃得矣。云云。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「甲」。加其於「甲」。乃得矣。云云。 若「乙」不大於「至巨數」者。 施「分四象」於「甲」。於「正餘弦角限」。名之曰「丙」。 夫「丙」之「「角」」。名之曰「丁」。夫「丙」之「「象」」。名之曰「象」。 乘「丁」於「丁」。名之曰「二次冪」。 若「象」等於零者。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。乃得矣。云云。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。乃得矣。云云。 若「象」等於一者。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乃得矣。云云。 若「象」等於二者。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。乃得矣。云云。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。 + 乘其以負一。乃得矣。云云。 若「象」等於三者。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乃得矣。云云。 云云。 @@ -607,49 +608,87 @@ 若「象」等於零者。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乃得矣。云云。 若「象」等於一者。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。乃得矣。云云。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。 + 乘其以負一。乃得矣。云云。 若「象」等於二者。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乃得矣。云云。 若「象」等於三者。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。乃得矣。云云。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。乃得矣。云云。 云云。 施「不可算數乎」於「甲」。若其者。 乃得「甲」也。 施「不可算」。乃得矣。 是謂「餘弦」之術也。 +吾有一列。名之曰「反正弦多項式」。 + 充「反正弦多項式」以〇·一六六六六六六六六六六六六六六四六。 + 充「反正弦多項式」以〇·〇七五〇〇〇〇〇〇〇〇〇二三一八五三。 + 充「反正弦多項式」以〇·〇四四六四二八五七〇九九五一八七七六。 + 充「反正弦多項式」以〇·〇三〇三八一九四七六一二五八八一八八。 + 充「反正弦多項式」以〇·〇二二三七二〇三九七二四〇六七九九六。 + 充「反正弦多項式」以〇·〇一七三五五四〇八四二九六九九一六八。 + 充「反正弦多項式」以〇·〇一三九二七九一六二七八〇七六一四〇。 + 充「反正弦多項式」以〇·〇一一八八八五三〇五一〇五三八八〇九。 + 充「反正弦多項式」以〇·〇〇七七四〇一二四四一八〇六六九〇三三。 + 充「反正弦多項式」以〇·〇一六二二三四二二六二三一八二五六二。 + 充「反正弦多項式」以負〇·〇一一〇六六五二一五七八〇七三九七〇。 + 充「反正弦多項式」以〇·〇二八四〇〇七四九二〇一四五一九六二。 + 注曰「「反正弦。同Javascript之Math.asin也。」」 今有一術。名之曰「反正弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。 - 注曰「「Abramowitz & Stegun 書中所述之法」」 - 若「甲」小於零者。 - 減零以「甲」。取一以施「反正弦」。減其於零。乃得矣。 + 注曰「「小於五分者。以多項式求之。其餘以三角恆等式變化可得。」」 + 施「正負」於「甲」。名之曰「符」。乘「符」於「甲」。名之曰「乙」。 + 有爻陽。名之曰「非常」。 + 若「乙」大於零者。若「乙」不大於一者。 + 昔之「非常」者。今陰是矣。 + 云云。云云。 + 若「非常」者。 + 若「甲」等於零者。乃得「甲」也。 + 施「不可算數乎」於「甲」。若其者。乃得「甲」也。 + 施「不可算」。乃得矣。 云云。 - 有數一又五分七釐零七絲二忽八微。名之曰「常一」。 - 有數負零又二分一釐二毫一絲一忽四微。名之曰「常二」。 - 有數零又七釐四毫二絲六忽。名之曰「常三」。 - 有數負零又一釐八毫七絲二忽九微。名之曰「常四」。 - - 乘「甲」以「甲」。名之曰「甲方」。 - - 乘「甲」以「常二」。名之曰「項二」。 - 乘「甲方」以「常三」。名之曰「項三」。 - 乘「甲方」以「甲」。乘其以「常四」。名之曰「項四」。 - - 加「常一」以「項二」。加其以「項三」。加其以「項四」。名之曰「多項」。 - - 減一以「甲」。取一以施「平方根」。名之曰「根項」。 - - 乘「根項」以「多項」。減其於「半圓周率」。乃得矣。 - - + 若「乙」大於五分者。 + 減「乙」於一。除其以二。名之曰「丙」。 + 施「平方根」於「丙」。乘其以二。名之曰「丁」。 + 施「求多項式」於「反正弦多項式」。於「丙」。乘其以「丙」。乘其以「丁」。加其以「丁」。名之曰「戊」。 + 夫「半圓周率密率」之二。減其以「戊」。名之曰「己」。 + 夫「半圓周率密率」之一。加其於「己」。乘其以「符」。乃得矣。 + 若非。 + 乘「乙」於「乙」。名之曰「丙」。 + 施「求多項式」於「反正弦多項式」。於「丙」。乘其以「丙」。乘其以「甲」。加其於「甲」。乃得矣。 + 云云。 是謂「反正弦」之術也。 注曰「「反餘弦。同Javascript之Math.acos也。」」 今有一術。名之曰「反餘弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。 注曰「「反餘弦者。蓋反正弦之變化所得。」」 - 減零以「甲」。取一以施「反正弦」。加其以「半圓周率」。乃得矣。 + 施「絕對」於「甲」。名之曰「乙」。 + 有爻陽。名之曰「非常」。 + 若「乙」不大於一者。 + 昔之「非常」者。今陰是矣。 + 云云。 + 若「非常」者。 + 施「不可算數乎」於「甲」。若其者。乃得「甲」也。 + 施「不可算」。乃得矣。 + 云云。 + 若「乙」大於五分者。 + 減「乙」於一。除其以二。名之曰「丙」。 + 施「平方根」於「丙」。乘其以二。名之曰「丁」。 + 施「求多項式」於「反正弦多項式」。於「丙」。乘其以「丙」。乘其以「丁」。加其以「丁」。名之曰「戊」。 + 若「甲」大於零者。 + 乃得「戊」。 + 若非。 + 夫「半圓周率密率」之二。乘其以二。減其以「戊」。名之曰「己」。 + 夫「半圓周率密率」之一。乘其以二。加其於「己」。乃得矣。 + 云云。 + 若非。 + 乘「乙」於「乙」。名之曰「丙」。 + 施「求多項式」於「反正弦多項式」。於「丙」。乘其以「丙」。乘其以「甲」。加其於「甲」。名之曰「戊」。 + 夫「半圓周率密率」之二。減其以「戊」。名之曰「己」。 + 夫「半圓周率密率」之一。加其於「己」。乃得矣。 + 云云。 是謂「反餘弦」之術也。 注曰「「正切。同Javascript之Math.tan也。」」 @@ -661,7 +700,7 @@ 乃得「甲」也。 若「乙」小於「正餘弦角限」者。 乘「甲」於「甲」。名之曰「二次冪」。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。乘其以「甲」。名之曰「勾」。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「甲」。加其於「甲」。名之曰「勾」。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。名之曰「股」。 除「勾」以「股」。乃得矣。云云。 若「乙」不大於「至巨數」者。 @@ -669,20 +708,22 @@ 夫「丙」之「「角」」。名之曰「丁」。夫「丙」之「「象」」。名之曰「象」。 乘「丁」於「丁」。名之曰「二次冪」。 若「象」等於零者。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。名之曰「勾」。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。名之曰「勾」。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。名之曰「股」。 除「勾」以「股」。乃得矣。云云。 若「象」等於一者。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。名之曰「勾」。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。名之曰「股」。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。 + 乘其以負一。名之曰「股」。 除「勾」以「股」。乃得矣。云云。 若「象」等於二者。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。名之曰「勾」。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。 + 乘其以負一。名之曰「勾」。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。名之曰「股」。 除「勾」以「股」。乃得矣。云云。 若「象」等於三者。 施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。名之曰「勾」。 - 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。名之曰「股」。 + 施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。名之曰「股」。 除「勾」以「股」。乃得矣。云云。 云云。 施「不可算數乎」於「甲」。若其者。 @@ -690,37 +731,50 @@ 施「不可算」。乃得矣。 是謂「正切」之術也。 +吾有一列。名之曰「反正切多項式」。 + 充「反正切多項式」以負〇·三三三三三三三三三三三三三三三二六。 + 充「反正切多項式」以〇·一九九九九九九九九九九九九二二六八。 + 充「反正切多項式」以負〇·一四二八五七一四二八四二一〇九五七。 + 充「反正切多項式」以〇·一一一一一一一〇九九六五六八一〇三。 + 充「反正切多項式」以負〇·〇九〇九〇九〇四五七三六一九二八〇九。 + 充「反正切多項式」以〇·〇七六九二二〇二二一一〇八五〇六九六。 + 充「反正切多項式」以負〇·〇六六六五〇九六二七三七〇九三七五五。 + 充「反正切多項式」以〇·〇五八六六八一九一二四六一七二三一三。 + 充「反正切多項式」以負〇·〇五一五九〇五五四五〇八四〇七四八七。 + 充「反正切多項式」以〇·〇四二八八一四六一二三五七三四五六〇。 + 充「反正切多項式」以負〇·〇二九〇三〇一七〇一六〇九七五七五一。 + 充「反正切多項式」以〇·〇一一二〇八四九一一九三〇八七七九二。 + 注曰「「反正切。同Javascript之Math.atan也。」」 今有一術。名之曰「反正切」。欲行是術。必先得一數曰「甲」。乃行是術曰。 - 注曰「「數小甚矣。乃得其身。小於二減根號三者。以泰勒展開求之。其餘以三角恆等式變化可得。」」 - - 施「絕對」於「甲」。若其小於零又一絲者。乃得「甲」也。 - 若「甲」小於零者。減零以「甲」。取一以施「反正切」。減其於零。乃得矣。云云。 - - 若「甲」大於一者。除一以「甲」。取一以施「反正切」。減其於「半圓周率」。乃得矣。云云。 - - 若「甲」大於零又二分六釐八毫者。 - 除「半圓周率」以三。名之曰「六分之一圓周率」。 - 有數一又七分三釐二毫零五忽。名之曰「三之平方根」。 - 乘「三之平方根」以「甲」。減其以一。名之曰「分子」。 - 加「三之平方根」以「甲」。除其於「分子」。取一以施「反正切」。 - 加其以「六分之一圓周率」。乃得矣。 + 注曰「「小於五分者。以多項式求之。其餘以三角恆等式變化可得。」」 + 施「正負」於「甲」。名之曰「符」。乘「符」於「甲」。名之曰「乙」。 + 有爻陽。名之曰「非常」。 + 若「乙」大於零者。若「乙」不大於「至巨數」者。 + 昔之「非常」者。今陰是矣。 + 云云。云云。 + 若「非常」者。 + 若「乙」等於零者。乃得「甲」也。 + 若「乙」大於「至巨數」者。乘「符」於「半圓周率」。乃得矣。云云。 + 乃得「甲」。 云云。 - 乘「甲」以「甲」。名之曰「二次冪」。 - 乘「二次冪」以「甲」。名之曰「三次冪」。 - 乘「二次冪」以「三次冪」。名之曰「五次冪」。 - 乘「二次冪」以「五次冪」。名之曰「七次冪」。 - 乘「二次冪」以「七次冪」。名之曰「九次冪」。 - 乘「二次冪」以「九次冪」。名之曰「十一次冪」。 - - 除「三次冪」以三。名之曰「項二」。 - 除「五次冪」以五。名之曰「項三」。 - 除「七次冪」以七。名之曰「項四」。 - 除「九次冪」以九。名之曰「項五」。 - - 減「甲」以「項二」。加其以「項三」。減其以「項四」。加其以「項五」。乃得矣。 - + 若「乙」小於五分者。 + 乘「乙」於「乙」。名之曰「丙」。 + 施「求多項式」於「反正切多項式」。於「丙」。乘其以「丙」。乘其以「甲」。加其於「甲」。乃得矣。 + 若非。若「乙」大於二者。 + 除「乙」於一。名之曰「丁」。 + 乘「丁」於「丁」。名之曰「丙」。 + 施「求多項式」於「反正切多項式」。於「丙」。乘其以「丙」。乘其以「丁」。加其於「丁」。名之曰「戊」。 + 夫「半圓周率密率」之二。減其以「戊」。名之曰「己」。 + 夫「半圓周率密率」之一。加其於「己」。乘其以「符」。乃得矣。 + 若非。 + 減「乙」以一。名之曰「庚」。加「乙」於一。除其於「庚」。名之曰「丁」。 + 乘「丁」於「丁」。名之曰「丙」。 + 施「求多項式」於「反正切多項式」。於「丙」。乘其以「丙」。乘其以「丁」。加其於「丁」。名之曰「戊」。 + 夫「半圓周率密率」之二。除其以二。加其於「戊」。名之曰「己」。 + 夫「半圓周率密率」之一。除其以二。加其於「己」。乘其以「符」。乃得矣。 + 云云。云云。 是謂「反正切」之術也。