diff options
author | Karl Berry <karl@freefriends.org> | 2022-09-17 19:55:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-09-17 19:55:48 +0000 |
commit | 32c43c05780d73b1e0095d809053db3b71121e54 (patch) | |
tree | 375bca28d0ec309a3557f39f2a3537d6cf820227 /Master/texmf-dist/tex | |
parent | 92adf95ed165100e9db9c7b9bd00b0cb6fb71685 (diff) |
calculator (17sep22)
git-svn-id: svn://tug.org/texlive/trunk@64424 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/calculator/calculator.sty | 84 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/calculator/calculus.sty | 1 |
2 files changed, 62 insertions, 23 deletions
diff --git a/Master/texmf-dist/tex/latex/calculator/calculator.sty b/Master/texmf-dist/tex/latex/calculator/calculator.sty index 0c8cd4a23c8..2ab4be4fa84 100644 --- a/Master/texmf-dist/tex/latex/calculator/calculator.sty +++ b/Master/texmf-dist/tex/latex/calculator/calculator.sty @@ -46,13 +46,26 @@ + \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{calculator}[2014/02/20 v.2.0] +\ProvidesPackage{calculator}[2022/09/15 v.2.1] \newdimen\cctr@lengtha \newdimen\cctr@lengthb \newdimen\cctr@epsilon \cctr@epsilon=1sp \def\cctr@logmaxnum{9.704} +\def\cctr@Warntruncate#1#2{% + \PackageWarning{calculator}% + {The optional argument in truncate \MessageBreak + must be less than 5 \MessageBreak + I copy #1 to #2 \MessageBreak without truncating}} + +\def\cctr@Warnround#1#2{% + \PackageWarning{calculator}% + {The optional argument in round \MessageBreak + must be less than 5 \MessageBreak + I copy #1 to #2 \MessageBreak without rounding}} + \def\cctr@Warndivzero#1#2{% \PackageWarning{calculator}% {Division by 0.\MessageBreak @@ -293,7 +306,7 @@ \begingroup \INTEGERDIVISION{#1}{#2}{#3}{\cctr@temp}\@OUTPUTSOL{#3}} \def\@@INTEGERPART#1.#2.#3)#4{\ifnum #11=1 \COPY{0}{#4} - \else \COPY{#1}{#4}\fi} + \else \ADD{0}{#1}{#4}\fi} \def\@INTEGERPART#1#2{\expandafter\@@INTEGERPART#1..){#2}} \def\INTEGERPART#1#2{\begingroup \ifdim #1\p@<\z@ @@ -307,8 +320,8 @@ \@INTEGERPART{#1}{#2} \fi\@OUTPUTSOL{#2}} \let\FLOOR\INTEGERPART -\def\@@FRACTIONALPART#1.#2.#3)#4{\ifnum #2=11 \COPY{0}{#4} - \else \COPY{0.#2}{#4}\fi} +\def\@@FRACTIONALPART#1.#2.#3)#4{\ifnum #21=1 \COPY{0}{#4} + \else \ADD{0}{0.#2}{#4}\fi} \def\@FRACTIONALPART#1#2{\expandafter\@@FRACTIONALPART#1..){#2}} \def\FRACTIONALPART#1#2{\begingroup \ifdim #1\p@<\z@ @@ -317,17 +330,21 @@ \else \@FRACTIONALPART{#1}{#2} \fi\@OUTPUTSOL{#2}} + \def\TRUNCATE{\@ifnextchar[\@@TRUNCATE\@TRUNCATE} \def\@TRUNCATE#1#2{\@@TRUNCATE[2]{#1}{#2}} \def\@@TRUNCATE[#1]#2#3{% \begingroup + \ifdim #1\p@ > 4\p@ \cctr@Warntruncate{#2}{\noexpand#3} \COPY{#2}{#3} + \else \INTEGERPART{#2}{\cctr@tempa} \ifdim \cctr@tempa\p@ = #2\p@ - \expandafter\@@@TRUNCATE#2.00000)[#1]{#3} + \expandafter\@@@TRUNCATE\cctr@tempa.00000.)[#1]{#3} \else \expandafter\@@@TRUNCATE#200000.)[#1]{#3} - \fi + \fi\fi \@OUTPUTSOL{#3}} + \def\@@@TRUNCATE#1.#2#3#4#5#6.#7)[#8]#9{% \ifcase #8 \COPY{#1}{#9} @@ -339,23 +356,43 @@ \def\ROUND{\@ifnextchar[\@@ROUND\@ROUND} \def\@ROUND#1#2{\@@ROUND[2]{#1}{#2}} \def\@@ROUND[#1]#2#3{% - \begingroup - \ifdim#2\p@<\z@ - \MULTIPLY{-1}{#2}{\cctr@temp} - \@@ROUND[#1]{\cctr@temp}{#3}\COPY{-#3}{#3} - \else - \@@TRUNCATE[#1]{#2}{\cctr@tempe} - \SUBTRACT{#2}{\cctr@tempe}{\cctr@tempc} - \POWER{10}{#1}{\cctr@tempb} - \MULTIPLY{\cctr@tempb}{\cctr@tempc}{\cctr@tempc} - \ifdim\cctr@tempc\p@<0.5\p@ - \else - \DIVIDE{1}{\cctr@tempb}{\cctr@tempb} - \ADD{\cctr@tempe}{\cctr@tempb}{\cctr@tempe} - \fi - \@@TRUNCATE[#1]{\cctr@tempe}{#3} - \fi - \@OUTPUTSOL{#3}} + \begingroup + \ifdim #1\p@ > 4\p@ \cctr@Warnround{#2}{\noexpand#3} \COPY{#2}{#3} + \else + \INTEGERPART{#2}{\cctr@tempa} + \ifdim \cctr@tempa\p@ = #2\p@ + \expandafter\@@@ROUND\cctr@tempa.00000.)[#1]{#3} + \else + \expandafter\@@@ROUND#200000.)[#1]{#3} + \fi + \fi + \@OUTPUTSOL{#3}} + +\def\@@@ROUND#1.#2#3#4#5#6.#7)[#8]#9{% + \ifcase #8 + \COPY{#1}{#9} \ifnum #2>4 \ADD{#1}{1}{\cctr@tempp}\COPY{\cctr@tempp}{#9} \fi + \or\COPY{#1.#2}{#9} \ifnum #3>4 \ADD{#2}{1}\cctr@tempq\COPY{#1}{\cctr@tempp} + \ifnum\cctr@tempq=10\ADD{\cctr@tempp}{1}\cctr@tempp\COPY{0}{\cctr@tempq}\fi + \COPY{\cctr@tempp.\cctr@tempq}{#9} + \fi + \or\COPY{#1.#2#3}{#9} \ifnum #4>4 \ADD{#3}1\cctr@tempq\COPY{#2}{\cctr@tempp}\COPY{#1}{\cctr@tempo} + \ifnum\cctr@tempq=10\ADD{\cctr@tempp}{1}{\cctr@tempp}\COPY{0}{\cctr@tempq}\fi + \ifnum\cctr@tempp=10\ADD{\cctr@tempo}{1}\cctr@tempo\COPY{0}{\cctr@tempp}\fi + \COPY{\cctr@tempo.\cctr@tempp\cctr@tempq}{#9} + \fi + \or\COPY{#1.#2#3#4}{#9} \ifnum #5>4 \ADD{#4}1\cctr@tempq\COPY{#3}{\cctr@tempp}\COPY{#2}{\cctr@tempo}\COPY{#1}{\cctr@tempn} + \ifnum\cctr@tempq=10\ADD{\cctr@tempp}{1}{\cctr@tempp}\COPY{0}{\cctr@tempq}\fi + \ifnum\cctr@tempp=10\ADD{\cctr@tempo}{1}\cctr@tempo\COPY{0}{\cctr@tempp}\fi + \ifnum\cctr@tempo=10\ADD{\cctr@tempn}{1}\cctr@tempn\COPY{0}{\cctr@tempo}\fi + \COPY{\cctr@tempn.\cctr@tempo\cctr@tempp\cctr@tempq}{#9} + \fi + \or\COPY{#1.#2#3#4#5}{#9} \ifnum #6>4 \ADD{#5}1\cctr@tempq\COPY{#4}{\cctr@tempp}\COPY{#3}{\cctr@tempo}\COPY{#2}{\cctr@tempn}\COPY{#1}{\cctr@tempm} + \ifnum\cctr@tempq=10\ADD{\cctr@tempp}{1}{\cctr@tempp}\COPY{0}{\cctr@tempq}\fi + \ifnum\cctr@tempp=10\ADD{\cctr@tempo}{1}\cctr@tempo\COPY{0}{\cctr@tempp}\fi + \ifnum\cctr@tempo=10\ADD{\cctr@tempn}{1}\cctr@tempn\COPY{0}{\cctr@tempo}\fi + \ifnum\cctr@tempn=10\ADD{\cctr@tempm}{1}\cctr@tempm\COPY{0}{\cctr@tempn}\fi + \COPY{\cctr@tempm.\cctr@tempn\cctr@tempo\cctr@tempp\cctr@tempq}{#9} + \fi} \def\GCD#1#2#3{% \begingroup \ABSVALUE{#1}{\cctr@tempa} @@ -748,6 +785,7 @@ \def\@BASICLOG#1#2{\begingroup \SUBTRACT{#1}{1}{\cctr@tempw} \cctr@lengthb=5\p@% + \cctr@epsilon=2\cctr@epsilon% \@whilenum \cctr@lengthb>\cctr@epsilon \do {% \COPY{\cctr@tempw}{\cctr@tempoldw} \EXP{\cctr@tempw}{\cctr@tempxw} diff --git a/Master/texmf-dist/tex/latex/calculator/calculus.sty b/Master/texmf-dist/tex/latex/calculator/calculus.sty index 86010b080af..a6ba29255f4 100644 --- a/Master/texmf-dist/tex/latex/calculator/calculus.sty +++ b/Master/texmf-dist/tex/latex/calculator/calculus.sty @@ -46,6 +46,7 @@ + \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{calculus}[2014/02/20 v.2.0] \RequirePackage{calculator} |