gmp 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|