Skip to content

Commit d266667

Browse files
authored
Merge pull request #457 from statementreply/lib-math-5
stdlib: Improve sin, cos and tan (*/1/3)
2 parents e459adb + 0d53545 commit d266667

File tree

2 files changed

+168
-58
lines changed

2 files changed

+168
-58
lines changed

lib/算經.wy

Lines changed: 166 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -469,42 +469,151 @@
469469
云云。
470470
是謂「析浮點數」之術也。
471471

472+
除「上位冪」以四。名之曰「整除大數限」。
473+
474+
吾有一術。名之曰「取底除」。欲行是術。必先得二數曰「實」。曰「法」。是術曰。
475+
施「正負」於「法」。名之曰「法符」。乘「法」以「法符」。名之曰「法值」。乘「實」以「法符」。名之曰「乙」。
476+
施「正負」於「乙」。名之曰「乙符」。乘「乙」以「乙符」。名之曰「實值」。
477+
除「法值」於「實值」。所餘幾何。名之曰「餘」。
478+
減「餘」於「實值」。除其以「法值」。取一以施「取整」。名之曰「商」。
479+
若「乙符」小於零者。若「餘」不等於零者。
480+
減「商」於負一。昔之「商」者。今其是矣。
481+
減「餘」於「法值」。昔之「餘」者。今其是矣。
482+
云云。云云。
483+
吾有一物。名之曰「商餘」。其物如是。
484+
物之「「商」」者。數曰「商」。
485+
物之「「餘」」者。數曰「餘」。
486+
是謂「商餘」之物也。
487+
乃得「商餘」。
488+
是謂「取底除」之術也。
489+
490+
吾有一術。名之曰「取整除」。欲行是術。必先得二數曰「實」。曰「法」。是術曰。
491+
施「正負」於「法」。名之曰「法符」。乘「法」以「法符」。名之曰「法值」。
492+
施「正負」於「實」。名之曰「實符」。乘「實」以「實符」。名之曰「實值」。
493+
乘「法符」於「實符」名之曰「符」。
494+
除「法值」於「實值」。所餘幾何。名之曰「餘」。
495+
減「餘」於「實值」。除其以「法值」。取一以施「取整」。名之曰「商」。
496+
除「法值」以二。若「餘」不小於其者。
497+
加「商」以一。昔之「商」者。今其是矣。
498+
減「餘」以「法值」。昔之「餘」者。今其是矣。
499+
云云。
500+
乘「商」以「符」。昔之「商」者。今其是矣。
501+
乘「餘」以「符」。昔之「餘」者。今其是矣。
502+
吾有一物。名之曰「商餘」。其物如是。
503+
物之「「商」」者。數曰「商」。
504+
物之「「餘」」者。數曰「餘」。
505+
是謂「商餘」之物也。
506+
乃得「商餘」。
507+
是謂「取整除」之術也。
508+
509+
吾有一列。名之曰「半圓周率密率」。
510+
施「浮點移位」於八八四二七九七一九〇〇三五五五。於負四十九。充「半圓周率密率」以其。
511+
施「浮點移位」於四九六七七五七六〇〇〇二一五一一。於負一百零六。充「半圓周率密率」以其。
512+
513+
吾有一術。名之曰「分四象」。欲行是術。必先得二數曰「甲」。曰「上限」。是術曰。
514+
注曰「「甲須為有限非零數。」」
515+
注曰「「術尚不精。當以極密率除之。」」
516+
夫「甲」。夫「半圓周率密率」之一。取二以施「取整除」。名之曰「乙」。
517+
夫「乙」之「「商」」。名之曰「商」。夫「乙」之「「餘」」。名之曰「餘」。
518+
注曰「「半圓周率弧度即一象。」」
519+
施「絕對」於「商」。若其不小於「整除大數限」者。
520+
注曰「「商甚大。或算位不足而謬之。」」
521+
有數四。名之曰「移位」。
522+
夫「甲」。減零以「移位」。取二以施「浮點移位」。夫「上限」。取二以施「分四象」。
523+
夫其之「「角」」。夫「移位」。取二以施「浮點移位」。夫「上限」。取二以施「分四象」。乃得矣。
524+
云云。
525+
施「取底除」於「商」。於四。夫其之「「餘」」。名之曰「象」。
526+
夫「半圓周率密率」之二。乘其以「商」。減其於「餘」。昔之「餘」者。今其是矣。
527+
施「絕對」於「餘」。若其大於「上限」者。
528+
施「分四象」於「餘」。於「上限」。名之曰「解」。
529+
夫「解」之「「象」」。加其於「象」。夫四。取二以施「取底除」。
530+
夫其之「「餘」」。昔之「解」之「「象」」者。今其是矣。
531+
乃得「解」。
532+
若非。
533+
吾有一物。名之曰「解」。其物如是。
534+
物之「「角」」者。數曰「餘」。
535+
物之「「象」」者。數曰「象」。
536+
是謂「解」之物也。
537+
乃得「解」。
538+
云云。
539+
是謂「分四象」之術也。
540+
541+
有數七分九釐。名之曰「正餘弦角限」。注曰「「略大於四十五度。」」
542+
543+
吾有一列。名之曰「正弦多項式」。
544+
除負一以六。充「正弦多項式」以其。
545+
除一以一二〇。充「正弦多項式」以其。
546+
除負一以五〇四〇。充「正弦多項式」以其。
547+
除一以三六二八八〇。充「正弦多項式」以其。
548+
除負一以三九九一六八〇〇。充「正弦多項式」以其。
549+
除一以六二二七〇二〇八〇〇。充「正弦多項式」以其。
550+
除負一以一三〇七六七四三六八〇〇〇。充「正弦多項式」以其。
551+
除一以三五五六八七四二八〇九六〇〇〇。充「正弦多項式」以其。
552+
553+
吾有一列。名之曰「餘弦多項式」。
554+
除負一以二。充「餘弦多項式」以其。
555+
除一以二四。充「餘弦多項式」以其。
556+
除負一以七二〇。充「餘弦多項式」以其。
557+
除一以四〇三二〇。充「餘弦多項式」以其。
558+
除負一以三六二八八〇〇。充「餘弦多項式」以其。
559+
除一以四七九〇〇一六〇〇。充「餘弦多項式」以其。
560+
除負一以八七一七八二九一二〇〇。充「餘弦多項式」以其。
561+
除一以二〇九二二七八九八八八〇〇〇。充「餘弦多項式」以其。
562+
472563
注曰「「正弦。同Javascript之Math.sin也。」」
473564
今有一術。名之曰「正弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。
474565
注曰「「數小甚矣。乃得其身。否則以泰勒展開求之。復以週期性得其餘。」」
475566

