blob: de93cd47750bd8cb247365b4c9d41b47093d0f80 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
%%
%% This is file `multiply.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% bez123.dtx (with options: `mult')
%%
%% -----------------------------------------------------------------
%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com until June 2004
%% (or at: pandgwilson at earthlink dot net)
%% Copyright 1998 --- 2004 Peter R. Wilson
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3 of this license or (at your option) any
%% later version.
%% The latest version of the license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2003/06/01 or later.
%%
%% This work has the LPPL maintenance status "author-maintained".
%%
%% This work consists of the files listed in the README file.
%% -----------------------------------------------------------------
%%
\ProvidesPackage{multiply}[1998/10/14 v1.1 Multiplication of lengths without overflow]
\newlength{\n@fl@wa}
\newlength{\n@fl@wb}
\newlength{\n@fl@wc}
\newif\ifch@nge
\newcommand{\multnooverflow}[2]{%
\n@fl@wa = #1\relax%
\n@fl@wb = #2\relax%
\ch@ngefalse%
\ifnum\n@fl@wb = \@ne%
\else%
\ifnum\n@fl@wb = \z@%
\n@fl@wa = \z@%
\else%
\ifnum\n@fl@wb = \m@ne%
\ch@ngetrue%
\else%
\ifnum\n@fl@wa = \z@%
\else%
\ifnum\n@fl@wa = \@ne%
\n@fl@wa = \n@fl@wb%
\else%
\ifnum\n@fl@wa = \m@ne%
\n@fl@wa = -\n@fl@wb%
\else%
\ifnum\n@fl@wa < \z@%
\ch@ngetrue%
\n@fl@wa = -\n@fl@wa%
\fi%
\ifnum\n@fl@wb < \z@%
\n@fl@wb = -\n@fl@wb%
\ifch@nge%
\ch@ngefalse%
\else%
\ch@ngetrue%
\fi%
\fi%
\n@fl@wc = \maxdimen%
\divide\n@fl@wc by \n@fl@wb%
\advance\n@fl@wc by -1sp% \m@ne
\ifnum\n@fl@wa > \n@fl@wc%
\n@fl@wa = \maxdimen%
\PackageWarning{multiply}{Multiplication overflow}%
\else%
\multiply\n@fl@wa by \n@fl@wb%
\fi%
\fi%
\fi%
\fi%
\fi%
\fi%
\fi%
\ifch@nge%
\n@fl@wa = -\n@fl@wa%
\fi%
#1 = \n@fl@wa%
}
\endinput
%%
%% End of file `multiply.sty'.
|