#
# = NArray compatibilities
# === Contents:
# 1. {Data type conversions}[link:rdoc/narray_rdoc.html#label-Data+type+conversions]
# 1. {Methods which accepts NArray}[link:rdoc/narray_rdoc.html#label-Methods+which+accepts+NArray]
#
# == Data type conversions
# === GSL to NArray
#
# ---
# * GSL::Vector#to_na
# * GSL::Vector#to_nvector
# * GSL::Vector::Complex#to_na
# * GSL::Vector::Complex#to_nvector
# * GSL::Matrix#to_na
# * GSL::Matrix#to_nmatrix
#
#   Convert GSL objects to NArray. The data contained by the GSL objects
#   are copied to a newly allocated memory block of the NArray objects created.
#
# ---
# * GSL::Vector#to_na_ref
# * GSL::Vector#to_nvector_ref
# * GSL::Vector::Complex#to_na_ref
# * GSL::Vector::Complex#to_nvector_ref
# * GSL::Matrix#to_na_ref
# * GSL::Matrix#to_nmatrix_ref
#
#   Create NArray-ref objects from GSL data. The memory block of the GSL
#   objects are shared with the NArray-ref objects.
#
#   Example:
#     >> v = Vector::Int[0..5]
#     => GSL::Vector::Int
#     [ 0 1 2 3 4 5 ]
#     >> na = v.to_nvector_ref
#     => NVector(ref).int(6):
#     [ 0, 1, 2, 3, 4, 5 ]
#     >> na[3] = 999
#     => 999
#     >> v
#     => GSL::Vector::Int
#     [ 0 1 2 999 4 5 ]
#
# === NArray to GSL
# ---
# * NArray#to_gv
# * NArray#to_gm
#
#   <tt>NArray#to_gv</tt> converts NArray objects to <tt>GSL::Vector</tt> or
#   <tt>GSL::Vector::Complex</tt>.  <tt>NArray#to_gm</tt> converts NArray
#   objects to <tt>GSL::Matrix</tt>.  The data contained by the NArray objects
#   are copied to a newly allocated memory block of the GSL objects created.
#
# ---
# * NArray#to_gv_view
# * NArray#to_gm_view
#
#   Create <tt>GSL::Vector::View</tt> or <tt>GSL::Matrix::View</tt> objects from NArray.
#   The memory block of the NArray objects are shared with the View objects.
#
#   Example:
#     >> na = NArray[0, 1, 2, 3, 4, 5]
#     => NArray.int(6):
#     [ 0, 1, 2, 3, 4, 5 ]
#     >> b = na.to_gv_int_view
#     => GSL::Vector::Int::View
#     [ 0 1 2 3 4 5 ]
#     >> b[2] = -99
#     => -99
#     >> na
#     => NArray.int(6):
#     [ 0, 1, -99, 3, 4, 5 ]
#
# == Methods which accepts NArray
# === <tt>GSL</tt> module
# ---
# * GSL::graph()
# * GSL::log1p(x)
# * GSL::expm1(x)
# * GSL::hypot(x, y)
# * GSL::acosh(x)
# * GSL::asinh(x)
# * GSL::atanh(x)
# * GSL::pow(x, a)
# * GSL::pow_int(x, n)
# * GSL::pow_2(x), ..., GSL::pow_9(x)
#
#
# === <tt>Sf</tt> module
# ---
# * {Any}[link:rdoc/sf_rdoc.html]
#
# === <tt>Linalg</tt> module
# ---
# * GSL::Linalg::LU.decomp(na)
# * GSL::Linalg::LU.solve(lu, b)
# * GSL::Linalg::LU.svx(lu, bx)
# * GSL::Linalg::LU.det(lu, sign)
# * GSL::Linalg::LU.lndet(lu)
# * GSL::Linalg::LU.invert(lu, perm)
# * GSL::Linalg::QR.decomp(m)
# * GSL::Linalg::QR.solve(qr, tau, b)
# * GSL::Linalg::QR.svx(qr, tau, bx)
# * GSL::Linalg::SV.decomp(m)
# * GSL::Linalg::SV.solve(u, v, s, b)
# * GSL::Linalg::SV.svx(u, v, s, bx)
# * GSL::Linalg::Cholesky.decomp(m)
# * GSL::Linalg::Cholesky.solve(u, v, s, b)
# * GSL::Linalg::Cholesky.svx(u, v, s, bx)
# * GSL::Linalg::HH.solve(m, b)
# * GSL::Linalg::HH.svx(m, bx)
#
#
# === <tt>Eigen</tt> module
# ---
# * GSL::Eigen::symm(na)
# * GSL::Eigen::symmv(na)
#
#
# === <tt>FFT</tt> module
# ---
# * {Many}[link:rdoc/fft_rdoc.html]
#
# === <tt>Function</tt> class
# ---
# * GSL::Function#eval
# * GSL::Function#deriv_central(x, h)
# * GSL::Function#deriv_forward(x, h)
# * GSL::Function#deriv_backward(x, h)
# * GSL::Function#diff_central(x, h)
# * GSL::Function#diff_forward(x, h)
# * GSL::Function#diff_backward(x, h)
#
#
# === <tt>Ran</tt> and <tt>Cdf</tt> module
# ---
# * {Many}[link:rdoc/randist_rdoc.html]
#
# === <tt>Stats</tt> module
# ---
# * {Any}[link:rdoc/stats_rdoc.html]
#
# === <tt>Interp</tt> and <tt>Spline</tt> class
# ---
# * GSL::Interp#init
# * GSL::Interp#eval
# * GSL::Spline#init
# * GSL::Spline#eval
#
#
# === <tt>Deriv</tt> and <tt>Diff</tt> module
# ---
# * GSL::Deriv.central(f, x, h)
# * GSL::Deriv.forward(f, x, h)
# * GSL::Deriv.backward(f, x, h)
# * GSL::Diff.central(f, x, h)
# * GSL::Diff.forward(f, x, h)
# * GSL::Diff.backward(f, x, h)
#
#
# === <tt>Cheb</tt> class
# ---
# * GSL::Cheb#eval(x)
# * GSL::Cheb#eval_n(n, x)
#
#
# === <tt>Wavelet</tt> class
# ---
# * {Many}[link:rdoc/wavelet_rdoc.html]
#
# {prev}[link:rdoc/tensor_rdoc.html]
#
# {Reference index}[link:rdoc/ref_rdoc.html]
# {top}[link:index.html]
#
#
