summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-09-17 19:55:48 +0000
committerKarl Berry <karl@freefriends.org>2022-09-17 19:55:48 +0000
commit32c43c05780d73b1e0095d809053db3b71121e54 (patch)
tree375bca28d0ec309a3557f39f2a3537d6cf820227 /Master/texmf-dist/tex
parent92adf95ed165100e9db9c7b9bd00b0cb6fb71685 (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.sty84
-rw-r--r--Master/texmf-dist/tex/latex/calculator/calculus.sty1
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}