476-
施「絕對」於「甲」。若其小於零又一絲者。乃得「甲」也。
477-
減零以「半圓周率」。名之曰「負半圓周率」。
478-
479-
若「甲」大於「半圓周率」者。
480-
減「甲」以「圓周率」。取一以施「正弦」。減其於零。乃得矣。
481-
云云。
482-
483-
若「甲」小於「負半圓周率」者。
484-
加「甲」以「圓周率」。取一以施「正弦」。減其於零。乃得矣。
567+
施「絕對」於「甲」。名之曰「乙」。
568+
若「乙」小於「下位冪」者。
569+
乃得「甲」也。
570+
若「乙」小於「正餘弦角限」者。
571+
乘「甲」於「甲」。名之曰「二次冪」。
572+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。乘其以「甲」。乃得矣。云云。
573+
若「乙」不大於「至巨數」者。
574+
施「分四象」於「甲」。於「正餘弦角限」。名之曰「丙」。
575+
夫「丙」之「「角」」。名之曰「丁」。夫「丙」之「「象」」。名之曰「象」。
576+
乘「丁」於「丁」。名之曰「二次冪」。
577+
若「象」等於零者。
578+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。乃得矣。云云。
579+
若「象」等於一者。
580+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乃得矣。云云。
581+
若「象」等於二者。
582+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。乃得矣。云云。
583+
若「象」等於三者。
584+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乃得矣。云云。
485585
云云。
486-
487-
乘「甲」以「甲」。名之曰「二次冪」。
488-
乘「二次冪」以「甲」。名之曰「三次冪」。
489-
乘「二次冪」以「三次冪」。名之曰「五次冪」。
490-
乘「二次冪」以「五次冪」。名之曰「七次冪」。
491-
乘「二次冪」以「七次冪」。名之曰「九次冪」。
492-
493-
除「三次冪」以六。名之曰「項二」。
494-
除「五次冪」以一百二十。名之曰「項三」。
495-
除「七次冪」以五千零四十。名之曰「項四」。
496-
除「九次冪」以三十六萬二千八百八十。名之曰「項五」。
497-
498-
減「甲」以「項二」。加其以「項三」。減其以「項四」。加其以「項五」。乃得矣。
499-
586+
施「不可算數乎」於「甲」。若其者。
587+
乃得「甲」也。
588+
施「不可算」。乃得矣。
500589
是謂「正弦」之術也。
501590

