lacaml / Changelog

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
2009-05-30:  Major overhaul:

             Fixed too liberal transpose parameters in several
             functions.  The conjugate transpose was not available
             in some.

             Make convenience definitions for pp_num, pp_vec, pp_mat
             available on opening Lacaml.Impl.{S,D,C,Z} to be able
             to print more generically.

             Added new functions:

               * dotu  (only for complex numbers)
               * dotc  (only for complex numbers)
               * ger   (all numbers)
               * lassq
               * Mat.syrk_trace
               * Mat.symm2_trace

             Fixed several functions to allow for complex multipliers:
             gemv, gbmv, symv, gemm, symm, trmm, syrk, syr2k.

             Added new "stable" flag to Vec.sqr_nrm2 if over/underflow
             protection is required.

             Numerous internal improvements to make adding functionality
             even easier and to improve performance and numeric
             stability.

2009-05-16:  Added new function:

               * Mat.syrk_diag

             Renamed functions and changed API:

               * Mat.prod_diag -> Mat.gemm_diag
               * Mat.prod_trace -> Mat.gemm_trace

2009-05-03:  Added new functions:

               * Vec.neg

             Thanks to Christophe Troestler <Christophe.Troestler@umh.ac.be>
             for contributing the patch!

2009-04-28:  Added new functions:

               * Mat.prod_diag
               * Mat.prod_trace

2009-04-25:  Major API changes:

             Removed function:

               * Mat.copy (use lacpy instead)

             Modified function:

               * geev (differently named arguments)

             Added functions:

               * lacpy (also copies triangular matrices)
               * larnv (random number generation)

             Fixed Mac OS X build problems.

             Lots of internal cleanups.

2009-04-23:  Improved numerical stability of Vec.ssqr for real numbers
             and zero mean.

2009-04-22:  Added new matrix function:

               * scal_cols

2009-01-21:  Added Vec.sqr_nrm2, which is numerically more stable than
             Vec.ssqr.  Added nrm2 for complex numbers (BLAS-1 function).

2009-01-14:  Greatly improved defaults for printing in toplevels.

2009-01-13:  Added context printing options to matrices.  This feature
             allows human-readable printing of huge matrices by only
             emitting specified horizontal and vertical contexts.

2008-11-12:  Improved Windows portability.

2008-11-10:  Fixed dynamic linking problem on Mac OS X.

2008-11-02:  Added new BLAS functions:

               * tpmv
               * tpsv

2008-11-01:  Added new BLAS function:

               * syr2k

2008-10-30:  Added new BLAS function:

               * trsv

2008-10-26:  Added two new matrix functions:

               * packed
               * unpacked

2008-10-15:  Added new LAPACK function:

               * geqrf

2008-09-21:  Added new BLAS and LAPACK functions:

               * trmm
               * trtrs
               * trtri

             Some minor API cleanups and internal improvements.

2008-09-17:  Added optional jitter argument to potrf, potrs, and potri.

2008-09-08:  !!! WARNING WARNING WARNING WARNING WARNING WARNING WARNING !!!

             potri and potrs now implicitly call potrf by default!
             This will break previous code depending on these functions,
             but should be trivial to fix.  This change was deemed
             necessary, because otherwise switching between sytri/potri
             and sytrs/potrs would cause surprises: the purely symmetric
             functions do already implicitly call the factorization
             unless a default parameter (ipiv) is overridden.

             Sorry for the inconvenience.

2008-07-21:  Generalized Mat.transpose to support specifying sub-matrices.

2008-04-23:  Fixed a parameter checking bug for syevr-related functions.

2008-04-11:  Added new BLAS function:

               * trmv

             Thanks to Martin Willensdorfer <ma.wi@gmx.at> for the patch!

2008-02-13:  Fixed a bug when implicitly allocating result matrices
             with user-specified offsets.  It may cause segfaults and
             affects many functions (though it is presumably very rarely
             triggered).

             Thanks to Shun Sakuraba <shun.sakuraba@gmail.com> for
             contributing this patch!

