Skip to content

Commit 2d2a98b

Browse files
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?)
1 parent deb12f0 commit 2d2a98b

File tree

1 file changed

+113
-59
lines changed

1 file changed

+113
-59
lines changed

lib/算經.wy

Lines changed: 113 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -571,17 +571,18 @@
571571
乃得「甲」也。
572572
若「乙」小於「正餘弦角限」者。
573573
乘「甲」於「甲」。名之曰「二次冪」。
574-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。乘其以「甲」。乃得矣。云云。
574+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「甲」。加其於「甲」。乃得矣。云云。
575575
若「乙」不大於「至巨數」者。
576576
施「分四象」於「甲」。於「正餘弦角限」。名之曰「丙」。
577577
夫「丙」之「「角」」。名之曰「丁」。夫「丙」之「「象」」。名之曰「象」。
578578
乘「丁」於「丁」。名之曰「二次冪」。
579579
若「象」等於零者。
580-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。乃得矣。云云。
580+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。乃得矣。云云。
581581
若「象」等於一者。
582582
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乃得矣。云云。
583583
若「象」等於二者。
584-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。乃得矣。云云。
584+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。
585+
乘其以負一。乃得矣。云云。
585586
若「象」等於三者。
586587
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乃得矣。云云。
587588
云云。
@@ -607,49 +608,87 @@
607608
若「象」等於零者。
608609
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乃得矣。云云。
609610
若「象」等於一者。
610-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。乃得矣。云云。
611+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。
612+
乘其以負一。乃得矣。云云。
611613
若「象」等於二者。
612614
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乃得矣。云云。
613615
若「象」等於三者。
614-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。乃得矣。云云。
616+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。乃得矣。云云。
615617
云云。
616618
施「不可算數乎」於「甲」。若其者。
617619
乃得「甲」也。
618620
施「不可算」。乃得矣。
619621
是謂「餘弦」之術也。
620622

623+
吾有一列。名之曰「反正弦多項式」。
624+
充「反正弦多項式」以〇·一六六六六六六六六六六六六六六四六。
625+
充「反正弦多項式」以〇·〇七五〇〇〇〇〇〇〇〇〇二三一八五三。
626+
充「反正弦多項式」以〇·〇四四六四二八五七〇九九五一八七七六。
627+
充「反正弦多項式」以〇·〇三〇三八一九四七六一二五八八一八八。
628+
充「反正弦多項式」以〇·〇二二三七二〇三九七二四〇六七九九六。
629+
充「反正弦多項式」以〇·〇一七三五五四〇八四二九六九九一六八。
630+
充「反正弦多項式」以〇·〇一三九二七九一六二七八〇七六一四〇。
631+
充「反正弦多項式」以〇·〇一一八八八五三〇五一〇五三八八〇九。
632+
充「反正弦多項式」以〇·〇〇七七四〇一二四四一八〇六六九〇三三。
633+
充「反正弦多項式」以〇·〇一六二二三四二二六二三一八二五六二。
634+
充「反正弦多項式」以負〇·〇一一〇六六五二一五七八〇七三九七〇。
635+
充「反正弦多項式」以〇·〇二八四〇〇七四九二〇一四五一九六二。
636+
621637
注曰「「反正弦。同Javascript之Math.asin也。」」
622638
今有一術。名之曰「反正弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。
623-
注曰「「Abramowitz & Stegun 書中所述之法」」
624-
若「甲」小於零者。
625-
減零以「甲」。取一以施「反正弦」。減其於零。乃得矣。
639+
注曰「「小於五分者。以多項式求之。其餘以三角恆等式變化可得。」」
640+
施「正負」於「甲」。名之曰「符」。乘「符」於「甲」。名之曰「乙」。
641+
有爻陽。名之曰「非常」。
642+
若「乙」大於零者。若「乙」不大於一者。
643+
昔之「非常」者。今陰是矣。
644+
云云。云云。
645+
若「非常」者。
646+
若「甲」等於零者。乃得「甲」也。
647+
施「不可算數乎」於「甲」。若其者。乃得「甲」也。
648+
施「不可算」。乃得矣。
626649
云云。
627650