502591
注曰「「餘弦。同Javascript之Math.cos也。」」
503592
今有一術。名之曰「餘弦」。欲行是術。必先得一數曰「甲」。乃行是術曰。
504593
注曰「「餘弦者。蓋正弦之變化所得。」」
505594

506-
加「甲」以「半圓周率」。取一以施「正弦」。乃得矣。
507-
595+
施「絕對」於「甲」。名之曰「乙」。
596+
若「乙」小於「下位冪」者。
597+
乃得一也。
598+
若「乙」小於「正餘弦角限」者。
599+
乘「甲」於「甲」。名之曰「二次冪」。
600+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。乃得矣。云云。
601+
若「乙」不大於「至巨數」者。
602+
施「分四象」於「甲」。於「正餘弦角限」。名之曰「丙」。
603+
夫「丙」之「「角」」。名之曰「丁」。夫「丙」之「「象」」。名之曰「象」。
604+
乘「丁」於「丁」。名之曰「二次冪」。
605+
若「象」等於零者。
606+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乃得矣。云云。
607+
若「象」等於一者。
608+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。乃得矣。云云。
609+
若「象」等於二者。
610+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乃得矣。云云。
611+
若「象」等於三者。
612+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。乃得矣。云云。
613+
云云。
614+
施「不可算數乎」於「甲」。若其者。
615+
乃得「甲」也。
616+
施「不可算」。乃得矣。
508617
是謂「餘弦」之術也。
509618

510619
注曰「「反正弦。同Javascript之Math.asin也。」」
@@ -543,39 +652,40 @@
543652

544653
注曰「「正切。同Javascript之Math.tan也。」」
545654
今有一術。名之曰「正切」。欲行是術。必先得一數曰「甲」。乃行是術曰。
546-
注曰「「數小甚矣。乃得其身。居零與二十二度三十分之間者。以泰勒展開求之。其餘或以三角恆等式。或以週期性可得。」」
547-
548-
施「絕對」於「甲」。若其小於零又一絲者。乃得「甲」也。
549-
550-
若「甲」大於「圓周率」者。減「甲」以「圓周率」。取一以施「正切」。乃得矣。云云。
551-
若「甲」小於零者。加「甲」以「圓周率」。取一以施「正切」。乃得矣。云云。
655+
注曰「「數小甚矣。乃得其身。其餘或以三角恆等式。或以週期性可得。」」
552656