2008-01-11:  Fixed installation of new release.  Added new function:

               * Mat.detri

2008-01-02:  New major release due to restructuring.  The library is now
             packed into a separate namespace (Lacaml), and the previously
             visible Lacaml-module is now called "Impl".

2007-12-27:  Added new BLAS function:

               * symv

2007-11-22:  Added Mat.scal and Mat.axpy.

2007-11-21:  Fixed a bug in vector iteration functions related to
             negative index increments.  Thanks to Fabrice Pardo
             <Fabrice.Pardo@lpn.cnrs.fr> for reporting!

             Greatly improved performance of matrix copying.  Cleaned up
             some code.  Removed dependency on F2C library (gfortran
             should nowadays be linked implicitly).

2007-03-30:  Added lacaml_utils to installed interfaces.

2007-03-28:  Fixed potential GC-bugs.  Updated OCamlMakefile.

2006-11-22:  Updated OCamlMakefile.

2006-09-15:  Fixed bug on 64bit architectures: Fortran integers are
             32bit only, Lacaml did not account for that.

2006-07-24:  Tightened parameter checks on functions that accept square
             matrices only to prevent LAPACK from complaining (i.e. raise
             OCaml exceptions instead).

2006-07-06:  Added Vec.concat.

2006-06-08:  Fixed some GC-bugs.  Cleaned up C-code.

2006-01-21:  Updated copy of f2c.h to fix size-related bugs on AMD64.
             Fixed some warnings introduced by OCaml-3.09.

2006-01-18:  Fixed a bug in pbsv and sbmv.

             Thanks to Christophe Troestler <Christophe.Troestler@umh.ac.be>
             for contributing the patch!

2006-01-16:  Updated OCamlMakefile.

2005-12-09:  Fixed an installation problem on Darwin.

2005-10-06:  Fixed META-file for better integration with the
             OCaml-toplevel.

             Added new function:

               * Mat.copy_row

2005-09-22:  Added new function:

               * Mat.to_col_vecs

2005-09-21:  Added new function:

               * Vec.random  (for both real and complex numbers)

2005-08-24:  Added a new function:

               * Vec.append

2005-07-15:  Fixed two documentation generation bugs.

2005-07-14:  Major release (version 3)!

             The API has been significantly normalized, simplified and
             documented to make its use more convenient.

             ATTENTION: THE ORDER OF VECTOR ARGUMENTS TO FUNCTION AXPY
             HAS CHANGED, AND PARAMETER X IS LABELED.  IF YOUR COMPILER
             DOES NOT COMPLAIN ABOUT MISSING LABELS, YOUR PROGRAM WILL
             COMPILE BUT PRODUCE WRONG RESULTS.  ALWAYS LABEL PARAMETER
             X FOR AXPY, WHICH IS ALSO MUCH MORE READABLE.

             New LAPACK-function:

               * gesvd for complex numbers

                 Thanks to Egbert Ammicht <eammicht@lucent.com> for
                 this contribution!

             Added specific build rules for MacOS X.  Thanks to Patrick
             Cousot <Patrick.Cousot@ens.fr> for this contribution!

2005-06-20:  Relaxed a runtime check in gemm to let the user specify
             his own "k"-value.

2005-06-17:  New LAPACK-functions:

               * syevr
               * lamch

             New functions in Mat-module:

               * random

             Added pretty-printer for integer vectors to printers
             installed in the toplevel.

2005-06-15:  Fixed a supposedly very rare bug in gesvd and gesdd.

             Changed interface of all gels?_min_lwork functions for more
             understandable, safer usage.

2005-06-14:  New LAPACK-function:

               * gesdd

2005-06-08:  New LAPACK-function:

               * syevd

2005-06-06:  Tightened parameter checks for printing matrices and vectors.

2005-06-03:  Fixed a bug in mvec_of_array (degenerate case when array
             has zero length).

2005-05-31:  Fixed a couple of GC-related bugs pointed out by Saffire (an
             FFI-type checker).