628-
有數一又五分七釐零七絲二忽八微。名之曰「常一」。
629-
有數負零又二分一釐二毫一絲一忽四微。名之曰「常二」。
630-
有數零又七釐四毫二絲六忽。名之曰「常三」。
631-
有數負零又一釐八毫七絲二忽九微。名之曰「常四」。
632-
633-
乘「甲」以「甲」。名之曰「甲方」。
634-
635-
乘「甲」以「常二」。名之曰「項二」。
636-
乘「甲方」以「常三」。名之曰「項三」。
637-
乘「甲方」以「甲」。乘其以「常四」。名之曰「項四」。
638-
639-
加「常一」以「項二」。加其以「項三」。加其以「項四」。名之曰「多項」。
640-
641-
減一以「甲」。取一以施「平方根」。名之曰「根項」。
642-
643-
乘「根項」以「多項」。減其於「半圓周率」。乃得矣。
644-
645-
651+
若「乙」大於五分者。
652+
減「乙」於一。除其以二。名之曰「丙」。
653+
施「平方根」於「丙」。乘其以二。名之曰「丁」。
654+
施「求多項式」於「反正弦多項式」。於「丙」。乘其以「丙」。乘其以「丁」。加其以「丁」。名之曰「戊」。
655+
夫「半圓周率密率」之二。減其以「戊」。名之曰「己」。
656+
夫「半圓周率密率」之一。加其於「己」。乘其以「符」。乃得矣。
657+
若非。
658+
乘「乙」於「乙」。名之曰「丙」。
659+
施「求多項式」於「反正弦多項式」。於「丙」。乘其以「丙」。乘其以「甲」。加其於「甲」。乃得矣。
660+
云云。
646661
是謂「反正弦」之術也。
647662

648663
注曰「「反餘弦。同Javascript之Math.acos也。」」
649664
今有一術。名之曰「反餘弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。
650665
注曰「「反餘弦者。蓋反正弦之變化所得。」」
651-
減零以「甲」。取一以施「反正弦」。加其以「半圓周率」。乃得矣。
666+
施「絕對」於「甲」。名之曰「乙」。
667+
有爻陽。名之曰「非常」。
668+
若「乙」不大於一者。
669+
昔之「非常」者。今陰是矣。
670+
云云。
671+
若「非常」者。
672+
施「不可算數乎」於「甲」。若其者。乃得「甲」也。
673+
施「不可算」。乃得矣。
674+
云云。
652675

676+
若「乙」大於五分者。
677+
減「乙」於一。除其以二。名之曰「丙」。
678+
施「平方根」於「丙」。乘其以二。名之曰「丁」。
679+
施「求多項式」於「反正弦多項式」。於「丙」。乘其以「丙」。乘其以「丁」。加其以「丁」。名之曰「戊」。
680+
若「甲」大於零者。
681+
乃得「戊」。
682+
若非。
683+
夫「半圓周率密率」之二。乘其以二。減其以「戊」。名之曰「己」。
684+
夫「半圓周率密率」之一。乘其以二。加其於「己」。乃得矣。
685+
云云。
686+
若非。
687+
乘「乙」於「乙」。名之曰「丙」。
688+
施「求多項式」於「反正弦多項式」。於「丙」。乘其以「丙」。乘其以「甲」。加其於「甲」。名之曰「戊」。
689+
夫「半圓周率密率」之二。減其以「戊」。名之曰「己」。
690+
夫「半圓周率密率」之一。加其於「己」。乃得矣。
691+
云云。
653692
是謂「反餘弦」之術也。
654693

655694
注曰「「正切。同Javascript之Math.tan也。」」
@@ -661,66 +700,81 @@
661700
乃得「甲」也。
662701
若「乙」小於「正餘弦角限」者。
663702
乘「甲」於「甲」。名之曰「二次冪」。
664-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。乘其以「甲」。名之曰「勾」。
703+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「甲」。加其於「甲」。名之曰「勾」。
665704
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。名之曰「股」。
666705
除「勾」以「股」。乃得矣。云云。
667706
若「乙」不大於「至巨數」者。
668707
施「分四象」於「甲」。於「正餘弦角限」。名之曰「丙」。
669708
夫「丙」之「「角」」。名之曰「丁」。夫「丙」之「「象」」。名之曰「象」。
670709
乘「丁」於「丁」。名之曰「二次冪」。
671710
若「象」等於零者。
672-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。名之曰「勾」。
711+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。名之曰「勾」。
673712
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。名之曰「股」。
674713
除「勾」以「股」。乃得矣。云云。
675714
若「象」等於一者。
676715
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。名之曰「勾」。
677-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。名之曰「股」。
716+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。
717+
乘其以負一。名之曰「股」。
678718
除「勾」以「股」。乃得矣。云云。
679719
若「象」等於二者。
680-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。名之曰「勾」。
720+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。
721+
乘其以負一。名之曰「勾」。
681722
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。名之曰「股」。
682723
除「勾」以「股」。乃得矣。云云。
683724
若「象」等於三者。
684725
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。名之曰「勾」。
685-
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。名之曰「股」。
726+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。乘其以「丁」。加其於「丁」。名之曰「股」。
686727
除「勾」以「股」。乃得矣。云云。
687728
云云。
688729
施「不可算數乎」於「甲」。若其者。
689730
乃得「甲」也。
690731
施「不可算」。乃得矣。
691732
是謂「正切」之術也。
692733

