forked from translunar/nmatrix
-
Notifications
You must be signed in to change notification settings - Fork 133
/
History.txt
909 lines (570 loc) · 26.4 KB
/
History.txt
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
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
=== 0.0.1 / 2012-04-10
* 1 major enhancement
* Initial alpha release
=== 0.0.2 / 2012-09-21
* 15 major enhancements
* Second alpha release
* Rewrote NMatrix in C++0x and C++11 using templates, namespaces;
removed Ruby generators and CAST parser
* Added preliminary C API
* Slicing and referencing support for dense and list matrices (by
@flipback)
* BLAS level-3 xTRSM algorithm added for rationals and BLAS types
* LAPACK support added, including partially working xGETRF
subroutine
* Element-wise comparisons now return byte-matrices
* Element-wise operations on list matrices may alter the default
value of the return matrix
* Element-wise division behaves like Ruby division
* Improved MATLAB .MAT v5 file reading
* clang support
* `==` operator now used for matrix equality, `=~` and `!~` for
element-wise comparisons
* Dense `each` returns an Enumerator when called without a block
* Sped up list storage item deletion, fixed bugs
* List matrix-to-hash conversion with `to_h`
* Note: Element-wise list operations current disabled
=== 0.0.3 / 2013-01-18
* 8 major enhancements
* Matrix-scalar operations (dense, list)
* Shortcuts for matrix creation (by @agarie)
* Access to most ATLAS-implemented LAPACK functions for those
with ATLAS' CLAPACK interface: xGETRF, xGETRI, xGETRS, xGESV,
xPOTRF, xPOTRI, xPOTRS, xPOSV, xLASWP, xSCAL, xLAUUM
* Access to additional ATLAS-implemented BLAS functions: xTRMM,
xSYRK, xHERK, xROT, xROTG
* Non-ATLAS versions of CLAPACK functions: xLASWP, xSCAL, xLAUUM,
xROT
* Matrix inversion (LU and Cholesky; requires CLAPACK)
* LU factoring with and without CLAPACK
* Native matrix I/O for dense (supporting upper, lower, hermitian,
skew, symmetric, and general) and yale (general only); excludes
Ruby objects currently
* 2 bug fixes:
* Yale-to-list casting
* Now requires packable-1.3.5 or higher, fixing a problem with
MATLAB .mat v5 file I/O (specific to doubles)
=== 0.0.4 / 2013-05-17
* 3 major enhancements
* Added a more user-friendly interface for cblas_rot in the form of
NMatrix::BLAS::rot
* Added to_hash for Yale matrices
* Improved source code documentation (by @agarie)
* 4 minor enhancements
* Spec clean-up (by @masaomi)
* Made it possible to request a different itype internally for Yale
matrices
* Improved space usage of Yale slice-by-copying, which was
requesting more space than needed
* Improved compile-time Mac OS X and Ubuntu library searching
* 8 bug fixes:
* NMatrix::BLAS::gemv segfaults
* Fixed Yale matrix slice-by-copy write error where default itypes
(which are based on shape) differ, and a separate problem where
incorrect IJA and A entries were written.
* NVector-scalar operations and NVector-NVector element-wise
options now return an NVector instead of an NMatrix
* Addressed problems with segmentation faults during iteration (by
@cjfuller)
* Addressed Ubuntu/Debian installation problems (incompatibility
with apt-supplied atlas)
* Fixed transpose behavior following slice-by-reference (by
@cjfuller)
* Fixed gem install command in Rakefile (by @jpmckinney)
* Fixed Spanish language compile issue (by @imcsk8 and @agarie)
=== 0.0.5 / 2013-07-09
* 4 major enhancements
* NVector orientation is now controlled by its shape, not by the
@orientation property
* NVector default orientation is now a row vector rather than a
column, as this is more efficient for Yale storage
* NVector objects may now be created with dtypes other than dense
* Exposure of additional ATLAS-implemented BLAS functions,
including native rational and Ruby object support, for xANUM (sum
of the absolute values of a vector) and xNRM2 (2-norm of a
vector); and Ruby helper functions BLAS::anum and BLAS::nrm2
which should do more careful argument sanity checking
* 9 minor enhancements
* Added #yale_vector_insert to NMatrix::YaleFunctions, to speed up
insertion of multiple items into a Yale matrix
* Added #yale_nd_row, #yale_nd_row_as_hash, #yale_nd_row_as_array,
#yale_nd_row_as_set, #yale_nd_row_as_sorted_set, #yale_row,
#yale_row_as_hash, #yale_row_as_array, #yale_row_as_set,
#yale_row_as_sorted_set, #yale_nd_row_size to
NMatrix::YaleFunctions in order to speed up getting multiple
items from some row of a Yale matrix
* Improved #yale_ija, #yale_a, #yale_d by allowing an optional
index argument, which returns a single array value instead of
copying and returning the entire array
* Improved sorting algorithm for Yale matrix multiplication;
instead of selection sort, now uses quicksort; and subs in
insertion sort for small partitions
* Slicing a single row or column now returns an NVector instead
of an NMatrix (does not yet work for n-dimensional matrices)
* Improved function documentation for NVector and NMatrix
* Added #min, #max, #to_a, #shuffle, #shuffle!, #absolute_sum,
#norm2 functions to NVector
* Aliased missing dimension of NVector#each_stored_with_indices to
#each_stored_with_index, which only yields a value and i or j
(not both i and j) depending on the vector orientation
* Added #each_row, #each_column to NMatrix
* 5 bug fixes:
* Dense iterators now return self (an NMatrix) in order to be
consistent with Ruby Array behavior (by @cjfuller)
* Fixed Yale resize problem (by @v0dro)
* Fixed Yale nx1 times 1xn multiplication problem
* Fixed Yale sorting-following-multiplication problem
* NMatrix::read() now raises an exception when asked to read a file
that does not exist
=== 0.0.6 / 2013-08-09
* 8 major enhancements:
* Refactored iteration, so that each storage type now has each of:
#each, #each_with_indices, #each_stored_with_indices
* Added element-wise power function (**) for dense matrices (by
@agarie)
* Dramatically improved matrix element-wise and scalar functions so
C++ templates are no longer necessary; element-wise operations
may now be written in protected Ruby methods that look like
NMatrix#__list_elementwise_op__ and NMatrix#__list_scalar_op__
* Element-wise and scalar operations that might return a true or
false now return Ruby matrices
* Yale element-wise and scalar operations have been added
* Yale is now allowed to have a non-zero default (specifically to
permit true-false matrices and nil sparse bases)
* Dramatically improved NMatrix#cast to allow for hashed options
including a :default for list and yale casts
* Dramatically improved speed of compilation
* 14 minor enhancements:
* Improved documentation for exposed BLAS and LAPACK functions
* Allowed for use of BLAS::rot without cloning x and y (in-place
plane rotation); removed unnecessary test of unfriendly version
* Added more user-friendly cblas_xrotg implementation: BLAS::rotg
* Moved NMatrix::YaleFunctions::yale_vector_insert to
NMatrix#__yale_vector_set__, which is more consistent with
behavior
* Changed notations for protected stype-specific functions, which
now look like __stype_method_name__, e.g., __yale_vector_set__
* Added NMatrix#__list_default_value__ protected function to get
the initial (sparse) value for list matrices
* Changed behavior and names of NMatrix::YaleFunctions methods
which get column indices and cell contents by row, so that they
now expect the :keys option (like Hash#keys) instead of :array,
which doesn't make sense; name changes are as follows:
yale_row_as_sorted_set -> yale_ja_d_keys_sorted_set_at
yale_row_as_set -> yale_ja_d_keys_set_at
yale_row_as_array -> yale_ja_d_keys_at
yale_nd_row_as_sorted_set -> yale_ja_sorted_set_at
yale_nd_row_as_set -> yale_ja_set_at
yale_nd_row_as_array -> yale_ja_at
Aliases are included but will be removed without notice.
* Added NVector#sorted_indices and #binned_sorted_indices for use
when running k-nearest neighbor searches on a distance matrix
* Added NVector::logspace shortcut function (analogous to
NVector::linspace)
* Cleaned up code by removing monkey patches that we stopped using
circa v0.0.2 (Array#min, Array#max, String#constantize,
String#camelize, String#underscore)
* Re-enabled element-wise mod (%) method
* Added NMatrix::guess_dtype class method, which allows you to
figure out what dtype (roughly) should be used for any given
Ruby value (e.g., 3)
* String and nil objects in NMatrix cells are no longer outlawed
(but are not supported), provided they are of the :object dtype
* NMatrix#diag shortcut for specifying sparse matrix with a user-
specified diagonal array (by @ryanmt)
* 3 bug fixes:
* Corrected BLAS::rot bounds checking on optional n argument
* Removed BLAS::rotg and BLAS::nrm2 code for rational numbers, as
both involve a square root
* Repaired list matrix element-wise functions
=== 0.0.7 / 2013-08-22
* 6 major enhancements:
* Eliminated NVector in favor of NMatrix objects with
#effective_dim smaller than #dim; added NVector-like
functionality to NMatrix, sometimes with #respond_to? dependent
upon matrix dimensions; allowed for NVector.new to continue
to function as before, but now returns an NMatrix instead
* Began major re-factoring of headers for math.cpp
* Added two singular value decomposition functions for dense
NMatrix objects, #gesvd and #gesdd, for floating point and
complex dtypes
* Added additional slicing shorthand, which uses hashes (e.g.,
n[0=>3,2] for n[0..3,2]), which may eventually allow users to use
n[0:3,2] notation instead (needs Ruby core patch)
* #[] and #[]= calls no longer need index on those matrix shape
elements which are equal to 1 (e.g., vectors)
* Yale slicing-by-reference has been added
* 18 minor enhancements:
* Added user-friendly NMatrix::LAPACK::laswp method
* Added NMatrix#permute_columns! and NMatrix#permute_columns
* Added NMatrix#abs to compute element-wise absolute values, and
#abs_dtype to determine the dtype returned by a call to #abs on a
given matrix (needed for RSpec)
* Added NMatrix#size to compute the total number of cells in an
NMatrix object (solely accounting for the shape, not sparsity)
* Added RSpec monkey patches for #be_within to work with NMatrix
objects; usable by requiring "nmatrix/rspec"
* Added experimental NMatrix::LAPACK::lapack_gesvd function (which
does NOT depend upon CLAPACK) (by @ryanmt and @mohawkjohn)
* Added experimental non-LAPACK-dependent function
NMatrix::LAPACK::lapack_gesdd
* Added NMatrix#supershape method for getting the shape of a
slice's parent or other ancestor, which may be useful for calling
ATLAS and LAPACK functions on slices
* Aliased NMatrix[] to function like N[] shortcut for matrix
creation (by @agarie)
* Added #layer for matrices with dimension greater than two
(corresponds to #row and #column)
* Added #rank and #each_rank generics for #row/#column/#layer and
#each_row/#each_column/#each_layer respectively (#each_rank
replaces #each_along_dim)
* Replaced #reduce_along_dim with #inject_rank
* NMatrix#to_a now works for up to two dimensional matrices; and
returns a flattened array for single-row matrices
* NMatrix#to_flat_a now returns a flattened array of all entries
* Re-organized NMatrix Ruby sources into multiple files: math.rb
for instance methods which are mathematical in nature or are
essentially ATLAS/LAPACK/BLAS calls, enumerate.rb for methods
involving enumeration; and existing shortcuts.rb for convenience
functions and shortcut constructors, and nmatrix.rb for core
functionality (#inspect, #to_h, #to_a, #to_s, #pretty_print,
and so on)
* Improved #pretty_print, which now also prints layers (the third
dimension in a 3D matrix)
* Re-factored some of dense slicing to remove some redundant code
* Added shortcut functions #list?, #dense?, #yale? for quickly
testing matrix storage type
* 5 bug fixes:
* Fixed compilation problem involving <typeinfo> and <vector> STL
headers
* Fixed NMatrix#inverse problem with non-square matrices
* Fixed invalid read problem detected by Valgrind for
Yale element-wise subtraction in spec
* Fixed conversion from Ruby object to Complex and Rational
* Fixed memory leak in slicing
=== 0.0.8 / 2013-08-23
* 2 bug fixes:
* Fixed Ubuntu compilation bug caused by math header file
refactoring
* Fixed pry version error which manifests on some systems but not
others
=== 0.0.9 / 2013-09-18
* 5 major enhancements:
* Re-factored NMatrix constructor
* Improved usability of NMatrix shortcut constructor options
(e.g., #zeros, #ones, #random, etc.) using new NMatrix
constructor
* Left-assignment of slices for all matrix storage types (uses a
dense cast, or accepts an array or single value)
* Re-factored Yale into a more object-oriented and less confusing
set of header files
* Enabled Travis CI (by @cjfuller)
* 4 minor enhancements:
* Renamed some specs in order to change their test order, so that
critical tests fail first (particularly in the case of
segmentation faults)
* Default dtype is now :object when no initial values are
specified
* Deprecated NVector#initialize and a number of other unnecessary
NVector functionality
* Made Ubuntu compilation significantly easier (by @cjfuller)
* 2 bug fixes:
* nil values in matrices are now pretty printed as "nil"
* Casting from dense to Yale now properly accepts the default
value option
=== 0.1.0.rc1 / 2013-12-28
* 4 major enhancements:
* Improved garbage collection strategy for partial object creation
(i.e., when VALUEs are allocated but not registered right away),
which in addition to fixing numerous bugs should prevent some new
bugs from arising in the future (by @cjfuller)
* Implemented list storage transpose
* Implemented generic n-dimensional transpose
* Implemented == comparison between differing matrix stypes
* 9 minor enhancements:
* User-friendly #gesvd and #gesdd updates (by @ryanmt)
* Added experimental #yale_row_key_intersection function for expert
recommendation problems
* Added additional *indgen shortcuts and changed behavior for some;
now, #cindgen for :complex64, #zindgen for :complex128, #findgen
for :float32, #dindgen for :float64, #rindgen for :rational128,
and #rbindgen for Ruby objects (which contain integers); also,
removed code repetition
* Changed #stddev to use elementwise #sqrt instead of a manual map
block (by @cjfuller)
* Added alias from MATLAB `load_mat` method to `load` for
consistency with the MatrixMarket loader
* Improved organization by moving list and yale code into storage/
subdirectories
* Added NMatrix#potrf! and NMatrix#getrf, which are instance methods
for calling CLAPACK functions (NMatrix#getrf! already existed)
* Added GCC installation instructions for Mac OS X Mavericks, and
updated the old installation instructions for Mac OS X (both
found in scripts/)
* Switched NMatrix::VERSION to work more like Rails::VERSION, with
support for MAJOR, MINOR, TINY, and PRE
* Added #concat, #hconcat, #vconcat, and #dconcat for joining
matrices together
* 16 bug fixes:
* Spec revisions for lapack_gesdd and lapack_gesvd (by @ryanmt)
* Fixed two double-free problems (by @cjfuller and @mohawkjohn)
* Fixed contiguous array marking fencepost error
* Fixed C/C++ API compatibility problem preventing rb/gsl linking
* Resolved a number of compiler warnings, including one return-type
problem that would likely have become a garbage collection error
(if it wasn't already)
* Fixed -O3 optimization problems
* Restored NMatrix#asum, #nrm2, #binned_sorted_indices,
#sorted_indices which were inadvertantly removed by NVector
deprecation; have not tested
* Experimental #yale_nd_row and functions which call it now checks
range of argument to prevent segfault
* Fixed :* shortcut for a full list dimension (by @cjfuller)
* Fixed list construction problem which occurred when an initial
value array was provided (by @cjfuller)
* Fixed #inject issue with list and yale matrices of two dimensions
(by @cjfuller)
* Fixed several garbage collection problems (also listed under
enhancements) (by @cjfuller)
* Updated object cleaning target in extconf.rb
* Fixed possible compilation problem on Mavericks with Xcode 5.02
* Fixed errors involving undefined symbols, unresolved symbols, and
lazy symbol binding
* Improved LAPACK and BLAS header selection for Ubuntu/Debian
systems with ATLAS (by @mvz)
=== 0.1.0.rc2 / 2014-03-12
* No major enhancements.
* 14 minor enhancements:
* Implemented negative-index slicing (by @rajatkapoor)
* Added reader for Point Cloud Library's PCD format
* Added Ruby 2.1 support (including Travis CI testing)
* Implemented LAPACK-independent exact inverse calculation for
dense matrices of size 2x2 and 3x3, as well as
* Added NMatrix::has_clapack? method to determine whether CLAPACK
support has been compiled in
* Improved conformance of specs to RSpec best practices (by
@duggiefresh)
* Travis CI now updates the IRC channel when a check passes (by
@agarie)
* Added NMatrix#data_pointer, which returns the memory address of
the stored elements in a matrix (generally for use with FFI and
other libraries that need pointers)
* Made NMatrix#clone_structure a public method (was protected)
* Added :scale option for NMatrix::random to handle non-floating
point forms
* Added complex support to NMatrix::random
* Aliased NMatrix::random to NMatrix::rand
* Added NMatrix#reshape! for in-place reshape of dense matrices (by
@rajatkapoor)
* Implemented unary negation of matrices
* 6 bug fixes:
* Fixed dot product operation on 1-dimensional matrices (by @rve
and @cjfuller)
* Fixed segfault on 1-dimensional matrix transpose (by @cjfuller)
* Fixed compile error with Ruby 2.1 (by @diminish7)
* Fixed regression which wasn't causing any problems but was
counter to design: stride was declared prior to data storage for
dense matrix storage
* Fixed Rakefile problem which was causing specs to run twice in a
row with each call to rake spec
* NMatrix::random now raises an exception when rational matrices
are requested
=== 0.1.0.rc3 / 2014-03-27
* No major enhancements.
* 2 minor enhancements:
* Exposed NMatrix::LAPACK::geev for LAPACK's xGEEV
* Added out-of-place complex conjugate for dense and yale storage
(by @rve)
* 1 bug fixes:
* Fixed critical bug with transposing a matrix reference slice (by
@rajatkapoor)
=== 0.1.0.rc4 / 2014-07-24
* No major enhancements.
* 1 minor enhancement:
* NMatrix#floor and #ceil implemented (by @v0dro)
* 2 bug fixes:
* Disallowed out-of-bounds rank calls (by @andrewcsmith)
* Fixed rspec 3.0 conflict with rspec-longrun 1.0.1
=== 0.1.0.rc5 / 2014-08-01
* No major enhancements.
* 1 minor enhancements:
* Added optional extension for generating homogeneous
transformation matrices for rotations and translations in three
dimensions
* 3 bug fixes:
* Fixed rake install (by @duggiefresh)
* Fixed API problems which prevented NMatrix from working with
the SciRuby rb-gsl fork
* Fixed Yale #inject behavior (by @yoongkang)
=== 0.1.0 / 2014-12-11
* 3 major enhancements:
* Updated to BSD 3-clause license
* Removed Ruby 1.9.2 support; now requires Ruby 1.9.3 or
higher (by @v0dro)
* Added Gauss-Jordan elimination for calculation of
matrix inverses (by @v0dro)
* 6 minor enhancements:
* Added trace method for square matrices
* Improved Array#to_nm monkey patch so matrices and
arrays can be interconverted easily, without need for a
shape argument (by @andrewcsmith)
* Added Harwell-Boeing and Fortran matrix format parsers
(by @v0dro)
* Removed soon-to-be-deprecated autoloads and replaced
with a more robust method (by @duggiefresh)
* Updated rake install task to use Bundler's GemHelper
install task (by @duggiefresh)
* Moved packable requirement from Gemfile to gemspec
(by @andrewcsmith)
* 3 bug fixes:
* Corrected Ubuntu clapack functionality checking, which
should fix most functions which rely on the ATLAS
version of clapack
* Corrected NMatrix::gesdd workspace request size (by
@yoongkang)
* Fixed definition of NMatrix#asum for one-by-one
matrices (by @andrewcsmith)
=== 0.2.0 / 2015-08-24
* 2 major enhancements:
* External libraries are now linked via optional plugins,
removing ATLAS dependencies (by @wlevine)
* Made it possible to use NMatrix together with NArray (by
@blackwinter)
* 9 minor enhancements:
* Removed rational types (by @wlevine)
* Added block-diagonal matrix generation method,
NMatrix.block_diagonal (by @agisga)
* Added Kronecker product method #kron_prod (by @agisga)
* Made #permute_columns usage more intuitive (@agisga)
* Added #pow method to raise a matrix to an integer power
(by @v0dro)
* Added #meshgrid method (by @dilcom)
* Added #hessenberg method, for reducing matrices to upper
Hessenberg form (by @v0dro)
* Added calculation of correlation matrix with #corr and
covariance using #cov (by @v0dro)
* Added method for returning matrix diagonal, #diagonal
(by @v0dro)
* 11 bug fixes:
* Fixed #== operator problems (by @wlevine)
* Fixed BLAS.gemv (by @wlevine)
* Fixed #asum for single element complex matrices (by
@wlevine)
* Fixed determinant calculation (by @wlevine)
* Fixed division by zero (by @spacewander)
* Fixed NMatrix#respond_to? so it would accept two
arguments properly (by @ktns)
* Fixed NMatrix#hermitian? (by @agisga)
* Fixed #gesdd, #gesvd (by @wlevine)
* Fixed #symmetric? (by @ktns)
* Made rdoc a development dependency to resolve dependency
conflicts (by @matt-liu)
* Fixed bug where Array#to_nm would alter the array (by
@andrewcsmith)
=== 0.2.1 / 2016-01-18
* 3 major enhancements:
* New plugin nmatrix-fftw for wrapping over FFTW (by
@v0dro)
* Change Ruby Array C pointer references to be compatible
with Ruby 2.3.0 (by @mrkn)
* NMatrix can now be compiled with clang (by @mrkn)
* 4 minor enhancements:
* Improved Travis configs to test on Linux and OSX with
and without plugins (by @mrkn)
* Added non-abbreviated versions to the options of
NMatrix#solve; added more docs (by @agisga)
* Added several specialized algorithms to NMatrix#solve
for more efficient solving of linear systems with upper
or lower triangular matrices (by @agisga)
* Remove redundant C implementation of
NMatrix#complex_conjugate (by @yoongkang)
* 4 bug fixes:
* Fixed memory leak in math.cpp (inverse()) (by @lokeshh)
* Check if optional permute parameter in NMatrix#transpose
is an Array to prevent unexpected disappearing-parameter
behavior (by @firemind)
* Moved rubyobj_from_cval function into `nm` namespace
from C-linkage to fix a C compile time error (by @mrkn)
* Fixed undefined variable 'idefaults' in lapacke extconf
(by @agisga)
=== 0.2.2 / 2016-07-22
* No major enhancements.
* 15 minor enhancements:
* Added Hilbert and inverse Hilbert matrix functions
#hilbert and #inv_hilbert (by @arafatk)
* Added NMatrix.linspace constructor for generating a
vector with linearly spaced elements (by @gau27)
* Added NMatrix.logspace constructor for generating a
vector with logarithmically spaced elements (by @gau27)
* Improved Travis configs (by @v0dro)
* Added C API documentation and included ruby_constants.h
in C API include files (by @v0dro)
* Added #magic function to create magic square matrices
(by @shahsaurabh0605)
* Added NMatrix#last (by @gau27)
* Added QR factorization by exposing LAPACK functions
GEQRF, ORMQR, UNMQR (by @gau27)
* Made templates a little smarter for those functions
which require a separate return dtype by adding the
MagnitudeDType template typename; and added a magnitude
function to replace std::abs and abs to make complex
and real templates more generic (by @mohawkjohn)
* Added #adjugate and #adjugate! functions (by @sujithvm)
* Added #scale and #scale! methods by exposing BLAS SCAL
(by @lds56)
* Re-factored type comparisons to use RB_TYPE_P instead of
TYPE(obj) (by @mrkn)
* Updated license to BSD 3-clause (by @gau27)
* Cleaned up gem installation settings and dependencies
(by @mrkn)
* DRYed up extconf script (by @mrkn)
* 15 bug fixes:
* Fixed offsets and changed limits in TRSM to follow the
Fortran implementation (by @lokeshh), and adjusted
triangular #solve accordingly (by @agisga)
* Fixed NRM2 (CBLAS 2-norm) for complex types (by
@lokeshh)
* Fixed NRM2 divide-by-zero bug (by @arafatk)
* Fixed #reshape! to work when changing dimensionality (by
@wlevine)
* Fixed ambiguous references by making proper use of
namespace qualifiers for dtypes, allowing compilation in
Windows using the mingw64 toolchain available through
msys2 (by @preetpalS)
* Replaced all uses of u_int8_t with uint8_t and added static
assertions to prevent ambiguous use of u_intX_t types
(by @preetpalS)
* Added workaround in extconf script for Windows use of a
different name for the null device (by @preetpalS)
* Updated deprecated RSpec code and other miscellaneous
cleanups (by @yui-knk)
* Removed incomplete support of Hash as an argument for
NMatrix#[] (by @yui-knk)
* Fixed typo in slicing exception error message (by
@mohawkjohn)
* Fixed #concat implementation for case of differing
sizes along concatenation dimension (by @alno)
* Ensured dtype is preserved by #repeat (by @alno)
* Fixed #det_exact for :object dtype (by @isuruf)
* Stopped using deprecated register storage class
specifier (by @mrkn)
* Fixed clang/clang++ compiler selection by forcing use of
clang++ when clang is used (by @mrkn)
=== 0.2.3 / 2016-07-25
* No major enhancements.
* No minor enhancements.
* 1 bug fix:
* Fixed gem installation problem caused by mkmf
abstraction (by @mrkn)
=== 0.2.4 / 2017-12-14
* No major enhancements.
* 2 minor enhancements:
* Eliminated code reuse in math.rb between JRuby and MRI
versions of library (by @prasunanand)
* Slightly simplified #positive_definite? (by
@prasunanand)
* 2 bug fixes:
* Fixed compilation problem on Mac OS X High Sierra (by
@mohawkjohn)
* Fixed failing #block_diagonal spec (due to missing
Array#sum) (by @mohawkjohn)