"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 **************************************************************************