"Fossies" - the Fresh Open Source Software Archive 
Member "mapm_4.9.5a/DOCS/history.txt" (21 Feb 2010, 17300 Bytes) of package /linux/misc/old/mapm-4.9.5a.tar.gz:
As a special service "Fossies" has tried to format the requested text file into HTML format (style:
standard) with prefixed line numbers.
Alternatively you can here
view or
download the uninterpreted source code file.
1
2 --------------------
3 MAPM Library History
4 --------------------
5
6 V 1.00 - June 1, 1999 Initial Release
7
8 V 1.10 - June 20, 1999 Use a stack implementation for local M_APM
9 variables instead of static variables.
10
11 Use a new faster algorithm for SIN & COS.
12
13 V 1.20 - July 10, 1999 Improve the algorithm for ARCSIN and ARCCOS
14 when the input argument is near 1.0.
15
16 Added the 'DUP' operator to the 'calc' demo
17 program.
18
19 V 1.30 - July 31, 1999 Added a function to output M_APM values as
20 integers.
21
22 Supply another demo program which generates
23 prime numbers (and uses the integer output
24 format).
25
26 Improved the 4 iterative routines, dynamically
27 adjusting the local precision each time through
28 the loop. Also changed the tolerance test to
29 use integers (vs a MAPM number).
30
31 V 2.00 - Aug 15, 1999 Added a 'fast' multiplication algorithm.
32
33 V 2.10 - Sep 24, 1999 Added integer POW function. Compute X^Y when
34 'Y' is an integer.
35
36 Added a random number generator (with a period
37 of 1.0E+15).
38
39 Added function to compute both sin and cos with
40 one call.
41
42 V 2.15 - Feb 10, 2000 Allow caller to easily use their own memory
43 management functions.
44
45 Implement the real exponential algorithm as
46 originally intended by David Bailey.
47
48 Delete the extra recursive function from the
49 fast multiply routine.
50
51 Calculate a few extra digits in the intermediate
52 results of 'calc' so the final answers are
53 always consistent.
54
55 V 2.20 - Mar 30, 2000 Let log, arc-sin, and arc-cos determine the
56 max number of iterations that should be required
57 to calculate a given precision level.
58
59 Optimize the raw series expansion for exp, sin,
60 and cos to use integers instead of MAPM numbers
61 in the tolerance test to determine loop termination.
62
63 V 2.25 - Apr 2, 2000 Added a CBRT function (cube root)
64
65 Added the hyperbolic SIN, COS, and TAN functions
66 plus their inverses.
67
68 Alias m_apm_asin to m_apm_arcsin. Also for acos,
69 atan, and atan2.
70
71 Updated CALC and VALIDATE to use the new functions.
72
73 V 3.00 - Apr 7, 2000 Added the MAPM C++ wrapper class. Supplied by
74 Orion Sky Lawlor (olawlor@acm.org)
75 This C++ class allows 'normal' syntax when using
76 the library.
77
78 V 3.05 - Apr 14, 2000 Optimized the basic divide algorithm. It is now
79 approx 10 - 15 % faster.
80
81 Optimized the fast multiply algorithm. It is now
82 approx 2X faster. (depends on input numbers,
83 sometimes I got 50%, other times 3X)
84
85 V 3.06 - May 6, 2000 Optimized a few more functions.
86
87 In 'CALC', recompute PI on the fly if more digits
88 are asked for than the default precision.
89
90 Changed default compile optimizations to use
91 '-O2' instead of '-O'. Just making a note.
92 in case some compilers don't handle this well.
93
94 V 3.10 - May 21, 2000 Eliminated all warnings due to internal constants
95 lacking enough precision for a given calculation.
96 Any internal constant (like PI, log(2)) lacking the
97 precison needed for a given calculation will be
98 re-computed on the fly as necessary. The only
99 warnings from the library now are legitimate domain
100 errors, sqrt of a negative number, etc.
101
102 V 3.15 - May 26, 2000 Optimize the factorial function. It is now approx
103 10X faster when N is large (i.e., N > 5000).
104
105 Return 1 from pow function when computing 0^0.
106
107 V 3.16 - Jun 24, 2000 Added makefile for Borland 5.2 / 5.5 C++
108 command line compilers for Win NT/9x.
109
110 Fixed link problems due to some C libraries not
111 having native cube root or inverse hyperbolic
112 functions.
113
114 V 3.50 - Jul 4, 2000 Added an FFT (Fast Fourier Transform) based
115 fast multiplication. The FFT fast multiplication
116 is O(N * Log2(N)). The FFT used is from the
117 Numerical Recipes book.
118
119 Fixed extern int declare in M_APM.H due to
120 variable name mangling in MSVC C++ compiler.
121
122 V 3.51 - Jul 7, 2000 Changed the FFT. The new FFT is from Takuya OOURA.
123 email: ooura@mmm.t.u-tokyo.ac.jp
124
125 Added build batch file for MSVC C++ compiler.
126 (Note: I can't verify this works since I don't
127 have MSVC C++)
128
129 V 3.55 - Jul 12, 2000 Optimized the FFT set-up wrapper function. Convert
130 MAPM base 100 numbers into base 10000 before
131 invoking the FFT. (2X speed improvement and 1/2
132 the RAM usage)
133
134 Use the AGM (Arithmetic-Geometric Mean) to
135 calculate PI when a more precise value is needed.
136
137 Added a real Makefile for Unix builds (finally!)
138
139 V 3.56 - Jul 19, 2000 Decrease the max number of bytes the FFT can
140 handle. *Worst* case inputs (all 9's) could have
141 caused the FFT math to overflow.
142
143 Added a build batch file for older Borland
144 compilers. (Works with Turbo C++ 3.00)
145
146 V 3.60 - Aug 24, 2000 Added 36 'memory' locations to the calc demo
147 program.
148
149 Added a new function to determine if a MAPM
150 number is an integer value or not.
151
152 When computing X^Y with the pow function,
153 automatically call integer_pow if 'Y' is
154 an integer value.
155
156 V 3.65 - Oct 1, 2000 Added a reciprocal function using an iterative
157 method.
158
159 Used the new reciprocal function to improve the
160 divide function.
161
162 Implemented an improved SQRT alogrithm. The new
163 one only uses multiplication and subtraction.
164 (The old algorithm used division which is slow).
165
166 V 3.70 - Nov 10, 2000 Use a more efficient 'log' algorithm and also
167 use a series expansion if the input is very close
168 to '1'.
169
170 Made a minor speed optimization to cube root.
171
172 Added build batch file for MSVC C++ compiler which
173 also uses a real 'makefile'.
174
175 V 3.75 - Dec 10, 2000 Use more efficient 'arc' family of functions if
176 the input arg is very close to zero.
177
178 V 3.80 - Mar 1, 2001 Improve the prime number demo program.
179
180 A number of minor code tweaks. This was mainly
181 in preparation for the upcoming 64 bit compilers.
182 I think everything is ready, but I really won't
183 know until I can actually get my hands on one ...
184
185 V 3.85 - Apr 2, 2001 Added new 'floor' and 'ceil' functions.
186
187 Use a new multiplier in the random number generator.
188
189 Added a build batch file for the LCC-WIN32 compiler.
190
191 V 4.0 - Jul 21, 2001 Added functions to compute GCD (greatest common
192 divisor) and LCM (least common multiple).
193 See 'm_apm_gcd' and 'm_apm_lcm'.
194
195 Added GCD and LCM to the 'calc' demo program.
196
197 Added new utility functions to determine if a MAPM
198 integer value is EVEN or ODD. See 'm_apm_is_even'
199 and 'm_apm_is_odd'.
200
201 Added function to release ALL memory that MAPM
202 has allocated. Added similiar function to trim
203 memory usage of MAPM without impacting any library
204 operation. See 'm_apm_free_all_mem' and
205 'm_apm_trim_mem_usage'.
206
207 Made a minor speed optimization to SQRT.
208
209 Optimized the normalization function.
210
211 Optimized the series expansion function for
212 sin/cos/exp. This has the added benefit of also
213 speeding up log, log10, pow, arc_###, etc.
214
215 V 4.1 - Aug 10, 2001 Fixed a minor problem with m_apm_to_integer_string.
216 If the input was 'slightly' smaller than an integer,
217 it would round the value up to the next int.
218 'Slightly' here means 1.0E-4 or smaller. If the
219 input was NNN.9999+ then NNN+1 would be returned.
220 The documented behavior is to truncate the value
221 to the next smallest integer and it now behaves as
222 expected.
223
224 Note: The previous function always gave the correct
225 output if the input was already an integer value
226 (which is why I didn't notice for so long ...).
227
228 Optimized the basic multiply function.
229
230 Added a build batch file for the Watcom C 11.x
231 compiler.
232
233 Changed the MSVC C++ compiler build from a makefile
234 back to a batch file (MKALLMSC.BAT). The makefile
235 was cumbersome and difficult to maintain. If the
236 user consensus wants the makefile back, I'll put
237 it back in.
238
239 V 4.2 - Oct 3, 2001 Added 3 functions to convert an MAPM number to a
240 string in fixed point format. Format 1017.829 as
241 "1017.829" instead of "1.017829E+3".
242
243 See the following functions:
244
245 m_apm_to_fixpt_string (basic function)
246 m_apm_to_fixpt_stringex (extended function)
247 m_apm_to_fixpt_stringexp (extended & returns char *)
248
249 V 4.3 - Feb 17, 2002 Include a PDF version of my article which was
250 first published in the November 2001 issue of
251 C/C++ Users Journal.
252
253 Made a minor optimization to _scale (the speed is
254 the same, but 2 temporary arrays were eliminated by
255 processing the scaling operation in reverse).
256
257 Added some comments and initial setup changes to
258 the prime number demo program.
259
260 Added some conditional compiler directives to
261 support the Metrowerks CodeWarrior 7.0 compiler.
262 (since I don't have it, I don't really know if
263 this will work ...)
264
265 Added a conditional compiler directive so the
266 user can disable the FFT multiply algorithm.
267 (the default is to still use the FFT multiply.)
268
269 Add a new function to prime the random number
270 generator with a known seed value (needed for
271 repeatable random sequences).
272
273 V 4.4 - Jun 14, 2002 Added a build batch file for the MINGW-32 compiler.
274
275 Change the internal stack used for temporary MAPM
276 numbers into a dynamically malloc'ed array.
277
278 Updated m_apm_cpp_precision so it can be called
279 prior to a call to m_apm_init.
280
281 Updated the documentation to indicate that the
282 default library is *NOT* thread-safe and problems
283 could occur in a multi-threaded application unless
284 certain precautions are taken.
285
286 Split mapmutil.c into 2 files since it was getting
287 too big.
288
289 V 4.5 - Nov 10, 2002 Added a makefile for the MAC (OSX).
290
291 Changed all library function parameter declarations
292 to use the modern form instead of the classic form.
293
294 Changed the order of the elements in the M_APM
295 structure. The M_APM structure in m_apm.h is not
296 compatible with previous versions of the library.
297 This was done to optimize for future 64 bit
298 architectures where sizeof(pointer) > sizeof(int).
299
300 Added a new integer pow function that does not
301 perform any rounding of the answer. This is needed
302 for integer only applications where full precision
303 must be maintained. See 'm_apm_integer_pow_nr'.
304
305 V 4.6 - Apr 7, 2003 Made a minor speed optimization in sqrt by rounding
306 an intermediate result in the iteration.
307
308 Implement a new cubically convergent log algorithm
309 (each iteration yields 3X more digits).
310
311 Compute internal constants log(2) and log(10) with
312 an AGM algorithm.
313
314 Move the output of all error messages into a
315 stand-alone function. All error messages now call
316 this function. This allows the user to easily
317 change the default reaction (which is output to
318 stderr) by only changing the one function.
319
320 V 4.6.1 - Apr 12, 2003 Fix a bug where specially contrived test input
321 could result in the new log algorithm terminating
322 too soon.
323
324 Applied lessons learned from the log bug to make
325 the asin & acos functions more efficient.
326
327 V 4.7 - Jun 10, 2003 Include the thread safe function wrappers in this
328 release. The necessary files are in the directory
329 'multi_thread' for the unix distribution and in
330 'multithd' for the Win/Dos distribution.
331
332 Added #define to obtain a clean compile with
333 Open Watcom 1.0 (using mkallwat.bat).
334
335 Add 2 functions to get the version of the compiled
336 library. See 'm_apm_lib_version' and
337 'm_apm_lib_short_version'. These could be very
338 useful when MAPM is used as a shared library/DLL.
339 (Long Overdue ....)
340
341 Implement faster cbrt algorithm.
342
343 Optimize the raw sin algorithm.
344
345 Implement another log algorithm. See details in
346 'algorithms.used'. Testing on my system has shown
347 that it is faster than an AGM algorithm, up to
348 ~100,000 digits anyway. An AGM _should_ eventually
349 be faster, but I didn't find that cross-over point.
350
351 Move the generic error handling function into it's
352 own separate module. This allows the user to easily
353 replace the function (with their own version)
354 without changing the base library.
355
356 V 4.8 - Jul 27, 2003 Fix a bug in arctan. Very large inputs (> 1e16)
357 could cause incorrect answers in the last few
358 digits of the result and only under certain decimal
359 place accuracies. PI/2 was being returned (instead
360 of PI/2 - epsilon) due to a rounding problem. Thanks
361 to Ivano Primi for bringing this to my attention.
362
363 Fix arcsinh when the input was a very large negative
364 number. Under certain combinations of large input
365 values with certain decimal place accuracy would
366 result in a log(0). Thanks again to Ivano Primi.
367
368 Fix m_apm_set_double. An invalid input (NAN or
369 +/- INF) could cause MAPM to crash. Lesson here is
370 to always check return codes of function calls, even
371 when they cannot possibly fail. Thanks to Luiz H. de
372 Figueiredo (of the Lua project) for this report.
373
374 Did a complete re-write of validate. The intent of
375 this is to use the 'gcov' code coverage tool to get
376 as much code coverage of the library that is
377 practical. 100% code coverage is not obtained (nor
378 practical), but it's quite close. (Needs more work
379 in fixed point formatting.)
380
381 Convert all build scripts/makefiles to use a common
382 naming convention. All .a libraries will use the
383 base name 'libmapm' (libmapm.a). All .lib libraries
384 will use the basename 'mapm' (mapm.lib).
385
386 Include a short script to build a Linux shared
387 library. Other Unix systems should have similiar
388 commands. Most users won't need this.
389
390 Modify all error/warning messages so they have a
391 consistent format.
392
393 V 4.8.1 - Nov 30, 2003 Added support for National Instruments LabWindows
394 CVI. Some minimal help instructions on how to set up
395 various project files can be found in 'labwindw.cvi'.
396 This is the only update, so users of version 4.8
397 will have no compelling reason to upgrade.
398
399 V 4.9 - Jan 3, 2004 Simplify logic and make minor optimization in AGM
400 log algorithm.
401
402 Simplify logic in the exp algorithm. This also
403 resulted in the exp algorithm being more 'well
404 behaved'.
405
406 Include a new file (commentary.txt). This is just a
407 brief discussion on a design decision of why there
408 is (one) 'exit' call in the library.
409
410 Include 4 sample programs to compute PI (in the
411 directory 'pi_demo'). These are not meant to be
412 the fastest programs for PI, they are here simply
413 to demonstrate how to use the library. These could
414 be used as a starting template for a new program.
415
416 V 4.9.1 - Apr 2, 2004 Added a warning to the exp function if the input is
417 too large. If the input is too large, overflow can
418 occur internally so a warning will be output and
419 the result will be 0.
420
421 Made minor optimizations to the basic multiply and
422 the divide & conquer multiply.
423
424 Checked out the library with a new free compiler,
425 DEV-CPP (DEV-C++) 5.0 Beta 8 release 4.9.8.0. This
426 environment uses the mingw gcc compiler under the
427 hood, so everything worked fine using mkallmgw.bat
428 to compile the library.
429
430 Document a known COMPILER BUG with Microsoft's
431 Visual C++ 7.x (VS.NET 2003). This compiler bug
432 outputs error C2676 in a C++ application. (C apps
433 are OK). See the README file for a workaround.
434
435 Document the numerical limitations of the library.
436 (max/min significant digits, exponents, etc).
437 See the README file for more details.
438
439 V 4.9.2 - Jun 10, 2004 Added the % operator (and %=) to the C++ wrapper.
440
441 Added a MOD operator to 'calc' demo program.
442
443 Fixed a potential buffer overflow in the 'exp'
444 function.
445
446 V 4.9.5 - Dec 10, 2007 Updated software license, allowing distribution
447 of modified source code.
448
449 The actual library source code is identical to
450 version 4.9.2 (except the obvious library version
451 identifier, and Digital Mars #ifdef).
452
453 Added support for the Digital Mars Compiler.
454
455 Added build script for Intel Linux Compiler.
456
457 V 4.9.5a - Feb 21, 2010 Updated authors email address.
458
459 Note that there are no changes to the library
460 source code - so the library will still identify
461 itself as "4.9.5".
462
463 Added Makefile for Microsoft Visual Studio 2005.
464
465 Added another Makefile for MAC OSX (for 10.6).
466
467 **************************************************************************