#
# = GSL::Vector::Complex
#
# == {}[link:index.html"name="1] Class methods
# ---
# * GSL::Vector::Complex.alloc(size)
# * GSL::Vector::Complex.alloc(re, im)
# * GSL::Vector::Complex.alloc(z0, z1, z2, ...)
# * GSL::Vector::Complex.alloc( ... )
# * GSL::Vector::Complex[ ... ]
#
# Constructors.
#
# 1. With two (real) vectors:
# >> re = Vector[0..3]
# >> im = Vector[5..8]
# >> z = Vector::Complex[re, im]
# [ [0.000e+00 5.000e+00] [1.000e+00 6.000e+00] [2.000e+00 7.000e+00] [3.000e+00 8.000e+00] ]
#
# 1. With arrays
# >> z = Vector::Complex.alloc([0, 1], [2, 5], [-3, 4])
# [ [0.000e+00 1.000e+00] [2.000e+00 5.000e+00] [-3.000e+00 4.000e+00] ]
#
# ---
# * GSL::Vector::Complex.calloc(n)
#
# Creates a complex vector of length n and initializes all
# the elements of the vector to zero.
#
# == {}[link:index.html"name="2] Instance methods
# === {}[link:index.html"name="2.1] Accessing vector elements
# ---
# * GSL::Vector::Complex#get(args)
# * GSL::Vector::Complex#[args]
#
# Returns elements(s) of the complex vector self if args is a
# single Fixnum, a single Array of Fixnums, or a single GSL::Permutation (or
# GSL::Index). For all other args, the parameters are treated as
# with Vector#subvector and a Vector::View is returned.
#
# Example:
# >> z
# [ [0.000e+00 1.000e+00] [2.000e+00 5.000e+00] [-3.000e+00 4.000e+00] ]
# => #
# >> z[1]
# => GSL::Complex
# [ 2.000000 5.000000 ]
# >> z[-1]
# => GSL::Complex
# [ -3.000000 4.000000 ]
# >> z[0, 2]
# [ [0.000e+00 1.000e+00] [-3.000e+00 4.000e+00] ]
# => #
#
# ---
# * GSL::Vector::Complex#set(args, val)
# * GSL::Vector::Complex#[args]=val
#
# If args is empty, behaves as #set_all and val must be a
# [re,im] Array, Float, Integer, or
# GSL::Complex.
#
# If args is a single Fixnum, i, sets the i-th
# element of the vector self to val, which must be a
# [re,im] Array, Float, Integer, or
# GSL::Complex.
#
# All other args specify a subvector (as with #subvector) whose
# elements are assigned from val. In this case, val can be an
# Array, Range, GSL::Vector::Complex, or one of the classes
# listed in the previous cases.
#
# NOTE: GSL does not provide a vector copy function that properly copies data
# across overlapping memory regions, so watch out if assigning to part of a
# Vector from another part of itself (see #set example of
# {GSL::Vector}[link:files/rdoc/vector_rdoc.html]).
#
# === {}[link:index.html"name="2.2] Initializing vector elements
# ---
# * GSL::Vector::Complex#set_all(z)
#
# Sets all the elements of the complex vector self to the complex z.
# ---
# * GSL::Vector::Complex#set_zero
#
# Sets all the elements of the vector self to zero.
# ---
# * GSL::Vector::Complex#set_real(x)
# * GSL::Vector::Complex#real=(x)
# * GSL::Vector::Complex#re=(x)
#
# Sets the real component of all elements of the vector self to
# x. Currently, x must be a scalar, but a future Ruby GSL
# version could accept a GSL::Vector.
# ---
# * GSL::Vector::Complex#set_imag(x)
# * GSL::Vector::Complex#imag=(x)
# * GSL::Vector::Complex#im=(x)
#
# Sets the imaginary component of all elements of the vector self to
# x. Currently, x must be a scalar, but a future Ruby GSL
# version could accept a GSL::Vector.
#
# === {}[link:index.html"name="2.3] Vector Properties
# ---
# * GSL::Vector::Complex#size
# * GSL::Vector::Complex#len
# * GSL::Vector::Complex#length
#
# Return the vector length.
#
# ---
# * GSL::Vector::Complex#stride
#
# Return the vector stride.
#
# === {}[link:index.html"name="2.4] Iterators
# ---
# * GSL::Vector::Complex#each
# * GSL::Vector::Complex#each_index
# * GSL::Vector::Complex#collect
# * GSL::Vector::Complex#map
# * GSL::Vector::Complex#collect!
# * GSL::Vector::Complex#map!
#
#
# === {}[link:index.html"name="2.5] Reordering Elements
# GSL::Vector::Complex provides four methods for shifting the frequency
# domain data between FFT order, shown in the table in the (()), and natural order, which has the
# most negative freqeuncy component first, the zero frequency component in the
# middle, and the most positive frequency component last. For more information
# on Ruby/GSL and FFTs, see {Fast Fourier Transforms}[link:files/rdoc/fft_rdoc.html].
#
# ---
# * GSL::Vector::Complex#fftshift
# * GSL::Vector::Complex#fftshift!
#
# Shifts the data of self from FFT order to natural order. The
# #fftshift method leaves self unmodified and returns a new
# GSL::Vector::Complex object containing the shifted data. The
# #fftshift! method modifies self in-place and returns
# self. Note that #fftshift and #ifftshift are equivalent
# for even lengths, but not for odd lengths.
#
# ---
# * GSL::Vector::Complex#ifftshift
# * GSL::Vector::Complex#ifftshift!
#
# Shifts the data of self from natural order to FFT order. The
# #ifftshift method leaves self unmodified and returns a new
# GSL::Vector::Complex object containing the shifted data. The
# #ifftshift! method modifies self in-place and returns
# self. Note that #fftshift and #ifftshift are equivalent
# for even lengths, but not for odd lengths.
#
# === {}[link:index.html"name="2.6] Arithmetic
# ---
# * GSL::Vector::Complex#+(other)
# * GSL::Vector::Complex#-(other)
# * GSL::Vector::Complex#*(other)
# * GSL::Vector::Complex#/(other)
# * GSL::Vector::Complex#add(other)
# * GSL::Vector::Complex#sub(other)
# * GSL::Vector::Complex#mul(other)
# * GSL::Vector::Complex#div(other)
#
# Returns a new GSL::Vector::Complex instance containing the result of
# the appropriate arithmetic operation on self and other. The
# inputs are unchanged. The other parameter may be a scalar,
# {GSL::Vector}[link:files/rdoc/vector_rdoc.html], or GSL::Vector::Complex.
#
# ---
# * GSL::Vector::Complex#+=(other)
# * GSL::Vector::Complex#-=(other)
# * GSL::Vector::Complex#*=(other)
# * GSL::Vector::Complex#/=(other)
# * GSL::Vector::Complex#add!(other)
# * GSL::Vector::Complex#sub!(other)
# * GSL::Vector::Complex#mul!(other)
# * GSL::Vector::Complex#div!(other)
#
# Modifies self in place to contain the result of the appropriate
# arithmetic operation on self and other. The other
# parameter may be a scalar, {GSL::Vector}[link:files/rdoc/vector_rdoc.html], or
# GSL::Vector::Complex.
#
# === {}[link:index.html"name="2.7] Reading and writing vectors
# ---
# * GSL::Vector::Complex#fwite(io)
# * GSL::Vector::Complex#fread(io)
# * GSL::Vector::Complex#fprintf(io, format)
# * GSL::Vector::Complex#fscanf(io)
#
#
# === {}[link:index.html"name="2.8] Functions
# ---
# * GSL::Vector::Complex#conj
# * GSL::Vector::Complex#conjugate
#
# Returns a new GSL::Vector::Complex that is the complex conjugate of
# self.
#
# ---
# * GSL::Vector::Complex#conj!
# * GSL::Vector::Complex#conjugate!
#
# Conjugates self in-place and returns self.
#
# ---
# * GSL::Vector::Complex#arg
# * GSL::Vector::Complex#angle
# * GSL::Vector::Complex#phase
#
# Calculates the argument (i.e. phase angle in radians) of each of the
# complex elements of the vector self and returns a real vector.
#
# ---
# * GSL::Vector::Complex#abs2
#
# Calculates the squared magnitude of the complex elements of the vector
# self and returns a real vector.
#
# ---
# * GSL::Vector::Complex#abs
# * GSL::Vector::Complex#amp
#
# Calculates the magnitude of the complex elements of the vector self
# and returns a real vector.
#
# ---
# * GSL::Vector::Complex#logabs
#
# Calculates the natural logarithm of the magnitude of the complex elements
# of the vector self and returns a real vector.
#
# ---
# * GSL::Vector::Complex#sqrt
#
# Calculates the square root of the complex elements of the vector self
# and returns a new complex vector.
#
# ---
# * GSL::Vector::Complex#exp
# * GSL::Vector::Complex#pow(a)
# * GSL::Vector::Complex#log
# * GSL::Vector::Complex#log10
# * GSL::Vector::Complex#log_b(base)
# * GSL::Vector::Complex#sin
# * GSL::Vector::Complex#cos
# * GSL::Vector::Complex#tan
# * GSL::Vector::Complex#sec
# * GSL::Vector::Complex#csc
# * GSL::Vector::Complex#cot
# * GSL::Vector::Complex#arcsin
# * GSL::Vector::Complex#arccos
# * GSL::Vector::Complex#arctan
# * GSL::Vector::Complex#arcsec
# * GSL::Vector::Complex#arccsc
# * GSL::Vector::Complex#arccot
# * GSL::Vector::Complex#sinh
# * GSL::Vector::Complex#cosh
# * GSL::Vector::Complex#tanh
# * GSL::Vector::Complex#sech
# * GSL::Vector::Complex#csch
# * GSL::Vector::Complex#coth
# * GSL::Vector::Complex#arcsinh
# * GSL::Vector::Complex#arccosh
# * GSL::Vector::Complex#arctanh
# * GSL::Vector::Complex#arcsech
# * GSL::Vector::Complex#arccsch
# * GSL::Vector::Complex#arccoth
#
#
# === {}[link:index.html"name="2.9] Statistics
# ---
# * GSL::Vector::Complex#sum
#
# Returns a GSL::Complex object representing the sum of all elements of
# self.
# ---
# * GSL::Vector::Complex#mean
#
# Returns a GSL::Complex object representing the mean of all elements
# of self.
# ---
# * GSL::Vector::Complex#tss
#
# Returns the total sum of squares about self.mean. This is a real
# number, i.e. a Float.
# ---
# * GSL::Vector::Complex#tss_m(mean)
#
# Returns the total sum of squares about mean. This is a real number,
# i.e. a Float.
# ---
# * GSL::Vector::Complex#variance
#
# Returns the variance of self. This is a real number, i.e. a
# Float.
# ---
# * GSL::Vector::Complex#variance_m(mean)
#
# Returns the variance of self around mean. This is a real
# number, i.e. a Float.
# ---
# * GSL::Vector::Complex#variance_fm(mean)
#
# Returns the variance of self around the fixed mean mean. This
# is a real number, i.e. a Float.
# ---
# * GSL::Vector::Complex#sd
#
# Returns the standard deviation of self. This is a real number, i.e.
# a Float.
# ---
# * GSL::Vector::Complex#sd_m(mean)
#
# Returns the standard deviation of self around mean. This is a
# real number, i.e. a Float.
# ---
# * GSL::Vector::Complex#sd_fm(mean)
#
# Returns the standard deviation of self around the fixed mean
# mean. This is a real number, i.e. a Float.
#
# == {}[link:index.html"name="3] Data Conversions
# ---
# * GSL::Vector#to_complex
# * GSL::Vector#to_complex2
#
# Create a complex vector from a real vector.
#
# >> v = Vector[1..4]
# => GSL::Vector
# [ 1.000e+00 2.000e+00 3.000e+00 4.000e+00 ]
# >> v.to_complex
# [ [1.000e+00 0.000e+00] [2.000e+00 0.000e+00] [3.000e+00 0.000e+00] [4.000e+00 0.000e+00] ]
# => #
# >> v.to_complex2
# [ [1.000e+00 2.000e+00] [3.000e+00 4.000e+00] ]
# => #
#
# {Reference index}[link:files/rdoc/ref_rdoc.html]
# {top}[link:files/rdoc/index_rdoc.html]
#
#