2005-05-27:  New function in Mat-module:

               * mvec_to_array

2005-05-17:  Changed interface of swap-function to avoid parameter confusions.

2005-05-13:  Added pretty-printing for int-bigarrays.

2005-05-12:  Further regularisation of pretty-printing module.

2005-05-11:  Greatly regularized pretty-printing module.

2005-04-05:  Improved pretty-printing functions to allow for printing
             labels.

2005-03-28:  Fixed a bug in Mat.of_col_vecs.

2005-03-28:  New functions in Mat-module:

               * of_col_vecs

2005-03-23:  Added a toplevel-specific module for installing
             pretty-printers, which is automatically loaded when requiring
             the library in the toplevel.

2005-03-22:  Added a new constant parameter to function Vec.ssqr_diff.

2005-03-10:  New functions in Mat-module:

               * mvec_of_array
               * from_col_vec
               * from_row_vec

             Slightly improved some examples.

2005-03-03:  Improved pretty-printing functions.

             Changed examples to make use of new pretty-printing
             functions.

             Fixed some severe bugs (uninitialized data!) in several
             functions.

2005-03-02:  Updated contact + copyright information.

             Updated OCamlMakefile.

             Fixed a bug in the gelsX-functions.

             Added module Lacaml_io for printing matrices and vectors
             in convenient ways.

             New functions in Mat-module:

               * copy
               * of_diag
               * col
               * transpose
               * fold_cols

             New functions in Vec-module:

               * to_array
               * of_list
               * to_list
               * rev

2004-11-13:  Added new LAPACK-function for singular value decomposition
             (SVD):

               * gesvd

             Thanks to Liam Stewart <liam@cs.toronto.edu> for this
             contribution!

2004-08-05:  Renamed a constant to prevent potential name clashes on
             Mac OS X.

2004-08-02:  Fixed a severe thread-related bug.  The attribute "noalloc"
             cannot be used with external functions that make use of
             "caml_enter_blocking_section".

2004-08-01:  New matrix function:

               * map

             Thanks to Liam Stewart <liam@cs.toronto.edu> again for
             his help!

2004-07-23:  Major feature additions.

             New LAPACK- and BLAS-functions (mostly computational routines):

               * syr, syrk
               * lansy
               * sytrf, sytrs, sytri, sycon
               * getrs
               * potrs

             Thanks to Liam Stewart <liam@cs.toronto.edu> again for this
             huge contribution!

2004-07-15:  Major feature additions.

             New LAPACK- and BLAS-functions (mostly computational routines):

               * gecon
               * pocon
               * gemm
               * symm
               * lange
               * getrf
               * getri
               * potrf
               * potri

             Thanks to Liam Stewart <liam@cs.toronto.edu> for this
             huge contribution!

2004-07-15:  Upgraded some internal functions as suggested by OCaml-3.08.

             Minor improvements to examples.

             New matrix function:

               * Mat.of_array

             Updated OCamlMakefile.

2004-07-04:  Moved gelss-function from SDCZ to SD-code only.
             Interfaces to complex code (CZ) are not compatible.

             Thanks to Liam Stewart <liam@cs.toronto.edu> for pointing
             this out!

             Updated OCamlMakefile.

2004-04-27:  Updated OCamlMakefile.

2004-03-16:  Fixed a small compilation problem.

             Updated OCamlMakefile.

2004-02-27:  Fixed a minor problem with external functions returning
             type unit. Added "CAMLprim" to all C-stubs.

             Fixed too tight type restrictions of axpy.

             Corrected error locations.

             Tightened some parameter checks, and made them more modular.

             Changed function interfaces (not backward compatible):

               * Mat.init_row
               * Mat.init_col

             Changed the "trans"-parameter in various functions from
             a boolean to type "trans2" or "trans3", which consist of
             constructors "`N", "`T", "`C" depending on them making
             sense in this context.

             New matrix functions:

               * Mat.dim1
               * Mat.dim2

             New vector functions:

               * Vec.dim
               * Vec.init
               * Vec.of_array
               * Vec.logspace

             New LAPACK function:

               * geev  (General algorithm for solving eigenproblems)
                 This function was initially contributed by Oleg Trott
                 <ot14@columbia.edu>.

             Removed obsolete file myXerbla.c.

             Cleaned up examples.

             Improved documentation a bit.