734+
吾有一列。名之曰「反正切多項式」。
735+
充「反正切多項式」以負〇·三三三三三三三三三三三三三三三二六。
736+
充「反正切多項式」以〇·一九九九九九九九九九九九九二二六八。
737+
充「反正切多項式」以負〇·一四二八五七一四二八四二一〇九五七。
738+
充「反正切多項式」以〇·一一一一一一一〇九九六五六八一〇三。
739+
充「反正切多項式」以負〇·〇九〇九〇九〇四五七三六一九二八〇九。
740+
充「反正切多項式」以〇·〇七六九二二〇二二一一〇八五〇六九六。
741+
充「反正切多項式」以負〇·〇六六六五〇九六二七三七〇九三七五五。
742+
充「反正切多項式」以〇·〇五八六六八一九一二四六一七二三一三。
743+
充「反正切多項式」以負〇·〇五一五九〇五五四五〇八四〇七四八七。
744+
充「反正切多項式」以〇·〇四二八八一四六一二三五七三四五六〇。
745+
充「反正切多項式」以負〇·〇二九〇三〇一七〇一六〇九七五七五一。
746+
充「反正切多項式」以〇·〇一一二〇八四九一一九三〇八七七九二。
747+
693748
注曰「「反正切。同Javascript之Math.atan也。」」
694749
今有一術。名之曰「反正切」。欲行是術。必先得一數曰「甲」。乃行是術曰。
695-
注曰「「數小甚矣。乃得其身。小於二減根號三者。以泰勒展開求之。其餘以三角恆等式變化可得。」」
696-
697-
施「絕對」於「甲」。若其小於零又一絲者。乃得「甲」也。
698-
若「甲」小於零者。減零以「甲」。取一以施「反正切」。減其於零。乃得矣。云云。
699-
700-
若「甲」大於一者。除一以「甲」。取一以施「反正切」。減其於「半圓周率」。乃得矣。云云。
701-
702-
若「甲」大於零又二分六釐八毫者。
703-
除「半圓周率」以三。名之曰「六分之一圓周率」。
704-
有數一又七分三釐二毫零五忽。名之曰「三之平方根」。
705-
乘「三之平方根」以「甲」。減其以一。名之曰「分子」。
706-
加「三之平方根」以「甲」。除其於「分子」。取一以施「反正切」。
707-
加其以「六分之一圓周率」。乃得矣。
750+
注曰「「小於五分者。以多項式求之。其餘以三角恆等式變化可得。」」
751+
施「正負」於「甲」。名之曰「符」。乘「符」於「甲」。名之曰「乙」。
752+
有爻陽。名之曰「非常」。
753+
若「乙」大於零者。若「乙」不大於「至巨數」者。
754+
昔之「非常」者。今陰是矣。
755+
云云。云云。
756+
若「非常」者。
757+
若「乙」等於零者。乃得「甲」也。
758+
若「乙」大於「至巨數」者。乘「符」於「半圓周率」。乃得矣。云云。
759+
乃得「甲」。
708760
云云。
709761

710-
乘「甲」以「甲」。名之曰「二次冪」。
711-
乘「二次冪」以「甲」。名之曰「三次冪」。
712-
乘「二次冪」以「三次冪」。名之曰「五次冪」。
713-
乘「二次冪」以「五次冪」。名之曰「七次冪」。
714-
乘「二次冪」以「七次冪」。名之曰「九次冪」。
715-
乘「二次冪」以「九次冪」。名之曰「十一次冪」。
716-
717-
除「三次冪」以三。名之曰「項二」。
718-
除「五次冪」以五。名之曰「項三」。
719-
除「七次冪」以七。名之曰「項四」。
720-
除「九次冪」以九。名之曰「項五」。
721-
722-
減「甲」以「項二」。加其以「項三」。減其以「項四」。加其以「項五」。乃得矣。
723-
762+
若「乙」小於五分者。
763+
乘「乙」於「乙」。名之曰「丙」。
764+
施「求多項式」於「反正切多項式」。於「丙」。乘其以「丙」。乘其以「甲」。加其於「甲」。乃得矣。
765+
若非。若「乙」大於二者。
766+
除「乙」於一。名之曰「丁」。
767+
乘「丁」於「丁」。名之曰「丙」。
768+
施「求多項式」於「反正切多項式」。於「丙」。乘其以「丙」。乘其以「丁」。加其於「丁」。名之曰「戊」。
769+
夫「半圓周率密率」之二。減其以「戊」。名之曰「己」。
770+
夫「半圓周率密率」之一。加其於「己」。乘其以「符」。乃得矣。
771+
若非。
772+
減「乙」以一。名之曰「庚」。加「乙」於一。除其於「庚」。名之曰「丁」。
773+
乘「丁」於「丁」。名之曰「丙」。
774+
施「求多項式」於「反正切多項式」。於「丙」。乘其以「丙」。乘其以「丁」。加其於「丁」。名之曰「戊」。
775+
夫「半圓周率密率」之二。除其以二。加其於「戊」。名之曰「己」。
776+
夫「半圓周率密率」之一。除其以二。加其於「己」。乘其以「符」。乃得矣。
777+
云云。云云。
724778
是謂「反正切」之術也。
725779

726780

0 commit comments

Comments
 (0)