#
# = 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 <tt>self</tt>.  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 <tt>self</tt>.
#
# * 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, <tt>z=GSL::Vector::Complex[1]; z[0] = [nil,
#   1]</tt> 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.
#
#