553-
若「甲」大於「半圓周率」者。減「圓周率」以「甲」。取一以施「正切」。減其於零。乃得矣。云云。
554-
555-
除「半圓周率」以二。若其小於「甲」者。
556-
減「半圓周率」以「甲」。取一以施「正切」。除其於一。乃得矣。
557-
云云。
558-
559-
除「半圓周率」以四。若其小於「甲」者。
560-
除「甲」以二。取一以施「正切」。名之曰「半甲正切」。
561-
562-
乘「半甲正切」以「半甲正切」。減其於一。名之曰「分母」。
563-
乘「半甲正切」以二。除其以「分母」。乃得矣。
657+
施「絕對」於「甲」。名之曰「乙」。
658+
若「乙」小於「下位冪」者。
659+
乃得「甲」也。
660+
若「乙」小於「正餘弦角限」者。
661+
乘「甲」於「甲」。名之曰「二次冪」。
662+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。乘其以「甲」。名之曰「勾」。
663+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其以一。名之曰「股」。
664+
除「勾」以「股」。乃得矣。云云。
665+
若「乙」不大於「至巨數」者。
666+
施「分四象」於「甲」。於「正餘弦角限」。名之曰「丙」。
667+
夫「丙」之「「角」」。名之曰「丁」。夫「丙」之「「象」」。名之曰「象」。
668+
乘「丁」於「丁」。名之曰「二次冪」。
669+
若「象」等於零者。
670+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。名之曰「勾」。
671+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。名之曰「股」。
672+
除「勾」以「股」。乃得矣。云云。
673+
若「象」等於一者。
674+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。名之曰「勾」。
675+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。名之曰「股」。
676+
除「勾」以「股」。乃得矣。云云。
677+
若「象」等於二者。
678+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。乘其以「丁」。名之曰「勾」。
679+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。名之曰「股」。
680+
除「勾」以「股」。乃得矣。云云。
681+
若「象」等於三者。
682+
施「求多項式」於「餘弦多項式」。於「二次冪」。乘其以「二次冪」。減其於負一。名之曰「勾」。
683+
施「求多項式」於「正弦多項式」。於「二次冪」。乘其以「二次冪」。加其於一。乘其以「丁」。名之曰「股」。
684+
除「勾」以「股」。乃得矣。云云。
564685
云云。
565-
566-
乘「甲」以「甲」。名之曰「二次冪」。
567-
乘「二次冪」以「甲」。名之曰「三次冪」。
568-
乘「二次冪」以「三次冪」。名之曰「五次冪」。
569-
乘「二次冪」以「五次冪」。名之曰「七次冪」。
570-
乘「二次冪」以「七次冪」。名之曰「九次冪」。
571-
572-
除「三次冪」以三。名之曰「項二」。
573-
乘「五次冪」以二。除其以十五。名之曰「項三」。
574-
乘「七次冪」以十七。除其以三百十五。名之曰「項四」。
575-
除「九次冪」以六十二。除其以二千八百三十五。名之曰「項五」。
576-
577-
加「甲」以「項二」。加其以「項三」。加其以「項四」。加其以「項五」。乃得矣。
578-
686+
施「不可算數乎」於「甲」。若其者。
687+
乃得「甲」也。
688+
施「不可算」。乃得矣。
579689
是謂「正切」之術也。
580690

581691
注曰「「反正切。同Javascript之Math.atan也。」」

test/__snapshots__/examples.test.js.mocha-snapshot

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,9 +306,9 @@ exports["examples/romanizeIdentifiers/multiplication_table(0)"] = "1 1 '得' 1\n
306306

307307
exports["examples/romanizeIdentifiers/selectionsort(0)"] = "[ 5, 8, 9, 10, 55, 300, 1000 ]\n";
308308

309-
exports["examples/javascript/import(0)"] = "問天地好在。\n-1.0000035425842861\n0.2219365059863776\n0.8670741952955723\n0.4566241691354662\n0.3282580836676061\n0.7879422304686159\n0.7689291713759303\n0.32359148492105305\n0.1034216065891087\n0.6936461653094739\n0.5909193623811007\n3\n3\n4\n3.141592653589793\n1\n";
309+
exports["examples/javascript/import(0)"] = "問天地好在。\n-1\n0.2219365059863776\n0.8670741952955723\n0.4566241691354662\n0.3282580836676061\n0.7879422304686159\n0.7689291713759303\n0.32359148492105305\n0.1034216065891087\n0.6936461653094739\n0.5909193623811007\n3\n3\n4\n3.141592653589793\n1\n";
310310

311-
exports["examples/romanizeIdentifiers/import(0)"] = "問天地好在。\n-1.0000035425842861\n0.2219365059863776\n0.8670741952955723\n0.4566241691354662\n0.3282580836676061\n0.7879422304686159\n0.7689291713759303\n0.32359148492105305\n0.1034216065891087\n0.6936461653094739\n0.5909193623811007\n3\n3\n4\n3.141592653589793\n1\n";
311+
exports["examples/romanizeIdentifiers/import(0)"] = "問天地好在。\n-1\n0.2219365059863776\n0.8670741952955723\n0.4566241691354662\n0.3282580836676061\n0.7879422304686159\n0.7689291713759303\n0.32359148492105305\n0.1034216065891087\n0.6936461653094739\n0.5909193623811007\n3\n3\n4\n3.141592653589793\n1\n";
312312

313313
exports["examples/javascript/nested_fun(0)"] = "";
314314

0 commit comments

Comments
 (0)