# # = Changes since Ruby/GSL 1.10.3 # # Ruby/GSL 1.11.2 introduced enhancements and some important bug fixes since the # earlier 1.10.3 release. Some of the enhancements and bug fixes involve changes # that are not backwards compatible. Existing scripts that work with Ruby/GSL # 1.10.3 may break under 1.11.2 (or later) if they use certain constructs that # are no longer supported or have changed in an incompatible way. # # The changes that could break old scripts are described below. They are # followed by highlights of the other enhancements and new features. # # == Backwards incompatibilities introduced in Ruby/GSL 1.11.2 # # * FFT interface has been extensively changed. # # * Matrix#get has been modified. # # * Size changing methods of GSL::Vector et al have, in general, been removed. # # * The #shift, #unshift, #push, and #pop methods have been removed from # GSL::Vector et al since they result increasing the size of self. This # can cause new memory to be allocated and old memory to be freed, but because # existing Views contain pointers to the old memory, this cannot be allowed. # Also removed #up and #down aliases from GSL::Poly. # # * The #concat method of GSL::Vector et al has been changed to always return a # new, longer instance rather than reallocating memory for self. # # * Return values from #delete, #delete_at, and #delete_if now follow same # convention as similarly named methods in Ruby's Array class. These methods # should be considered deprecated because existing Views could still refer to # now unmanged (but still allocated) memory. # # * GSL::Complex objects are now immutable. # # == Enhancements and features introduced in Ruby/GSL 1.11.2 # # * Now distributed and installable as a Ruby Gem. # # * Allow nil for real and/or imag in GSL::Vector::Complex#set(i,re,im) to NOT # set that component. For example, z=GSL::Vector::Complex[1]; z[0] = [nil, # 1] will set \z[0] to \GSL::Complex[0,1]. # # * Added GSL::Vector::Complex#to_s method. # # * Improved GSL::Vector::Complex#inspect. # # * Added GSL::Vector::Complex#set_real and GSL::Vector::Complex#set_imag methods # (and real=, re=, imag=, im= aliases). Currently only work with Numerics, but # could be made to work with GSL::Vectors (and Arrays of Floats). # # * Added GSL::Vector::Complex#conjugate and GSL::Vector::Complex#conjugate! # methods along with corresponding "conj" and "conj!" aliases. # # * Added "#add!", "#sub!", "#mul!", and "#div!" methods to GSL::Vector::Complex. # Also "add_constant!", and "scale!" aliases. # # * Added the following stats methods to GSL::Vector::Complex, #sum, #mean, #tss, # #tss_m, #variance, #variance_m, #variance_fm, #sd, #sd_m, and #sd_fm. #sum # and #mean return GSL::Complex; all others return Float. # # * Added "dup" alias for "clone" method of Vector and Maxtrix. # # * Added support for three parameter call to #subvector to support stride. # # * Added #shape method with alias #size for Matrix. # # * Provide GSL_Object#dup method to override Object#dup. GSL_Object#dup simply # raises NotImplementedError. Subclasses that want dup functionality should # provide their own implementation. # # * Added length alias to Vector and Vector::Complex. # # * Added #angle alias for #arg method of Complex, Vector::Complex, and # Matrix::Complex # # * Added #conj alias for #conjugate for GSL::Complex. Added #conjugate! method # with #conj! alias for GSL::Complex. # # * Added #[]= alias for #set method, #conj alias for #conjugate method, and # #conj! alias for #conjugate! method to GSL::Matrix::Complex # # * Support GSL::Permutation as parameter to Vector::Complex#get (and #[]). # # * Disallow the stride and length parameters of the various FFT methods. The # Vector being transformed could really be a Vector::View (e.g. a view of a # Matrix column). In that case, we need to use the stride of the Vector::View. # Users wishing to use a custom stride or length will be able to do so by # transforming a subvector of the Vector. # # * Added Block#length alias for Block#size. # # * Fixed bug #16023. # # * Calling #to_v on a single column matrix view will return column vector. # Related to #19757. # # * Provided GSL::Matrix::Complex with reasonable #to_s and #inspect # implementations. # # * Made Vector#{add,sub,mul,div}! methods work with non-Vector parameter (i.e. # constant). # # * Added #collect and #collect! methods to Matrix::Complex. # # * Added #map and #map! aliases for collect and collect! to Block, Vector et al, # and Matrix et al. # # * Vector::Complex#each, #reverse_each, #collect, and #collect! now yield # objects that are allocated on heap rather than stack. # # * Made Vector#subvector work with negative offsets # # * Added Vector#sgn and Matrix#sgn, both with #signum alias. # # * Added support for a Range parameter (with optional stride) to # Vector#subvector and Vector::Complex#subvector. # # * Modified Vector#get and Vector::Complex#get to return Views (via #subvector) # if more than one (or none) parameters are given or if a single Range # parameter is given. # # * Enhanced Matrix#submatrix with many new options and updated docs to reflect # changes # # * Modified Matrix#get to use new Matrix#submatrix functionality. # # * Added Matrix#to_a and Matrix::Complex#to_a methods. # # * Enhanced Vector#set functionality. # # * Added more details, examples, and a warning to Vector#set documentation. # # * Changed Range handling to support Floats for begin and end values where # appropriate. # # * Changed Vector#view_with_stride to require non-zero stride rather then # positive stride. # # * Enhanced Vector::Complex#set functionality. # # * Enhanced Matrix#set. Changed behavior of Matrix#get when called with a # single Fixnum argument; now returns individual element rather than # Vector::View of row. See html/matrix.html for more details. Changed tests # and examples to accomdate the change in Matrix#get. # # * Match to the latest tensor extension (version 0.99) # # * Modified GSL::Matrix::Complex#set to have same (i.e. newly enhanced) # functionality as GSL::Matrix#set. [Possibly incomplete; please report any # discrepancies.] # # * Added #diag alias for Matrix#diagonal. # # * Added #fftshift, #fftshift!, #ifftshift, and #ifftshift! methods to # GSL::Vector::Complex and documented them. # #