2004-02-21:  Added CAMLprim in the C-interface where appropriate.

2004-01-31:  Added Makefile.conf again for more understandable installation.

             Added new functions for matrix creation:

               * diag
               * hankel
               * pascal
               * rosser
               * toeplitz
               * vandermonde
               * wilkinson

             Made Vec.min and Vec.max use the 2-norm for comparison.
             Removed a superfluous debug statement.
             Updated OCamlMakefile.

2003-12-19:  Fixed a severe bug in Vec.fold.

             Improved element-wise vector division (prevent overflow).

             Added two functions for generating matrices:

               * init_rows
               * init_cols

             Improved functionality of Vec.iter and Vec.iteri.

2003-12-18:  Update to allow shared libraries.

2003-12-16:  Changed Fortran error handling to catch invalid arguments
             that OCaml did not detect.

2003-12-15:  Fixed a bug in the examples (lin_eq).

2003-12-14:  Changed the signature of a couple of functions: non-optional
             arguments that are overwritten and represent the result of
             the function will not be returned anymore (unit-functions).

             Relaxed the conditions of the license to allow static
             linking.

2003-12-12:  Released new major version. Please note new module names!

             Added support for complex transforms.
             Allow accessing submatrices using labels.

             Updated OCamlMakefile.
             Changed stub names (invisible to user).

2003-01-07:  Updated OCamlMakefile to make use of "findlib".

2002-09-12:  Updated OCamlMakefile and license.

             Documented all modules for use with ocamldoc.

2002-07-24:  Incorporated further extensions by Christophe Troestler.

             Fixed a couple of C-compiler warnings (pedantic mode).

2002-07-16:  Fixed potential problem with threads and GC.

2002-07-12:  Added loads of new LAPACK- and BLAS-functions!

             Many thanks to

               Christophe Troestler <Christophe.Troestler@umh.ac.be>

             for this major contribution!

2002-07-03:  Small fix in wrong type declaration in C-code (has no effect
             at runtime).

2002-05-05:  Updated OCamlMakefile.

2002-05-04:  Revised the whole installation procedure. See INSTALL for
             details.

2002-04-30:  Updated OcamlMakefile: it does not ask for confirmation
             during installation anymore!

2002-04-23:  Added the file "f2c.h" to the distribution so that people
             don't have to install it.

2002-02-10:  Removed project from Sourceforge for simpler maintainance.

2002-01-04:  Changed the example a little bit to show users functionality
             from module "Vec_D" (i.e. basic vector operations).

2002-01-02:  Removed two more unneeded object files from the f2c-library.
             (Thanks to John Malecki for the hint!).

2001-09-06:  Removed labels referring to standard library modules from the
             implementation: will be deprecated in the next OCaml-release.

2001-06-30:  Removed "Printexc.catch" from lin_reg-example: is going to be
             deprecated in upcoming OCaml-release.

             Bumped major version number: the existing functionality of
             the library seems stable enough.

2001-04-03:  Minor change to make things compile in label mode.

2001-03-30:  Added annotation "noalloc" to functions that benefit from it.
             This lets OCaml slightly improve efficiency of function calls.

2001-02-21:  Updated README.

2001-02-20:  Added additional checks for increment-parameters: this
             prevents segfaults if the user passes invalid arguments.

             Added new module "vec_SD.ml" and supplementary C-files
             for additional (non-BLAS) vector operations. It currently
             implements "ssqr", "add", "sub", "mul", "div" and "ssqr_diff"
             (see module interface for documentation).

2001-02-09:  Added "asum"-function from BLAS.

2001-02-08:  Added "copy"- and "dot"-functions from BLAS and restructered
             the code a bit to make it more extensible.

2001-01-24:  First release.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.