gmp 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +4 -1
- data/manual.pdf +0 -0
- data/manual.tex +293 -79
- data/test/unit_tests.rb +24 -0
- metadata +3 -2
data/CHANGELOG
CHANGED
data/manual.pdf
ADDED
Binary file
|
data/manual.tex
CHANGED
@@ -1,23 +1,33 @@
|
|
1
1
|
\documentclass[pdftex,10pt]{article}
|
2
2
|
\usepackage{amsmath,amsfonts,url}
|
3
3
|
\usepackage[pdftex]{graphicx}
|
4
|
+
\usepackage{booktabs}
|
5
|
+
\usepackage{url}
|
4
6
|
\setlength{\parindent}{0pt}
|
5
|
-
\newcommand{\HRule}{\rule{\linewidth}{0.8mm}}
|
6
|
-
\newcommand{\sectionline}{\rule{1.0\linewidth}{2.0pt}}
|
7
7
|
\def\cour{\fontfamily{pcr}\selectfont}
|
8
|
-
\usepackage[top=
|
8
|
+
\usepackage[top=1in, bottom=0.8in, left=0.8in, right=0.8in]{geometry}
|
9
9
|
\setcounter{tocdepth}{3}
|
10
|
-
\
|
11
|
-
\
|
12
|
-
\
|
10
|
+
\newlength{\titrwidth}
|
11
|
+
\setlength{\titrwidth}{\textwidth}
|
12
|
+
\addtolength{\titrwidth}{-1.2in}
|
13
|
+
\newlength{\methwidth}
|
14
|
+
\setlength{\methwidth}{0.8in}
|
15
|
+
\newlength{\defnwidth}
|
16
|
+
\setlength{\defnwidth}{\textwidth}
|
17
|
+
\addtolength{\defnwidth}{-1.2in}
|
18
|
+
\addtolength{\heavyrulewidth}{\heavyrulewidth}
|
19
|
+
\def\qquad{\quad\quad}
|
20
|
+
\def\qqqquad{\quad\quad\quad\quad}
|
13
21
|
\begin{document}
|
14
|
-
|
15
|
-
\
|
16
|
-
\
|
17
|
-
\
|
18
|
-
\large{
|
19
|
-
\large{
|
20
|
-
\
|
22
|
+
|
23
|
+
\begin{tabular}{p{1.0in} p{\titrwidth}}
|
24
|
+
\huge{gmp} &\\
|
25
|
+
\midrule[3pt]
|
26
|
+
\multicolumn{2}{r}{\large{Ruby bindings to the GMP library}}\\
|
27
|
+
\multicolumn{2}{r}{\large{Edition 0.1.9}}\\
|
28
|
+
\multicolumn{2}{r}{\large{23 November 2009}}
|
29
|
+
\end{tabular}
|
30
|
+
|
21
31
|
\vfill
|
22
32
|
\large{written by Sam Rawlins}\\
|
23
33
|
\large{with extensive quoting from the GMP Manual}
|
@@ -63,13 +73,17 @@ Some optimizations also for Cray vector systems, Clipper, IBM ROMP (RT), and
|
|
63
73
|
Pyramid AP/XP.\\
|
64
74
|
\\
|
65
75
|
For up-to-date information on GMP, please see the GMP web pages at\\
|
76
|
+
\setlength{\parindent}{0.25in}
|
77
|
+
\texttt{http://gmplib.org/}
|
78
|
+
\setlength{\parindent}{0in}
|
66
79
|
\\
|
67
|
-
\indent \texttt{http://gmplib.org/}\\
|
68
80
|
|
69
81
|
The latest version of the library is available at\\
|
70
|
-
|
82
|
+
\setlength{\parindent}{0.25in}
|
71
83
|
\texttt{ftp://ftp.gnu.org/gnu/gmp/}\\
|
84
|
+
\setlength{\parindent}{0in}
|
72
85
|
\\
|
86
|
+
|
73
87
|
Many sites around the world mirror '\texttt{ftp.gnu.org}', please use a mirror
|
74
88
|
near you, see \texttt{http://www.gnu.org/order/ftp.html} for a full list.\\
|
75
89
|
\\
|
@@ -119,8 +133,8 @@ That's all. I don't intend to test any older versions, maybe 4.3.0 for completen
|
|
119
133
|
|
120
134
|
Here is a table of the exact environments I have tested the gmp gem on:\\\\
|
121
135
|
|
122
|
-
\begin{tabular}{
|
123
|
-
Platform & Ruby & GMP \\ \
|
136
|
+
\begin{tabular}{lrr} \hline
|
137
|
+
Platform & Ruby & GMP \\ \midrule[1pt]
|
124
138
|
Cygwin on x86 & (MRI) Ruby 1.8.7 & GMP 4.3.1 \\ \hline
|
125
139
|
Linux (LinuxMint 7) on x86 & (MRI) Ruby 1.8.7 & GMP 4.3.1 \\ \hline
|
126
140
|
Mac OS X 10.5.7 on x86 (32-bit) & (MRI) Ruby 1.8.6 & GMP 4.3.1 \\ \hline
|
@@ -130,18 +144,18 @@ Here is a table of the exact environments I have tested the gmp gem on:\\\\
|
|
130
144
|
\subsection{Installing}
|
131
145
|
You may clone the gmp gem's git repository with:\\
|
132
146
|
\\
|
133
|
-
\
|
147
|
+
\texttt{git clone git://github.com/srawlins/gmp.git}\\
|
134
148
|
|
135
149
|
Or you may install the gem from github:\\
|
136
150
|
\\
|
137
|
-
\
|
151
|
+
\texttt{gem install srawlins-gmp}\\
|
138
152
|
|
139
153
|
At this time, the gem does not self-compile (how does that work?). To compile the C
|
140
154
|
extensions, do the following:\\
|
141
155
|
\\
|
142
|
-
\
|
143
|
-
\
|
144
|
-
\
|
156
|
+
\texttt{cd <srawlins-gmp gem directory>/ext}\\
|
157
|
+
\texttt{ruby extconf.rb}\\
|
158
|
+
\texttt{make}\\
|
145
159
|
|
146
160
|
There shouldn't be any errors, or warnings.
|
147
161
|
|
@@ -163,74 +177,274 @@ In addition to the above three classes, there is also one constant within \textt
|
|
163
177
|
\item \texttt{GMP::GMP\_VERSION} - The version of GMP compiled into the gmp gem.
|
164
178
|
\end{itemize}
|
165
179
|
|
180
|
+
\newpage
|
166
181
|
\section{Integer Functions}
|
167
182
|
|
168
183
|
\subsection{Initializing, Assigning Integers}
|
169
184
|
|
170
|
-
\
|
171
|
-
\
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
\
|
176
|
-
|
177
|
-
GMP::Z.
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
\
|
185
|
+
\begin{tabular}{p{\methwidth} l r}
|
186
|
+
\toprule
|
187
|
+
\textbf{new} & & GMP::Z.new $\rightarrow$ \textit{integer} \\
|
188
|
+
& & GMP::Z.new(\textit{numeric = 0}) $\rightarrow$ \textit{integer} \\
|
189
|
+
& & GMP::Z.new(\textit{str}) $\rightarrow$ \textit{integer} \\
|
190
|
+
\cmidrule(r){2-3}
|
191
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
192
|
+
This method creates a new \textit{GMP::Z} integer. It takes one optional argument for
|
193
|
+
the value of the integer. This argument can be one of several classes. Here are some
|
194
|
+
examples:\newline
|
195
|
+
|
196
|
+
\texttt{GMP::Z.new \qqqquad\qqqquad \#=> 0 (default) \newline
|
197
|
+
GMP::Z.new(1) \qqqquad\qquad\ \#=> 1 (Ruby Fixnum) \newline
|
198
|
+
GMP::Z.new("127") \qqqquad\ \#=> 127 (Ruby String)\newline
|
199
|
+
GMP::Z.new(4294967296) \qquad \#=> 4294967296 (Ruby Bignum)\newline
|
200
|
+
GMP::Z.new(GMP::Z.new(31)) \#=> 31 (GMP Integer)}
|
201
|
+
}
|
202
|
+
\end{tabular}
|
203
|
+
\newline\newline
|
182
204
|
|
183
205
|
There is also a convenience method available, \texttt{GMP::Z()}.\\
|
184
206
|
|
185
207
|
\subsection{Converting Integers}
|
186
208
|
|
187
|
-
\
|
188
|
-
|
189
|
-
\\
|
190
|
-
|
191
|
-
\
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
\
|
196
|
-
|
197
|
-
\
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
\
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
\
|
206
|
-
\\
|
207
|
-
\
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
209
|
+
\begin{tabular}{p{\methwidth} l r}
|
210
|
+
\toprule
|
211
|
+
\textbf{to\_d} & & \textit{integer}.to\_d $\rightarrow$ \textit{float} \\
|
212
|
+
\cmidrule(r){2-3}
|
213
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
214
|
+
Returns \textit{integer} as an Float if \textit{integer} fits in a Float.
|
215
|
+
|
216
|
+
Otherwise returns the least significant part of \texttt{integer}, with the same sign as
|
217
|
+
\textit{integer}.
|
218
|
+
|
219
|
+
If \textit{integer} is too big to fit in a Float, the returned result is probably not
|
220
|
+
very useful. To find out if the value will fit, use the function
|
221
|
+
\textit{mpz\_fits\_slong\_p} (\textbf{Unimplemented}).
|
222
|
+
}
|
223
|
+
\end{tabular}
|
224
|
+
\newline\newline
|
225
|
+
|
226
|
+
\begin{tabular}{p{\methwidth} l r}
|
227
|
+
\toprule
|
228
|
+
\textbf{to\_i} & & \textit{integer}.to\_i $\rightarrow$ \textit{fixnum} \\
|
229
|
+
\cmidrule(r){2-3}
|
230
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
231
|
+
Returns \textit{integer} as a Fixnum if \textit{integer} fits in a Fixnum.
|
232
|
+
\newline
|
233
|
+
|
234
|
+
Otherwise returns the least significant part of \textit{integer}, with the same sign as
|
235
|
+
\textit{integer}.
|
236
|
+
\newline
|
237
|
+
|
238
|
+
If \textit{integer} is too big to fit in a Fixnum, the returned result is probably not
|
239
|
+
very useful. To find out if the value will fit, use the function
|
240
|
+
\textit{mpz\_fits\_slong\_p} (\textbf{Unimplemented}).
|
241
|
+
}
|
242
|
+
\end{tabular}
|
243
|
+
\newline\newline
|
244
|
+
|
245
|
+
\begin{tabular}{p{\methwidth} l r}
|
246
|
+
\toprule
|
247
|
+
\textbf{to\_s} & & \textit{integer}.to\_s(\textit{base = 10}) $\rightarrow$ \textit{str} \\
|
248
|
+
\cmidrule(r){2-3}
|
249
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
250
|
+
Converts \textit{integer} to a string of digits in base \textit{base}. The
|
251
|
+
\textit{base} argument may vary from 2 to 62 or from -2 to -36, or be a symbol, one of
|
252
|
+
\textit{:bin}, \textit{:oct}, \textit{:dec}, or \textit{:hex}.
|
253
|
+
\newline
|
254
|
+
|
255
|
+
For \textit{base} in the range 2..36, digits and lower-case letters are used; for
|
256
|
+
-2..-36 (and \textit{:bin}, \textit{:oct}, \textit{:dec}, and \textit{:hex}), digits
|
257
|
+
and upper-case letters are used; for 37..62, digits, upper-case letters, and lower-case
|
258
|
+
letters (in that significance order) are used. Here are some
|
259
|
+
examples:\newline
|
260
|
+
|
261
|
+
\texttt{GMP::Z(1).to\_s \qqqquad \#=> "1" \newline
|
262
|
+
GMP::Z(32).to\_s(2) \qquad \#=> "100000" \newline
|
263
|
+
GMP::Z(32).to\_s(4) \qquad \#=> "200" \newline
|
264
|
+
GMP::Z(10).to\_s(16) \quad\ \#=> "a" \newline
|
265
|
+
GMP::Z(10).to\_s(-16) \quad \#=> "A" \newline
|
266
|
+
GMP::Z(255).to\_s(:bin) \#=> "11111111" \newline
|
267
|
+
GMP::Z(255).to\_s(:oct) \#=> "377" \newline
|
268
|
+
GMP::Z(255).to\_s(:dec) \#=> "255" \newline
|
269
|
+
GMP::Z(255).to\_s(:hex) \#=> "ff"}
|
270
|
+
}
|
271
|
+
\end{tabular}
|
219
272
|
|
220
273
|
\subsection{Integer Arithmetic}
|
221
274
|
|
222
|
-
\
|
223
|
-
\
|
224
|
-
\
|
225
|
-
|
226
|
-
\
|
227
|
-
the
|
228
|
-
\
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
\
|
275
|
+
\begin{tabular}{p{\methwidth} l r}
|
276
|
+
\toprule
|
277
|
+
\textbf{+} & & \textit{integer} + \textit{numeric} $\rightarrow$ \textit{numeric} \\
|
278
|
+
\cmidrule(r){2-3}
|
279
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
280
|
+
Returns the sum of \textit{integer} and \textit{numeric}. \textit{numeric} can be a
|
281
|
+
member of \textit{GMP::Z}, \textit{Fixnum}, \textit{GMP::Q}, \textit{GMP::F}, or
|
282
|
+
\textit{Bignum}.
|
283
|
+
}
|
284
|
+
\end{tabular}
|
285
|
+
\newline\newline
|
286
|
+
|
287
|
+
\begin{tabular}{p{\methwidth} l r}
|
288
|
+
\toprule
|
289
|
+
\textbf{add} & & \textit{integer}.add(\textit{numeric}) $\rightarrow$ \textit{numeric} \\
|
290
|
+
\cmidrule(r){2-3}
|
291
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
292
|
+
Returns the sum of \textit{integer} and \textit{numeric}. \textit{numeric} can be a
|
293
|
+
member of \textit{GMP::Z}, \textit{Fixnum}, \textit{GMP::Q}, \textit{GMP::F}, or
|
294
|
+
\textit{Bignum}.
|
295
|
+
}
|
296
|
+
\end{tabular}
|
297
|
+
\newline\newline
|
298
|
+
|
299
|
+
\begin{tabular}{p{\methwidth} l r}
|
300
|
+
\toprule
|
301
|
+
\textbf{add!} & & \textit{integer}.add!(\textit{numeric}) $\rightarrow$
|
302
|
+
\textit{numeric} \\
|
303
|
+
\cmidrule(r){2-3}
|
304
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
305
|
+
Sums \textit{integer} and \textit{numeric}, in place. \textit{numeric} can be a
|
306
|
+
member of \textit{GMP::Z}, \textit{Fixnum}, \textit{GMP::Q}, \textit{GMP::F}, or
|
307
|
+
\textit{Bignum}.
|
308
|
+
}
|
309
|
+
\end{tabular}
|
310
|
+
\newline\newline
|
311
|
+
|
312
|
+
\begin{tabular}{p{\methwidth} l r}
|
313
|
+
\toprule
|
314
|
+
\textbf{-} & & \textit{integer} - \textit{numeric} $\rightarrow$ \textit{numeric} \\
|
315
|
+
& & \textit{integer}.sub(\textit{numeric}) $\rightarrow$ \textit{numeric} \\
|
316
|
+
& & \textit{integer}.sub!(\textit{numeric}) $\rightarrow$ \textit{numeric} \\
|
317
|
+
\cmidrule(r){2-3}
|
318
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
319
|
+
Returns the difference of \textit{integer} and \textit{numeric}. The destructive method
|
320
|
+
calculates the difference in place. \textit{numeric} can be a member of
|
321
|
+
\textit{GMP::Z}, \textit{Fixnum}, \textit{GMP::Q}, \textit{GMP::F}, or \textit{Bignum}.
|
322
|
+
}
|
323
|
+
\end{tabular}
|
324
|
+
\newline\newline
|
325
|
+
|
326
|
+
\begin{tabular}{p{\methwidth} l r}
|
327
|
+
\toprule
|
328
|
+
\textbf{*} & & \textit{integer} * \textit{numeric} $\rightarrow$ \textit{numeric} \\
|
329
|
+
& & \textit{integer}.mul(\textit{numeric}) $\rightarrow$ \textit{numeric} \\
|
330
|
+
& & \textit{integer}.mul!(\textit{numeric}) $\rightarrow$ \textit{numeric} \\
|
331
|
+
\cmidrule(r){2-3}
|
332
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
333
|
+
Returns the product of \textit{integer} and \textit{numeric}. The destructive method
|
334
|
+
calculates the product in place. \textit{numeric} can be a member of \textit{GMP::Z},
|
335
|
+
\textit{Fixnum}, \textit{GMP::Q}, \textit{GMP::F}, or \textit{Bignum}.
|
336
|
+
}
|
337
|
+
\end{tabular}
|
338
|
+
\newline\newline
|
339
|
+
|
340
|
+
\begin{tabular}{p{\methwidth} l r}
|
341
|
+
\toprule
|
342
|
+
\textbf{-@} & & -\textit{integer}\\
|
343
|
+
& & \textit{integer}.neg\\
|
344
|
+
& & \textit{integer}.neg!\\
|
345
|
+
\cmidrule(r){2-3}
|
346
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
347
|
+
Returns the negation, the additive inverse, of \textit{integer}. The destructive method
|
348
|
+
negates in place.
|
349
|
+
}
|
350
|
+
\end{tabular}
|
351
|
+
\newline\newline
|
352
|
+
|
353
|
+
\begin{tabular}{p{\methwidth} l r}
|
354
|
+
\toprule
|
355
|
+
\textbf{abs} & & \textit{integer}.abs\\
|
356
|
+
& & \textit{integer}.abs!\\
|
357
|
+
\cmidrule(r){2-3}
|
358
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
359
|
+
Returns the absolute value of \textit{integer}. The destructive method calculates the
|
360
|
+
absolute value in place.
|
361
|
+
}
|
362
|
+
\end{tabular}
|
363
|
+
|
364
|
+
\subsection{Integer Division}
|
365
|
+
|
366
|
+
\begin{tabular}{p{\methwidth} l r}
|
367
|
+
\toprule
|
368
|
+
\textbf{tdiv} & & \textit{integer}.tdiv(\textit{numeric}) $\rightarrow$ \textit{integer}\\
|
369
|
+
\cmidrule(r){2-3}
|
370
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
371
|
+
Returns the division of \textit{integer} by \textit{numeric}, truncated.
|
372
|
+
\textit{numeric} can be a member of \textit{GMP::Z}, \textit{Fixnum}, \textit{Bignum}.
|
373
|
+
The return object's class is always \textit{GMP::Z}.
|
374
|
+
}
|
375
|
+
\end{tabular}
|
376
|
+
\newline\newline
|
377
|
+
|
378
|
+
\begin{tabular}{p{\methwidth} l r}
|
379
|
+
\toprule
|
380
|
+
\textbf{fdiv} & & \textit{integer}.fdiv(\textit{numeric}) $\rightarrow$ \textit{integer}\\
|
381
|
+
\cmidrule(r){2-3}
|
382
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
383
|
+
Returns the division of \textit{integer} by \textit{numeric}, floored.
|
384
|
+
\textit{numeric} can be a member of \textit{GMP::Z}, \textit{Fixnum}, \textit{Bignum}.
|
385
|
+
The return object's class is always \textit{GMP::Z}.
|
386
|
+
}
|
387
|
+
\end{tabular}
|
388
|
+
\newline\newline
|
389
|
+
|
390
|
+
\begin{tabular}{p{\methwidth} l r}
|
391
|
+
\toprule
|
392
|
+
\textbf{cdiv} & & \textit{integer}.cdiv(\textit{numeric}) $\rightarrow$ \textit{integer}\\
|
393
|
+
\cmidrule(r){2-3}
|
394
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
395
|
+
Returns the ceiling division of \textit{integer} by \textit{numeric}.
|
396
|
+
\textit{numeric} can be a member of \textit{GMP::Z}, \textit{Fixnum}, \textit{Bignum}.
|
397
|
+
The return object's class is always \textit{GMP::Z}.
|
398
|
+
}
|
399
|
+
\end{tabular}
|
400
|
+
\newline\newline
|
401
|
+
|
402
|
+
\begin{tabular}{p{\methwidth} l r}
|
403
|
+
\toprule
|
404
|
+
\textbf{tmod} & & \textit{integer}.tmod(\textit{numeric}) $\rightarrow$ \textit{integer}\\
|
405
|
+
\cmidrule(r){2-3}
|
406
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
407
|
+
Returns the remainder after truncated division of \textit{integer} by \textit{numeric}.
|
408
|
+
\textit{numeric} can be a member of \textit{GMP::Z}, \textit{Fixnum}, \textit{Bignum}.
|
409
|
+
The return object's class is always \textit{GMP::Z}.
|
410
|
+
}
|
411
|
+
\end{tabular}
|
412
|
+
\newline\newline
|
413
|
+
|
414
|
+
\begin{tabular}{p{\methwidth} l r}
|
415
|
+
\toprule
|
416
|
+
\textbf{fmod} & & \textit{integer}.fmod(\textit{numeric}) $\rightarrow$ \textit{integer}\\
|
417
|
+
\cmidrule(r){2-3}
|
418
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
419
|
+
Returns the remainder after floored division of \textit{integer} by \textit{numeric}.
|
420
|
+
\textit{numeric} can be a member of \textit{GMP::Z}, \textit{Fixnum}, \textit{Bignum}.
|
421
|
+
The return object's class is always \textit{GMP::Z}.
|
422
|
+
}
|
423
|
+
\end{tabular}
|
424
|
+
\newline\newline
|
425
|
+
|
426
|
+
\begin{tabular}{p{\methwidth} l r}
|
427
|
+
\toprule
|
428
|
+
\textbf{cmod} & & \textit{integer}.cmod(\textit{numeric}) $\rightarrow$ \textit{integer}\\
|
429
|
+
\cmidrule(r){2-3}
|
430
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
431
|
+
Returns the remainder after ceilinged division of \textit{integer} by \textit{numeric}.
|
432
|
+
\textit{numeric} can be a member of \textit{GMP::Z}, \textit{Fixnum}, \textit{Bignum}.
|
433
|
+
The return object's class is always \textit{GMP::Z}.
|
434
|
+
}
|
435
|
+
\end{tabular}
|
436
|
+
|
437
|
+
\subsection{Integer Exponentiation}
|
438
|
+
|
439
|
+
\subsection{Integer Roots}
|
440
|
+
|
441
|
+
\begin{tabular}{p{\methwidth} l r}
|
442
|
+
\toprule
|
443
|
+
\textbf{root} & & \textit{integer}.root(\textit{numeric}) $\rightarrow$ \textit{numeric} \\
|
444
|
+
\cmidrule(r){2-3}
|
445
|
+
& \multicolumn{2}{p{\defnwidth}}{
|
446
|
+
Returns the integer part of the \textit{numeric}'th root of \textit{integer}.
|
447
|
+
}
|
448
|
+
\end{tabular}
|
235
449
|
|
236
450
|
\end{document}
|
data/test/unit_tests.rb
CHANGED
@@ -96,4 +96,28 @@ class TC_division < Test::Unit::TestCase
|
|
96
96
|
assert_equal(5, @a.tmod(@c), "GMP::Z.tmod should work.")
|
97
97
|
assert_equal(0, @c.tmod(@a), "GMP::Z.tmod should work.")
|
98
98
|
end
|
99
|
+
|
100
|
+
def test_z_fmod
|
101
|
+
assert_equal(GMP::Z, @a.fmod(@b).class, "GMP::Z.fmod GMP::Z should be GMP::Z.")
|
102
|
+
assert_equal(GMP::Z, @a.fmod(3).class, "GMP::Z.fmod Fixnum should be GMP::Z.")
|
103
|
+
assert_equal(GMP::Z, @a.fmod(2**32).class, "GMP::Z.fmod Bignum should be GMP::Z.")
|
104
|
+
assert_equal(GMP::Z, @a.fmod(@c).class, "GMP::Z.fmod GMP::Z should be GMP::Z.")
|
105
|
+
assert_equal(5, @a.fmod(@b), "GMP::Z.fmod should work.")
|
106
|
+
assert_equal(2, @b.fmod(@a), "GMP::Z.fmod should work.")
|
107
|
+
assert_equal(2, @a.fmod( 3), "GMP::Z.fmod should work.")
|
108
|
+
assert_equal(5, @a.fmod(@c), "GMP::Z.fmod should work.")
|
109
|
+
assert_equal(0, @c.fmod(@a), "GMP::Z.fmod should work.")
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_z_cmod
|
113
|
+
assert_equal(GMP::Z, @a.cmod(@b).class, "GMP::Z.cmod GMP::Z should be GMP::Z.")
|
114
|
+
assert_equal(GMP::Z, @a.cmod(3).class, "GMP::Z.cmod Fixnum should be GMP::Z.")
|
115
|
+
assert_equal(GMP::Z, @a.cmod(2**32).class, "GMP::Z.cmod Bignum should be GMP::Z.")
|
116
|
+
assert_equal(GMP::Z, @a.cmod(@c).class, "GMP::Z.cmod GMP::Z should be GMP::Z.")
|
117
|
+
assert_equal( -2, @a.cmod(@b), "GMP::Z.cmod should work.")
|
118
|
+
assert_equal( -3, @b.cmod(@a), "GMP::Z.cmod should work.")
|
119
|
+
assert_equal( -1, @a.cmod( 3), "GMP::Z.cmod should work.")
|
120
|
+
assert_equal(-20, @a.cmod(@c), "GMP::Z.cmod should work.")
|
121
|
+
assert_equal( 0, @c.cmod(@a), "GMP::Z.cmod should work.")
|
122
|
+
end
|
99
123
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gmp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomasz Wegrzanowski
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-11-23 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -58,6 +58,7 @@ files:
|
|
58
58
|
- CHANGELOG
|
59
59
|
- INSTALL
|
60
60
|
- README.rdoc
|
61
|
+
- manual.pdf
|
61
62
|
- manual.tex
|
62
63
|
has_rdoc: false
|
63
64
|
homepage: http://github.com/srawlins/gmp
|