ChangeLog 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. 1.0.1
  2. First released version.
  3. 1.0.2
  4. Fixed a bug in mp_int_div() which would yield incorrect quotients
  5. when the divisor was very close in value to a prefix of the
  6. dividend. This is now fixed, and there are regression tests in
  7. the tests directory.
  8. Added recursive multiplication and squaring (Karatsuba-Ofman) for
  9. large input values. Integrated these with the existing code for
  10. exponentiation, too. See the code for s_kmul() and s_ksqr() in
  11. imath.c. Tests added and verified against GNU bc.
  12. Added documentation on mp_get_multiply_threshold() and the reason
  13. why it exists.
  14. 1.0.3
  15. Fixed a couple of bugs in pi.c that were causing incorrect values
  16. to be computed for > 30 digits or so. Added a pi-computation test
  17. to the default test suite (make test), checked against a static
  18. file computed by bc (set scale=1024, compute 4 * atan(1)). Added
  19. command line option to specify output radix for pi.
  20. Cleaned up a sign-related bug in mp_int_gcd(), which would cause
  21. the sign of gcd(0, x) to be incorrect when x < 0. Test cases
  22. added for future regression.
  23. Fixed a bug in s_reduce() which would give incorrect results for
  24. powers of 2 in certain circumstances. Added tests to drive this
  25. case for future regression.
  26. Added mp_int_exptmod_evalue() and mp_int_exptmod_bvalue() to make
  27. it easier to work with small bases and small exponents.
  28. Set default recursive multiplication threshold to 50 digits, since
  29. this seems to work best for the platforms I've tested so far.
  30. Added iprime.h and iprime.c to the distribution.
  31. 1.0.4
  32. Added `findsizes.pl' to the distribution.
  33. Revised the type declarations in imath.h to use 32/64 bit
  34. operations where the "long long" type is supported.
  35. Fixed a sign-related bug in mp_int_invmod().
  36. Fixed several small bugs related to shifting which affect the use
  37. of 32-bit digits. Many architectures cannot shift by 32 bits at a
  38. time (e.g., MIPS), so I split each of these cases into two shifts
  39. of half the size, which should scale properly for both the smaller
  40. and larger cases.
  41. Fixed several arithmetic issues with 32-bit digits that arose due
  42. to missing type-casts on the right-hand sides of assignments.
  43. Fixed s_print() and s_print_buf() to handle the sizes of digits
  44. transparently.
  45. 1.0.5
  46. Updated the Makefile to include the _GNU_SOURCE macro. For many
  47. GCC systems, this is necessary to get the correct definition of
  48. the ULLONG_MAX macro in <limits.h>. Also, you may now build with
  49. the make option DEBUG=Y to enable debugging, e.g.:
  50. make DEBUG=Y imtest
  51. By default, the Makefile builds with the optimizer enabled.
  52. Cleaned up the definitions triggered by USE_LONG_LONG in imath.h,
  53. and added an #error instruction in case the build is unable to
  54. find a definition of ULLONG_MAX or ULONG_LONG_MAX in <limits.h>.
  55. Also added the mp_int_to_unsigned(), mp_int_read_unsigned(), and
  56. mp_int_unsigned_len() prototypes.
  57. Fixed a bug in s_qmul() [imath.c:2493] that would grow the value
  58. being multiplied even if there was room in the existing digits to
  59. hold the result. This was driving an (apparent) bug in the more
  60. general mp_int_read_binary() routine. Added the routines
  61. mentioned in the previous paragraph, and factored some common
  62. code out into a static s_tobin().
  63. Added reset_registers() to imdrover.{h,c}. Added new test
  64. driver functions test_to_uns() and test_read_uns(). Renamed
  65. test_read_bin to test_read_binary().
  66. Silenced a sign-related warning in pi.c (related to printf).
  67. Added many new test vectors to tests/conv.t, including the
  68. original bug proof-of-concept from Tom Wu, and a series of new
  69. tests for the unsigned conversion routines.
  70. Updated `doc.txt' to reflect the changes described above.
  71. 1.0.6
  72. Updated copyright notices, added LICENSE file explaining the
  73. license I am using. This is basically the BSD license, so
  74. you should have no trouble incorporating this code into other
  75. open source projects.
  76. No new functionality in this release.
  77. 1.0.7
  78. The mp_int_invmod(a, m, c) function would compute a negative value
  79. for c when given a < 0. I added some code to insure that the value
  80. returned is always the least non-negative member of the congruence
  81. class, if the inverse exists. A test for this was added to invmod.t.
  82. 1.0.8
  83. Fixed a small buffer-overrun in s_qmul(). Because it only
  84. allocates an extra digit if it absolutely has to, the test for
  85. whether it needs to carry a shift out into the "spare" digit had
  86. to be written carefully; I missed a subtlety, which is now
  87. fixed. Along the way, I fixed a minor performance-related bug in
  88. the same routine.
  89. Added mp_int_error_string(), which converts mp_result values
  90. into descriptive strings. These are statically allocated, so
  91. you don't have to free them.
  92. This version also adds an "examples" subdirectory. Currently,
  93. there is only one program there, but I will add more examples as
  94. time permits me. You have to read the source to understand them
  95. anyway, so I won't explain them here.
  96. 1.1.0
  97. Added imrat.h and imrat.c, containing routines for rational number
  98. arithmetic at arbitrary precision. Added support to the test driver,
  99. in imath.c and included various tests in the tests/ subdirectory.
  100. Fixed a sign-of-zero bug in mp_int_mul(). Tests added to mul.t to
  101. regress this fix.
  102. 1.1.2
  103. Fixed a bug with leading zeroes after the decimal point in the
  104. mp_rat_read_decimal() function (imrat.c). Along the way, I also
  105. found a sign-related bug, in which -0.5 would be treated as if it
  106. were positive, because the sign of zero is implicitly positive,
  107. and the denominator is treated as unsigned always.
  108. Thanks to Eric Silva for pointing out the leading zeroes bug.
  109. The solution isn't the most efficient possible.
  110. 1.1.3
  111. Rewrote mp_int_to_decimal() to support new rounding modes. The
  112. modes are documented in doc.txt. Some of the code sucked anyway,
  113. so I rewrote pretty much the entire function.
  114. Added new rounding mode constants.
  115. 1.1.4
  116. Added mixed rational/integer operations:
  117. mp_rat_add_int, mp_rat_sub_int, mp_rat_mul_int, mp_rat_div_int
  118. Added rational exponentiation (with integer exponents):
  119. mp_rat_expt
  120. Tests for same were added to the tests/ subdirectory.
  121. 1.1.5
  122. Added mp_rat_read_cdecimal() and mp_rat_read_ustring()
  123. Updated the input.c example.
  124. 1.1.6
  125. Fixed a bug in mp_int_read_cstring() which would read the string
  126. "-0" with incorrect sign (MP_NEG instead of MP_ZPOS). This would
  127. violate an invariant that zero is always signed with positives.
  128. Added some tests to tests/neg.t to catch this case.
  129. 1.1.7
  130. Fixed a bug in s_udiv(), internal to imath.c, which caused
  131. division to fail in some corner cases masked by the use of long
  132. long as a word type. As a result, s_udiv() has now been wholly
  133. rewritten. I also fixed a few lingering buffer-length errors in
  134. s_kmul(), and added a "const" qualifier to the input buffers for
  135. the mp_int_read_string() and mp_int_read_cstring() functions,
  136. and their analogs in imrat.c.
  137. 1.1.8
  138. Added mp_int_alloc() and mp_int_free().
  139. 1.1.9
  140. Added mp_rat_alloc() and mp_rat_free(). Fixed a couple of minor
  141. bugs in the doc.txt file. Added mp_int_sqrt() to imath.{h,c} and
  142. doc.txt.
  143. 1.2
  144. Dropped bugfix component of revision number. Fixed rsakey.c
  145. example program to be complete and work faster.
  146. 1.3
  147. Replaced findsizes.pl with findsizes.py. Fixed two bugs in the
  148. rsakey tool that were leading to incorrect output.
  149. 1.4
  150. Fixed a bug in mp_int_alloc(), it was not returning NULL when out
  151. of memory, but rather failing in assert() instead. Also, updated
  152. the documentation to have better language about the return values
  153. in various error conditions.
  154. 1.5
  155. Changed the API for rational rounding. Removed the two functions
  156. mp_rat_set_rounding() and mp_rat_get_rounding(), along with the
  157. round_output global variable. Redefined the MP_ROUND_* constants
  158. as an enumeration type (mp_round_mode). Added a new parameter to
  159. the mp_rat_to_decimal() function to accept a rounding mode. Unit
  160. tests and doc.txt updated suitably.
  161. This release also incorporates a small patch submitted by Jonathan
  162. Shapiro to support compilation in C++.
  163. 1.6
  164. Defined default_precision and multiply_threshold to be constant
  165. and static. If IMATH_TEST is defined at compile time, these are
  166. made global, and can be modified by the caller (the imtimer tool
  167. makes use of this ability, for example).
  168. Implemented a single-digit optimization suggested by J. Shapiro.
  169. Documentation updated.
  170. 1.7
  171. Fixed a subtle casting problem in the use of the ctype macros that
  172. would permit negative signed character values to produce illogical
  173. behaviour in some configurations (e.g., NetBSD). Removed a dead
  174. "return" statement.
  175. Added the -pedantic switch for gcc, to get more aggressive
  176. warnings; to permit the nonstandard "long long" type to still be
  177. used, I also added -Wno-long-long when building with long long
  178. enabled (the standard configuration).
  179. Fixed a bug found by the Samba team running Valgrind on the
  180. Heimdal project, and reported by Love Hörnquist Âstrand: One of
  181. the intermediate values used during modular exponentiation could
  182. be overflowed during recursive multiplication. Fixed by taking a
  183. more conservative approach to buffer sizing.
  184. Added a "contrib" subdirectory, whose first entry is a Makefile
  185. to build IMath with the MSVC++ "nmake" program, contributed by
  186. Matus Horvath.
  187. 1.8
  188. Fixed a bug in s_udiv() affecting the computation of quotient
  189. digits. Thanks to Love Âstrand for isolating this bug. Also in
  190. this release, defining USELLONG=Y or USELLONG=N on the command
  191. line for make will switch support for the "long long" data type on
  192. or off without having to edit the Makefile. The default is still
  193. to permit use of "long long", even though the type is not standard
  194. ANSI C90.
  195. 1.9
  196. Increased the number of small primes used for primality testing to
  197. 100 from 32. Removed an unwanted #define from imath.c, left over
  198. from testing; added "static" to the declaration of the s_embar()
  199. internal function since it is not used outside imath.c. Reduced
  200. the quantity of feedback generated by rsakey.c during the prime
  201. finding stage of key generation.
  202. 1.10
  203. All primes less than 1000 are now used in iprime.c for preliminary
  204. testing of prime candidates. Removed declaration of s_pad() from
  205. rsakey.c example. Added imcalc.c example.
  206. Beginning with this release, defining the DEBUG preprocessor macro
  207. when compiling imath.c causes all the normally-static helper
  208. functions to be exported. This makes it easier to troubleshoot
  209. bugs in the back end functions without manually editing the source
  210. till you have found where the bug actually is.
  211. Fixed a memory leak in the test driver (imtest.c) where the input
  212. buffers allocated for test specs were not released before being
  213. released. No impact on the core routines, but nevertheless not a
  214. good thing.
  215. Fixed several uninitialized memory reads and one subtle read past
  216. the end of a buffer in s_kmul(), found during a run of Purify.
  217. Thanks to Love Hörnquist Âstrand for finding this one, and
  218. providing a good test case so I could isolate the problem. Also
  219. fixed a buglet in s_kmul(), in which free() was being called
  220. instead of s_free(), which would break if you provided a custom
  221. version of s_alloc() and s_free() for your application.
  222. 1.11
  223. Those functions which take int parameters to supply one or more of
  224. the arithmetic values of the function have been converted to use a
  225. typedef "mp_small". This is defined in imath.h, along with some
  226. supporting macros.
  227. Added mp_int_to_uint() and mp_int_lcm() in imath.{h,c}, based on a
  228. patch contributed by Hal Finkel. Added LCM tests as as well as
  229. some more GCD tests in tests/lcm.t and tests/gcd.t
  230. Also at Hal Finkel's request, added mp_int_root() to compute the
  231. integer nth root, i.e., \lfloor a^{1/b}\rfloor; replaced the old
  232. mp_int_sqrt() function with a call to mp_int_root() via a macro.
  233. The new implementation is probably slightly less efficient for
  234. square roots, but more general. Added tests/root.t and moved the
  235. sqrt tests there, also.
  236. 1.12
  237. Added a new global constant MP_MINERR which is the value of the
  238. smallest error code defined by IMath itself. This can be used by
  239. clients who wish to define and use additional error codes, so that
  240. those codes will not conflict with the existing set.
  241. Extended the imcalc example to include memory.
  242. Fixed a bug in mp_int_add() in which -1 + 1 = -0 (the sign of zero
  243. was recorded incorrectly). Added tests to the regression suite
  244. for this fix.
  245. 1.13
  246. Cosmetic change -- updated all the files with my new web address.
  247. Fixed a buglet caught by Love Hörnquist Âstrand using the LLVM
  248. static checker tools, in which a mp_int_copy() failure would be
  249. silently ignored and cause an extra copy to be generated.
  250. Fixed a bug in the testing suite while building on MinGW. The pi
  251. generation tests compare to static files and these tests fail if
  252. CR/LF is output instead of just LF. The test script now strips
  253. all CR and LF from the output and compares to files lacking them.
  254. Reported by Chris Cole <cjcole@gmail.com>.
  255. 1.14
  256. Instead of using the preprocessor to delete "static", the static
  257. definitions in imath.c now use an explicit STATIC macro, that is
  258. made null when DEBUG is defined. This avoids a subtle problem
  259. with static variables defined inside functions (although no bugs
  260. actually arose from it).
  261. Fixed a bug in s_udiv() while building on MinGW. When building
  262. with short type digits, the routine was incorrectly discarding
  263. overflow when computing the next quotient digit.
  264. Reported by Paul DeMarco <pdemarco@ppg.com>.
  265. 1.15
  266. Fixed a bug in the definition of MP_DIGIT_MAX that caused errors
  267. when IMath is built under 64-bit Linux. Reported by
  268. Klaus Stengel <klaus.stengel@informatik.stud.uni-erlangen.de>.
  269. Unpacked the macro definitions in imath.c a bit, to make them more
  270. readable.
  271. Added mp_int_expt_full() by request of Andrea Barberio
  272. <insomniac@slackware.it>.
  273. 1.16
  274. Fixed a bug in mp_int_to_uint() which was causing incorrect MP_RANGE
  275. errors during small integer conversion.
  276. Reported by Andrea Barberio <insomniac@slackware.it>
  277. Added mp_int_compare_uvalue().
  278. Added some new testing hooks in imtest.c, new unit tests.
  279. Made some code style changes that do not affect functionality.
  280. 1.17
  281. Fixed a bug in mp_int_swap() where mpz_t structures using their single
  282. field as storage would not get swapped correctly.
  283. Reported by Andres Navarro <canavarro82@gmail.com>
  284. Added regression test for this and some hooks for future
  285. regressions in the tests/test.sh script.
  286. 1.18
  287. Made mp_int_rat() use mp_int_init() to initialize numerator and
  288. denominator instead of mp_int_init_size().
  289. Some minor code cleanup inside the testing code (imdrover.c).
  290. Fixed an off-by-one bug in s_udiv() which could cause the quotient
  291. guessing loop to spin. Reported by Andres Navarro. Added
  292. triggering example to div.t as a regression test.
  293. 1.19
  294. Fix signedness error in compile. Reported by Paweł Sikora.
  295. 1.20
  296. Fix broken comments, apparently from a previous bad merge.
  297. Remove emacs folding-mode comments throughout.
  298. Some minor Makefile cleanup to make clang happier.
  299. 1.21
  300. Fix a syntax error. TODO: Run tests before merging, or better
  301. still set up CI someplace.
  302. Remove dead division code.
  303. Restore a missing comparison.
  304. Drop dead flags from the Makefile.
  305. 1.22
  306. Remove MP_USMALL_MIN, which was unused by anything in imath.
  307. Rework doc.txt into Markdown.
  308. Restore imath-test.scm and imath.py, dropped during import.
  309. 1.23
  310. Portability fixes from PostgreSQL (#8), from nmisch.
  311. 1.24
  312. A cosmetic update, consisting mainly of readability updates,
  313. documentation fixes, and warning fixes. There are not intended to
  314. be any functional changes in this update, but a fair bit of code
  315. and the Makefile have been modified, so I'm adding a tag.
  316. My intent is to keep the source formatted with clang-format going
  317. forward, though I will need to set up some presubmit checks to
  318. enforce that. For now it is still a manual step via "make format".
  319. 7e45d6a Remove a doc reference to MP_USMALL_MIN.
  320. 544687d Fix the spelling of mp_error_string in doc.md.
  321. 592d4a0 Fix some mis-converted section breaks in doc.md.
  322. df9fe8e Format source files with clang-format.
  323. fcb4e21 Build with 64-bit words by default.
  324. 1579b70 Minor simplifications to the Makefile.
  325. 0fbe8e6 Style cleanup: More invasive manual changes.
  326. 1d28177 Add -Wextra and -Wno-unused-parameter to default build flags.
  327. 15ba02a Fix warnings for signed/unsigned comparisons.
  328. 3556984 Style cleanup: Insert missing brackets.
  329. 1.25
  330. This version fixes several issues found by clang static analysis.
  331. It also includes some additional follow-on cleanup tasks from the
  332. previous release.
  333. b5a73c4 Cleanup: Use .tc for test files instead of .t.
  334. dc307ae Cleanup: Remove dead author URLs, SVN markers.
  335. 389a1be bug: Fix a memory leak in test_meta.
  336. 8fb98f7 bug: Fix a use of an uninitalized pointer.
  337. fe0757a bug: Fix reads of uninitalized fields in free_test.
  338. 08fe765 bug: Fix a reachable null pointer indirection.
  339. 7b10453 bug: Remove a redundant initialization.
  340. cebce44 bug: Fix various dead assignments.
  341. ef36352 Remove the findsizes.py script.
  342. eebfb85 Fix some more comparison-sign mismatches.
  343. 9abcf66 Cleanup: Update a stale reference to doc.txt in the README.
  344. 8ec696f Cleanup: Consolidate the USE_32BIT_WORDS macro sections.
  345. 1.26
  346. Another round of fixes. Notably the gmp-compat-test again works on
  347. macOS, fixing https://github.com/creachadair/imath/issues/26.
  348. Also, this release cleans up some more warnings and fixes some
  349. missing #include paths.
  350. 2ea0fff gmp_compat: Fix warnings for mixed-sign comparisons.
  351. 2a41bae Fix DLL loading.
  352. 56c40f4 Make gmp-compat-test work again on macOS.
  353. f163906 Comment out a vacuously true assertion.
  354. 667d90e gmp_compat: Ensure a definition of ssize_t is available.
  355. 6c6fdd8 Fix a vacuously meaningless comparison.
  356. 4dac16f Silence a warning about an uninitalized variable.
  357. c6119c4 Include strings.h for strcasecmp.
  358. 1.27
  359. Another round of cleanup and bug fixes. This release includes a
  360. Dockerfile to support basic Linux testing, which I found useful as
  361. I do most of my work on macOS.
  362. This release also addresses most of issue #29 (Switching from C90
  363. to C99). Part of that change removes most function-like macros
  364. from the API headers, replacing them with static functions. Code
  365. that used the macros as lvalues will no longer work, but can and
  366. should be easily updated to access the members of mpz_t directly.
  367. Fixed: #34.
  368. 899e202 Add a docker config for basic Linux testing.
  369. 40e8887 Move imath-test.scm to the tests directory.
  370. 6f01c9f Add .dockerignore to the release tarball.
  371. 1dab081 Fix the spelling of __abs__ in imath.py.
  372. 8f0a00c Enable source formatting for Python.
  373. 99e27c8 Format all Python source with yapf.
  374. bf289f0 gmp-compat-test: Remove dependency on Python 3.
  375. 9269d57 Clean up the Linux test image.
  376. 61ca691 Include stdbool.h and use the bool type where appropriate.
  377. d4760ee Replace macros with static inline functions.
  378. 8241977 linux test: Layer the image for better caching.
  379. 46bb578 imath: Replace accessor macros with inline functions.
  380. 50c6cc8 imrat: Replace accessor macros with static functions.
  381. 0c5cec9 gmp_compat: Fix lvalue uses of MP_USED.
  382. 89c72f2 Remove CHECK and NRCHECK macros.
  383. dbe9f50 imath: Replace macros with static functions.
  384. 0006998 imath: Replace ROUND_PREC macro with a function.
  385. b628a0c Move local variable declarations closer to first use.
  386. 54d51da Remove obsolete division spec.
  387. 796776f iprime: Move and scope variables closer to first use.
  388. 8fd5236 iprime: Use a sentinel instead of a length.
  389. ce89180 Include getopt.h explicitly where it is required.
  390. e6fc170 Make libimath.so build correctly under GCC.
  391. b54d8c9 Use Bourne in preference to Bash.
  392. 8f88c01 Makefile: Export CC and CFLAGS for submakes.
  393. 58f4392 Use the inherited settings in the gmp-compat-tests.
  394. 8a181cd Make the Linux docker test run "make check".
  395. 28617f2 gmp_compat: Fix overflow in the uint conversion adapter.
  396. 1.28
  397. Another round of cleanup, and some more invasive API changes.
  398. I removed more macros, and added an API surface for setting the
  399. default precision and recursive-multiply threshold.
  400. The compile-time switchable statics are now strictly static.
  401. The handling of temporary values was greatly reworked to make it
  402. less brittle.
  403. ba44b37 Add unit tests for mp_int_is_prime.
  404. 6f10877 imath: Remove lvalue uses of access macros, and the macros.
  405. f4939db Fix formatting.
  406. 85137fa docs: Remove macro implementation comments.
  407. 37f046e Rework the handling of temporaries.
  408. cc8ac74 imtimer: Fix a lingering lvalue use of MP_USED.
  409. 9736a8b imath: Drop switchable statics and stdio dependency.
  410. 5445ad8 Add functions to set default precision and multiply threshold.
  411. 58f2d6e Use alpine:latest rather than a fixed version.
  412. 1.29
  413. The Documentation Edition. The main improvement here is that the
  414. API documentation is now unified in the header files, and doc.md
  415. is now generated from a template that includes the text from the
  416. headers. The automation for this is still unsatisfactory, but it
  417. is better than it was.
  418. d239b2e Remove imath.py.
  419. e43b0f5 imath: Clean up extraneous whitespace.
  420. fbbbbad Remove the mpz struct tag.
  421. 718fef2 imath: Add documentation comments to the header.
  422. 02600e5 imath: Make radix bound checks into requirements.
  423. c21f49d imrat: Add documentation comments to the header.
  424. ea5398f Remove the mpq struct tag.
  425. c1549c7 Move tools and tests into subdirectories.
  426. 7187c49 Remove extraneous whitespace from declarations.
  427. afa715c Comment cleanup on Aisle 2.
  428. cbf9a03 Add tools/mkdoc.py.
  429. 58672fc Remove the "dist" target from Makefile.
  430. 894bb90 Move rtest.c into the tests directory.
  431. d4cfc69 Add a doc.md.in template file.
  432. bd929aa Add a make rule for doc.md from doc.md.in.
  433. 6dea44e Update doc.md using the new generator.
  434. 56ef9a0 doc: Include mp_int_set_uvalue.
  435. 13618b3 doc: Explain the comparator terminology.
  436. 9990b2e Make the clean and distclean make-rules equivalent.
  437. 13df978 doc: Update the explanation of temp handling macros.
  438. b80bd8a doc: Emit one generated comment for the whole file.
  439. 3cde6b8 doc: Remove the markdown disclaimer.
  440. 045a2a6 doc: Point my address to github instead of e-mail.
  441. 08f2efd doc: Add headings for general API functions.
  442. 77159d9 mkdoc.py: Link back to source lines.
  443. aec8587 doc: Include links back to the source.
  444. f8c9f6c imath: Document a constraint on mp_int_redux_const.
  445. 1.30
  446. Improve test automation; no functional changes to the library.
  447. fc7846a imtest: Ensure the exit code is non-zero when tests fail.
  448. 87edcbe test.sh: Exit non-zero if any unit tests fail.
  449. 276d1f9 imtest: Make test output easier to read.
  450. c8c90c4 Make the Linux test protocol less brittle.
  451. f68ba5b Add a .gitattributes file.
  452. 33c2843 Add a docker-test target to the Makefile.
  453. 1.31
  454. Improvements to build and test automation; add CI configuration.
  455. d419633 Add a Travis CI configuration for imath.
  456. 3305c4a Ensure the Makefile respects a $CC set in the environment.
  457. d2da4b6 Update instructions for reporting bugs.